SSL具有保密性、真实性、完整性和不可否认性,广泛使用在重要高度安全场景。
这些特性具体怎么体现呢?比如怎么就不可否认了?
SSL协议的客户端服务器连接握手过程大致如下:
- 客户端发送一个「ClientHello」消息,说明它支持的密码算法列表以及最高协议版本等必要的信息
- 服务器返回支持的SSL版本,加密算法列表,以及自己的证书等。如果客户端请求的资源需要认证,服务器请求客户端发送证书。
- 客户端首先验证服务器,如果认证失败,则断开连接,认证成功则执行下一步;
- 客户端发送
pre-master secret
(用服务器的公钥加密)和自己的证书(如果服务器需要验证身份) - 服务器验证客户端,用自己的私钥得到pre-master secret,然后经过一系列步骤生成
master secret
。 - 客户端和服务器使用master secret生成对称密钥
session key
,之后传输的收据均使用session key加密解密。 - 客户端发送消息声明之后的数据用session key加密,并发送一条加密数据表明握手结束
- 服务器发送消息声明之后的数据用session key加密,并发送一条加密数据表明握手结束
数据传输时,将分片传输,如下图所示:
每条记录中数据和mac(指纹)均做加密处理。
- 保密性:传输的数据均是采用session key加密,保证了保密性;
- 真实性:双方握手时对对方的身份均有验证,因此可以保证对方的真实性
- 完整性:每部分数据均有mac验证,验证时计算数据的mac然后与接收到的mac比较,即可确定数据是否完整。如下图:
- 不可否认性:session key只有通信双方有,并且不在网络上传输,因此攻击者无法伪造使用session key加密的数据,所以具有不可抵赖性。
参考:Transport Layer Security
SSL不能提供交易的不可否认性。SSL协议是基于Web应用的安全协议,它只能提供安全认证,保证SSL链路上的数据完整性和保密性。却不能对电子商务的交易应用层的信息进行数字签名,因此,SSL不能提供交易的不可否认性