192.168.1.1-路由器设置 | 192.168.0.1-无线路由器设置

加密、解密,以及OpenSSL建立私有CA的方法

发布时间:2015-04-26 12:25

概述:

理论部分主要介绍了:

  对称加密、非对称加密、单向加密、密钥交换、CA、PKI
 

操作部分主要有:
 

  对称加密、非对称加密、单向加密的实现,已经openssl常用功能,生成密码、生成随机数已经使用openssl创建私有CA

系统环境说明:
 

1
2
3
4
[root@bogon ~]# cat /etc/redhat-release 
CentOS release 6.6 (Final)
[root@bogon ~]# uname -rm
2.6.32-504.el6.x86_64 x86_64

数据安全的定义

保密性:防止别人偷看

  数据保密性

  隐私性:信息不被随意的收集

完整性:防止别人修改

  数据完整性:信息或程序只能被指定或授权的方式改变不能被随意的修改

  系统完整性:确保系统以正常的方式执行预定的功能

可用性:数据与服务随时可用


 


 

常见的加密方法和算法

对称加密

什么是对称加密?

对称加密算法使用同一密钥对提供安全的保护,加密和解密使用的是一个密钥。

加密和解密流程图:

(1) 两台服务器共享密钥,以使用同一个密钥进行加密和解密。

(2) 服务器A给服务器B发送数据,使用算法和密钥一起将数据加密,然后发送给服务器B。

(3) 服务器B接受到数据后,使用算法和密钥进行解密,得出明文数据。

 

说明:加密数据依赖与算法和密钥,安全性依赖于密钥。因为算法是公开的人人都可以得到,但是密钥只有通信的主机才有。

常见算法:

(1)DES:密钥长度为64位,其中8位用于奇偶校验,所以实际有效长度为56位;由于密钥长度较短,所以使用暴力破解可以很容易的在短时间内攻破DES算法,已经不建议使用该种算法。

(2)3DES:DES的增强版,因为3DES使用了三个阶段的DES,即同时使用了三个不同的56位密钥,所以相当于产生了一个168位的有效密钥长度。这种算法目前还没有计算机可以在短时间内破解。

(3)AES:3DES虽然现在是安全的,但随着计算机硬件的更新,总有一天要被攻破;AES算法欲取待3DES算法,他支持128,192和256位密钥长度,有效的密钥长度可达上千位。更重要的是,AES算法采用了更为高效的编写方法,对CPU的占用率较少;目前广泛使用。

商用:Blowfish,twofish,IDEA,RC6,CAST5等等...

特性:

1、加密、解密使用同一密钥

2、将明文分割成固定大小的块,逐个进行加密

缺陷:

1、密钥过多:如服务器A和服务器B通信需要一个密钥,和服务器C通信需要一个密钥,和服务器D通信需要一个密钥…………

2、密钥分发:如果服务器A和服务器B,之前没有进行过通信,需要共享密钥,但是这个过程是明文的。


 

公钥加密

什么是公钥加密?

非对称加密算法使用两个不同的密钥“公钥和私钥”进行加密和解密,用一个加密后的数据仅能被另一个密钥解密,而不能从一个密钥推出另一个密钥。

密钥对:私钥和公钥

  私钥:仅允许个人使用

  公钥:公开给所有人获取

公钥从私钥中提取而来;使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密;反之依然

加密流程图:

服务器A和服务器B传输数据。

初始状态:服务器B生成私钥和公钥。

 

服务器B将公钥给服务器A

 

服务器A使用公钥将数据加密,这个时候加密的数据就只有服务器B的私钥才可以解开,就连加密的服务器A都无法解开。

 

服务器A把数据传给服务器B,服务器B使用自己的私钥来解密数据,就得到了明文数据。

 

整个加密过程私钥都在服务器B上面,没有在公网传输,大大保证了数据的安全性。

用处

身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥能解密,即可认证其身份;

密钥交换:与被通信方通信之前,首先获取对方的公钥,自己生成一个对称加密的密钥,用对方的公钥加密,并发送给对方

数据加密:很少使用,一般都是用来加密码对称加密的密码

算法

RSA:既能做身份认证又能做密钥交换,使用较为广泛

DSA:只能做数字签名(身份认证)

ELGamal:商业算法

就算法本身的实现来讲,公钥加密技术比对称加密技术的速度慢上差不多3个数量级,一个数量级就是10倍,所以3个数量级不是30倍,而是1000倍。因此,在加密数据时是很少用到公钥去加密的。

特性

1、密钥长度较大,例如512bits, 2048bits, 4096bits

2、加密解密分别使用密钥对儿中的密钥相对进行;

3、常用于数据签名和密钥交换;


 

单向加密

特性:

单向加密是提取数据的特征码(比如人的特征码就是人的指纹),保证了数据的完整性。

1、定长输出:无论原来的数据是多大级别,其加密结果长度一样;

2、雪崩效应:原始数据修小改变,将会导致结果巨大变化;

3、不可逆:不能通过特征码还原数据(就比如拿到一个人的指纹无法,还原一个人)

算法:

MD5:128bits定长输出

SHA1:160bits定长输出

SHA256:256bits定长输出

SHA384:384bits定长输出

SHA512:512bits定长输出

用处:

保证数据完整性:如在一个网站下载软件,为了验证软件在下载过程中没有被第三方修改,网站会提供一个MD5和软件的特征码,只要把MD5码下载下来和我们下载的软件进行运算就可以得到软件的特征码,只要这个特征码和网站提供的一样,说明软件没有被修改,如果不一样,百分之百是被修改了。


 

数字签名

功能:保证信息传输的完整性、发送者身份认证防止交易中的抵赖发生。

原理:数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。


密钥交换

公钥加密:通过非对称加密算法,加密对称加密算法的密钥,在用对称加密算法实际要传输的数据。

DH算法:前提发送方和接受方协商使用同一个大素数P和生成数g,各自产生的随机数X和Y。发送方将g的X次方mod P产生的数值发送给接收方,接受方将g的Y次方mod P产生的数值发送给发送方,发送方再对接收的结果做X次方运算,接受方对接收的结果做Y次方运算,最终密码形成,密钥交换完成。

一次加密通信过程简单描述

上面描述的加密算法:无论是对称加密、非对称加密还是单向加密都是有缺点的。

对称加密:

(1) 密钥共享过程为明文

(2) 密钥过多不宜管理

(3) 无法保证数据完整性

公钥加密:

(1) 加密速度慢

(2) 无法保证数据完整性

单向加密:

无法加密数据,只是提取数据的特征码,也就是说有人可以看到数据,但是不能修改


 

加密过程就是将这几种加密算法的优点结合起来使用。

公钥加密保证对称加密密钥共享安全,对称加密保证加密速度,单项加密保证数据完整性。
 


下面是自己画图描述的一次加密数据和解密数据过程,不求精确但求理解。
 

发送者:

1、使用单向加密算法提取生成数据的特征码;

2、使用自己的私钥加密特征码附加在数据后面;

3、生成用于对称加密的临时密钥;用此临时密钥加密数据和已经使用私钥加密后的特征码;

4、使用接收方的公钥加密此临时密钥,附加在对称加密后的数据后方;

 

接收方:

1、使用自己的私钥解密加密的临时密钥;从而获得对称密钥;

2、使用对称密钥解密对称加密的 数据和私钥加密的特征码密文;从而获得数据和特征码密文;

3、使用发送方的公钥解密特征码密文,从而获得从计算生成的特征码;

4、使用与对方同样的单向加密算法计算数据的特征码,并与解密而来的进行比较;

 

数字证书CA

公钥在网络传输过程中,无法保证可信度,容易被窃取或伪装,所以我们就需要一个受信任的第三方机构(CA),来保证公钥信息的安全分发。

如果用户想得到一份属于自己的证书,他应先向 CA 提出申请。在 CA 判明申请者的身份后,便为他分配一个公钥,并且 CA 将该公钥与申请者的身份信息绑在一起,并为之签字后,便形成证书发给申请者。

如果一个用户想鉴别另一个证书的真伪,他就用 CA 的公钥对那个证书上的签字进行验证,一旦验证通过,该证书就被认为是有效的。证书实际是由证书签证机关(CA)签发的对用户的公钥的认证。

 

问题:机构A发给用户A证书,机构B发给用户B证书,那么用户A和B还是不信任的,这个时候就需要有一个根CA,让所有证书颁发机构都信任根,用户就可以通过查询根得知此证书是否可信;如何保证用户在获取CA证书的时候被劫持,这点不用担心,操作系统提供商如微软的Windows在安装完成操作系统的时候就自动让你的计算机信任了根CA。

图解:没有根CA不同机构颁发的证书互不信任。

 

有了根CA之后,证书颁发机构信任根CA,不同证书颁发机构只要信任根CA那么颁发的证书都是受信任的。

 

查看内置在系统的受信任的根证书颁发机构

 

PKI公钥基础设施

签证机构:CA

用户在注册机构注册证书,CA就会签发用户的公钥认证,并且和申请者的信息绑定在一起并且签名后,以证书形式发给申请者,然后在本地的证书存取库备份。(可以理解成现实社会的公安部)

注册机构:RA

一般用户都是在这里注册证书(可以理解成现实社会的派出所)

证书吊销列表:CRL

如果用户私钥丢失,必须要申请吊销证书,否则可能会被别人冒名顶替。

证书存取库:

所有发出的证书都会在这里存一份,如果丢失证书可以在这里得到,如果丢失私钥那么只能申请证书撤销。

关于我们 - RSS地图 - 最近更新 - 友情链接 - 网站地图 - 版权声明