传输层安全(Transport Layer Security,TLS)其新继任者
安全套接层(Security Socket Layer,SSL)在互联网上提供保密安全信道的加密协议,为诸如网站、
电子邮件、网上
传真等等数据传输进行保密。SSL 3.0和TLS 1.0有轻微差别,但两种规范其实大致相同。
TLS利用密钥算法在互联网上提供端点
身份认证与通讯保密,其基础是
公钥基础设施(PKI)。不过在实现的典型例子中,只有网络服务者被可靠
身份验证,而其客户端则不一定。这是因为
公钥基础设施普遍商业运营,
电子签名证书要花大钱购买,普通大众很难买的起证书。协议的设计在某种程度上能够使客户端/服务器应用程序通讯本身预防窃听、干扰(Tampering)、和消息伪造。
首先,TLS的记录层(Record layer)用于封装更高层的HTTP等协议。记录层数据可以被随意压缩、加密,与消息验证码(MAC)打包在一起。每个记录层包都有一个content_type段用以记录更上层用的协议。
发送一个ClientHello消息,说明它支持的
密码算法列表、压缩方法及最高协议版本,也发送稍后将被使用的随机数。
然后收到一个ServerHello消息,包含服务器选择的连接参数,源自
客户端初期所提供的ClientHello。
当双方知道了连接参数,
客户端与服务器交换证书(依靠被选择的
公钥系统)。这些证书通常基于X.509,不过已有草案支持以OpenPGP为基础的证书。
服务器请求得到客户端的证书有可能成功,所以连接可以是相互的
身份认证。
客户端与服务器通过加密通道协商一个共同的“主密钥”(客户端与服务器计算随机数),这通过精心谨慎设计的
伪随机数函数实现。结果可能使用Diffie-Hellman交换,或简单的公钥加密,双方各自用
私钥解密。所有其他关键数据的加密均使用这个“主密钥”。