在网络中传输数据时,为了防止数据被人窃听,会对数据进行加密;为了防止数据被篡改,会对数据做完整性保证。而对数据的加密,我们又会涉及到对称加密和非对称加密。另外还有很重要的的一点就是,如何确认通信双方的身份是可信任的。下面我们分开讨论。
1. SSL/TLS如何保证双方的身份是可信任的
1.1 单证
SSL/TLS客户端为了保证与自己通信的服务器是真实的,而不是中间人冒充的,往往需要服务器提供证书,采用PKI体系来验证服务器身份的真实性。报文如下:
可以看到单证时,报文交换如下:
(1) Server --> Client:Server Certificate。
1.2 双证
同样的服务器也会对客户端的身份进行认证,一般由SSL/TLS上层协议来完成,可以要求客户端提供账号、密码来做身份验证,具体看上层协议的实现。当然SSL/TLS协议本身也可以要求客户端提供证书来完成,这就是我们所说的双证。报文如下:
可以看到双证时,报文交换如下:
(1) Server --> Client:Server Certificate & Client Certificate Reque