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

一、常见算法

常见的加密算法和协议有对称加密,非对称加密,单向加密

1、对称加密:加密和解密使用一个密钥;依赖于算法和密钥,算法是可以公开的,密钥是不能公共的,因为加密是依赖于密钥的。安全性依赖于密钥,而非算法;

常见算法:

DES(Data Encryption Standard,56bits)、3DES、AES(Advanced EncryptionStandard)、Blowfish、Towfisk、IDEA、RC6、CASTS

特性:

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

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

缺陷:

1、密钥过多;

2、密钥分发;

2、非对称加密:公钥加密

密码对儿:私钥(secret key)和公钥(public key);私钥仅允许个人使用;公钥是公开给所有获取;

公钥和私钥不是在创建时就成对出现的,而公钥是从私钥中提取出而来;创建时只需要创建私钥,从私钥中使用某种工具,把公钥从私钥中提取出来就可以了。

工作特性:使用公钥加密的数据,只能使用与此公钥配对儿的私钥解密,反之亦然。

用处:

1、身份认证:私钥拥有者用自己的私钥加密的数据,只要用其公钥解密,即可认证其身份;私钥加密不能保证数据的安全性,只有用于身份认证;

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

3、数据加密:

为什么不用非对称加密来加密数据呢?因为非对称加密数据比起对称加密要慢上10^3倍,都是用对称加密来加密数据,在用非对称加密来加密对称加密的密钥。

常用算法:

RSA、DSA、ELGamal

特性:

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

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

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

3、单向加密

提出数据的特征码;每一个数据的都一个唯一的特性码,严重的依赖于算法。

特性:

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

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

3、不可逆;

算法:

MD5、SHA1、SHA256、SHA384、SHA512

单向加密已经被运行到CentOS操作系统中的用户名密码加密/etc/shadow文件中,其中CentOS 5运行的MD5,CentOS 6运行的SHA512。

用处:数据完整性

二、加密解密通信过程

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

三、数字证书的格式(x.509 v3):

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

版本号(version)

序列号(serial number):是一个整数,CA使用唯一标识此证书的号码;

签名算法标志(Signature algorithmidentifier):它是一个带参数的,用于给证书签名本身说明,主要是让用户验证证书是可靠的

发行者的名称:即CA自己的名称

有效期:两个日期,起始日期和终止日期;

证书主体名称:证书拥有者的自己名字

证书主体公钥信息:证书拥有者自己的公钥

发行商的唯一标识:(可选)

证书主体的唯一标识:(可选)证书拥有者自己的数字标识

扩展信息:

签名:CA对此证书的数字签名,用于验证证书是自己的签发的

四、https

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

客户端和服务端进行通信时要进行三次握手,ssl也是基于TCP来实现的,在进行三次握手之后客户端向服务端要证书,服务端把证书给客户端,此时客户端拿到证书进行验证,先用本地存的根证书找看哪个CA给证书签的证,于是在本地找CA的证书,如果本地有说明我们信任此证书,接着用CA去解密证书中的数字签名,能解密说明此证书是CA发的,解密的结果是特征码,然后在用同样的单向加密算法去计算证书的特征码,并比较,比较之后发现结果相同,说明证书可靠,否则证书不可靠;在验证访问的域名(FQDN)必须与证书中的主体保持一致,否则客户端会认为拿的不是服务端的证书,在验证有效期等;

如果以上都是合法的,在从证书中提取对方的公钥信息,并且双方开始建立协商,双方使用哪种对称加密算法,使用哪种单向加密算法,使用哪种公钥加密算法;而后客户端生成一个临时加密密钥,并使用对方的公钥加密之后发送给服务端,于是服务器就已经拿到客户端访问请求的页面,把页面使用对称加密后发送给客户端,客户端拥有私钥解密就能在浏览器中显示;

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

第一步:验证证书主体、有效期、有没有在证书吊销列表中等;

第二步:从证书中提取对方的公钥信息;

第三步:生成对称加密的密钥,使用对方的公钥加密密钥,传送给服务端;

第四步:服务端使用私钥解密密文;

第五步:使用对称加密密钥加密客户端请求页面,发送给客户端;

第六步:客户端使用对称加密密钥解密请求页面,并在浏览器显示页面;

相关推荐