传输层安全
安全套接层(SSL)及其新继任者传输层安全(TLS)是在互联网上提供保密安全信道的加密协议,为诸如网站、电子邮件、网上传真等等数据传输进行保密。SSL 3.0和TLS 1.0有轻微差别,但两种规范其实大致相同。
SSL利用密钥算法在互联网上提供端点身份认证与通讯保密。在典型例子中,只有服务器被可靠身份认证(即其验证被确保),客户端踪迹不一定经可靠认证;相互间的身份认证需要公钥基础设施(PKI)设置于客户端中。协议的设计在某种程度上能够使客户端/服务器应用程序通讯本身预防窃听、Tampering、和消息伪造。
SSL包含三个基本阶段:
对等协商密钥算法支持
基于公钥密码的密钥交换和基于证书的身份认证
基于对称密钥的数据传输保密
在第一阶段,客户端与服务器协商所用密码算法。当前广泛实现的算法选择如下:
公钥密码系统:RSA、Diffie-Hellman、DSA及Fortezza;
对称密钥系统:RC2、RC4、IDEA、DES、Triple DES及AES;
单向散列函数:MD5及SHA。
首先,SSL的记录层(Record layer)用于封装更高层的HTTP等协议。记录层数据可以被随意压缩、加密,与消息验证码(MAC)打包在一起。每个记录层包都有一个content_type段用以记录更上层用的协议。
客户端要收发几个握手信号:
发送一个ClientHello消息,说明它支持的密码算法列表、压缩方法及最高协议版本,也发送稍後将被使用的随机字节。
然後收到一个ServerHello消息,包含服务器选择的连接参数,源自客户端初期所提供的ClientHello。
当双方知道了连接参数,客户端与服务器交换证书(依靠被选择的公钥系统)。这些证书通常基于X.509,不过已有草案支持以OpenPGP为基础的证书。
服务器能够请求得到来自客户端的证书,所以连接可以是相互的身份认证。
客户端与服务器通过加密信道协商一个共同的"主密钥"(and the client- and server-generated random values),这通过精心谨慎设计的伪随机数函数实现。结果可能使用Diffie-Hellman交换,或简单的公钥加密,双方各自用私钥解密。所有其他关键数据的加密均使用这个"主密钥"。
TLS/SSL有多样的安全保护措施:
所有的记录层数据均被编号,序号用在消息验证码(MAC)中。