安全套接字层(SSL)会话剖析(摘自infoQ)

安全套接字层

安全套接字层(SSL,其后来版本称为传输层安全TLS)包含了一个握手阶段和加密数据交换阶段。图1展示了SSL握手的整个过程。在图中,第一阶段, 握手过程开始,客户端向服务端发送一组它可以支持的算法列表和一个随机数,该随机数用作密钥生产过程的输入之一。

图1安全套接字(SSL)握手(来源:Intel公司, 2009)

第2阶段,服务端选择其中的一个加密算法回送给客户端,附带包含该服务器公钥的证书,证书用于证明服务器的身份。顺便提一下,服务器的域名也可以通过证书进行校验(这样可以消除钓鱼站点)并向用户表明他们正在与正确的服务端(或服务)进行交互。另外,服务端还提供了第二个随机数,该随机数也作为密钥生成过程的输入之一。第3阶段,客户端验证服务端的证书并提取出服务器的公钥。然后,客户端产生一个随机的秘密字符串并使用服务器的公钥对它进行加密,机密后的字符串被称为预主密钥,它被发送给服务器。第4阶段,服务器通过RSA算法对客户端发过来的加密串进行解密,这是SSL交互过程中服务器上的计算最重的过程之一。随后,客户端和服务端各自产生他们的会话密钥,生成密钥的过程中使用预主密钥调用密钥生成函数(key derivatioin function,KDF)两次(该过程中使用了第1,2阶段的随机数)。在第5和第6阶段,SSL握手以交互双方向对方发送认证码而结束,认证码由所有原始握手消息计算而成。

在SSL中,数据以记录的方式传输。记录协议将数据流分解成一组数据段,每一段单独被保护并传输。换言之,在IPSec中,数据是以一个IP包为基础进行保护的,而在SSL中,数据以段为单位进行保护。在段被传输之前,通过计算消息的认证码进行信息保护。段认证码附加在段内容后面,形成消息负载并用服务器(在第2阶段)选择的加密算法进行加密。最后,在此负载上加上消息头,消息头与加密的消息体合起来形成记录

posted @ 2010-01-20 12:26  独奏者  阅读(1024)  评论(0编辑  收藏  举报