搜索通过向随机数添加值来验证身份验证的算法

问题描述 投票:0回答:1

我正在寻找一种方法或算法用于在我的网络应用程序前进行帐户身份验证。姜戈。用户不应创建密码,而应创建 4 位数字。在登录或身份验证时,应用程序要求将此值添加到随机生成的数字并填充字段中的结果。在后端,应用程序会减去随机数并将该值的哈希值与用户“密码号”保存的哈希值进行比较。 这样做的好处是拥有一个像 pin 一样小的密码,并且仍然是一种安全的方法。

请不要因为这句话来评判我。我正在寻找这个算法及其安全性的发现。

authentication security passwords
1个回答
0
投票

虽然您的方法创建了一个 4 位 PIN,然后对其进行散列并存储在数据库中,但它听起来确实简单且安全,并且通过添加随机数,每次身份验证尝试都是唯一的,从而提供了额外的可变性和用户的层输入因随机数而变得混乱,使得窃听者不易察觉。 但它也有一些重大缺陷。

  • PIN 长度:4 位 PIN 本身就很弱,因为它只有 10,000 种可能的组合,因此非常容易受到暴力攻击。
  • 重放攻击:如果攻击者拦截通信并捕获随机数和用户的响应,他们最终可以确定 PIN,特别是在重复尝试的情况下。
  • 哈希冲突:根据所使用的哈希算法,确保不发生可能允许攻击者使用相同哈希生成不同输入的冲突至关重要。
  • 侧信道攻击:使用基本算术运算(加/减)而不使用额外的加密措施可能会使系统遭受侧信道攻击。
  • 算法弱点:
  • 可预测性:如果攻击者可以观察到多次登录尝试,他们就可以通过分析各种输入来推断出 PIN。
  • 不安全的存储和传输:如果 PIN 或随机数未安全处理(例如在传输过程中加密),则会暴露风险。
  • 通过服务器进行暴力破解:如果服务器没有实施强速率限制,攻击者可以通过猜测不同的 PIN 来重复尝试进行身份验证。

改进

  • 使用更强大的多重身份验证 (MFA):
  • 不要仅仅依赖 PIN 码和随机数,而是考虑添加第二个因素,例如通过短信或电子邮件发送的一次性密码 (OTP)。
  • 增加 PIN 复杂性: 将 PIN 长度延长到 4 位以上,以减少遭受暴力攻击的脆弱性。即使是 6 位或 8 位数字也会显着增加复杂性。
  • 实施基于时间的随机数: 使用基于时间的随机数,每个会话都是唯一的并且很快就会过期。这限制了重放攻击的机会窗口。
  • PIN 码和随机数的加密: 请确保客户端和服务器之间的所有通信都经过加密(例如使用 TLS)以防止窃听。
  • 速率限制和账户锁定: 实施速率限制和账户锁定机制,防止暴力攻击
  • 在散列之前对 PIN 进行加盐处理: 在散列之前对每个用户的 PIN 使用唯一的盐,以防止预先计算的攻击(例如彩虹表)。
© www.soinside.com 2019 - 2024. All rights reserved.