2012-07-03 76 views
1

我一直在尋找一點,但我找不到答案。 WCF Security Best Practices表示儘可能使用Windows身份驗證。如果您需要簽名,它可以提供不可抵賴性和數據完整性嗎?這個問題最重要的問題是不可否認,我使用TLS,但是試圖通過Windows Auth提供TLS或MLS來提供不可否認性,理論上,TLS提供了從跳到跳的數據(hop-to-hop data)完整性。)Windows身份驗證是否提供不可否認性?

+0

線索存在問題 - 認證與不可否認和數據完整性(也是相互正交的)是正交的。 – symcbean

+0

@syncbean - **如果您需要簽名**,這就是所有這些都會進入的地方。 – zimdanen

回答

0

是的,對於第一個問題。檢查:

Chapter 4: WCF Security Fundamentals

Windows身份驗證不提供數據簽名。

+0

我今天早些時候在此頁面上 - 它說Windows Auth提供了不可否認性?另外,如果它不簽署消息,它又怎麼做? – zimdanen

+0

它使用一個令牌,它是機器名,用戶和密碼的散列,這個散列由第三方服務器,域控制器信任。如果你想防止在傳輸中修改內容,你應該使用SSL,我不確定如果在傳輸過程中修改內容會令標記無效,我認爲不是。 – LawfulHacker

+0

我之前在那個頁面上,我不知道它在哪裏說明這提供了不可抵賴性。如果郵件沒有被簽名,它如何爲郵件提供不可推ation? – zimdanen

0

Windows身份驗證更受用戶歡迎,並由最佳實踐指南建議,因爲它是在所有Microsoft機器中構建的。它不喜歡需要大量基礎架構設置的證書。如果您的計算機加入到Active Directory域,則它應該可以正常工作。

Windows身份驗證使用SPNEGO協商要使用的身份驗證方法,的KerberosNTLM。只要有可能,客戶端和服務器將嘗試首先選擇Kerberos。否則,將使用NTLM

要回答你的郵件是否可以sigend與否的問題,無論是的KerberosNTLM可以用來標誌加密消息。作爲WCF程序員,它對你來說應該是透明的。您只需將ProtectedLevel設置爲EncryptAndSign即可。如果您不相信我,則可以在設置Windows身份驗證後查看網絡跟蹤。你應該看到這些消息是加密的。

當使用Windows身份驗證時,WCF將調用SSPI來執行身份驗證和消息加密。我不會介紹SSPI的退休事宜。 Here是SSPI呼叫NTLM加密消息和here是SSPI呼叫Kerberos加密消息。你可以在Windbg中設置一個斷點來證明這一點。

雖然它沒有明確地在上面的鏈接指出,this link明確指出,上述EncryptMessages方法可以提供數據完整性(簽署)和隱私(加密)。

回到關於Windows驗證是否支持non-repudiation的原始問題,這實際上是一個更大的問題。 數據簽名對於non-repudiation是必要的,但不夠。 WCF還提供審計功能來記錄操作或事務。這是爲了保證用戶不能拒絕執行操作或啓動事務。因此,爲了支持non-repudiation,您還應該設置SuppressAuditFailure爲false,以確保審計始終正常運行。

+0

我們是否有足夠的可視性來看待GSS_Unwrap調用來將用戶退出事務?加密必須在TLS中處理;我們可能會希望在MLS中進行簽名,以便我們可以在服務級別進行簽名,對吧? – zimdanen

相關問題