Неделя 3. Стеганография и код Фрэнсиса Бэкона

 

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

Что такое стеганография? Это набор методов и практик сокрытия сообщений. Основная цель стеганографии заключается в том, чтобы скрыть сам факт передачи тайного сообщения. Другими словами, тайное сообщение как бы прячется. Оно даже может быть не шифрованным. Но если спрятанное сообщение ещё и зашифровать каким‑нибудь способом, то степень защиты будет повышена, особенно если метод шифрования нарушает частоты распределения символов в шифруемом тексте. Тогда найти стеганограмму намного сложнее, поскольку она начинает выглядеть как «шум». Непосвящённый человек не сможет выявить её, а у криптоаналитика будет очень мало зацепок, чтобы попытаться обнаружить стеганограмму (например, статистическими методами).

В течение третьей недели мы научимся скрывать сообщение методом, который придумал английский философ и математик Фрэнсис Бэкон. Мы немного изменим его метод и применим его для русского языка. В итоге получится очень интересная вещь, которой можно пользоваться в любых областях жизни. Начнём же…

Помните, я не зря упомянул о том, что в нашем новом алфавите ровно тридцать два символа. Число 32 для криптографов и математиков – «круглое», поскольку в двоичной системе счисления записывается как «100000». Другими словами, для представления тридцати двух символов нам требуется 5 бит информации, поскольку 32 = 25. Мы можем воспользоваться этим для нового способа кодирования символов нашего алфавита:

Тот из читателей, кто изощрён в информатике или программировании, уже понял, что это двоичный код для всех тридцати двух символов. Другими словами, каждому символу из алфавита ставится в соответствие пятизначное двоичное число, то есть число, состоящее ровно из пяти цифр 0 или 1. При этом нули на первых местах не удаляются, как мы это привыкли делать в десятичной системе. Здесь особенно важно, чтобы длина кода для каждого символа была равна пяти.

Соответственно, чтобы зашифровать текст, необходимо выписать один за другим код каждого символа. Например, пусть есть текст «ПОДГОТОВЬ ИНГРЕДИЕНТЫ К МОЕМУ ПРИЕЗДУ». Этот текст шифруется при помощи представленного выше кода так:

10000011110010100100011111001101111000111101100000010010111000100100010011000101 01001001100111010011111000000001011000000110101111001100110110100000001000010001 0100100110010000010110100

А тепер ь сам ое г л а вн о е. П устьц иф ра 0 обоз нач аето б ыч ную бук в у, а ц ифр а 1 – ж ир н ую. В ес ьэ тот к о д м о жн о «н ан ес ти» н а пр оизво льный тек с т пр и помощ ит а к о госо от ве тс тв и я. И, самое гл а вное, нео б я з ат е ль но ис п ользо в а ть с в ойство жирности символа, для этих целей подойдёт любое двоичное свойство: большая буква или маленькая буква, прямая или курсив, красного цвета или чёрного. Можно даже использовать такие свойства, как «находится в первой половине алфавита или во второй» или «находится на чётном месте в алфавите или на нечётном». Но эти два последних свойства сложнее, при помощи их спрятать код можно не в любом тексте.

Как видно, эта же шифрограмма «нанесена» на обычные слова в начале предыдущего абзаца, при этом использовались все символы для нанесения (то есть и цифры, и знаки препинания). Неподготовленный читатель даже не обратит внимания на такое странное начертание текста. Но грамотный криптоаналитик, конечно же, всё сразу поймёт, этим никого не удивишь. Поэтому обычно используют более тонкие свойства, которые не так тривиальны и не видны невооружённым глазом.

Таким образом, на третьей неделе обучения надо составить и написать письмо, шифрограмма в котором будет скрыта. При составлении текста, подлежащего сокрытию, необходимо иметь в виду, что для его кодирования с помощью жирных начертаний требуется в пять раз больше символов. Я рекомендовал бы написать обычное письмо, в тексте которого не ведётся речь о шифровании вообще. А вот в скрываемом тексте можно использовать какие‑нибудь нравоучения на тему, как хорошо знать и уметь заниматься шифрованием и дешифровкой.

Необходимо быть крайне внимательным при кодировании текста. Нет ничего страшного в том, что в каком‑нибудь одном месте будет изменён один бит (0 на 1 или 1 на 0), поскольку это всего лишь приведёт к появлению единичной ошибки в дешифрованном открытом тексте. Намного хуже будет, если в какой‑то момент будет пропущен бит. Это приведёт к сдвигу, в результате которого после расшифровки получится бессмыслица. Нет, в конце концов, её тоже можно будет расшифровать, поскольку это будет довольно структурированная бессмыслица. Но её вид вызовет у ребёнка недоумение, поскольку он подумает, что идёт по неправильному пути.

Поэтому я рекомендую воспользоваться компьютером, чтобы подготовить и затем проверить кодирование скрытого текста. Затем можно будет перенести его в письмо, которое, как мы договорились, лучше писать от руки. Соответственно, при кодировании скрытого текста надо внимательно относиться к жирности букв, поскольку для образовательных целей нужно, чтобы два состояния символов отличались друг от друга.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: