Почему шифрование одной и той же одноразовой клавиатурой не очень хорошо?

20

Чтобы зашифровать сообщение с помощью ключа одноразовой клавиатуры k , выполните E n c ( m 1 , k ) = m 1k .m1kEnc(m1,k)=m1k

Если вы используете одно и то же для шифрования другого сообщения m 2, вы получите E n c ( m 2 , k ) = m 2k , а если вы выполните Xor двух зашифрованных текстов, вы получите ( m 1k ) ( m 2к ) = м 1м 2km2Enc(m2,k)=m2k

(m1k)(m2k)=m1m2

Итак, хорошо, есть некоторая утечка информации, потому что вы изучаете , но почему это не безопасно? У меня нет способа выучить (скажем) m 1, если я не знаю m 2 . Так почему неправильно использовать k дважды ??m1m2m1m2k

Ран Г.
источник
да, это посев. Главным образом, инициируя дебаты о границе между crypto.se и cs.se.
Ран Г.
Пожалуйста, смотрите здесь для обсуждения используемых тегов.
Рафаэль
Я помню, что видел визуализацию, которая проясняет ситуацию, но сейчас я не могу ее найти. Кто-нибудь знает, о чем я говорю? (Я надеюсь, что я не путаю его с другой криптографией, такой как ECB linux-pinguin и т. Д.)
Ран Г.
1
@RanG. : right - соответствующий вопрос о crypto.se: использовать одноразовое использование клавиш клавиатуры?
Дэвид Кэри

Ответы:

14

У меня нет способа выучить (скажем) если я не знаю m 2 .m1m2

(m2k)m2=k

k

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

Карл Муммерт
источник
11

Это небезопасно именно по той причине, о которой вы упомянули - произошла утечка информации.

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

Наконец, если у вас есть возможность использовать его только два раза , у вас также есть возможность использовать его только один раз - ограничение состоит в том, что эти одноразовые планшеты не должны использоваться потенциально неизвестно и со временем, что повреждает количество раз.

m1m2

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

qdot
источник
Кроме того, одноразовые панели имеют свойство, что если вы знаете зашифрованный текст и даже часть открытого текста, вы можете немедленно восстановить соответствующую часть ключа, что означает, что часть всех будущих сообщений, зашифрованных с помощью той же панели, будет эффективно отправлена ​​в ясно (чтобы легче было угадать больше открытого текста, раскрыть больше ключа и т. д.). Если вы шифруете много вещей, таких как электронная почта или HTTP-запросы, то злоумышленник почти всегда может узнать часть открытого текста просто благодаря структуре этих протоколов.
Бен
6

(m1k)(m2k)=m1m2

log226=4.7

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

Питер Шор
источник
4

m1m2m1m2

На самом деле, во многих случаях это очень просто. Вот простая визуализация.

Ран Г.
источник
2

Вот интуитивный способ представления подхода без использования математики. Допустим, у вас есть два зашифрованных сообщения, которые были зашифрованы одной и той же временной панелью.

  1. Угадайте слово или фразу, которые могут содержаться в одном из сообщений. Допустим, фраза «Прогноз погоды»
  2. Начиная с сообщения 1, предположим, что «Отчет о погоде» появляется в позиции первой буквы.
  3. Обратный подсчет первых 14 символов одной временной панели.
  4. Расшифруйте первые 14 символов сообщения 2 с помощью обратного вычисления OTP.
  5. Если открытый текст выглядит как gobble-di-gook, вернитесь к шагу 2 и повторите в позиции 2-й буквы. Однако, если вы получаете значимый текст (например, «Доброе утро, я», тогда поздравляю, вы разработали первые 14 символов OTP (и первые 14 символов каждой буквы)
  6. Если вы дойдете до конца сообщения 1, не выбрасывая ничего, кроме случайных букв, то вы можете заключить, что в сообщении 1 не встречается фраза «Отчет о погоде». Вернитесь к шагу 1 с другой фразой, такой как «Уважаемый полковник» "
Johnno
источник