2016-07-18 1 views
0

Мой вопрос в том, что предположим, что у вас есть зашифрованный хэш AES-ECB, и вы хотите его декодировать. Вам также предоставляется куча примеров открытого текста и хэшей. Например:Как сгенерировать секретный ключ шифрования AES-ECB, приведенные примеры открытых текстов и хэшей?

Я хочу: unknown_plaintext для hash given_hash , и у меня есть куча known_plaintexts и хэшей, которые были зашифрованы с помощью того же секретного ключа. Ни один из них (очевидно) не является точным для данного хэша.

Пожалуйста, дайте мне знать, если вы можете помочь. Это не для злонамеренных намерений, просто для того, чтобы узнать, как работают системы криптографии и AES.

+1

Немного непонятно, какие операции вы делаете в каком порядке. Это правильно: у вас есть список открытых текстов с соответствующими зашифрованными хэшами. Открытые тексты сначала хэшируются, а затем хэш зашифровывается AES-ECB. Вы хотите найти ключ, с которым хэши были зашифрованы. – mschwaig

+0

@mschwaig да. это то, что я хочу. – DaTechnoGuru

+1

@DaTechnoGuru Извините, но криптологи, которые разрабатывают шифрование, не глупы, это невозможно. – zaph

ответ

0

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

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

1

Это не возможно с вычислительной точки зрения. Т.е. вы не можете этого сделать.

Современные алгоритмы шифрования, такие как AES, устойчивы к known-plaintext attacks,, которые вы описываете.

Там были некоторые прошлые успехи в категории называется daptive chosen plaintext attacks. Часто они используют в "oracle." В этом случае злоумышленник может расшифровать одно сообщение, неоднократно спрашивая жертву, может ли он успешно расшифрована догадка, порожденную нападающим. Будучи умным в выборе последовательных догадок, злоумышленник может расшифровать сообщение с миллионом попыток или около того, что является относительно небольшим числом. Но даже в этом случае злоумышленник не может восстановить ключ.

В качестве недостатка, шифры не генерируют хеши. Они выводят шифрованный текст. Хэш-функции (например, дайджесты сообщений) генерируют хеши.

1

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

0

Как показали другие люди, современные алгоритмы шифрования специально разработаны для противодействия такой атаке. Даже довольно слабый алгоритм шифрования, такой как алгоритм Tiny Encryption Algorithm, требует более 8 миллионов выбранных открытых текстов, чтобы сделать что-либо подобное. Лучшие алгоритмы, такие как AES, Blowfish и т. Д., Требуют гораздо большего.

На данный момент практических атак на AES нет.

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

Смежные вопросы