Чому шифрування з тим самим одноразовим майданчиком не добре?


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 2k ) = m 1m 2km2Enc(m2,k)=m2k

(m1k)(m2k)=m1m2

Отже, гаразд, є деяка витік інформації, оскільки ви дізнаєтесь , але чому це не безпечно? У мене немає способу вивчити (сказати) m 1, якщо я не знаю m 2 . То чому неправильно використовувати k двічі ??m1m2m1m2k


так, це насіння. Головним чином, провести дискусію про межу між crypto.se та cs.se.
Ран Г.

Будь ласка, дивіться тут для обговорення використаних тегів.
Рафаель

Пам’ятаю, я бачив візуалізацію, яка дає зрозуміти, але зараз я не можу її знайти. Хтось знає, про що я говорю? (Я сподіваюся, що я не переплутаю його з іншою криптографічною картиною, такою як ECB linux-pinguin тощо)
Ran G.

1
@RanG. : правильно - відповідне питання crypto.se знаходиться у Користуванні одноразовим повторним використанням клавіш прокладки?
Девід Кері

Відповіді:


14

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

Саме в цьому полягає проблема - якщо ви повторно використовуєте той самий ключ, і хтось має доступ до одного повідомлення, яке ви зашифрували як у простому тексті, так і в зашифрованому вигляді, вони можуть використовувати це для пошуку вашого ключа:

(m2k)m2=k

В якості альтернативного сценарію, якщо ви використовуєте один і той же ключ знову і знову, зловмисники можуть мати можливість відгадати лише шматки різних зашифрованих повідомлень, і кожна успішна здогадка розкриває фрагмент ключа , щоб з часом все більше і більше ключ розкривається.k

Ця загальна стратегія зламу криптосистеми відома як відома атака в прямому тексті . Вважається, що багато систем, як AES і RSA, захищені від цих атак. Але одноразові прокладки стають абсолютно незахищеними проти них, якщо новий колода не використовується для кожного шифрування, саме тому їх називають "разовими колодками".


11

Це небезпечно саме через причину, яку ви згадуєте - є певний витік інформації.

В основному, якщо у вас є припущення щодо непростих текстів (англійський текст, файли з відомою структурою тощо), це призводить до простого статистичного аналізу. Можливо, використання його двічі не суттєво змінює практичність атаки, але, використовуючи її багато разів з невипадковим відкритим текстом, врешті-решт виявляється достатньо інформації для відновлення ключа.

Нарешті, якщо у вас є можливість використовувати його лише двічі , ви також маєте можливість використовувати лише один раз - обмеження полягає в тому, що ці одноразові прокладки не повинні використовуватися потенційно невідомо і з часом, пошкоджуючи їх кількість разів.

м1м2

Відомі атаки простого тексту є досить поширеними, досить легко застосувати механізм шифрування, щоб зашифрувати те, що ви знаєте, апріорі. Якщо ні, зазвичай можна зробити розумні статистичні припущення.


Окрім того, одноразові колодки мають властивість, що якщо ви знаєте кістотекст і навіть частину простого тексту, ви можете негайно відновити відповідну частину ключа, а це означає, що частина всіх майбутніх повідомлень, зашифрованих за допомогою того самого майданчика, ефективно надсилаються в чіткий (полегшуючи здогадку про ще якийсь простий текст, розкриваючи більше ключа тощо). Якщо ви шифруєте багато речей, таких як запити електронної пошти чи HTTP, зловмисник майже завжди може знати частину простого тексту просто завдяки структурі цих протоколів.
Бен

6

(m1k)(m2k)=m1m2

log226=4.7

Якщо ви хочете скористатися одноразовою прокладкою двічі, вам потрібно спочатку стиснути повідомлення. І навіть тоді, якщо ви не користуєтеся майже ідеальним алгоритмом стиснення і використовуєте одноразовий килимок кілька разів, залишиться достатньо ентропії, щоб теоретично відновити повідомлення. Я не знаю, як би важко це було на практиці.


4

m1m2m1m2

Насправді для багатьох випадків це дуже просто. Ось проста візуалізація.


2

Ось інтуїтивно зрозумілий спосіб представлення підходу без використання математики. Скажімо, у вас є два зашифровані повідомлення, які були зашифровані тим самим одним часовим майданчиком.

  1. Згадайте слово чи фразу, які можуть міститися в одному з повідомлень. Скажімо, фраза "Повіт про погоду"
  2. Починаючи з повідомлення 1, припустимо, що "Звіт про погоду" відбувається в першій позиції літери.
  3. Назад обчисліть перші 14 символів одного часового майданчика.
  4. Розшифруйте перші 14 символів повідомлення 2 за допомогою зворотного обчисленого OTP.
  5. Якщо виразний текст виглядає як gbble-di-gook, то поверніться до кроку 2 і повторіть у позиції 2-ї літери. Однак якщо ви отримаєте змістовний текст (наприклад, "Доброго ранку я", то вітаю, ви опрацювали перші 14 символів OTP (і перші 14 символів кожної літери)
  6. Якщо ви дійшли до кінця повідомлення 1, не викидаючи нічого, крім випадкових літер, то ви можете зробити висновок, що фраза "Звіт про погоду" не зустрічається в повідомленні 1. Поверніться до кроку 1 іншою фразою, наприклад "Шановний полковник "
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.