Уязвимость при использовании AES128 с режимом работы ECB - PullRequest
0 голосов
/ 23 мая 2018

Мне нужно внедрить систему, в которой я сгенерирую комбинацию userId / пароль для пользователя.UserId будет создан с использованием некоторой общей логики для всех пользователей.

Например, userId будет <mobileNumber>_XYZ пользователя.

Пароль для пользователя будет сгенерирован с помощью Шифрование userId с AES128 encryption with ECB mode.

Пользователь будет иметь доступ к своему идентификатору пользователя / паролю.Он может найти его в заголовках (Это из-за какого-то стороннего инструмента, который мы используем. Вы можете игнорировать эту часть.)

Ниже перечислены уязвимости, которые я могу найти в нем:

  1. Поскольку каждый userId имеет _XYZ в качестве суффикса, все пароли будут иметь одинаковый блок в конце.И через несколько шагов злоумышленник узнает, что пароль - это не что иное, как какое-то шифрование только userId.
  2. Он может догадаться, что это может быть AES128 Encryption with ECB.

Меня беспокоит то, что если он не сможет заполучить руки KEY, который мы использовали для шифрования, есть ли у злоумышленника способ взломать нашу систему?

1 Ответ

0 голосов
/ 23 мая 2018

Если идентификатор пользователя разделен на несколько блоков ECB, злоумышленник может «смешивать и сопоставлять» зашифрованные блоки, чтобы угадать пароли для идентификаторов пользователей, аналогичные их собственным.Например, если идентификатор пользователя был разделен на:

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

, то злоумышленник может предположить, что пароль ABCDMNOP будет действительным для пользователя user_12378.

Самое простое решениеэто не использовать AES-ECB.Используйте (с ключом) конструкцию HMAC для получения пароля из идентификатора пользователя;это безопасно, хотя и не позволяет определить идентификатор пользователя по паролю.(Что, вероятно, хорошо.)

...