|
FTP协议的分析和扩展(13) 后,IETF(www.ietf.org)将SSL作了标准化,规范为RFC2246,并将其称为TLS(Transport Layer Security)。从技术上讲,TLS1.0与SSL3.0的差别非常微小,SSL由于其历史应用的原因在当 前的商业应用程序之中使用得更多一些。 TLS协议,RFC 2246:  http://www.ietf.org/rfc/rfc2246.txt >>3.2 数据机密性和完整性 前面多次提到了数据的机密性和完整性两个方面,在此略微解释一下。数据的机密性确保数据 信息机密可靠,不会被没有权限的对象所访问和浏览到,基本的机密性保护手段就是数据加密 ;而数据的完整性则是指数据在传输和存储过程中将保证数据的唯一和完整,不会被恶意篡改 着所修改,保证数据完整性的基本手段主要有数字签名。 这里就牵扯到数据加密领域的两类算法,加密算法和散列算法。加密算法从数学原理上看可以 分为对称加密和非对称加密,从数据处理方法上可以分为流加密和分组加密,本文重点不在此 ,不再赘述,只举例几种常用的加密算法: DES, 3DES, AES, BlowFish,RC2-RC6等等。数据签名算法是加密领域的另一套方法,又叫数据散列算法,用于对 数据进行处理生成一个唯一的等长签名字符串,原数据的长度可能是任意的,而任意两个相似 但哪怕只有少许细微差别的数据集,都将产生差别非常大的等长签名字符串,这个字符串在一 般意义下被认为是极少会发生空间冲突(重复)的,因此数据散列算法对于确保数据的唯一性是 一种必要的手段;常见的数字散列算法有MD5,SHA-1,CAST-256等等。 可以看出,面对如此多种类的加密算法,应用程序处理起来是很繁琐的。SSL在这个层次中就 提供了一种自动的算法协商,密钥交换和数据加密过程。SSL协议分为两部分:Handshake Protocol和Record Protocol,HandShake部分用于处理通讯双方的算法协商和密钥交换过程,Record部分用于对 数据进行加密传输。 整个的SSL基本通讯过程如下: /====================================================================\ [ SSL Client ] [ SSL Server ] (TCP三步握手) (SSL套结字连接) . . SSLSocket() . Bind() SSLSocket() -------------------> <------------------- Connect (连接加密算法协商) ClientHello() -------------------> (服务器端算法确认和证书发送) ServerHello Certificate* ServerKeyExchange* CertificateRequest* <------------------- ServerHelloDone
|