目录
[1) 对称加密和非对称加密](#1) 对称加密和非对称加密)
[Ⅰ 对称加密算法](#Ⅰ 对称加密算法)
[Ⅱ 非对称加密算法](#Ⅱ 非对称加密算法)
[Ⅲ 对称和非对称加密比较:](#Ⅲ 对称和非对称加密比较:)
[3)数据验证 - 数字签名](#3)数据验证 - 数字签名)
[Ⅰ 数字证书格式](#Ⅰ 数字证书格式)
[Ⅱ 证书的颁发](#Ⅱ 证书的颁发)
[Ⅲ 证书验证:](#Ⅲ 证书验证:)
[@ 验证为B颁发证书的这个CA的证书真伪](#@ 验证为B颁发证书的这个CA的证书真伪)
[@ 证书验证案列:](#@ 证书验证案列:)
[1. 发起HTTPS请求](#1. 发起HTTPS请求)
[2. 服务器返回证书](#2. 服务器返回证书)
[3. Chrome验证证书有效性](#3. Chrome验证证书有效性)
1) 对称加密和非对称加密
Ⅰ 对称加密算法
甲与乙事先协商好对称密钥,具体加解密过程如下:
-
甲使用对称密钥对明文加密,并将密文发送给乙
-
乙接收到密文后,使用对称密钥对密文解密,得到最初的明文
Ⅱ 非对称加密算法
甲事先获得乙的公钥,具体加解密过程如下:
-
甲使用乙的公钥对明文加密,并将密文发送给乙。
-
乙收到密文后,使用自己的私钥对密文解密,得到最初的明文。
Ⅲ 对称和非对称加密比较:
|-------|-----------------------------------|--------------------------------------------|-----------------|
| 加密算法 | 优点 | 缺点 | 使用场景 |
| 对称加密 | 加解密速度快,效率高,算法简单,系统开销小,适合加密大量数据。 | 实现困难,扩展性差。 | 对大量数据进行加解密 |
| 非对称加密 | 无法从一个密钥推导出另一个密钥;公钥加密的信息只能用私钥进行解密。 | 算法非常复杂,导致加密大量数据所用的时间较长,而且加密后的报文较长,不利于网络传输。 | 对密钥或身份信息等敏感信息加密 |
对称密钥加密的优点是效率高,算法简单,系统开销小,适合加密大量数据。缺点是实现困难**,扩展性差**。实现困难原因在于进行安全通信前需要以安全方式进行密钥交换;扩展性差表现在每对通信用户之间都需要协商密钥,n个用户的团体就需要协商n*(n-1)/2个不同的密钥
公钥加密的优点是安全性高。无法从一个密钥推导出另一个密钥;公钥加密的信息只能用私钥进行解密。缺点是算法非常复杂,导致加密大量数据所用的时间较长,而且加密后的报文较长,不利于网络传输
基于公钥加密的优缺点,公钥加密适合对密钥或身份信息等敏感信息加密(小数据),从而在安全性上满足用户的需求
2)数据加密--数字信封
数字信封 是指发送方采用接收方的公钥来加密对称密钥后所得的数据。采用数字信封时,接收方需要使用自己的私钥才能打开数字信封得到对称密钥
用公钥加密对称密钥,即密钥打包
甲事先获得乙的公钥,具体加解密过程如下:
- 甲使用对称密钥对明文进行加密,生成密文信息
- 甲使用乙的公钥加密对称密钥,生成数字信封 ( 图中⑥→⑦ )
- 甲将数字信封 和密文信息一起发送给乙
- 乙接收到甲的加密信息后,使用自己的私钥打开数字信封 ,得到对称密钥
- 乙使用对称密钥对密文信息进行解密,得到最初的明文
数字信封技术优点: 结合了对称密钥加密和公钥加密的优点,解决了对称密钥的发布和公钥加密速度慢等问题,提高了安全性、扩展性和效率等
数字信封技术存在问题 :如果攻击者拦截甲的信息,用自己的对称密钥加密伪造的信息,并用乙的公钥加密自己的对称密钥,然后发送给乙。乙收到加密信息后,解密得到的明文,而且乙始终认为是甲发送的信息(问题:中间人篡改了信息,如攻击者修改甲的账户,乙发放资金的时候就到了攻击者手里)
此时,需要一种方法确保接收方收到的信息就是指定的发送方发送的(没有修改过) ------ 解决:数字签名
3)数据验证 - 数字签名
说明:HASH算法→完整性校验
- 同入同出 --相同输入,相同输出(相同:数据和hash算法相同)
- 等长输出 --不管原始数据长度大小,相同hash算法计算出来的hash值长度永远不变,MD5为128位
- 不可逆推--不能根据hash值推算出原始数据
- 雪崩效应 --在原始数据上加了微妙的改动都会导致hash结果完全不同,二者之间没有任何关系,即随机。
发送方首先使用哈希算法得到明文信息 的数字指纹。然后使用自己的私钥加密数字指纹 ,得到数字签名
数字签名 是指发送方用自己的私钥对数字指纹进行加密后所得的数据。采用数字签名时,接收方需要使用发送方的公钥才能解开数字签名得到数字指纹。
数字签名和数字信封结合使用:
数字签名两大特性 :不可抵赖性、不可伪造性
数字签名技术存在问题 :如果攻击者更改乙的公钥,甲获得的是攻击者的公钥,攻击者拦截乙发送给甲的信息,用自己的私钥对伪造的信息进行数字签名,然后与使用甲的公钥的加密伪造的信息一起发送给甲。甲收到加密信息后,解密得到的明文,并验证明文没有被篡改,则甲始终认为是乙发送的信息。此时,需要一种方法确保一个特定的公钥属于一个特定的拥有者(公钥的可靠性)------解决:数字证书
4)数字证书
数字证书 = 现实世界的身份证
CA证书机构 = 警察局
Ⅰ 数字证书格式
注:基于X.509标准的格式
- 版本(Version):即遵循的X.509标准的版本,目前普遍使用的是v3版本。
- 序列号(Serial Number):颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可与颁发者名称一起作为证书的唯一标识。
- 签名算法(Signature Algorithm):颁发者颁发证书时使用的哈希算法和签名算法。
- 颁发者(Issuer):证书颁发者的可识别名称,必须与颁发者颁发证书中的主体名一致。通常为CA服务器的名称。
- 有效期(Validity):证书的有效时间段,包含有效的起止日期,不在有效期范围内的证书为无效证书。
- 主体名(Subject Name):证书使用者的可识别名称,通常包括CN、国家/地区、组织名称、地理位置等。如果主体名与颁发者的可识别名称相同,则该证书是一个自签名证书。
- 公钥信息(Subject Public Key Info):证书使用者的公钥以及公钥算法信息。
- 扩展信息(Extensions):可选的扩展字段,通常包含授权密钥标识符、CRL分发点、SAN(Subject Alternative Name,使用者可选名称)等
- 签名(Signature):颁发者使用CA的私钥对证书信息所做的数字签名。
证书签名的形成:
- 首先,CA使用签名算法中的HASH密码学算法(如SHA1)生成证书的摘要信息,然后使用签名算法中的公钥密码学算法(如RSA),配合CA自己的私钥对摘要信息进行加密,最终形成签名
样例:
Ⅱ 证书的颁发
通常情况下,为网络中的设备(PC、防火墙等)申请证书时,我们先要在设备上生成公私密钥对,然后将公钥以及设备信息提供给CA,CA根据这些信息来生成证书。当然,也可以由CA来帮助设备生成公私密钥对,并为设备生成证书。然后将CA生成的公私密钥对和证书导入到设备中,省去了设备自己生成公私密钥对的过程
防火墙证书的颁发流程简要如下:
-
生成证书请求(CSR):防火墙生成私钥和公钥,并创建证书签名请求(CSR),其中包含公钥和设备信息。
-
提交CSR给证书颁发机构(CA):将CSR提交给CA,申请证书。
-
CA验证身份:CA验证防火墙的身份,通常验证域名或企业身份。
-
CA签发证书:CA使用自己的私钥对CSR进行签名,生成并返回证书。
-
安装证书:将CA签发的证书安装在防火墙上,并配置证书使用(如HTTPS、VPN等)。
-
配置信任链:在防火墙上安装CA的根证书和中间证书,确保信任链的完整。
-
定期续签:证书有效期到期前,申请新证书并替换旧证书。
Ⅲ 证书验证:
@.验证B的证书的合法性:
证书颁发给使用者后,使用者就会拿着证书到处证明自己的身份。如果我们收到了一个这样的证书,怎么才能判断这个证书就是合法的,不是伪造的呢?
- A收到了B发过来的证书,想要验证这个证书的真伪,此时A首先需要获取到为B颁发证书的那个CA的公钥,用这个CA的公钥解密证书中的签名,得到摘要信息;
- 然后A使用证书中签名算法 里面的HASH密码学算法对证书进行HASH计算 ,也得到一个摘要信息。A将两个摘要信息进行对比,如果两者一致,就说明证书确实是由这个CA颁发的(能用CA的公钥解密说明该CA确实持有私钥),并且没有被篡改过,该证书没有问题。当然,也会同时检查证书是否在有效期内
为A颁发证书的那个CA的公钥 又该如何获取呢?答案还是证书,从CA的证书获取。也就是说,CA除了给别人颁发证书外,它本身也有自己的证书,证书中包含CA的公钥。
@ 验证为B颁发证书的这个CA的证书真伪
再进一步,如何判断为B颁发证书的这个CA的证书真伪以及是否被篡改过?
- 用CA自己的公钥来验证自己的签名,即用CA证书中的公钥解密该证书中的签名,得到摘要信息;然后使用CA证书中签名算法里面的HASH密码学算法对该证书进行HASH计算,得到另一个摘要信息,两者一致,说明该CA证书是真实的,没有被篡改过。
此时有一个新的问题,假设黑客伪造了CA证书,证书中的签名是黑客用自己的私钥来签名,而公钥就是黑客自己的公钥,那么对该CA证书的验证也能通过。所以上述验证过程的前提是CA证书必须是在可信任的机构获取的,保证没有被伪造
@ 证书验证案列:
当你在Chrome浏览器上访问huawei.com
网站时,浏览器会自动进行数字证书的验证,以确保你与该网站之间的通信是安全的。以下是简要的数字证书验证过程:
1. 发起HTTPS请求
- 当你在Chrome地址栏中输入
https://huawei.com
并按下回车时,浏览器会发起一个HTTPS请求,告知服务器希望建立一个加密连接。
2. 服务器返回证书
huawei.com
的服务器响应请求,并返回一个包含网站证书的包。该证书包含以下重要信息:- 服务器的公钥
- 证书的颁发机构(CA)
- 网站域名(如huawei.com)
- 证书的有效期
3. Chrome验证证书有效性
Chrome会进行一系列的检查来验证证书的有效性:
-
验证证书是否过期:Chrome检查证书的有效期,确保当前日期在证书的有效期范围内。
-
域名匹配验证:浏览器检查证书中的域名信息,确认证书颁发给的域名是
huawei.com
或与其相关的域名,确保证书属于你要访问的网站。 -
验证证书颁发机构(CA):
- 浏览器检查证书是否由受信任的证书颁发机构(CA)签发。Chrome浏览器中内置了受信任CA的列表。如果证书是由这些可信的CA签发的,浏览器会继续进行验证。
- 证书链验证:浏览器还会从网站服务器返回的证书中提取证书链(即中间CA证书),并通过验证中间证书直到根证书,确保信任链的完整性。
-
检查证书吊销状态:
- Chrome还可能通过CRL(证书吊销列表)或OCSP(在线证书状态协议)检查证书是否已被吊销。吊销意味着证书被CA认定为不再有效,可能是因为密钥泄露或域名所有者的更改
如果证书验证通过,浏览器会继续与服务器进行SSL/TLS握手