代码之家  ›  专栏  ›  技术社区  ›  kumarmo2

在ECB操作模式下使用AES128的漏洞

  •  0
  • kumarmo2  · 技术社区  · 6 年前

    我需要实现一个系统,在这个系统中,我将为用户生成一个用户id/密码组合。用户id将使用一些通用逻辑为所有用户生成。

    例如,userid将是用户的 <mobileNumber>_XYZ .

    用户的密码将由 加密 userId 具有 AES128 encryption with ECB mode .

    用户将有权访问其用户名/密码。他可以在标题中找到它(这是因为我们正在使用的第三方工具)。您可以忽略此部分。)

    以下是我可以在其中找到的漏洞:

    1. 因为每个用户id _XYZ 作为后缀,所有密码将 最后有相同的街区。几分钟后袭击者就会 知道密码只不过是 仅使用用户标识。
    2. 他能猜到可能是 AES128 Encryption with ECB

    我担心的是如果 他拿不到他的手 KEY 我们用它来加密,攻击者有办法破解我们的系统吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   gone    6 年前

    如果用户ID被分成多个ECB块,攻击者可以“混合并匹配”加密块,以猜测与自己的用户ID相似的用户ID密码。例如,如果用户id被拆分为:

    "user_123", "45" -> "ABCD", "EFGH"
    "user_456", "78" -> "IJKL", "MNOP"
    

    然后攻击者就可以猜到密码 ABCDMNOP 对用户有效 user_12378 .

    最简单的解决方案是不使用AES-ECB。使用(键控)hmac构造从用户id派生密码;这是安全的,尽管它不允许从密码确定用户id。(这可能很好。)