加密方式
常用的加密方式分为:对称加密、非对称加密。
对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。--百度百科
简单说就是加密方和解密方使用同一个密钥进行加解密交换信息。
但是对称加密的密钥怎么安全地协商确定或者由一方发送给另一方,一直是个问题。
非对称加密
相对于对称加密双方持有相同的密钥,非对称加密的双方持有不同的密钥,即公钥和私钥,公钥加密私钥解密,公钥加密的密文用私钥是解密不了的。
公钥和私钥是一对存在。
虽然公钥发送给私钥比较安全,但是私钥发给公钥时可能会发生被其他公钥持有者劫持进行解密,所以非对称加密只是单向比较安全,双向并不安全。
https的加密应用
https握手协议中涉及密钥交换:
- 服务器向客户端发送公钥
- 客户端生成对称加密的密钥,然后使用接收到公钥进行加密发送给服务器
- 服务器收到密文,使用私钥进行解密,获取对称加密的密钥
- 之后传输使用对称加密
https非常巧妙地将对称加密和非对称加密结合,这样安全性和效率达到最高。
RSA是非对称加密默认算法,但是效率不高,大概占了整个握手的90%,而对称加密只有非对称加密的0.1%。
所以,当年没有采用两端使用两对密钥,分别持有私钥和公钥,这样双向都安全了。不过这样设计的服务的性能一定很差。
总结
通过HTTPS的握手的密钥交换方式,给我们在服务加密的方式方法上很多启发。