《深入浅出HTTPS》读书笔记(22):密钥协商算法
《深入浅出HTTPS》读书笔记(22):密钥协商算法
密钥的管理和分配是个难题,尤其是生成一个动态密钥更难,而密钥协商算法就可以解决密钥分配、存储、传输等问题。
在网络通信中,为了加密解密数据,可以采用动态密钥,也叫作会话密钥,这个密钥有以下一些特点:
◎会话密钥的作用就是为了加密解密通信数据
◎在加密解密通信数据之前,客户端和服务器端需要协商出会话密钥
◎会话密钥的意思就是该密钥不用存储,一旦客户端和服务器端的连接关闭,该密钥就会消失
【RSA密钥协商算法】
◎客户端初始化连接服务器端,服务器发送RSA密钥对的公钥给客户端。
◎客户端生成一个随机值,这个值必须是随机的
◎客户端使用服务器RSA密钥对的公钥加密会话密钥,并发送给服务器端,由于攻击者没有服务器的私钥,所以无法解密会话密钥。
◎服务器端用它的私钥解密出会话密钥。
◎至此双方完成连接,接下来服务器端和客户端可以使用对称加密算法和会话密钥加密解密数据。
RSA密钥协商算法有几个优点:
◎每次连接阶段的会话密钥是不同的,无须存储到设备中,连接关闭后会话密钥就会消失。
◎每次连接中的会话密钥是不同的
◎虽然RSA运算很慢,但由于会话密钥长度相对很小,计算的是数据量并不大,所以性能消耗相对可控。
HTTPS本身也是借鉴了这个方案,只是在设计上更严谨。
RSA密钥协商算法也有缺点:
◎获取会话密钥过程其实并不能称为协商,完全是由客户端决定的,只能称为密钥传输。
◎最大的问题就是不能提供前向安全性。