|
Windows NT挑戰(zhàn)/響應(Challenge/Response)
Windows NT挑戰(zhàn)/響應是確定發(fā)送請求的人員的最安全的方式。挑戰(zhàn)/響應的處理流程是所有使用IIS的人員必須掌握的。(我們實際是圍繞著Windows NT委托(delegation)過程進行,但在挑戰(zhàn)/響應后有委托的最好說明。)
現(xiàn)在說明一個完全不同的技術(shù): "散列(Hash)"
Windows NT挑戰(zhàn)/響應驗證過程中并不通過網(wǎng)絡(luò)發(fā)送密碼,因為密碼可能會被截獲和破譯。Windows NT使用的是一個類似于絞肉機的不可逆算法。輸入內(nèi)容后得到一個散列內(nèi)容。Windows NT使用Internet標準MD4散列算法生成16字節(jié)(128位)的散列值。(理論上)不可能使用散列值和算法在數(shù)學上逆轉(zhuǎn)加密過程而得到原密碼。也就是說,密碼作為了一個“私人密鑰(private key)”。只有擁有該密鑰的人才能產(chǎn)生一個特定的散列值。Windows NT域控制器有一個數(shù)據(jù)庫存儲了由用戶密碼產(chǎn)生的用戶散列值,但并未存儲用戶密碼。 (注意密碼和散列值的分離不會使域控制器減少受到黑客攻擊的可能,因為有時散列值也可以用作密碼的等效物。)
IIS與挑戰(zhàn)/響應驗證過程
如果下面條件滿足時,IIS將使用挑戰(zhàn)/響應驗證:
如果Internet服務(wù)管理器的WWW屬性對話框的“允許匿名”選項沒有被選中,IUSR帳戶沒有足夠的許可權(quán)訪問所請求的資源,或者執(zhí)行代碼禁止訪問。 在Internet服務(wù)管理器的WWW屬性對話框中選擇Windows NT Challenge/Response 瀏覽器在挑戰(zhàn)/響應驗證方式下發(fā)送請求 (當前瀏覽器中只有Internet Explorer支持挑戰(zhàn)/響應驗證) 當我們說IIS嘗試驗證用戶時,IIS所做的工作非常簡單。它向瀏覽器發(fā)回一個"HTTP 401 Access Denied"消息,以及它接受的驗證方法列表。與一個高級俱樂部的保鏢非常相似, IIS這時會說:"You can't get what you want without identifying yourself. By the way, I accept the following methods of identification.(沒有確認您的身份,您不能獲得所需要的內(nèi)容。另外,我支持下列驗證方法)"。IIS接受的兩種驗證方法是挑戰(zhàn)/響應驗證和基本驗證。具體使用哪種方法取決于在IIS的Internet服務(wù)管理器WWW屬性對話框中的選擇。如果兩種驗證方法都被啟用,對于Internet Explorer將一定會使用挑戰(zhàn)/響應驗證,而對其它瀏覽器則會使用基本驗證。
圖1從包的角度顯示了如何在沒有看到用戶密碼的情況下對他(她)進行Windows 挑戰(zhàn)/響應驗證。
圖1. Windows NT 挑戰(zhàn)/響應驗證過程
使用隨機散列的挑戰(zhàn)信息的原因
增加使用密碼散列值加密挑戰(zhàn)信息的額外步驟,而不是將簡單的散列值傳送到域,可以使散列值更難以被截獲破譯而作為密碼使用。因為挑戰(zhàn)需要用戶密碼散列值來產(chǎn)生新的散列值,它證實了用戶至少擁有用戶散列值 (而且可能還有用戶密碼)。所有的這些不用通過電線傳送密碼。實質(zhì)上,密碼成為了私人密鑰而隨機值成為了不斷變化的公共密鑰。
委托(Delegation)!
委托是大多數(shù)實現(xiàn)Windows NT安全和IIS驗證的人員所遺漏的內(nèi)容,甚至當委托對于其考慮的安全Web服務(wù)器環(huán)境十分關(guān)鍵的人員,或是簡單希望Web服務(wù)器能夠運行的人員也是如此。當IIS Web服務(wù)器扮演一個使用挑戰(zhàn)/響應驗證的用戶時,IIS服務(wù)器并沒有用戶的密碼或密碼散列值。IIS只看到了傳送到域控制器的加密的挑戰(zhàn)。當使用ASP頁訪問另一臺Windows NT計算機(比如遠程數(shù)據(jù)庫服務(wù)器)的資源時很可能遇到這種情況。遠程服務(wù)器向IIS發(fā)送挑戰(zhàn)信息以驗證自己所扮演的用戶,而IIS由于無法使用用戶散列值加密任何發(fā)送給它的挑戰(zhàn)信息,所以無法進行驗證。因而遠程服務(wù)器被禁止訪問,而你的數(shù)據(jù)庫驅(qū)動的Web頁將運行失敗。這是Windows NT 4.0 (和以前版本)安全模型的一個限制,不是IIS的原因。使用Windows NT挑戰(zhàn)/響應驗證,一個依靠扮演的進程將無法像一個文本文件一樣訪問另一臺Windows NT計算機上的太多內(nèi)容。
如果你希望確定何時需要考慮委托,而如果Web服務(wù)器擁有用戶密碼或散列值,請詢問自己。在政策上,你應“根據(jù)財力(follow the money)”。在委托上,你應“根據(jù)密碼(follow the password)”!
對此可以有一個類比,行政主管委托一個秘書代其簽名并在其它方面替其行使職責。當用戶使用挑戰(zhàn)/響應驗證時,用戶無法委托IIS完全按照其利益工作。這個特別的限制可能在Windows NT 5.0發(fā)布后會得到完美解決,因為那時Windows NT集成了Kerberos 驗證系統(tǒng) (該系統(tǒng)為MIT的Athena 項目(Project Athena)開發(fā))。
|