HTTPS的加密是如何实现的
1、http
明文传输数据
2、https
加密数据再传输
2.1 对称加密方式
1、服务器生成密钥,通过明文发送给客户端。
2、服务器通过密钥加密数据,传输给客户端。
3、客户端通过服务器给的密钥解密数据。
问题:密钥通过明文发送,会被窃取
2.2 非对称加密方式
1、分为公钥和私钥。
用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。
2、服务器可以通过客户端给的公钥加密。
3、客户端可以用自己的私钥解密。
注:ssh使用RSA算法生成密钥和公钥的时候,包括id_rsa和id_rsa.pub,即密钥和公钥
问题:加密需要大量的时间
不安全性:容易被中间人截获(中继攻击)
2.3 对称和非对称加密结合
对称加密用来传输数据,非对称加密用来传输对称加密的密钥。 作用:加快数据加密速度。
1、服务器明文方式发送公钥
2、客户端使用明文发送自己的对称加密密钥
3、服务器和客户端使用对称加密传输数据
2.4 数字签名
目的:为了保证公钥是服务器的,通过一个认证中心(CA)来认证。CA提供给服务器私钥。
1、服务器对服务器信息和服务器要发送的公钥进行hash算法生成信息摘要,并用CA给的私钥加密
2、加密后,所得到的叫数字签名
3、合并服务器信息、公钥和数字签名
4、服务器将合并后的信息发送给客户端
5、客户端使用CA所给的公钥解密所得到的信息摘要,用hash算法计算服务器信息和公钥得到一个自己计算出来的信息摘要
6、对比这两个信息摘要是否相同
如果相同则说明服务器是真实的。否则认为该服务器是冒充的,出现
思考:数字签名的私钥会不会被调包?
我的想法:使用一个USB存储和运输数字签名,用专门的CA软件来获取USB中的数字签名。
欢迎关注我的微信公众号
互联网矿工