Взлом шифра - наглядный разбор. Часть третья - практика.

Взлом шифра - наглядный разбор. Часть третья - практика.

CHe_Love_Vek

Цикл о взломе шифра без ключа подходит к концу. В этот раз мы соберём в кулак силу воли, на максимум выкрутим логику, дедукцию, и по - настоящему расшифруем отрывок текста, взятого из статьи на Википедии.

Частотный криптоанализ

Зашифруем наш текст простым шифром перестановки с последующей заменой букв на соответствующие им порядковые значения в алфавите:

Количество букв в отрывке без учёта знаков препинания равняется 1053 символам. Для чего нам это число ? Руководствуясь им, мы проведём частотный анализ текста. Для этого вспоминаем таблицу вероятностей для каждого символа русского алфавита:

О - 10,98 % В - 4,53 % Ы - 1,9 % Ж - 0,94 %

Е - 8,48 % Л - 4,34 % Ь - 1,74 % Ш - 0,72 %

А - 8 % К - 3,49 % Г - 1,69 % Ю - 0,64 %

И - 7,37 % М - 3,2 % З - 1,64 % Ц - 0,49 %

Н - 6,7 % Д - 2,96 % Б - 1,59 % Щ - 0,36 %

Т - 6,32 % П - 2,8 % Ч - 1,45 % Э - 0,33 %

С - 5,47 % У - 2,62 % Й - 1,21 % Ф - 0,27 %

Р - 4,75 % Я - 2 % Х - 0,97 % Ъ - 0,04 %

( Буква " Ё " использоваться не будет )

Построим таблицу, содержащую информацию о том, сколько раз каждая из букв встретится нам в тексте. Для расчётов переведём проценты в десятичную дробь, поделив на 100: Значение буквы "О" - 10,98 %. Это значит, что текст на 10,98% состоит из этой буквы:

10,98 / 100 = 0,1098.

Чтобы узнать, сколько раз ( примерно ) в тексте нам встретится " О ", умножаем длину текста на полученное выше число:

1053 * 0,1098 = 115,6194, что при округлении равняется 116. Следовательно, эта буква встретится нам в тексте 116 раз.

Проведя вычисления для каждого символа, получаем :

О - 116 В - 48 Ы - 20 Ж - 10

Е - 89 Л - 45 Ь - 18 Ш - 8

А - 84 К - 38 Г - 18 Ю - 7

И - 78 М - 34 З - 17 Ц - 5

Н - 71 Д - 31 Б - 17 Щ - 4

Т - 67 П - 29 Ч - 15 Э - 3

С - 58 У - 28 Й - 13 Ф - 3

Р - 50 Я - 21 Х - 10 Ъ - 0

Теперь настало время подсчитать, сколько и каких чисел встречается в нашем отрывке :

"1" - 98 "10" - 28 "18" - 68 "26" - 24

"2" - 6 "11" - 3 "19" - 62 "27" - 127

"3"- 49 "12" - 6 "20" - 20 "28" - 1

"4" - 4 "13" - 5 "21" - 13 "29" - 9

"5" - 13 "14" - 20 "22" - 93 "30" - 65

"6" - 30 "15" - 15 "23" - 18 "31" - 28

"8" - 1 "16" - 5 "24" - 20 "32" - 64

"9" - 76 "17" - 11 "25" - 36 "33" - 35

Давайте рассуждать. В нашем шифротексте "27" встретилось 127 раз. И это самый большой показатель из всех встреченных нами чисел. В теоретических же расчётах для нашего текста "О" должна была встретиться нам 116 раз, что тоже является самым большим показателем среди букв. В связи с этим предположим, что числом "27" зашифрована буква "О". Идём дальше. "1" встретилась нам 98 раз, что является вторым по количеству среди символов шифротекста. Теоритически же вторая по " популярности " буква "Е" должна была содержаться в тексте в количестве 89 штук. Так же предположим, что в шифротексте числом "1" зашифрована буква "Е". Вообщем, в этом и заключается смысл частотного криптоанализа - мы находим символ шифротекста и букву алфавита, которые содержатся примерно в одинаковом количестве, и сопоставляем их. Следуя этой логике, получаем, что:

"О" - "27" "В" - "3" "Ы" - "20" "Ж" - "2"

"Е" - "1" "Л" - "25" "Ь" - "24" "Ш" - "12"

"А"- "22" "К" - "33" "Г" - "23" "Ю" - "13"

"И" - "9" "М" - "6" "З" - "15" "Ц" - "16"

"Н" - "18" "Д" - "10" "Б" - "5" "Щ" - "4"

"Т" - "30" "П" - "31" "Ч" - "21" "Э" - "11"

"С" - "32" "У" - "26" "Й" - "17" "Ф" - "8"

"Р" - "19" "Я" - "14" "Х" - "29" "Ъ" - "28"

Всё готово. В соответствии с полученной информацией произведём расшифровку текста и получаем :

Бред. Это даже близко не походит на осмысленный текст. Статистика даёт сбой, хотя в рамках метода всё посчитано правильно. Теперь, дабы превратить набор букв в нормальные слова и предложения, применим атаку по маске.

Атака по маске

Мы не будем устраивать атаку на обломках разочарования в частотном криптоанализе и вернёмся к исходному варианту нашего текста, зашифрованному числами:

Частотный анализ тот ещё подлец, но глубоко сомневаюсь, что на первые две самые популярные буквы - "О" и "Е" - он сработал с ошибкой. Думаю, их снова можно включить в наш текст:


Если внимательно присмотреться, то можно увидеть слово, которое встречается несколько раз - "31;18;31". Всего лишь три буквы, две из которых - первая и последняя - повторяются. Таких слов, находящихся в широком употреблении в русском языке, совсем немного : "ИЛИ", "КАК", "ТУТ", "ТОТ" и "ОНО". Последние два можно сразу отсечь - буква "О" уже расшифрована и находиться в слове "31;18;31" не может. Вариант "ИЛИ" отпадает следом, поскольку в тексте есть отдельно стоящая "18", а в русском языке "Л" может находиться только в составе какого - либо слова.

Что же теперь нам выбрать - "КАК" или "ТУТ" ? Ответ даст слово "9;18". Есть ли слова в русском языке из двух букв, в конце которых стояла бы "А" ? Конечно, например, предлог "ЗА". А в конце которых стояла бы буква "У" ? Тоже есть - слово-паразит "НУ", но врятли бы его поместили в статью на Википедии. Поэтому, выбор очевиден - под "31;18;31" зашифровано слово "КАК". Если не поняли, как мы это определили, то внимательно смотрите - мы предположили, что под "31;18;31" стоит слово "КАК" или "ТУТ". При первом варианте - "КАК", второй буквой в нашем зашифрованном слове будет "А", а при варианте "ТУТ" - "У". Вторая буква в этом слове зашифрована числом "18", как и последняя буква в слове "9;18". Следовательно, это одна и та же буква. Теперь думаем - может ли буква "А" содержаться на конце слова из двух букв ? Как мы выяснили выше - может. А вот "У" не может, поэтому мы выбираем слово "КАК".

Теперь мы выяснили, что под "31" скрывается "К", а под "18" - "А". Вносим их в текст:

Находим слово "30;А;К;21;Е". Без всяких подстановок можем сказать, что это слово "ТАКЖЕ". Под "30" - "Т", под "21" - "Ж" :

В начале текста есть словосочетание "22 ТАК 33;А;25;Е;Е". Опять же, логически приходим к тому, что здесь зашифровано "И ТАК ДАЛЕЕ". "22" - "И", "33" - "Д", "25" - "Л":

Кое-что уже вырисовывается. Находим слово "И;Д;Е;О;Л;О;24;И;29;Е;32;К;И;Е" и понимаем, что "24" это "Г", "29" - "Ч", а "32" - "С" :

"19;С;Е;Г;Д;А" - "ВСЕГДА", "9;А;С;И;Л;И;Е" - "НАСИЛИЕ", "19" - "В", "9" - "Н":

"В;О;23;Н;А" - "ВОЙНА", " К;О;Н;11;Л;И;К;Т " - "КОНФЛИКТ", "С;Л;14;Ж;И;Т" - "СЛУЖИТ". Производим соответствующие замены:

"26;В;Л;26;Е;Т;С;26" - "ЯВЛЯЕТСЯ", "17;А;С;Т;А;В;И;Т;15  " - "ЗАСТАВИТЬ", "С;О;5;С;Т;В;Е;Н;Н;О;С;Т;15" - "СОБСТВЕННОСТЬ". Снова производим замены:

"16;Е;Л;Е;Й" - "ЦЕЛЕЙ", "Ч;Т;О;Б;20" - "ЧТОБЫ", "13;Т;О" - "ЭТО". Меняем:

"10;3;А;В;И;Л;О " - "ПРАВИЛО", "С;У;4;Е;С;Т;В;О;В;А;Н;И;Я" - "СУЩЕСТВОВАНИЯ". И снова меняем:

Остальные буквы додумываем логически : "6" - "М", "12" - "Х", "8" - "Ъ", "2" - "Ю":

Вот и всё. Не очень радужная статья, но она как нельзя лучше подошла для нашего эксперимента :c

Как видите, ничего сложного в подобной расшифровке нет. Главное набраться терпения и следовать алгоритму: сначала частотный криптоанализ, а уже после атака по маске.

Теперь, дорогие читатели, вы достаточно подкованы для того, чтобы самостоятельно взламывать простые шифротексты. Даже таким элементарным навыком обладает далеко не каждый, поэтому, можно сказать, вы являетесь носителями уникальных знаний )

На этом цикл о взломе шифротекстов на основе простых методов шифрования окончен.


============

https://t.me/ENcoding

============


























Report Page