Указание по дешифровке (Инструкция по дешифровке текстов, кодированных операцией XOR)
Описание файла
Файл "Указание по дешифровке" внутри архива находится в папке "Инструкция по дешифровке текстов, кодированных операцией XOR". Документ из архива "Инструкция по дешифровке текстов, кодированных операцией XOR", который расположен в категории "". Всё это находится в предмете "математические основы криптологии" из 6 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "математические основы криптологии" в общих файлах.
Онлайн просмотр документа "Указание по дешифровке"
Текст из документа "Указание по дешифровке"
3
Указания по декодированию текста, шифрованного циклическим наложением неизвестного ключа по модулю два
Имеется шифротекст: >%=3)-%9м(н.<3)ь.1(ь#%=9>0>.
Его шестнадцатеричное представление:
3E | 25 | 3D | 33 | 29 | 2D | 25 | 39 | EC | 28 | ED | 2E | 3C | 33 | 29 | FC | 2E | 31 | 28 | FC | 23 | 25 | 3D | 39 | 3E | 30 | 3E | 2E |
1. Находим длину ключа.
Сдвигаем шифрованный текст относительно самого себя и подсчитываем совпадения символов или их шестнадцатеричных кодов. При сдвиге на один символ – 0 совпадений,
на два символа – 1 совпадение, на три символа – 0 совпадений. При сдвиге на
четыре символа – 1 совпадение. При достаточно длинном тексте максимальное число совпадений впервые будет достигнуто при сдвиге на длину ключа. При коротком тексте, как в данном примере, придется проверять 2 гипотезы: длина ключа равна 2 и 4 символам.
2. Полагаем, что длина ключа равна четырем символам. Сдвигаем шифротекст на 4 символа относительно самого себя и складываем по модулю два (операция XOR или ). Тем самым устраняем влияние наложенного ключа . Получим сумму по модулю два исходного текста со своей копией, сдвинутой на длину ключа самим:
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 |
3. По таблице сумм ASCII-кодов отмечаем в этой строке коды, встречающиеся минимальное количество раз. Символы, отмеченные желтым цветом, встречаются в таблице под два раза, все остальные по 32 раза. С редких символов целесообразно начать декодирование текста. Если все символы встречаются в таблице сумм примерно одинаковое число раз, дешифровку начинаем первого символа или с символа, повторяющегося в данной строке наиболее часто (символ с кодом 17).
По таблице сумм определяем, что коду C5 соответствует сумма буквы «е» с пробелом.
Подставляем комбинацию этих символов под кодом C5. (Пробел отмечен символом многоточие «…»). Находим позицию в строке, отстоящую от С5 на длину ключа (4 клетки, считая C5 первой). Это код D0. Записываем под ним те же символы, но в обратном порядке.
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 |
е | … | ||||||||||||||||||||||
… | е |
По таблице сумм проверяем, существуют ли символы, которые при сложении с кодами «e» и пробела дают код D0. Находим, что D0 = (пробел р). Комбинаций с буквой «e», дающих код D0 нет. Стираем вторую строку, как не прошедшую проверку.
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 |
е | … | р |
Записываем под следующим кодом, отстоящим на длину ключа (код 12) символ «р» и по таблице сумм находим, что 12 = (р в), и это единственная комбинация с буквой «р», дающая код 12. Записываем в клетку под кодом D, то есть 0D, букву «в».
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 | |
е | … | р | в | п | т |
Далее, в строке или столбце с буквой «в» таблицы сумм находим код 0D = (в п), записываем «п» под кодом 1D и, наконец, определив 1D = (п т), можем дописать его в добавочную клетку.
Ту же последовательность действий проделываем со вторым, отмеченным желтым цветом кодом C8 = (и пробел), и кодами, отстоящими от него на величину кратную длине ключа C4, 1, 15 и 3. Получим
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 | |||
е | и | … | … | р | д | в | е | п | р | т | у |
Начиная декодирование с кода D2, найдем еще три символа – «т», пробел, пробел, «е»
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 | ||||
е | и | … | … | т | р | д | … | в | е | … | п | р | е | т | у | т |
Больше уникальных символов в декодируемой строке не осталось. Для определения последней группы символов просмотрим уже полученный текст. В нем могут быть характерные особенности, которые можно использовать, чтобы избежать простого перебора всех 32 символов в первой, пока еще пустой, позиции. Символ под кодом 1B окружен пробелами. Это могут быть союзы «а», «в», «и», «к», «о», «с», «у», местоимение «я». Символ под кодом 2 с большой вероятностью угадывается как буква «у» в слове «труд», а под символом 14, скорее всего следует записать букву «с», имея ввиду слово «все». Попробуем подставить «у» под кодом 2. Тогда, повторяя описанную процедуру, найдем оставшиеся буквы до конца кодированного текста.
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 | ||||
е | и | … | … | т | р | у | д | … | в | с | е | … | п | е | р | е | т | р | у | т |
Получился осмысленный текст – значит наше предположение было верным. В противном случае нужно было бы попробовать другой вариант.
Полученный текст вполне достаточен для восстановления ключа, но можно декодировать и его начало. Для этого процедуру проверки следует провести справа налево, не забывая при этом, что получаемые символы будут относится к тексту, смещенному на длину ключа влево. Поэтому, если раньше мы вписывали их на 4 позиции правее, то сейчас будем вписывать непосредственно под символом, с которым они дают в сумме нужный код.
Возьмем код 2 над буквой «у» и проверим, какой символ даст код 1B, отстоящий от 2 на длину ключа влево. Это символ «и»: 1B = (у и). Отступив еще на 4 позиции влево, находим букву «н»: 5 = (и н) и так далее.
17 | 8 | 18 | A | C5 | 5 | C8 | 17 | D0 | 1B | C4 | D2 | 12 | 2 | 1 | 0 | D | 14 | 15 | C5 | 1D | 15 | 3 | 17 | ||||
е | е | н | и | … | и | … | т | р | у | д | … | в | с | е | … | п | е | р | е | т | р | у | т |
Таким образом можно декодировать весь текст. Но, если получен фрагмент исходного текста, равный по длине ключу или несколько больше, то, как уже было сказано, можно восстановить ключ, а с его помощью исходный текст.
Сложим по модулю два полученный декодированный текст и шифротекст
3E | 25 | 3D | 33 | 29 | 2D | 25 | 39 | EC | 28 | ED | 2E | 3C | 33 | 29 | FC | 2E | 31 | 28 | FC | 23 | 25 | 3D | 39 | 3E | 30 | 3E | 2E |
е | е | н | и | … | и | … | т | р | у | д | … | в | с | е | … | п | е | р | е | т | р | у | т | ||||
E5 | E5 | ED | E8 | 20 | E8 | 20 | F2 | F0 | F3 | E4 | 20 | E2 | F1 | E5 | 20 | EF | E5 | F0 | E5 | F2 | F0 | F3 | F2 | ||||
C0 | CC | C0 | CD | CC | C0 | CD | DC | CC | C0 | CD | DC | CC | C0 | CD | DC | CC | C0 | CD | DC | CC | C0 | CD | DC | ||||
А | М | А | Н | М | А | Н | Ь | М | А | Н | Ь | М | А | Н | Ь | М | А | Н | Ь | М | А | Н | Ь |
Следовательно, при кодировании использовалось ключевое слово