为什么需要SSL:
不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。1)窃听风险(eavesdropping):第三方可以获知通信内容。
2)篡改风险(tampering):第三方可以修改通信内容。
3)冒充风险(pretending):第三方可以冒充他人身份参与通信。
SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
1)所有信息都是加密传播,第三方无法窃听。
2)具有校验机制,一旦被篡改,通信双方会立刻发现。
3)配备身份证书,防止身份被冒充。
为什么需要数字签名:
保证内容不被篡改。只要计算后的签名和收到的签名一致,则证明内容没有被修改过。
为什么需要证书:
保证公钥不被篡改。将公钥放在数字证书中。只要证书是可信的,公钥就是可信的。
为什么不用公钥直接加密
公钥加密计算量太大。
每一次对话(session),客户端和服务器端都生成一个”对话密钥”(session key),用它来加密信息。由于”对话密钥”是对称加密,所以运算速度非常快,而服务器公钥只用于加密”对话密钥”本身,这样就减少了加密运算的消耗时间。
为什么生成对话密钥需要3个随机数: