Gil*_*il' 49
nonce的目的是使每个请求都是唯一的,这样攻击者就无法在不同的上下文中重放请求.攻击者获得nonce并不重要:事实上,重点在于因为数据包含nonce,所以对攻击者没用.
增加:
随机数是由将其引入对话的一方随机生成的.攻击者无法影响nonce的选择至关重要,有时攻击者无法预测该选择.通常,每个参与者在分布式协议的运行中至少生成一次随机数.
存在nonce保密的协议.会话密钥既可以是随机数(即,由一个参与者随机选择)和秘密(即不直接通过线路传输).事实上,在一个设计良好的协议中,会话密钥通常来自两个nonce,一旦来自每一方.但保密并不是随意的定义属性.
snonce回客户端.cnonce,并将其加上其凭据的散列,服务器nonce和客户端nonce(hash(snonce + cnonce + password))发送到服务器.假设Mallory(攻击者)可以观察所有流量并发送自己的消息.如果她在第2步之后获取了nonce,她可以将自己的凭据发送到服务器.这可能有助于她导致拒绝服务,但无论如何,如果她可以注入流量,她也可以这样做.没有客户的凭据,她就无法冒充客户端.
假设Mallory在步骤3中获取了客户端发送的数据包.由于凭证和随机数经过哈希处理,她无法修改数据包,因此她只能将其作为一个整体再次发送.同样,根据服务器如何实现协议,她可能会导致拒绝服务,但不会更多.(请注意,此协议要求服务器跟踪哪个nonce与哪个客户端关联,并在步骤4中响应该客户端.)步骤3中的散列操作使Mallory无法获取她不能获取的数据(客户端的密码).
要查看服务器nonce存在的原因,假设它已丢失.然后,Mallory将能够获得包含的数据包hash(cnonce + passoword),并且稍后可以在单独的连接中重新发送它,从而冒充客户端.
客户端nonce用于类似的目的,尽管这在此处描述的简化协议中并不明显; 在完整协议中,"令牌"将包含包含此随机数的数据散列,并且它将参与阻止Mallory模拟服务器.
客户端随机数也用于防止密码猜测攻击.假设Mallory在步骤2截获服务器的响应并替换她自己的服务器nonce.如果客户回复hash(snonce + password),这将使Mallory更容易运行大规模密码猜测攻击:她可以预先计算hash(snonce + x)许多"易于猜测"的密码x,并对许多客户端进行攻击,希望密码较弱.这里客户端现时充当哈希密码的盐.
客户端现时还有助于保护客户端免受严重实现的服务器的影响.假设服务器没有生成随机nonce,而是生成Mallory可以通过观察流量轻松找到的常量.然后,马洛里可以被动地执行前一段中描述的猜测攻击.因此,即使服务器未正确实现协议,客户端随机数也会为客户端提供额外的保护.类似地,服务器nonce为服务器提供了一些保护,以防止未正确生成其nonce的客户端,再次要求Mallory在她想要运行密码猜测攻击时主动攻击客户端.这是一种常见的情况:即使另一方偏离协议,每一方的nonce都会为该方提供一些保护.
如果黑客获得了随机数并在用户之前使用它,则黑客获胜。随机数背后的想法是,在某些情况下,黑客很难窃取随机数(通常是 XSRF,随机数受到同源策略的保护)。因此,如果黑客可以窃取有效的随机数,则随机数无法保护您的用户。
| 归档时间: |
|
| 查看次数: |
18757 次 |
| 最近记录: |