3

我知道How to Respond to an Authentication Challenge我们有NTLM Authentication3 个选项。

  • 提供身份验证凭据。
  • 尝试在没有凭据的情况下继续。
  • 取消认证请求。

但是只是想知道这里的想法,当我们使用第一个选项时,Provide authentication credentials我们传递用户名和密码URLCredential是否有泄露凭据的可能性,传递凭据是否安全,屏幕后面发生了什么?网络 API如何Apple将凭据发送到服务器?

是的,我们可以设置服务器域、故障计数等策略,但从安全的角度来看,它安全吗?来自 Man in Middle Attack ( MIMA) 还是其他什么?

4

2 回答 2

3

也许我发布问题的方式不清楚,但我从应用程序凭证安全的角度来看更多NTLM 身份验证,经过大量谷歌,我发现 NTLM 是如何工作的,看到客户端不这样做很有趣t 与服务器共享密码。以下是以下步骤。

在此处输入图像描述

  1. 客户端向服务器发出请求。
  2. 服务器需要验证用户,因为没有身份,因此服务器生成 16 字节随机数称为挑战并将其发送给客户端。
  3. 客户端使用用户的密码对这个挑战进行哈希处理,并将其返回给称为响应的服务器,它还包括作为纯文本的用户名和发送给客户端的挑战。
  4. 服务器将所有内容发送到域控制器,并使用用户名从安全帐户管理器数据库中检索用户密码的哈希值并对质询进行哈希处理。
  5. 如果它们相同,则域控制器将响应共享回服务器,则身份验证成功,否则失败。

所以有趣的部分是网络 API 不与服务器共享密码,这意味着它非常安全。

我希望它会帮助其他人,更多

于 2017-10-13T05:51:59.843 回答
2

挑战有多种类型,问题的答案取决于您所谈论的挑战类型。每个挑战都有一个保护空间,它基本上告诉你正在应对什么类型的挑战。

要回答您对最常见保护空间的问题:

  • 基于密码的基本身份验证 ( NSURLAuthenticationMethodHTTPBasic):您传递的凭据以明文形式发送到服务器 (HTTP) 或由会话密钥 (HTTPS) 加密。
  • 摘要式身份验证 ( NSURLAuthenticationMethodHTTPDigest):您传递的凭证使用服务器提供的随机数进行加密哈希处理,并且只有生成的哈希令牌通过网络发送。
  • NTLM 身份验证 ( NSURLAuthenticationMethodNTLM):您传递的凭证使用服务器发送的随机数进行加密散列,并且只有生成的散列令牌通过网络发送。
  • 客户端证书认证(NSURLAuthenticationMethodClientCertificate):证书发送到服务器,但不发送私钥数据。客户端使用私钥对之前的 TLS 握手数据进行签名,作为让服务器验证客户端确实拥有与该证书关联的私钥的一种方式。
  • 服务器证书验证NSURLAuthenticationMethodServerTrust_与服务器交谈时信任该证书)。

上面的列表涵盖了最常见的保护空间。Kerberos 是它自己的动物,我完全不知道它是如何工作的。还有“表单”保护空间,它只是自定义身份验证的占位符,您可以在应用程序代码的各个部分使用它,但实际上并没有以任何有意义的方式支持。

值得注意的是,如果攻击者可以更改传输中的数据,Basic、Digest 和 NTLM 身份验证不会提供针对中间人攻击的保护,因为提供的身份验证令牌不会以任何方式依赖于请求的其余部分. 因此,这些真的只适合在加密通道 (HTTPS) 上使用。

于 2017-10-12T19:05:28.367 回答