1:对称加密算法
客户端加密数据和服务端解密数据,使用的相同的秘钥:
固定秘钥:双方约定好一个固定秘钥;
随机秘钥:双方约定每次建立连接的时候,某固定BYTE为秘钥;
缺点:秘钥固定,容易被破解;
2:非对称秘钥算法
非对称加密有两个秘钥,一个公开的叫公钥,一个私藏的叫私钥;公钥加密后只能用私钥解开,反过来也一样;
缺点:1:公钥是公开的,一般不会用私钥加密,公钥解密;所以为了保证数据通信,客户端还需要把客户端公钥,发送给服务端;
2:每次需要使用秘钥对进行加解密,比较浪费时间;
3:非对称与对称加密结合
先建立连接,来传输秘钥对的公钥和私钥;然后使用秘钥对来传输 对称加密的秘钥,后续传输数据再使用 对称加密算法;
缺点:对称加密的秘钥是一个随机数,存在被预测出来的可能性,尽管可能性非常低;
4:秘钥计算
客户端和服务端各自生成一个随机数发给对方,客户端再额外加密传输一个随机数给服务器,然后双方都用这三个随机数生产真正的秘钥;并且在正式传输数据之前,要先进行秘钥交互,确认双方计算出来的秘钥是一样的;
缺点:会存在中间人攻击漏洞,即有一个中间人在客户端和服务端转发了所有的数据,但是客户端和服务端并不知情,导致数据泄漏;
5:数字证书
客户端和服务端利用公证人的身份进行非对称加密,利用hash值,进行数字签名加密验证;除了中间人偷到了公证人的私钥,否则中间人是没办法伪造 数字证书的;
利用数字证书加密的连接,都从http变为了https;
6:信任链
当客户端和服务端越来越多的时候,一个 公证人就忙不过来;就通过层层分包,设立多级公证人信息;
以后在验证网站服务器证书时,就要先去验证证书的签发者,然后一层层向上验证,查看最终的签发者是否在操作系统安装的 根证书列表中;
一级公证人是安装的根证书,预先安装在我们的操作系统中;可通过‘“控制面板”->“证书” 进行查看