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

Aug 19 2020

Вкратце: с шифрованием AES злоумышленник может создать новый key2 и plaintext2, чтобы AES key1 (plaintext1) = AES key2 (plaintext2)

Если да, можно ли это решить, просто применив, например, MAC, такой как AES-GCM, или AES-CTR с SHA256 HMAC?

Предполагаемое применение: шифрование файла. Каждый клиент, имеющий ключ, может расшифровать файл. Зашифрованный файл обрабатывается сервером вслепую (без знания ключа) с помощью его хэша SHA256. Когда новому клиенту передается ложный ключ с размещенным файлом, он сможет определить, что это неправильный ключ. И в результате не получить какой-либо другой (шумный) двоичный файл из того же зашифрованного файла. Отмечая, что злоумышленник, доставляющий ложный ключ, имеет доступ к исходному ключу, зашифрованному тексту и, следовательно, к открытому тексту.

(Должна быть возможность шифрования идентичных файлов разными ключами. Так что детерминированное шифрование не является моим намерением)

Другое возможное простое решение, о котором я подумал, - это сохранить хэш секретного ключа вместе с зашифрованным файлом на сервере и отправить его клиенту для проверки. Но на самом деле я предпочитаю использовать хорошо известное готовое решение, а не то, что придумал я. Применяет ли MAC / HMAC достаточно, чтобы гарантировать только один ключевой результат в данном зашифрованном тексте.

Надеюсь, что мои намерения ясны, и кто-то знающий может указать мне правильное направление.

Ответы

5 YehudaLindell Aug 19 2020 at 03:49

Для базового AES таким способом легко найти два ключа. Возьми любой$key1$ и $plaintext1$ и вычислить $c=AES_{key1}(plaintext1)$. Затем возьмите любой$key2$ и вычислить $plaintext2 = AES^{-1}_{key2}(c)$. Это следует из того$AES_{key1}(plaintext1) = AES_{key2}(plaintext2)$. При этом, если AES используется в режиме аутентифицированного шифрования с MAC, это не обязательно может быть возможным. Я хочу подчеркнуть, что нет никаких гарантий, что это не так, и это необходимо доказать. В частности, если вы выполните стандартное шифрование, затем MAC (с разными ключами), то это будет точно так же уязвимо, поскольку часть «шифрование» осталась неизменной. В итоге, этого должно быть возможно, но это, конечно, не гарантируется, и часто вообще не выполняется.