SOCKS V5的用戶名/密碼鑒定
(RFC1929 Username/Password Authentication for SOCKS V5)
本備忘錄狀態:
本文檔講述了一種Internet社區的Internet標準跟蹤協議,它需要進一步進行討論和建議以得到改進。請參考最新版的“Internet正式協議標準” (STD1)來獲得本協議的標準化程度和狀態。本備忘錄的發布不受任何限制。
1. 介紹
關于SOCKS V5的協議規范說明了在初始化SOCKS連接時所用到的任意驗證協議的大致框架。這篇文檔描述了這些協議中的其中一個適合SOCKS V5驗證子協商(subnegotiation)。
注意:
除非特別注明,所有出現在數據包格式圖中的十進制數字均以字節表示相應域的長度。如果某域需要給定一個字節的值,用X’hh’來表示這個字節中的值。如果某域中用到單詞’Variable’,這表示該域的長度是可變的,且該長度定義在一個和這個域相關聯(1 – 2個字節)的域中,或一個數據類型域中。
2.初始協商
一旦SOCKS V5服務器運行并且客戶端選擇了用戶名/密碼認證協議以后,就開始了用戶名/密碼協議的子協商過程。客戶端先產生一個用戶名/密碼協議的請求:
VER |
ULEN |
UNAME |
PLEN |
PASSWD |
1 |
1 |
1 to 255 |
1 |
1 to 255 |
VER中指明了子協商的當前版本,現在使用的是X’01’。ULEN域中包含了下一個UNAME域的長度。UNAME中包含一個源操作系統(source operating system)所知道的用戶名。PLEN中指明了緊隨其后的PASSWD的長度。PASSWD中則包含了對應UNAME用戶的密碼。
服務器驗證用戶名和密碼,并且返回:
如果STATUS中返回X’00’則說明通過驗證。如果服務器返回非X’00’則說明驗證失敗,并且關閉連接。
3.安全考慮
這篇文檔描述了為SOCKS V5協議提供驗證服務的子協商過程。因為密碼是以明文傳輸的,所以這個子協商過程在可能被工具“嗅探(sniffing)”到的環境中不建議使用該子協商過程。