2012-07-03 38 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

相关问题