欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

FTP協(xié)議的分析和擴展

  發(fā)布時間:2010-09-07 22:44:21   作者:佚名   我要評論
>>1.0<< FTP和TCP端口號  根據是使用Port模式還是Passive模式,FTP使用不同的TCP端口號,在詳細描述FTP前,我們來  簡單討論一下TCP端口號的一些基本概念。TCP使用端口號來標識所發(fā)送和接收的應用,端口
..z.L..... 
0x0020 5018 ff66 c4eb 0000 5553 4552 2065 6c6c P..f....USER.ell 
0x0030 790d 0a y.. 
<用戶名:elly> 
21:55:37.059430 IP 192.168.0.3.21 > 192.168.0.1.2323: P 154:188(34) ack 12 win 
65524 (DF) 
0x0000 4500 004a d58b 4000 8006 a3cd c0a8 0003 E..J..@......... 
0x0010 c0a8 0001 0015 0913 e981 06c1 7a0c 4c29 ............z.L) 
0x0020 5018 fff4 b343 0000 3333 3120 5061 7373 P....C..331.Pass 
0x0030 776f 7264 2072 6571 7569 7265 6420 666f word.required.fo 
0x0040 7220 656c 6c79 202e 0d0a r.elly.... 
21:55:37.060301 IP 192.168.0.1.2323 > 192.168.0.3.21: P 12:27(15) ack 188 win 
65348 (DF) 
0x0000 4500 0037 b8db 4000 8006 c090 c0a8 0001 E..7..@......... 
0x0010 c0a8 0003 0913 0015 7a0c 4c29 e981 06e3 ........z.L).... 
0x0020 5018 ff44 e479 0000 5041 5353 2038 3838 P..D.y..PASS.888 
0x0030 3838 3838 380d 0a 88888.. 
<密碼:88888888> 
21:55:37.243954 IP 192.168.0.3.21 > 192.168.0.1.2323: . ack 27 win 65509 (DF) 
0x0000 4500 0028 d59d 4000 8006 a3dd c0a8 0003 E..(..@......... 
0x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38 ............z.L8 
0x0020 5010 ffe5 6ec8 0000 0000 0000 0000 P...n......... 
21:55:37.285586 IP 192.168.0.3.21 > 192.168.0.1.2323: . 188:1648(1460) ack 27 win 
65509 (DF) 
0x0000 4500 05dc d5a4 4000 8006 9e22 c0a8 0003 E.....@....".... 
0x0010 c0a8 0001 0015 0913 e981 06e3 7a0c 4c38 ............z.L8 
0x0020 5010 ffe5 0300 0000 3233 302d 5765 6c63 P.......230-Welc 
0x0030 6f6d 6520 746f 2076 6920 4654 5020 7365 ome.to.vi.FTP.se 
0x0040 7276 6572 0d0a 3233 302d 0d0a 3233 302d rver..230-..230- 
0x0050 4375 Cu 
<明文數據傳輸> 
\=================================================================/ 

>>3.0<< 改進: ftp安全擴展, SSL/TLS 
在傳統(tǒng)的ftp通訊和傳輸過程中可以看出,ftp協(xié)議提供了一種簡單實用的網絡文件傳輸方法, 
但是缺陷也是顯而易見的。傳統(tǒng)ftp服務缺乏對數據的機密性和完整性保護,對通訊雙方也沒 
有可靠的認證措施,同時還存在著明文信息傳輸的弱點 -- 
在同一個網絡上的任何用戶都可能竊取到重要的信息。雖然近年來出現了很多種ftp的替代服 
務,例如ssh加密通道的sftp/scp,或使用IPSEC協(xié)議的VPN通道等等,但是在大多數情況下,f 
tp的通用性和易用性使得它在很長一段時間內必然無法被完全取代。所以如同其他一系列古董 
服務(例如SMTP/HTTP)一樣,近年來也出現了一些不需要對ftp協(xié)議自身做完全更改的協(xié)議擴展 
模塊,能夠良好的完成兼容性和功能擴展。ftp SSL/TLS Extension就是其中一種方式。 

FTP安全擴展: http://www.ietf.org/rfc/rfc2228.txt 
http://www.ietf.org/rfc/rfc2246.txt 
FTP安全擴展,SSL接口草案: 
http://www.ietf.org/internet-drafts/draft-murray-auth-ftp-ssl-13.txt 

>>3.1 SSL/TLS簡介 
先說一下SSL/TLS協(xié)議,SSL(Secure Socket 
Layer)最早是netscape公司設計的用于HTTP協(xié)議加密的安全傳輸協(xié)議,SSL工作于TCP協(xié)議的傳 
輸層(TCP層)和應用程序之間。作為一個中間層,應用程序只要采用SSL提供的一套SSL套接字A 
PI來替換標準的Socket套接字,就可以把程序轉換為SSL化的安全網絡程序,在傳輸過程中將 
由SSL協(xié)議實現數據機密性和完整性的保證。SSL協(xié)議的當前版本為3.0,當SSL取得大規(guī)模成功 
后,IETF(www.ietf.org)將SSL作了標準化,規(guī)范為RFC2246,并將其稱為TLS(Transport 
Layer 
Security)。從技術上講,TLS1.0與SSL3.0的差別非常微小,SSL由于其歷史應用的原因在當 
前的商業(yè)應用程序之中使用得更多一些。 
TLS協(xié)議,RFC 2246: http://www.ietf.org/rfc/rfc2246.txt 

>>3.2 數據機密性和完整性 
前面多次提到了數據的機密性和完整性兩個方面,在此略微解釋一下。數據的機密性確保數據 
信息機密可靠,不會被沒有權限的對象所訪問和瀏覽到,基本的機密性保護手段就是數據加密 
;而數據的完整性則是指數據在傳輸和存儲過程中將保證數據的唯一和完整,不會被惡意篡改 
著所修改,保證數據完整性的基本手段主要有數字簽名。 

這里就牽扯到數據加密領域的兩類算法,加密算法和散列算法。加密算法從數學原理上看可以 
分為對稱加密和非對稱加密,從數據處理方法上可以分為流加密和分組加密,本文重點不在此 
,不再贅述,只舉例幾種常用的加密算法: DES, 3DES, AES, 
BlowFish,RC2-RC6等等。數據簽名算法是加密領域的另一套方法,又叫數據散列算法,用于對 
數據進行處理生成一個唯一的等長簽名字符串,原數據的長度可能是任意的,而任意兩個相似 
但哪怕只有少許細微差別的數據集,都將產生差別非常大的等長簽名字符串,這個字符串在一 
般意義下被認為是極少會發(fā)生空間沖突(重復)的,因此數據散列算法對于確保數據的唯一性是 
一種必要的手段;常見的數字散列算法有MD5,SHA-1,CAST-256等等。 

可以看出,面對如此多種類的加密算法,應用程序處理起來是很繁瑣的。SSL在這個層次中就 
提供了一種自動的算法協(xié)商,密鑰交換和數據加密過程。SSL協(xié)議分為兩部分:Handshake 
Protocol和Record 
Protocol,HandShake部分用于處理通訊雙方的算法協(xié)商和密鑰交換過程,Record部分用于對 
數據進行加密傳輸。 

整個的SSL基本通訊過程如下: 
/====================================================================\ 
| | 
| [ SSL Client ] [ SSL Server ] | 
| | 
| (TCP三步握手) | 
| (SSL套結字連接) | 
| . | 
| . SSLSocket() | 
| . Bind() | 
| SSLSocket() -------------------> | 
| <------------------- Connect | 
| (連接加密算法協(xié)商) | 
| ClientHello() -------------------> | 
| (服務器端算法確認和證書發(fā)送)| 
| ServerHello | 
| Certificate* | 
| ServerKeyExchange* | 
| CertificateRequest* | 
| <------------------- ServerHelloDone | 
| (客戶端證書驗證與密鑰交換) | 
| Certificate* | 
| ClientKeyExchange | 
| CertificateVerify* | 
| [ChangeCipherSpec] | 
| Finished -------------------> (數據加密算法協(xié)商) | 
| [ChangeCipherSpec] | 
| <------------------- Finished | 
| (應用數據加密傳輸) | 
| Application Data <------------------> Application Data | 
| ... | 
\====================================================================/ 

SSL套結字通訊過程如下: 
1, Client和Server雙方程序通過ssl socket系列函數替換BSD Socket系列函數; 
2, Client通過TCP協(xié)議連接到Server端應用程序; 
3, Client發(fā)起連接質詢,發(fā)送自身所能實現的"安全集合",其中包含加密和簽名算法協(xié)商; 
4, Server回應連接,包含本次通訊所使用的算法集合,以及Server端證書; 
5, Client收到證書后,使用Server端協(xié)商的算法,用Server端證書中包含的Server公鑰加密一個 
隨機序列,作為一個挑戰(zhàn)質詢發(fā)回Server; 
6, Server收到加密密文,使用自身的私鑰進行數據解密,如果成功,代表SA協(xié)商匹配,可以 
開始通訊; 
7, 可選過程,繼續(xù)發(fā)起Client端驗證過程,Client端發(fā)出Client證書,進行Client端驗證過程; 
8, 可選過程,數據傳輸過程加密算法協(xié)商; 
9, 協(xié)商完畢,開始加密數據傳輸; 

可以看出,SSL Socket通訊過程相比正常的BSD Socket,只不過多了一個安全集合交換協(xié)商的過程, 
這個過程由SSL實現自身來完成,相對于應用程序,只要采用了SSL Socket,其他的過程都是 
透明的。SSL通訊過程中的第3-6步是必須操作,包含了Server端驗證過程和加密算法協(xié)商,類 
似于TCP協(xié)議的三步握手過程,這個過程中通過公鑰加密算法加密密鑰(公鑰)和解密秘鑰(私鑰) 
不同的功能,巧妙地實現了密鑰交換和算法協(xié)商,并且由于解密秘鑰不需要在網絡上傳輸,這樣 
就同時實現了數據通訊過程的保密性和內部應用程序協(xié)議的保密性。在第7步進行Client端證書 
的驗證過程中,由于當前網絡環(huán)境下PKI和CA體系尚不完善,并且由于SSL設計的工作環(huán)境相對 
對Client端的安全需求并不很高,所以Client端驗證一般作為一種可選手段來實現,取決于應 
用程序的安全等級需求。 

SSL數據通訊的機密性特性就是由上面的過程完成的,在算法協(xié)商過程中除了加密算法的協(xié)商外 
還會交換一個數據簽名算法,用于對數據生成一個唯一的散列校驗碼,防止在傳輸過程中數據 
被篡改,數據簽名過程實現了通訊過程的完整性保證。 

對應于SSL所提供的兩種安全特性,機密性和保密性,ssl定義了四個安全級別,分別是這兩種 
特性的狀態(tài)組合: 
C - Clear - 沒有任何保護 

S - Safe - 完整性實現,但是沒有機密性 

E - Confidential - 機密性實現,但是沒有完整性 

P - Private - 同時實現機密性和完整性 

ftp的ssl擴展使用了其中的兩種狀態(tài) 
1)Clear (requested by PROT C) 
2)Private (requested by PROT P) 
在連接過程中通過ftp擴展指令PROT來完成狀態(tài)的切換。 

>>3.3 ssl FTP擴展 
在RFC 2228中,ftp協(xié)議擴展了如下指令: 
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 (協(xié)商擴展驗證): 指定擴展認證方法,SSL或TLS; 
PBSZ (協(xié)商保護緩沖區(qū)): 制定保護緩沖區(qū),SSL/TLS模式中必須為0; 
PROT (切換保護級別): 切換保護級別,可以為"C"無保護,或"P"保護級別; 

在一個典型的ftp ssl通訊過程中指令序列如下: 
/====================================================================\ 
| Client Server | 
| control data data control | 
|====================================================================| 
| | 
| socket() | 
| bind() | 
| socket() | 
| connect() ----------------------------------

相關文章

最新評論