Linux中常见的加密技术介绍

常见的加密技术:

对称加密;非对称加密;单向加密;SSL/TLS;秘钥交换

1、对称加密

采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

对称加密的常见算法:DES、3DES、AES、IDEA、RC6、CAST5等

(1)优点

加密、解密使用同一个密钥,效率高;

(2)缺点

必须商定秘钥:数据传送前,双方必须商定好秘钥。线上商定,存在被窃取风险;

来源无法确认:如果钥匙被窃取,窃取者就可以冒充另一方进行通讯,接收者无法确认来源;

密钥管理麻烦:每对用户都需要唯一秘钥,这会使得双方所拥有的钥匙数量巨大。

(3)实现简单对称加密:

[[email protected] ~]#echo maohua > a.txt

[[email protected] ~]#openssl enc -e -des3 -a -salt -in a.txt -out aa.txt   #采用des3加密算法

enter des-ede3-cbcencryption password:                               #秘钥为123

Verifying - enterdes-ede3-cbc encryption password:                    #秘钥为123

[[email protected] ~]#cat a.txt aa.txt

maohua                                                                #加密前的数据内容

U2FsdGVkX19necsoBCPCTiyGxhr3h6eX                                      #加密后的数据内容

[[email protected] ~]#openssl enc -d -des3 -a -salt -in aa.txt -out b.txt    #用原加密算法解密加密文件

enter des-ede3-cbcdecryption password:                               #输入加密时的秘钥123

[[email protected] ~]#cat a.txt aa.txt b.txt

maohua

U2FsdGVkX19necsoBCPCTiyGxhr3h6eX

maohua

2、非对称加密
   非对称加密算法使用两把完全不同但又是完全匹配的一对钥匙——公钥和私钥。在使用非对称加密算法加密文件时,只有使用匹配的一对公钥和私钥,才能完成对明文的加密和解密。
    非对称加密常见的算法:RSA(既可以用来加密解密,又可以用来实现用户认证)、DSA(只能用来加密解密)、ELGamal等

(1)优特点:

密钥是成对出现的,用公钥加密数据,只能使用与之配对的私钥解密;反之亦然;
   公钥:(publickey)公开给所有主机;
   私钥:(secretkey)主机留存,必须保证其私密性;
(2)缺点:
   密钥长,加密解密效率低下

(3)非对称加密技术举例:

[[email protected] ~]#openssl genrsa -out private.key 1024

#private.key包含了公钥和密钥两部分,该文件即可用来加密也可以用来解密, 1024是密钥长度。

[[email protected] ~]#openssl rsa -in private.key -pubout -out pub.key  #由密钥private.key 生成公钥

[[email protected] ~]#echo "123456" | openssl rsautl -encrypt -inkey pub.key -pubin>encode.result

#使用公钥pub.key对字符”123456”进行加密

[[email protected] ~]#catencode.result | openssl rsautl -decrypt -inkey private.key

#使用私钥private.key对公钥加密文件encode.result进行解密得到原始字符”123456”

(4)非对称加密应用场景:ssh无秘钥远程登录的实现就是利用了非对称加密技术

[[email protected] ~]#ssh-keygen-t rsa -f /root/.ssh/id_rsa -P “”   #非对称加密输出私钥和公钥

[[email protected] ~]#ls/root/.ssh/

id_rsa id_rsa.pub        #id_rsa私钥,id_rsa.pub为公钥,将公钥拷贝到远程主机上,则可实现无密码登录。

3、单向加密
  单向加密算法,又称hash函数(也称杂凑函数或杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等。
    单向加密的常见算法:md5、sha1、sha224、sha256、sha384、sha512
(1)单向加密加密特点

数据相同,摘要相同;数据不同,摘要不同;不可通过摘要反推源数据;相同算法,摘要长度相同。

(2)单项散列的简单实践:

[[email protected] ~]#echo maohua | md5sum

8de05c05333e0d7897bd7989ec054fbd  -    #字符”maohua”的摘要

[[email protected] ~]#echo mao hua | md5sum

29f86ecfc01cb2f584143118b58dc22e  -    #字符”mao hua”的摘要,与”maohua”摘要完全不同,仅多一个空格

[[email protected] ~]#echo 1 | md5sum

b026324c6904b2a9cb4b88d6d61c81d1  -    #一个字符”1”的摘要也是128bits

(3)密码加密方面
   可以通过加‘盐’提高密码的安全性,同一算法相同数据的条件下:盐相同,结果相同;盐不同,结果必不相同;数据不同,结果肯定也不同。以下是简单实践:

##”linux”进行MD5加密算法:

[[email protected] ~]#grub-md5-crypt     #使用md5加密并且自动向加密对象内加入salt

Password:                          #输入linux,进行md5加密

Retype password:

$1$VyRD5/$Zk92HqQ/loWEfWpUwxwYy1   #加密结果,有三个字段以”$”分割,第二个字段为盐(salt)

[[email protected] ~]#openssl passwd -1 -salt "VyRD5/"     #相同待加密字符指定相同加密算法并添加相同salt

Password:                                           #输入”linux”

$1$VyRD5/$Zk92HqQ/loWEfWpUwxwYy1                    #输出相同的加密结果

[[email protected] ~]#openssl passwd -1 -salt "VyRD5?"     #相同待加密字符指定相同加密算法并添加不同salt

Password:                                           #输入”linux”

$1$VyRD5?$fxhBzsEq38F6s8W7mpzfS0                    #输出完全不同的加密结果

4SSL/TLS
  Handshake协议:包括协商安全参数和密码套件、服务器身份认证(客户端身份认证可选)、密钥交换
  ChangeCipherSpec协议:一条消息表明握手协议已经完成
  Alert 协议:对握手协议中一些异常的错误提醒,分为fatal和warning两个级别,fatal类型错误会直接中断SSL链接,而warning级别的错误SSL链接仍可继续,只是给出错误警告。
  Record 协议:包括对消息的分段、压缩、消息认证和完整性保护、加密等
  HTTPS 协议:就是”HTTP 协议”和”SSL/TLS协议”的组合。”HTTPover SSL”或”HTTPover TLS”,对http协议的文本数据进行加密处理后,成为二进制形式传输。

5、密钥交换
  IPsec IKE:网络密钥交换协议(IPsec IKE:Internet Key Exchange Protocol)
   网络密钥交换(IPsecIKE)是IPsec 体系结构中的一种主要协议。它是一种混合协议,使用部分Oakley 和部分SKEME,并协同ISAKMP 提供密钥生成材料和其它安全连系,比如用于IPsec DOI 的 AH 和 ESP 。
   DH:(Diffie-Hellman)一种确保共享KEY安全穿越不安全网络的方法,它是Oakley的一个组成部分。
  这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。DH只能用于密钥的交换,而不能进行消息的加密和解密。

附加、openssl使用详解

openssl中有如下后缀名的文件

(1)*.key格式:私有的密钥

(2)*.crt格式:证书文件,certificate的缩写

(3)*.csr格式:证书签名请求(证书请求文件),含公钥信息,certificatesigning request的缩写

(4)*.crl格式:证书吊销列表,CertificateRevocation List的缩写

(5)*.pem格式:用于导出,导入证书时候的证书的格式。

openssl的使用:

#-------------------------------------------加密----------------------------------------#

##fstab文件进行des3加密,生成加密文件fstab.des3,参数:-d

[[email protected]~]#openssl enc -des3 -in fstab -e -out fstab.des3

### openssl enc指定加密的类型,des3表示使用对称加密,-in指定要加密的文件,-e表示加密,-out保存的文件名

#-------------------------------------------解密----------------------------------------#

 

##fstab.des3文件进行des3解密,生成解密文件fstab.txt        ,参数:-e

[[email protected]~]#openssl enc -des3 -in fstab.des3 -d -out fstab.txt

###openssl enc指定加密的类型,des3表示对称加密,-in 表示加密后的文件,-d表示解密,-out要保存的文件名

#-------------------单向加密(md5sum)获取文件的特征码----------------------#

[[email protected]~]#openssl dgst -md5 -hex fstab           #获取16进制的特征码,默认为16进制的可以省略

##除了openssl命令获取文件特征码,还可利用md5sum命令获取文件特征码:

[[email protected]~]#md5sum fstab                  #获取文件特征码

#-------------------------------复习签署CA证书签署--------------------------------#

###CA生成一个私钥

[[email protected] CA]#(umask 077;openssl genrsa -out private/cakey.pem 2048)

###CA负责签署证书

[[email protected]CA]# openssl req -new -x509-key private/cakey.pem -out cacert.pem -days 3656

###添加证书签署的序列号

[[email protected]]#touch serial index.txt

[[email protected]]#echo 01 > serial

###############先生成证书的私钥和公钥文件,以及证书,然后CA进行证书的签署:

[[email protected]~]#(umask 077;openssl genrsa -out httpd_private.key 2048)   #生成私钥文件

[[email protected]~]#openssl req -new -key httpd.key -out httpd.csr           #生成证书

[[email protected]~]#openssl ca -in httpd.csr -out httpd.crt -days 3656       #CA主机上签署生成的证书

时间: 12-29

Linux中常见的加密技术介绍的相关文章

Linux中常见日志文件的介绍

/var / log / cron:记录crond计划任务相关的时间信息: 一.内核及系统日志分析 /var / log / messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动.I/O错误.网络错误.程序故障等.对于未使用独立日志文件的应用程序或服务,一般都可以在该日志文件中获得相关信息. /var /log /dmesg:记录Linux操作系统在引导过程中的各种事件信息: /var / log / maillog:记录进入或发出系统的电子邮件活动: /var / l

Linux 中的零拷贝技术,第 2 部分

技术实现 本系列由两篇文章组成,介绍了当前用于 Linux 操作系统上的几种零拷贝技术,简单描述了各种零拷贝技术的实现,以及它们的特点和适用场景.第一部分主要介绍了一些零拷贝技术的相关背景知识,简要概述了 Linux 为什么需要零拷贝技术以及 Linux 中都有哪几种零拷贝技术.本文是本系列文章的第二部分,针对第一部分内容中提到的几种零拷贝技术分别进行更详细的介绍,并对这些零拷贝技术的优缺点进行分析. 0 评论: 黄 晓晨, 软件工程师, IBM 冯 瑞, 软件工程师, IBM 2011 年 1

Linux 中的零拷贝技术,第 1 部分

概述 本系列由两篇文章组成,介绍了当前用于 Linux 操作系统上的几种零拷贝技术,简单描述了各种零拷贝技术的实现,以及它们的特点和适用场景.本文是本系列文章的第一部分,主要是介绍一些零拷贝技术的相关背景知识,简要概述了 Linux 为什么需要零拷贝技术以及 Linux 中都有哪几种零拷贝技术. 1 评论: 黄 晓晨, 软件工程师, IBM 冯 瑞, 软件工程师, IBM 2011 年 1 月 27 日 内容 在 IBM Bluemix 云平台上开发并部署您的下一个应用. 现在就开始免费试用 引

网络请求中常见的加密机制和加密算法理解

请求安全性: 服务器端在接收到请求的时候,要主动鉴别该请求是否有效,是否可接受. token:已登陆用户的识别码 解决的问题:用户调用接口时,不用每次都带上用户名和密码,避免了频繁在网络中传输密码被截获的风险. 使用场景:用户登录系统时传入用户名和密码,服务器校验成功之后,根据uuid等参数生成token返回给客户端,同时把该token和该用户的对应关系缓存在服务器端.客户端在后续的请求接口中不用每次都传入用户名和密码,只需要传入token即可.服务器会根据token确定客户端的身份. 注意:t

linux 中常见的压缩和解压缩的命令

# linux 中常见的压缩和解压缩的命令 一.tar 1.解压: tar zxvf filename.tar 2.压缩: tar czvf filename.tar dirname 二.gz 1.解压: gunzip filename.gz gzip -d filename.gz 2.压缩: gzip filename 三.tar.gz 和 tgz 1.解压 tar zxvf filename.tar.gz 2.压缩 tar zcvf filename.tar.gz dirname 3.压缩多

云服务器 ECS Linux 系统中常见的日志文件介绍

云服务器 ECS Linux 系统中,日志文件是非常重要的文件,它们记录了很多系统中重要的事.Linux 系统中常见日志文件概述如下: /var/log/cron可以在 cron 文件中检查 crontab 任务调度是否实际执行,执行过程是否发生错误,以及 /etc/crontab 文件是否有语法错误或编写错误. /var/log/dmesg 可以在 dmesg 文件中检查系统在开机时候内核检测过程所产生的各项信息,包括系统的设备信息,以及在启动和操作过程中系统记录的任何错误和问题的信息.通过

常见数据库加密技术对比

数据库加密作为近年来兴起的数据库安防技术,已经被越来越多的人所重视.这种基于存储层加密的防护方式,不仅可以有效解决数据库明文存储引起的泄密风险,也可以防止来自内部或者外部的入侵及越权访问行为. 从技术手段上来看,现今数据库加密技术主要有三大类,分别是前置代理及加密网关方式.应用层加密方式以及后置代理方式.这三类技术各自的特点如何,彼此之间孰优孰劣,下文详尽介绍. 前置代理及加密网关技术 该技术思路是在数据库之前增加一道安全代理服务,对数据库访问的用户必须经过该安全代理服务,在此服务中实现如数据加

浅谈 PHP 中的多种加密技术及代码示例

信息加密技术的分类 单项散列加密技术(不可逆的加密) 属于摘要算法,不是一种加密算法,作用是把任意长的输入字符串变化成固定长的输出串的一种函数 MD5 string md5 ( string $str [, bool $raw_output = false ] ); //MD5加密,输入任意长度字符串返回一个唯一的32位字符 md5()为单向加密,没有逆向解密算法,但是还是可以对一些常见的字符串通过收集,枚举,碰撞等方法破解;所以为了让其破解起来更麻烦一些,所以我们一般加一点盐值(salt)并双

linux中常见的命令

linux 中的命令非常多,但是玩过linux的人也从来不会因为Linux的命令如此之多而烦恼,我们只需要掌握其中常见的命令即可,可以在使用时去找man,会帮助你解决不少问题.下面就列出一些常见的linux命令. 1.cd命令 这是最基本的一条命令,用于切换文件目录,进入某一个文件夹内,参数为需要切换文件目录的路径,可以是绝对路径也可以是相对路径,例如: 1 cd /ren/text/ren1 #切换到目录/ren/text/ren1下面 当前位置在---ren1 2 cd ./ren2 #切换