FTP协议的分析和扩展 (5)

2008-02-22 12:37:02来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


Protocol和Record
Protocol,HandShake部分用于处理通讯双方的算法协商和密钥交换过程,Record部分用于对
数据进行加密传输。

整个的SSL基本通讯过程如下:
/====================================================================\
| |
| [ SSL Client ] [ SSL Server ] |
| |
| (TCP三步握手) |
| (SSL套结字连接) |
| . |
| . SSLSocket() |
| . Bind() |
| SSLSocket() -------------------> |
| <------------------- Connect |
| (连接加密算法协商) |
| ClientHello() -------------------> |
| (服务器端算法确认和证书发送)|
| ServerHello |
| Certificate* |
| ServerKeyExchange* |
| CertificateRequest* |
| <------------------- ServerHelloDone |
| (客户端证书验证与密钥交换) |
| 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扩展使用了其中的两种状态
1)Clear (requested by 'PROT C')
2)Private (requested by 'PROT P')
在连接过程中通过ftp扩展指令PROT来完成状态的切换。

3.3 ssl FTP扩展
在RFC 2228中,ftp协议扩展了如下指令:
AUTH (Authentication/Security Mechanism),
ADAT (Authentication/Security Data),
PROT (Data Channel Protection Level),
PBSZ (Protection Buffer Size),
CCC (Clear Command Channel),
MIC (Integrity Protected Command),
CONF (Confidentiality Protected Command), and
ENC (Privacy Protected Command).

其中和SSL扩展相关的主要指令有以下几条:
AUTH (协商扩展验证): 指定扩展认证方法,SSL或TLS;
PBSZ (协商保护缓冲区): 制定保护缓冲区,SSL/TLS模式中必须为0;
PROT (切换保护级别): 切换保护级别,可以为"C"无保护,或"P"保护级别;

在一个典型的ftp ssl通讯过程中指令序列如下:
/====================================================================\
| Client Server |
| control data data control |
|====================================================================|
| |
| socket() |
| bind() |
| socket() |
| connect() -------------------------------------------> accept() |
| <------------------------------------------- 220 |
| AUTH TLS -------------------------------------------> |
| <------------------------------------------- 234 |
| TLSneg() <------------------------------------------> TLSneg() |
| PBSZ 0 -------------------------------------------> |
| <------------------------------------------- 200 |
| PROT P -------------------------------------------> |
| <------------------------------------------- 200 |
| USER elly -------------------------------------------> |
| <------------------------------------------- 331 |
| PASS **** -------------------------------------------> |
| <------------------------------------------- 230 |
| |
\====================================================================/

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:点对点隧道协议(PPTP)常见问题解答

下一篇:BGP协议同步规则目的需求