漏洞使用AES128和ECB操作模式

时间:2018-05-23 02:54:35

标签: security encryption hash aes

  

我需要实现一个系统,我将为用户生成userId / password组合。将使用所有用户的一些通用逻辑生成userId。

     

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

     

用户的密码将由加密 userId生成AES128 encryption with ECB mode

     

用户可以访问他的userId /密码。他可以在标题中找到它(这是因为我们正在使用的一些第三方工具。你可以忽略这一部分。)

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

  1. 由于每个userId都有_XYZ作为后缀,所以所有密码都会     最后有相同的块。而攻击者将在几个回合中     知道密码只是一些加密了     userId only。
  2. 他可以猜到它可能是AES128 Encryption with ECB
  3.   

    我担心的是,如果他无法在我们用于加密的KEY上获取,那么攻击者是否有办法破解我们的系统?

1 个答案:

答案 0 :(得分:2)

如果用户ID分散在多个ECB块中,则攻击者可以混合并匹配&#34;加密块以猜测类似于他们自己的用户ID的密码。例如,如果用户ID被拆分为:

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

然后攻击者可以想到密码ABCDMNOP对用户user_12378有效。

最简单的解决方案是不使用AES-ECB。使用(键控)HMAC结构从用户ID派生密码;虽然它不允许从密码中确定用户ID,但这是安全的。 (这可能很好。)