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