При использовании AES, есть ли способ узнать, были ли данные зашифрованы с использованием 128 или 256-битных ключей? - PullRequest
4 голосов
/ 28 апреля 2011

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

Ответы [ 2 ]

4 голосов
/ 28 апреля 2011

Нет, нет никакого способа сделать это.Оба шифрованных 16-байтовых блока данных и полученные блоки будут «выглядеть» одинаково после завершения шифрования (они будут иметь разные значения, но анализ только зашифрованных данных не сможет определить размер исходного ключа).Если исходные данные (простой текст) доступны, возможно, будет возможно провести какой-то анализ.

Очень упрощенное «доказательство»:длина вывода одинакова независимо от размера ключа.Однако он может отличаться в зависимости от режима (CBC, CTR и т. Д.).

Поскольку шифрование обратимо, его можно рассматривать как функцию one-to-one.Другими словами, другой вход приводит к другому выходу. Следовательно, можно получить любой заданный вывод (путем изменения простого текста) независимо от размера ключа.

Таким образом, для данного пароля вы можете получить один и тот же вывод, используя соответствующий простой текст независимо от размера ключа.Это «доказательство» имеет пробел в том, что схемы заполнения могут привести к более длинному выводу, чем ввод (поэтому функция не обязательно onto.) Но я сомневаюсь, что это повлияет на конечный результат.

2 голосов
/ 28 апреля 2011

Если система шифрования хороша (AES есть), то не должно быть никакого способа отличить ее необработанные выходные данные от случайных данных - поэтому, в частности, не должно быть никакого способа отличить AES-128 от AES-256 по крайней мере на выходные биты.

Однако большинство протоколов, использующих шифрование, в конечном итоге включают в себя некоторые метаданные, которые без двусмысленности обозначают тип используемого алгоритма, включая размер ключа. Это то, что приемник знает, что использовать для расшифровки. Это не считается проблемой. Таким образом, на практике нужно предположить, что любой злоумышленник смотрит на вашу систему и знает, является ли ключ 128-битным или 256-битным.

Некоторые побочные каналы также могут предоставлять эту информацию. Шифрование AES с 256-битным ключом на 40% медленнее, чем шифрование AES с 128-битным ключом: простое определение времени, которое требуется серверу шифрования для ответа, может определить размер ключа.

...