现在广泛使用的有两个协议:
- 安全套接字层 SSL (Secure Socket Layer)
- 运输层安全 TLS (Transport Layer Security)
SSL作用在端系统应用层的HTTP和运输层之间,在TCP之上建立起一个安全通道,为通过TCP传输的应用层数据提供安全保障。
在SSL 3.0的基础上设计了TLS协议,为所有基于TCP的网络应用提供安全数据传输服务。
在未使用SSL时,应用层的应用程序的数据是通过TCP套接字与运输层进行交互的。
在使用SSL时:
- 因为SSL增强了TCP服务,因此SSL应该是运输层协议。然而实际上,需要使用安全运输的应用程序(如HTTP)却把SSL驻留在应用层。
- 在应用程序下面多了一个SSL子层,而在应用程序和SSL子层之间,还有一个SSL套接字,其作用和以前讲过的TCP套接字相似,是应用程序和SSL子层的应用编程接口API。
SSL提供的安全服务:
- SSL服务器鉴别:允许用户证实服务器的身份。支持SSL的客户端通过验证来自服务器的证书,来鉴别服务器的真实身份并获得服务器的公钥。
- SSL客户鉴别:允许服务器正式客户身份
- 加密的SSL会话:对报文进行加密,并检测报文是否被篡改
简要过程如下:
- 协商加密算法
- 第①步:$A \to B$,发送SSL版本号和可选加密算法;
- 第②步:$B \to A$,选择算法并告知A。
- 服务器鉴别
- 第③步:$B \to A$,发送包含其RSA公钥的数字证书。
- 第④步:A使用认证机构CA公开发布的RSA公钥对证书进行验证。
- 会话密钥计算
- 第⑤步:$A \to B$,随机生成一个秘密数,用B的RSA公钥进行加密后发送给B。
- 第⑥步:双方根据算法产生共享的对称会话密钥。
- 安全数据传输
- 第⑦步:双方用会话密钥加密和解密它们之间传送的数据并验证其完整性。