|
FTP协议的分析和扩展(14) (客户端证书验证与密钥交换) Certificate* ClientKeyExchange CertificateVerify* [ChangeCipherSpec] Finished -------------------> (数据加密算法协商) [ChangeCipherSpec] <------------------- Finished (应用数据加密传输) Application Data <------------------> Application Data ... \====================================================================/ SSL套结字通讯过程如下: 1, Client和Server双方程序通过ssl socket系列函数替换BSD Socket系列函数; 2, Client通过TCP协议连接到Server端应用程序; 3, Client发起连接质询,发送自身所能实现的"安全集合",其中包含加密和签名算法协商; 4, Server回应连接,包含本次通讯所使用的算法集合,以及Server端证书; 5, Client收到证书后,使用Server端协商的算法,用Server端证书中包含的Server公钥加密一个 随机序列,作为一个挑战质询发回Server; 6, Server收到加密密文,使用自身的私钥进行数据解密,如果成功,代表SA协商匹配,可以 开始通讯; 7, 可选过程,继续发起Client端验证过程,Client端发出Client证书,进行Client端验证过程; 8, 可选过程,数据传输过程加密算法协商; 9, 协商完毕,开始加密数据传输; 可以看出,SSL Socket通讯过程相比正常的BSD Socket,只不过多了一个安全集合交换协商的过程, 这个过程由SSL实现自身来完成,相对于应用程序,只要采用了SSL Socket,其他的过程都是 透明的。SSL通讯过程中的第3-6步是必须操作,包含了Server端验证过程和加密算法协商,类 似于TCP协议的三步握手过程,这个过程中通过公钥加密算法加密密钥(公钥)和解密秘钥(私钥) 不同的功能,巧妙地实现了密钥交换和算法协商,并且由于解密秘钥不需要在网络上传输,这样 就同时实现了数据通讯过程的保密性和内部应用程序协议的保密性。在第7步进行Client端证书 的验证过程中,由于当前网络环境下PKI和CA体系尚不完善,并且由于SSL设计的工作环境相对 对Client端的安全需求并不很高,所以Client端验证一般作为一种可选手段来实现,取决于应 用程序的安全等级需求。 SSL数据通讯的机密性特性就是由上面的过程完成的,在算法协商过程中除了加密算法的协商外 还会交换一个数据签名算法,用于对数据生成一个唯一的散列校验码,防止在传输过程中数据 被篡改,数据签名过程实现了通讯过程的完整性保证。 对应于SSL所提供的两种安全特性,机密性和保密性,ssl定义了四个安全级别,分别是这两种 特性的状态组合: C - Clear - 没有任何保护 S - Safe - 完整性实现,但是没有机密性 E - Confidential - 机密性实现,但是没有完整性 P - Private - 同时实现机密性和完整性 ftp的ssl扩展使用了其中的两种状态
|