Взлом поточного шифра
Здравствуйте уважаемые форумчане. Я в криптографии не силен, но хотелось бы немного углубиться и изучить азы этой науки? Вот столкнулся с интересной задачей, но не могу разобраться как решить. Суть задачи состоит в том, что есть 11 зашифрованных сообщений(различной длинны), они шифровались поточным шифром, с одинаковым ключом. Как можно расшифровать эти сообщения, в смысле как можно подобрать ключ,исходя из этих сообщений? В подсказке к задаче написано, что нужно про xor-ить все шифротексты. Но каким образом это должно помочь мне в поиске ключа? Заранее спасибо!
Даже не знаю. Вы у меня спрашиваете? Кто хочет, тот углубляется, начиная с этого.
Заранее пожалуйста. Чувствую, что сентябрь уже в разгаре. Ждём зимней сессии.
- c-шифротекст
- k-ключ
- p-открытый текст
Ci xor Cj=Pi xor Pj ,но я понять не могу каким образом мне это может помочь. Для тех кто по прежнему считает,что я ленивый школьник, преследующий меркантильные цели -хочу заверить это не так(курс лекций о котором я говорил выше, давно окончен, просто задача очень зацепила), вот даже кусок текста программы на java, где я ксорил строки:правда немного индусский код получился, но сойдет, так как писалось на быструю руку, в данном коде я ксорил между собой две строки и выводил результаты на экран.
комментариев: 9796 документов: 488 редакций: 5664
Вот об этом сходу можно было подумать безо всякого кода. Если ключ одинаковый, а вектор инициализации не используется, то получаются одинаковые гаммы. А уже даже по двум шифртекстам можно восстановить только ксор двух открытых текстов, что тоже даёт существенную утечку: АНБ-шный проект Venonа так ломал советские одноразовые блокноты.
Во-вторых, определить гамму при таком большом количестве осмысленных сообщений (с учетом низкой энтропии естественных языков) можно и вручную (если с английским проблем нет, хотя раз Вы слушаете онлайн курсы на нем, то видимо все в порядке), так даже более наглядно получается.
Вот, к примеру, ciphertext#3 и ciphertext#4 совпадают в первых четырех байтах, т.е. буквах в кодировке ASCII. В предположении что все открытые тексты являются английскими предложениями – попробуйте их заксорить с наиболее употребляемым словом английского языка "The " (вместе с пробелом конечно). Если предположение верное, то Вы получите первые четыре байта гаммы, проверить которые можно, к примеру, на ciphertext#6, в результате чего получите начало какого-то другого слова на английском, затем Вы можете предположить что это за слово и определить последующие символы гаммы и т.д.
Кажется я понял,как это делать. Если формула шифрования Ci=Pi xor Ki, где
Ci-шифротекст
Pi-открытый текст
Ki-ключ
то имея несколько сообщений зашифрованных одним ключом ,будет верно равенство
C1i xor C2i=P1i xor P2i
а дальше нужно брать буквы английского алфавита и ксорить их код по ascii таблице, при равенстве байт -говорит о том что использовались именно эти буквы. а дальше не сложно вычислить где какая буква должна стоять. Потом по формуле вычисляем ключ.
комментариев: 9796 документов: 488 редакций: 5664
В этом онлайн курсе просто затрагиваются общие темы, введение в криптографию так сказать. Задание такое выбрано, вероятно, из-за того что результат наглядно виден, это ведь не абстрактное снижение стойкости с 2^128 до 2^126. Смысла объяснять метод биклик для широких масс нет и не будет.