您的位置:首页 > 编程语言 > PHP开发

ftps

2015-06-03 00:04 621 查看
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 |
| |
\====================================================================/
一个SSL FTP的连接过程实例:
/====================================================================\
| |
| WinSock 2.0 -- OpenSSL 0.9.7d 17 Mar 2004 |
| [R] Connecting to 192.168.21.3 -> IP=192.168.21.3 PORT=2121 |
| [R] Connected to 192.168.21.3 |
| [R] 220 Please enter your login name now. |
| [R] AUTH TLS (认证方法)|
| [R] 234 AUTH Command OK. Initializing SSL connection. |
| [R] Connected. Negotiating SSL/TLS session.. |
| [R] SSL/TLS negotiation successful... (协商关联)|
| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits)
| [R] PBSZ 0 (PBSZ设置)|
| [R] 200 PBSZ Command OK. Protection buffer size set to 0. |
| [R] USER elly (ftp传统认证)|
| [R] 331 Password required for elly . |
| [R] PASS (hidden) |
| [R] 230 User elly logged in. |
| [R] SYST |
| [R] 215 UNIX Type: L8 , CP:936 |
| [R] FEAT (扩展指令测试)|
| [R] 211-Extensions supported: |
| [R] SIZE |
| [R] MDTM |
| [R] MDTM YYYYMMDDHHMMSS filename |
| [R] LIST -laT |
| [R] STAT -laT |
| ... |
| [R] AUTH SSL |
| [R] AUTH TLS |
| [R] PROT |
| [R] PBSZ |
| [R] SSCN |
| [R] UTF8 |
| [R] 211 END |
| [R] CLNT FlashFXP 2.2.985 |
| [R] 213 client type set to FlashFXP 2.2.985. |
| [R] PWD (传统通讯过程)|
| [R] 257 "/" is current directory |
| [R] TYPE A |
| [R] 200 Type set to ASCII. |
| [R] PROT P (切换到保护模式)|
| [R] 200 PROT P accepted. |
| [R] PASV |
| [R] 227 Entering Passive Mode (192,168,21,3,5,122) |
| [R] Opening data connection IP: 192.168.21.3 PORT: 1402 |
| [R] LIST -al |
| [R] Connected. Negotiating SSL/TLS session.. (加密通讯过程)|
| [R] 150 Opening ASCII data connection for ls / using SSL/TLS. |
| [R] SSL/TLS negotiation successful... |
| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits)
| [R] 226-free disk space under this directory : 101 mb |
| [R] 226 Transfer finished successfully. Data connection closed . |
| [R] List Complete: 181 bytes in 0.14 seconds (1.26 KBps) |
| |
\====================================================================/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: