ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 加密算法 1. 对称加密: DES,AES,3DES; 2. 非对称加密 : RSA,DSA,ECC; # 对称加密算法 加密方和解密方使用同一把秘钥,但是秘钥有泄露的风险; ![](https://img.kancloud.cn/33/be/33bed1a20ba400d1a9c3466518ed1a7a_1360x512.png) ## 优势 1. 解密效率高; ## 劣势 1. 秘钥无法实现安全传输; 2. 秘钥的数目难以管理; 3. 无法提供信息完整性校验; # 非对称加密算法 ![](https://img.kancloud.cn/b6/16/b616b7be2f270f504091646945916b22_1344x550.png) ## 优势 1. 服务器仅维持一个私钥即可; ## 劣势 1. 公钥是公开的; 2. 非对称加密算法加解密过程中会耗费一定时间; 3. 公钥并不包含服务器信息,存在中间人攻击的可能性; # HTTPS加密原理 https混合使用对称加密和非对称加密; 1. 连接建立阶段使用非对称加密算法;--->服务器给客户端公钥,客户端拿着公钥加密伪随机生成的**会话秘钥**,并传递给服务端,服务端解密,拿到**会话秘钥**; 2. 内容传输阶段使用对称加密算法;--->使用**会话秘钥**进行内容的传输; ## HTTPS五个角色 1. 服务器; 2. 客户端; 3. 公钥; 4. 私钥; 5. 会话秘钥; ![](https://img.kancloud.cn/a0/9a/a09a76c5f6bd5a3c841ea1a87459138e_1834x1080.png) 1. Client发起一个HTTPS(https:/demo.linianhui.dev)的请求,根据RFC2818的规定,Client知道需要连接Server的443(默认)端口。 2. Server把事先配置好的公钥证书(public key certificate)返回给客户端。 3. Client验证公钥证书:比如是否在有效期内,证书的用途是不是匹配Client请求的站点,是不是在CRL吊销列表里面,它的上一级证书是否有效,这是一个递归的过程,直到验证到根证书(操作系统内置的Root证书或者Client内置的Root证书)。如果验证通过则继续,不通过则显示警告信息。 Client使用伪随机数生成器生成加密所使用的会话密钥,然后用证书的公钥加密这个会话密钥,发给Server。 4. Server使用自己的私钥(private key)解密这个消息,得到会话密钥。至此,Client和Server双方都持有了相同的会话密钥。 Server使用会话密钥加密“明文内容A”,发送给Client。 5. Client使用会话密钥解密响应的密文,得到“明文内容A”。 Client再次发起HTTPS的请求,使用会话密钥加密请求的“明文内容B”,然后Server使用会话密钥解密密文,得到“明文内容B”。 ## 总结 简单总结下,HTTPS是使用了证书的一个混合密码系统,其中证书的作用在于传递会话密钥,以及验证网站的真实性;而HTTPS真正的加密操作是由对称密码这个工具负责的(有兴趣的可以找找每个步骤中都用到了密码工具箱中的那些工具)。 ## 自己总结 1. 非对称加密会生成一对公钥和私钥,必须要使用特定的私钥才能解开同一对的公钥; 2. 服务器本身有一个公钥和一个私钥; 3. 当客户端去访问的时候会给这个客户端一个公钥; 4. 客户端拿着这个公钥去加密随机数生成器生成加密所使用的**会话密钥**,并发送给服务端; 5. 服务端使用私钥去解密这个加密后的秘钥,这样就得到了**会话秘钥**; 6. 双方使用相同的**会话秘钥**进行连接; 7. HTTPS前半段是非对称加密,而后半段是对称加密; ## 问题 为什么黑客无法解密呢? 因为黑客没有私钥,所以黑客不能解密加密后的**会话秘钥**拿不到**会话秘钥**,既然拿不到**会话秘钥**,就无法解密加密后的内容.这样就安全了;