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

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
<明文數(shù)據(jù)傳輸>
\=================================================================/
>>3.0<< 改進(jìn): ftp安全擴(kuò)展, SSL/TLS
在傳統(tǒng)的ftp通訊和傳輸過程中可以看出,ftp協(xié)議提供了一種簡單實(shí)用的網(wǎng)絡(luò)文件傳輸方法,
但是缺陷也是顯而易見的。傳統(tǒng)ftp服務(wù)缺乏對(duì)數(shù)據(jù)的機(jī)密性和完整性保護(hù),對(duì)通訊雙方也沒
有可靠的認(rèn)證措施,同時(shí)還存在著明文信息傳輸?shù)娜觞c(diǎn) --
在同一個(gè)網(wǎng)絡(luò)上的任何用戶都可能竊取到重要的信息。雖然近年來出現(xiàn)了很多種ftp的替代服
務(wù),例如ssh加密通道的sftp/scp,或使用IPSEC協(xié)議的VPN通道等等,但是在大多數(shù)情況下,f
tp的通用性和易用性使得它在很長一段時(shí)間內(nèi)必然無法被完全取代。所以如同其他一系列古董
服務(wù)(例如SMTP/HTTP)一樣,近年來也出現(xiàn)了一些不需要對(duì)ftp協(xié)議自身做完全更改的協(xié)議擴(kuò)展
模塊,能夠良好的完成兼容性和功能擴(kuò)展。ftp SSL/TLS Extension就是其中一種方式。
FTP安全擴(kuò)展: http://www.ietf.org/rfc/rfc2228.txt
http://www.ietf.org/rfc/rfc2246.txt
FTP安全擴(kuò)展,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公司設(shè)計(jì)的用于HTTP協(xié)議加密的安全傳輸協(xié)議,SSL工作于TCP協(xié)議的傳
輸層(TCP層)和應(yīng)用程序之間。作為一個(gè)中間層,應(yīng)用程序只要采用SSL提供的一套SSL套接字A
PI來替換標(biāo)準(zhǔn)的Socket套接字,就可以把程序轉(zhuǎn)換為SSL化的安全網(wǎng)絡(luò)程序,在傳輸過程中將
由SSL協(xié)議實(shí)現(xiàn)數(shù)據(jù)機(jī)密性和完整性的保證。SSL協(xié)議的當(dāng)前版本為3.0,當(dāng)SSL取得大規(guī)模成功
后,IETF(www.ietf.org)將SSL作了標(biāo)準(zhǔn)化,規(guī)范為RFC2246,并將其稱為TLS(Transport
Layer
Security)。從技術(shù)上講,TLS1.0與SSL3.0的差別非常微小,SSL由于其歷史應(yīng)用的原因在當(dāng)
前的商業(yè)應(yīng)用程序之中使用得更多一些。
TLS協(xié)議,RFC 2246: http://www.ietf.org/rfc/rfc2246.txt
>>3.2 數(shù)據(jù)機(jī)密性和完整性
前面多次提到了數(shù)據(jù)的機(jī)密性和完整性兩個(gè)方面,在此略微解釋一下。數(shù)據(jù)的機(jī)密性確保數(shù)據(jù)
信息機(jī)密可靠,不會(huì)被沒有權(quán)限的對(duì)象所訪問和瀏覽到,基本的機(jī)密性保護(hù)手段就是數(shù)據(jù)加密
;而數(shù)據(jù)的完整性則是指數(shù)據(jù)在傳輸和存儲(chǔ)過程中將保證數(shù)據(jù)的唯一和完整,不會(huì)被惡意篡改
著所修改,保證數(shù)據(jù)完整性的基本手段主要有數(shù)字簽名。
這里就牽扯到數(shù)據(jù)加密領(lǐng)域的兩類算法,加密算法和散列算法。加密算法從數(shù)學(xué)原理上看可以
分為對(duì)稱加密和非對(duì)稱加密,從數(shù)據(jù)處理方法上可以分為流加密和分組加密,本文重點(diǎn)不在此
,不再贅述,只舉例幾種常用的加密算法: DES, 3DES, AES,
BlowFish,RC2-RC6等等。數(shù)據(jù)簽名算法是加密領(lǐng)域的另一套方法,又叫數(shù)據(jù)散列算法,用于對(duì)
數(shù)據(jù)進(jìn)行處理生成一個(gè)唯一的等長簽名字符串,原數(shù)據(jù)的長度可能是任意的,而任意兩個(gè)相似
但哪怕只有少許細(xì)微差別的數(shù)據(jù)集,都將產(chǎn)生差別非常大的等長簽名字符串,這個(gè)字符串在一
般意義下被認(rèn)為是極少會(huì)發(fā)生空間沖突(重復(fù))的,因此數(shù)據(jù)散列算法對(duì)于確保數(shù)據(jù)的唯一性是
一種必要的手段;常見的數(shù)字散列算法有MD5,SHA-1,CAST-256等等。
可以看出,面對(duì)如此多種類的加密算法,應(yīng)用程序處理起來是很繁瑣的。SSL在這個(gè)層次中就
提供了一種自動(dòng)的算法協(xié)商,密鑰交換和數(shù)據(jù)加密過程。SSL協(xié)議分為兩部分:Handshake
Protocol和Record
Protocol,HandShake部分用于處理通訊雙方的算法協(xié)商和密鑰交換過程,Record部分用于對(duì)
數(shù)據(jù)進(jìn)行加密傳輸。
整個(gè)的SSL基本通訊過程如下:
/====================================================================\
| |
| [ SSL Client ] [ SSL Server ] |
| |
| (TCP三步握手) |
| (SSL套結(jié)字連接) |
| . |
| . SSLSocket() |
| . Bind() |
| SSLSocket() -------------------> |
| <------------------- Connect |
| (連接加密算法協(xié)商) |
| ClientHello() -------------------> |
| (服務(wù)器端算法確認(rèn)和證書發(fā)送)|
| ServerHello |
| Certificate* |
| ServerKeyExchange* |
| CertificateRequest* |
| <------------------- ServerHelloDone |
| (客戶端證書驗(yàn)證與密鑰交換) |
| Certificate* |
| ClientKeyExchange |
| CertificateVerify* |
| [ChangeCipherSpec] |
| Finished -------------------> (數(shù)據(jù)加密算法協(xié)商) |
| [ChangeCipherSpec] |
| <------------------- Finished |
| (應(yīng)用數(shù)據(jù)加密傳輸) |
| Application Data <------------------> Application Data |
| ... |
\====================================================================/
SSL套結(jié)字通訊過程如下:
1, Client和Server雙方程序通過ssl socket系列函數(shù)替換BSD Socket系列函數(shù);
2, Client通過TCP協(xié)議連接到Server端應(yīng)用程序;
3, Client發(fā)起連接質(zhì)詢,發(fā)送自身所能實(shí)現(xiàn)的"安全集合",其中包含加密和簽名算法協(xié)商;
4, Server回應(yīng)連接,包含本次通訊所使用的算法集合,以及Server端證書;
5, Client收到證書后,使用Server端協(xié)商的算法,用Server端證書中包含的Server公鑰加密一個(gè)
隨機(jī)序列,作為一個(gè)挑戰(zhàn)質(zhì)詢發(fā)回Server;
6, Server收到加密密文,使用自身的私鑰進(jìn)行數(shù)據(jù)解密,如果成功,代表SA協(xié)商匹配,可以
開始通訊;
7, 可選過程,繼續(xù)發(fā)起Client端驗(yàn)證過程,Client端發(fā)出Client證書,進(jìn)行Client端驗(yàn)證過程;
8, 可選過程,數(shù)據(jù)傳輸過程加密算法協(xié)商;
9, 協(xié)商完畢,開始加密數(shù)據(jù)傳輸;
可以看出,SSL Socket通訊過程相比正常的BSD Socket,只不過多了一個(gè)安全集合交換協(xié)商的過程,
這個(gè)過程由SSL實(shí)現(xiàn)自身來完成,相對(duì)于應(yīng)用程序,只要采用了SSL Socket,其他的過程都是
透明的。SSL通訊過程中的第3-6步是必須操作,包含了Server端驗(yàn)證過程和加密算法協(xié)商,類
似于TCP協(xié)議的三步握手過程,這個(gè)過程中通過公鑰加密算法加密密鑰(公鑰)和解密秘鑰(私鑰)
不同的功能,巧妙地實(shí)現(xiàn)了密鑰交換和算法協(xié)商,并且由于解密秘鑰不需要在網(wǎng)絡(luò)上傳輸,這樣
就同時(shí)實(shí)現(xiàn)了數(shù)據(jù)通訊過程的保密性和內(nèi)部應(yīng)用程序協(xié)議的保密性。在第7步進(jìn)行Client端證書
的驗(yàn)證過程中,由于當(dāng)前網(wǎng)絡(luò)環(huán)境下PKI和CA體系尚不完善,并且由于SSL設(shè)計(jì)的工作環(huán)境相對(duì)
對(duì)Client端的安全需求并不很高,所以Client端驗(yàn)證一般作為一種可選手段來實(shí)現(xiàn),取決于應(yīng)
用程序的安全等級(jí)需求。
SSL數(shù)據(jù)通訊的機(jī)密性特性就是由上面的過程完成的,在算法協(xié)商過程中除了加密算法的協(xié)商外
還會(huì)交換一個(gè)數(shù)據(jù)簽名算法,用于對(duì)數(shù)據(jù)生成一個(gè)唯一的散列校驗(yàn)碼,防止在傳輸過程中數(shù)據(jù)
被篡改,數(shù)據(jù)簽名過程實(shí)現(xiàn)了通訊過程的完整性保證。
對(duì)應(yīng)于SSL所提供的兩種安全特性,機(jī)密性和保密性,ssl定義了四個(gè)安全級(jí)別,分別是這兩種
特性的狀態(tài)組合:
C - Clear - 沒有任何保護(hù)
S - Safe - 完整性實(shí)現(xiàn),但是沒有機(jī)密性
E - Confidential - 機(jī)密性實(shí)現(xiàn),但是沒有完整性
P - Private - 同時(shí)實(shí)現(xiàn)機(jī)密性和完整性
ftp的ssl擴(kuò)展使用了其中的兩種狀態(tài)
1)Clear (requested by PROT C)
2)Private (requested by PROT P)
在連接過程中通過ftp擴(kuò)展指令PROT來完成狀態(tài)的切換。
>>3.3 ssl FTP擴(kuò)展
在RFC 2228中,ftp協(xié)議擴(kuò)展了如下指令:
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擴(kuò)展相關(guān)的主要指令有以下幾條:
AUTH (協(xié)商擴(kuò)展驗(yàn)證): 指定擴(kuò)展認(rèn)證方法,SSL或TLS;
PBSZ (協(xié)商保護(hù)緩沖區(qū)): 制定保護(hù)緩沖區(qū),SSL/TLS模式中必須為0;
PROT (切換保護(hù)級(jí)別): 切換保護(hù)級(jí)別,可以為"C"無保護(hù),或"P"保護(hù)級(jí)別;
在一個(gè)典型的ftp ssl通訊過程中指令序列如下:
/====================================================================\
| Client Server |
| control data data control |
|====================================================================|
| |
| socket() |
| bind() |
| socket() |
| connect() ----------------------------------
相關(guān)文章
微軟新版Outlook將推出郵件分類快捷鍵及多項(xiàng)優(yōu)化:5月開始部署
微軟計(jì)劃在新版Outlook for Windows中引入郵件分類快捷功能,用戶可通過預(yù)設(shè)快捷鍵快速對(duì)郵件進(jìn)行分類,從而大幅提升工作效率并優(yōu)化管理流程2025-04-21rsync The --password-file option may only be used when accessing a
客戶端上傳文件執(zhí)行命令出錯(cuò),提醒The --password-file option may only be used when accessing an rsync daemon.查找資料也很少這樣的說法,最后發(fā)現(xiàn)是冒號(hào)的問題2025-02-26郵箱密碼忘記了怎么找回來? 網(wǎng)易郵箱密碼找回流程
郵箱在使用的時(shí)候,由于各種原因,有時(shí)候我們可能會(huì)遇到忘記密碼、賬號(hào)被盜等問題,這時(shí)候就需要進(jìn)行163郵箱找回操作,本文將為大家介紹如何進(jìn)行163郵箱找回操作2025-02-01- 電子郵件成為了我們?nèi)粘I詈凸ぷ髦胁豢苫蛉钡囊徊糠郑瑹o論是注冊社交媒體、購物平臺(tái),還是與他人溝通,一個(gè)穩(wěn)定的郵箱賬號(hào)都變得至關(guān)重要,本文將為您提供詳細(xì)的電子郵件2025-02-01
wps調(diào)用Outlook 批量發(fā)送電子郵件時(shí)持續(xù)彈出警告框怎么辦?
如何解決程序調(diào)用outlook時(shí)一直警告,wps調(diào)用outlook發(fā)送郵件時(shí),發(fā)送的時(shí)候,會(huì)一直出現(xiàn)警告,需要你一個(gè)個(gè)點(diǎn)確定或拒絕,本文介紹如何解決這個(gè)警告2025-02-01QQ郵箱文件怎么發(fā)送微信? 電腦qq郵箱中轉(zhuǎn)站中文件分享到微信的方法
在使用郵箱軟件的時(shí)候,有的用戶想要通過QQ郵箱文件,QQ郵箱中存在這種功能,但是很多小伙伴不知道到底要如何操作,下面小編就給大家?guī)鞶Q郵箱文件發(fā)送微信教程,感興趣的2024-09-29微信電腦版怎么獨(dú)立窗口中打開訂閱號(hào)? 訂閱號(hào)獨(dú)立窗口顯示的教程
微信電腦版看訂閱號(hào)的時(shí)候,想要獨(dú)立窗口顯示訂閱號(hào),該怎么操作呢?下面我們就來看看詳細(xì)的教程2024-09-29Outlook在windows系統(tǒng)中有哪些快捷鍵? Outlook的鍵盤快捷方式大全
Outlook可以用它來收發(fā)電子郵件、管理聯(lián)系人信息、記日記、安排日程、分配任務(wù),新版Outlook for Windows帶來了許多新功能,今天我們就來看看Outlook快捷鍵匯總2024-09-13微信怎么調(diào)默認(rèn)瀏覽器? 微信設(shè)置默認(rèn)瀏覽器打開網(wǎng)頁鏈接的教程
微信怎么調(diào)默認(rèn)瀏覽器?只需簡單設(shè)置,在微信就可以使用默認(rèn)瀏覽器打開網(wǎng)站,該怎么設(shè)置呢?詳細(xì)請(qǐng)看下文介紹2024-08-14GameViewer怎么刪除設(shè)備 GameViewer刪除設(shè)備的步驟
GameViewer怎么刪除設(shè)備?GameViewer 是一款專為游戲玩家設(shè)計(jì)的遠(yuǎn)程控制助手,下文中為大家?guī)砹薌ameViewer刪除設(shè)備步驟,需要的朋友快來看看吧2024-06-17