Элементарные шифры на понятном языке
Все мы довольно часто слышим такие слова и словосочетания, как «шифрование данных», «секретные шифры», «криптозащита», «шифрование», но далеко не все понимают, о чем конкретно идет речь. В этом посте разберемся, что из себя представляет шифрование и рассмотрим элементарные шифры с тем расчетом, чтобы даже далекие от IT люди поняли суть этого явления.
Прежде всего, разберемся в терминологии.
Шифрование – это такое преобразование исходного сообщения, которое не позволит всяким нехорошим людям прочитать данные, если они это сообщение перехватят. Делается это преобразование по специальным математическим и логическим алгоритмам, некоторые из которых мы рассмотрим ниже.
Исходное сообщение – это, собственно, то, что мы хотим зашифровать. Классический пример — текст.
Шифрованное сообщение – это сообщение, прошедшее процесс шифрования.
Шифр — это сам алгоритм, по которому мы преобразовываем сообщение.
Ключ — это компонент, на основе которого можно произвести шифрование или дешифрование.
Алфавит – это перечень всех возможных символов в исходном и зашифрованном сообщении. Включая цифры, знаки препинания, пробелы, отдельно строчные и заглавные буквы и т.д.
Шифр Атбаша
Например, есть у нас алфавит, который полностью соответствует обычной латинице.
a b c d e f g h i j k l m n o p q r s t u v w x y z
Для реализации шифра Атбаша просто инвертируем его. «А» станет «Z», «B» превратится в «Y» и наоборот. На выходе получим такую картину:

И теперь пишем нужное сообшение на исходном алфавите и алфавите шифра
Исходное сообщение: I love habr
Зашифрованное: r olev szyi
Шифр Цезаря
Опять же, для наглядности, возьмем латиницу
a b c d e f g h i j k l m n o p q r s t u v w x y z
И теперь сместим вправо или влево каждую букву на ключевое число значений.
Например, ключ у нас будет 4 и смещение вправо.
Исходный алфавит: a b c d e f g h i j k l m n o p q r s t u v w x y z
Зашифрованный: w x y z a b c d e f g h i j k l m n o p q r s t u v
Пробуем написать сообщение:
hello world
Шифруем его и получаем следующий несвязный текст:
dahhk sknhz
Шифр Вернама (XOR-шифр)
Исходный алфавит — все та же латиница.
Сообщение разбиваем на отдельные символы и каждый символ представляем в бинарном виде.
Классики криптографии предлагают пятизначный код бодо для каждой буквы. Мы же попробуем изменить этот шифр для кодирования в 8 бит/символ на примере ASCII-таблицы. Каждую букву представим в виде бинарного кода.

Теперь вспомним курс электроники и элемент «Исключающее ИЛИ», также известный как XOR.
XOR принимает сигналы (0 или 1 каждый), проводит над ними логическую операцию и выдает один сигнал, исходя из входных значений.
Если все сигналы равны между собой (0-0 или 1-1 или 0-0-0 и т.д.), то на выходе получаем 0.
Если сигналы не равны (0-1 или 1-0 или 1-0-0 и т.д.), то на выходе получаем 1.
Теперь для шифровки сообщения, введем сам текст для шифровки и ключ такой же длины. Переведем каждую букву в ее бинарный код и выполним формулу сообщение XOR ключ
сообщение: LONDON
ключ: SYSTEM
Переведем их в бинарный код и выполним XOR:
01001100 01001111 01001110 01000100 01001111 01001110 01010011 01011001 01010011 01010100 01000101 01001101 _______________________________________________________ 00011111 00010110 00011101 00010000 00001010 00000011
В данном конкретном примере на месте результирующих символов мы увидим только пустое место, ведь все символы попали в первые 32 служебных символа. Однако, если перевести полученный результат в числа, то получим следующую картину:
31 22 29 16 10 3.
С виду — совершенно несвязный набор чисел, но мы-то знаем.
Шифр кодового слова
Например, возьмем для разнообразия, кириллический алфавит.
абвгдеёжзийклмнопрстуфхцчшщъыьэюя
Придумаем кодовое слово. Например, «Лукоморье». Выдернем из него все повторяющиеся символы. На выходе получаем слово «Лукомрье».
Теперь вписываем данное слово в начале алфавита, а остальные символы оставляем без изменений.
абвгдеёжзийклмнопрстуфхцчшщъыьэюя лукомрьеабвгдёжзийнпстфхцчшщъыэюя
И теперь запишем любое сообщение и зашифруем его.
"Златая цепь на дубе том"
Получим в итоге следующий нечитаемый бред:
"Адлпля хриы жл мсур пиё"
Шифр Плейфера
Пусть кодовое слово у нас будет «HELLO».
Сначала поступаем как с предыдущим шифром, т.е. уберем повторы и запишем слово в начале алфавита.
Теперь возьмем любое сообщение. Например, «I LOVE HABR AND GITHUB».
Разобьем его на биграммы, т.е. на пары символов, не учитывая пробелы.
IL OV EH AB RA ND GI TH UB.
Если бы сообщение было из нечетного количества символов, или в биграмме были бы два одинаковых символа (LL, например), то на место недостающего или повторившегося символа ставится символ X.
Шифрование выполняется по нескольким несложным правилам:
1) Если символы биграммы находятся в матрице на одной строке — смещаем их вправо на одну позицию. Если символ был крайним в ряду — он становится первым.
Например, EH становится LE.

2) Если символы биграммы находятся в одном столбце, то они смещаются на одну позицию вниз. Если символ находился в самом низу столбца, то он принимает значение самого верхнего.
Например, если бы у нас была биграмма LX, то она стала бы DL.
3) Если символы не находятся ни на одной строке, ни на одном столбце, то строим прямоугольник, где наши символы — края диагонали. И меняем углы местами.
Например, биграмма RA.


По этим правилам, шифруем все сообщение.
IL OV EH AB RA ND GI TH UB. KO HY LE HG EU MF BP QO QG
Если убрать пробелы, то получим следующее зашифрованное сообщение:
KOHYLEHGEUMFBPQOQG
Поздравляю. После прочтения этой статьи вы хотя бы примерно понимаете, что такое шифрование и знаете как использовать некоторые примитивные шифры и можете приступать к изучению несколько более сложных образцов шифров, о которых мы поговорим позднее.
Спасибо за внимание.
- для начинающих
- шифрование данных
ФОЦПМРЬОЯКЦА: разбираемся в шифрах
Тарабарщина, абракадабра, затейное письмо — зашифрованные сообщения называли по-разному. Это был надежный способ передавать тайную информацию. Раньше умение дешифровать загадочные письма приравнивалось к сверхспособности, ведь нужно было обладать логическим, критическим и креативным мышлением. Вместе с экспертом Музея криптографии, который откроется в декабре этого года, рассказываем о популярных шифрах, а также о том, как их разгадать. Можете проверить себя!

Анастасия Ашаева
Кандидат исторических наук, старший научный сотрудник Музея криптографии

Атбаш
Этот шифр считается одним из самых древних в истории криптографии. Он появился примерно две с половиной тысячи лет назад на Ближнем Востоке. Чаще всего этот шифр можно встретить в религиозных текстах (кумранские рукописи, Ветхий Завет), где с его помощью скрывали, например, названия городов или имена собственные. Принцип шифрования очень прост: нужно написать алфавит в обратном порядке, так, чтобы под буквой «А» оказалась буква «Я», под буквой «Б» — буква «Ю» и так далее, а потом каждую букву сообщения, которое следует зашифровать, заменить на букву из алфавита, написанного в обратном порядке.

Такой незатейливый, но действенный способ шифрования и есть атбаш, то есть «алеф», «тав», «бет» и «шин» — первая, последняя, вторая и предпоследняя буквы еврейского алфавита.

Интересный факт: самое известное упоминание шифра атбаш — в романе Дэна Брауна «Код да Винчи», где главные герои дешифруют сообщение, зашифрованное с помощью этого шифра, что позволяет им приблизиться к разгадке тайны святого Грааля.
Проверьте себя: расшифруйте слово «ФОЦПМРЬОЯКЦА» . Что оно означает? (Ответы — в конце статьи.)
- Сокровище
- Криптография
- Крестоносец

Квадрат Полибия
Древние греки придумали если не все, то очень многое, в том числе и слово «криптография» (с древнегреческого «скрытый» + «пишу»). Среди множества способов передать сообщение тайно особо выделяется способ, названный именем выдающегося древнегреческого историка II в. до н. э. Полибия, который описал его в своем труде «Всеобщая история» . Для шифрования используется квадрат 6×6, в который вписываются все буквы алфавита. Каждый вертикальный и горизонтальный столбец получает свой порядковый номер, чтобы буквы, вписанные в ячейки квадрата, имели свои координаты (например, буква «А» — 11, «Б» — 12 и т. д.).

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

Интересный факт: изначально квадрат Полибия выполнял две функции: с его помощью можно было как зашифровать сообщение, так и передать его на дальнее расстояние посредством оптического телеграфа. Делалось это при помощи группы факелов: сначала поднимались факелы слева, количество которых указывало номер строки, а потом — факелы справа, указывающие номер столбца. Для получения и расшифрования такого сообщения адресату нужно было иметь точно такой же квадрат, а также зорко следить за количеством поднятых факелов.
Проверьте себя: «Телеграфируем» фразу «ОЧШОУеЗЗОУК» (34 51 52 34 43 21 23 23 34 43 26)
- Истина в вине
- Золотое руно
- Кануть в Лету

Шифр Цезаря
Известный шифр Античности получил имя самого известного политического деятеля и полководца Древнего мира неспроста. Юлий Цезарь мог одновременно не только писать, читать, диктовать и слушать, но и шифровать. Своим потомкам в наследство он оставил великую Римскую империю и шифр, которым, по свидетельствам античных авторов, императоры пользовались почти до самого падения империи.

В шифре, который был придуман Цезарем, для зашифрования нужно заменять каждую букву слова на букву, которая следует за ней третьей по счету: например, букву «А» мы заменим на букву «Г», а букву «Б» — на букву на «Д» и т. д. В целом сдвигать буквы можно на любое количество позиций вправо, и именно знание о том, на сколько букв вправо был сдвиг, и позволит расшифровать сообщение.

Интересный факт: шифр Цезаря лег в основу многих более сложных шифров и использовался вплоть до начала XX века, когда были изобретены первые шифровальные машины. И по сей день этот шифр считается наиболее важным и значимым в истории криптографии.
Проверьте себя: «ТУЛЫЗОЦЕЛЖЗОТСДЗЖЛО» — так выглядит одно из известных выражений, приписываемых Юлию Цезарю, зашифрованное при помощи шифра Цезаря со сдвигом на три позиции вправо. Попробуй расшифровать!
- И ты, Брут
- Опыт всему учитель
- Пришел, увидел, победил

Русская литорея
В средневековой Руси тоже любили шифровать. Зачастую шифры использовались в качестве украшения в литературных произведениях. Авторы шифровали свое имя и даже целые главы текста, используя тайнопись как литературный прием, который позволял выделить такой труд из множества других. Наиболее распространенным шифром в это время в России была литорея (от латинского слова littera — «буква»). Шифр предполагал замену согласных букв на согласные буквы по определенному правилу.

Под первыми десятью согласными буквами (за исключением «Й»), идущими по порядку, записывались другие десять согласных букв, но в порядке, противоположном тому, который использовался в верхней строке. Таким образом, под буквой «Б» оказывалась буква «Щ», а под буквой «В» — буква «Ш» и т. д.

Интересный факт: известное всем слово «тарабарщина» в веках означало не что иное, как шифр литорея, и употреблялось в качестве синонима. Одна из историй возникновения этого слова гласит, что для сохранения тайны передаваемого сообщения его зашифровывали, но не писали на бумаге, а давали гонцам заучивать наизусть. Гонцы доставляли сообщение адресату в виде устного послания, а так как произнести зашифрованный текст и понять его порой было непросто, он и получил название «тарабарщина».
Проверьте себя: «ЩЕФ КМУЦА ПЕ ШЫСОШИВЬ И МЫЩТУ ИФ НМУЦА» , гласит одна из русских поговорок. Что это за поговорка?
- Век живи — век учись
- Без труда не выловишь и рыбку из пруда
- Не плюй в колодец, пригодится воды напиться

Шифр Виженера
Новую эру в криптографии знаменует открытие полиалфавитного шифра, известного также как шифр Виженера. Описанный в 1586 году французским дипломатом Блезом де Виженером, шифр долго оставался нераскрытым, пережив множество усложнений и модификаций и став своеобразным мостиком для изобретения первых механических шифровальных машин. Для шифрования использовалась специальная таблица, в которой количество строк и столбцов соответствовало количеству букв в алфавите. Таким образом, каждая буква в исходном тексте сдвигается по алфавиту на разное количество символов и количество сдвигов каждой буквы задается специальным ключом (ключевым словом).

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

Интересный факт: Несмотря на то что шифр носит имя Виженера, сам Виженер его не изобретал. Шифр был придуман в 1466 году итальянским гуманистом, ученым и архитектором Леоном Баттистой Альберти. Вклад в его развитие внесли современники Альберти, среди которых — немецкий гуманист и аббат Иоганн Тритемий и итальянский ученый Джованни Баттиста Беллазо. Виженер же просто описал все известные ему способы шифрования, а в XIX веке за шифром прочно закрепилось имя Виженера, под которым он известен и по сей день.
Проверьте себя: «ЧФЩЪОВН ЙЪЯФОН» — так бы мог выглядеть призыв к атаке, зашифрованный при помощи таблицы Виженера с использованием ключевого слова «мел».
- Пушки доставлены
- Конница готова
- Герцог в западне
Игра в шифровальщика: вашим детям это понравится

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

С детьми из скаутского отряда «Сполох» я уже почти пять лет веду занятия по методам шифрования — полученные навыки потом применяются для отрядных игр, но и сами по себе шифры интересны детям младшего и среднего школьного возраста, они с огромным увлечением разгадывают «таинственные» послания и пишут их друг другу. А к тому же, когда коллективу детей приходится прочитать зашифрованный текст, тренируются и навыки взаимодействия в команде, распределения работы, достижения общей цели.
Конечно, этим же можно заниматься с детьми и в семье. Но сразу хочу предупредить родителей: если дети втянутся, то поначалу вам придется то и дело разгадывать их зашифрованные записки и отвечать им тем же. Иначе говоря — поддерживать формат развивающей интеллектуальной игры.
История, которую предварительно нужно рассказать детям
Шифрование — то есть сокрытие информации — появилось еще в древние времена. А уж когда возникли государства, армии, войны, разведка — то возникла необходимость тайно передавать какие-то сведения, чтобы, если вдруг они попадутся в руки врагу, тот ничего бы не понял. Нужны были тайные знаки, чтобы узнавать своих. Например, разрезали на части монету. Люди могли никогда друг друга не видеть, но если посланец предъявлял свою половинку, и при наложении обе части совпадали, значит, это свой.

А еще такой секретный знак был у первых христиан — в те века, когда за исповедание христианской веры тебя могли казнить. Как христиане могли узнавать своих — так, чтобы никто их не заподозрил и не выдал властям? У христиан был священный знак, символическое изображение рыбы (потому что если прочитать первые буквы фразы по-гречески «Иисус Христос Божий Сын Спаситель», то получалось греческое слово «ихтис», что значило рыба). Поэтому один христианин мог начертить тростью на земле дугу — сама по себе дуга еще ничего не обозначала. Но второй христианин в ответ на это чертил другую дугу, которые вместе складывались в изображение рыбы. Вот так:

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

Были и другие старинные шифры. Например, слова писались не слева направо, а справа налево. Не «капуста», а «атсупак», не «бабушка», а «акшубаб». Вот, например:

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

Но это всё довольно простые шифры, которые очень легко разгадать. А были и посложнее, о них-то пойдет речь.
Криптография и стеганография
Затем детям надо рассказать, что есть два разных способа тайно передавать сообщение. Первый — это криптография (от греческого «криптос» — тайна и «графо» — пишу), в переводе на русский «тайнопись». Идея в том, что мы каким-то хитрым образом искажаем текст, который хотим скрыть, и кто этого способа не знает, не сможет его восстановить. Второй способ называется стеганография (от греческого «стеганос» — скрытый и «графо» — пишу). Здесь мы поступаем хитрее — никак не изменяем сам текст, который хотим передать, но прячем его среди ненужной информации.
Например, используем так называемые стеганографические решетки. Это прямоугольные рамки, в которых хаотично прорезаны квадратики. Вот так:

Накладываем эту рамку на лист бумаги (так, чтобы цветной квадратик был в верхнем левом углу) и вписываем в прорези то сообщение, которое хотим спрятать. Без знаков препинания и без пробелов. Например:

Потом снимаем решетку и вписываем между букв нашего сообщения произвольные буквы и цифры. Например:

Совершенно бессмысленный текст, в котором нужное сообщение спрятано среди ненужного хлама. Но у кого есть точно такая же решетка, наложит ее на эту бумажку (выделенный квадратик — в левом верхнем углу) и прочитает те буквы, которые будут видны в прорезях.
Полезное упражнение: сделать вместе с детьми такие решетки (две одинаковых) и обмениваться тайными посланиями. Чтобы решетки получились полностью одинаковыми, нужно сперва сделать одну, потом наложить на кусок картона такого же размера, обвести карандашом все прорези и вырезать их ножницами. Если дети совсем маленькие, процесс, конечно, следует контролировать.
Какие бывают шифры
Конечно, здесь речь идет не о современных способах шифровки, которые основаны на очень серьезных математических методах и реализуются с помощью специальных компьютерных программ. С детьми мы занимаемся старинными шифрами, где для расшифровки достаточно лишь бумаги, ручки и мозгов.
Такие шифры делятся на две группы — перестановочные и подстановочные.
Идея перестановочных шифров — мы по какому-то правилу переставляем местами буквы в шифруемой строке. Если заранее знать, какое это правило (или догадаться), то можно переставить буквы так, чтобы получить исходную строку.
Идея подстановочных шифров — мы по какому-то правилу подставляем вместе каждой буквы в строке другую какую-то букву. Это может быть буква того же алфавита, а может быть буква специально придуманного (как, например, в рассказе Конан Дойля «Пляшущие человечки» из цикла о Шерлоке Холмсе).
Полезное упражнение: придумать вместе с детьми такие алфавиты, где каждой русской букве соответствует какой-то значок. Например, так:

Или, например, так:

Важное замечание
Для удобства при шифрованиии мы не различаем прописных и строчных букв (все слова пишем прописными), не используем знаков препинания, все числа пишем словами и (что особенно важно в перестановочных шифрах) обозначаем пропуск между словами знаком нижнего подчёркивания: «_». Детям надо сразу сказать, что пробел — такой же важный знак, как и буквы, если про него забыть, то обязательно ошибешься с зашифровкой и расшифровкой. То есть текст, подготовленный для зашифровки, должен выглядеть примерно так (стихотворение Семёна Липкина):

Простейшие перестановочные шифры
Самый простой перестановочный шифр называется «перестановка по два». Идея заключается в том, что мы разделяем строку на группы из двух знаков, и в каждой из групп меняем их местами. Если количество знаков нечётное, то последний знак не трогаем, оставляем как есть.

Пробел, обозначаемый знаком нижнего подчёркивания, тоже считается знаком — таким же, как и буквы.
Расшифровка делается точно так же, как и зашифровка: выделяем группы по два знака и внутри групп меняем их местами:

Чуть более хитрый перестановочный шифр называется «перестановка по три». Тут мы разделяем строку на группы по три знака, и для зашифровки записываем эти знаки справа налево. Например:

Обратите внимание: у нас встретилось в шифровке два пробела подряд. Надо замечать такие вещи и понимать, что это ДВА пробела.
Расшифровка происходит точно так же, как и зашифровка: с начала строки, т.е. слева направо, выделяем группы по три знака, и записываем в каждой группе их справа налево:

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

Обратите внимание — здесь пробел можно не обозначать нижним подчеркиванием, потому что при подстановочных шифрах пробел остается пробелом.
Расшифровка происходит наоборот: каждую букву в зашифрованной строчке мы заменяем на предыдущую в алфавите. А если это была буква «А», то заменяем ее на «Я». Вот так:

И, конечно, можно зашифровывать, беря вместо каждой буквы предыдущую, а расшифровывать — заменяя каждую букву шифровки следующей по алфавиту. Такой шифр назовем «минус один».
Заметим: для расшифровки текста, зашифрованного методом «плюс один», мы применяем метод «минус один», и наоборот.
Точно так же можно применять шифр «плюс два», когда вместо «А» пишем «В», вместо «Б» — «Г», и так далее, вместо «Э» — «Я», вместо «Ю» — «А», вместо «Я» — «Б». Но переходить к таким шифрам надо только после того, как дети уже хорошо освоили «плюс один» и «минус один».
И, конечно, для работы с подстановочными шифрами нужно хорошо помнить алфавит. Если наизусть его не помнят, не грех пользоваться бумажкой:

Буквы алфавита тут пронумерованы, и это не случайно. В некоторых шифрах, более сложных, нужно использовать порядковый номер буквы.
Есть и более сложные шифры — и подстановочные, и перестановочные — которые тоже можно освоить с детьми и применять для игр. Но об этом в другой раз.
Как применять шифры для игр
Если просто взять ребенка, усадить перед собой и начать изучать с ним шифры — скорее всего, ему это быстро наскучит, потому что он не понимает, зачем все это надо. То есть не будет мотивации. Поэтому начинать надо именно с игр. Например, подкинуть ребенку «таинственное письмо» — коротенькое и простенькое, но с интересным, веселым содержанием. Какой-нибудь смешной стишок, или информация, где спрятана конфета. в общем, родители сами сообразят. Когда ребенок самостоятельно (или с подсказками) прочитает послание — вот тогда уже следует говорить с ним про новую игру — шифры — и изучать их.
Причем изучать не за один раз. Сперва можно поговорить про старинные шифры, в другой раз — про стегагографические решетки (и обязательно своими руками сделать пару таких решеток). Потом — посочинять свои алфавиты и обязательно писать друг другу письма с их помощью. И только потом можно осваивать перестановочные шифры, затем — подстановочные.
С какого возраста можно обучать детей шифрам? Это зависит от их развития. Мне и с шестилетками приходилось этим заниматься. Но общий принцип — начинать надо тогда, когда ребенок уже вполне бегло читает и пишет, то есть обычно это со второго класса.
И, конечно, все эти навыки тут же надо применять к играм. Например, освоили перестановочный шифр — тут же рисуем (вместе с ребенком!) карту какой-нибудь волшебной страны и подписываем перестановочным шифром название городов, стран, рек, морей.
Или придумываем каких-то героев (можно взять просто традиционных героев русских сказок) и придумываем их зашифрованную переписку. Например, Лиса пишет зайцу:
РПХИДО_ИОКМ_ЕНЯ_Д_МАТ_БЕ_ЕТС_ОКВСУЫН_ХОМКРВОКО
(Приходи ко мне, я дам тебе сто вкусных морковок)
Ребенок расшифровывает это письмо Лисы и пишет ответ Зайца:
ЕНВ_РЕ_Ю_ЯЕТЕБЛ_СИ_АЫТМ_НЕ_ЯЪССЕЬТХ_ЧОШЕЬ
(Не верю я тебе, ты меня съесть хочешь)
И дальше продолжается эта переписка.
Можно еще сочетать творческие игры, где ребенок сочиняет какие-то истории, с заданиями на шифровку. Допустим, он сочиняет сказку про детектива Кролика, который расследует похищение Медведя и обнаруживает в его опустевшей берлоге зашифрованную записку. Какую? А это ребенок придумает сам. И зашифрует.
Очень хорошо придумывать вместе с ребенком какие-нибудь настольные игры-бродилки, где что-то надо расшифровывать. Например, это может быть игра, которую мы делаем в подарок каким-то другим детям. Младшим братьям или сестрам, друзьям, одноклассникам.
В общем, навыки шифрования — это полезный инструмент, который можно применять для самых разных игр и развивающих активностей. Это как соль — она ценна не сама по себе, а как приправа для пищи.
ПРИЛОЖЕНИЕ
Упражнения для расшифровки
Перестановки по два
ЕНУС_ТЕМЯНХ_ДОЛУИ
РКЧИТАР_БЕТЯ_АЛСЗАЬ
ОБСЮ_ЬЕНУ_АПУДЛ_И
_СОХУДЕЛЙ
РПМЯ_О_ВРГЗЯЬ
_ИРСЗА_УОПАЗУБУДТ
АК_КАВНЖ_О_ЯОХИДЛ
ОНД_ЛООГП_МОИНЬТБ_ДУТУ
УКАДЯ_У_ОГИДЛ
Cтихотворение Валентина Берестова:
Несут меня ходули.
Кричат ребята: «Слазь!»
Боюсь, не упаду ли
И сразу позабудут,
Как важно я ходил,
Но долго помнить будут,
Перестановки по три
ЕНМРН_ИВАЯСТЕН_УД_ТАМО_ЬЛП_ОХОМ
КАКУБ_ОТДОВ_ЕСВЕН_ЫБ_ _ОЛОЛПГОХО
КАКУБ_ОТДАН_ИЛ_ЕТСОС_ЕСВП_МТСУМО
Н_ЯИЧАЮАНРП_ИВАНЬЛ_ЕООЛСОВ
О_ЯАТСЯЛВС_ЮРАТ_ЕЫИШОИКБ
П_ВАЗОЕЧВШАРЙЕНУМ_РОСЙОНОК_ИЗРЕКН
Ч_СНРЕИВОМОКАЗ_НОКНЕЧГОНД_ОЯН
_ОНРДВ_ГУИОМАЗ_ТЫБ_ЕЫИШОИКБ
ТТОИГЯЯАВ_ЬСДУБ_ОТ_АНЗЕРКНИЕ
ЫРСЮАВЯСТ_И_УТСЮАКМ_ТЯНЕ
Cтихотворение Дениса Маслакова:
Мне нравится не думать о плохом,
Как будто вовсе не было плохого,
Как будто на листе совсем пустом
Я начинаю правильное слово.
Я оставляю старые ошибки
В позавчерашней мусорной корзинке
С черновиком законченного дня.
Но вдруг мои забытые ошибки
Оттягиваясь, будто на резинке,
Срываются и стукают меня.
Подстановки «плюс один»
А ЛБНФЩЁЛ ЕЙГОЬК
ОБЩЖМ ОБ СЁЛЁ
А ТРЙОЛФ ЁНФ
ТПДСЁГБЯ Г СФЛЁ
ГЁЕЭ ЛБНФЩЁЛ ЮУПУ
ОБГЁСОП ГПГЁЛ
Г СФЛБЦ ОЁ ЕЁСЗБМ
ОЙ ПЕЙО ШЁМПГЁЛ
Стихотворение Анастасии Орловой:
Я камушек дивный
Согреваю в руке.
Ведь камушек этот,
В руках не держал
Ни один человек!
Подстановки «минус один»
МЯ ЦДСЪПЕФ ЙНКЕРЯФ
ЙЯСЯЭС ЛЯКЪЧЯ
ГПТВНИ МЯ СПЕФ ОПНДФЯК
ЙТГЯСН МД РОДЧЯ
МЯ ГБТФ МДРЕСРЮ СПДСЗИ
ЛЯКЭРДМЫЙЗИ ЙЯЙ ВМНЛ
Я Ю ЙЯЦТРЫ МЯГ МЗЛЗ
МЯ ЙНКДРД НГМНЛ
Стихотворение Галины Дядиной:
На четырёх колёсах
Другой на трёх проехал
Куда-то, не спеша.
На двух несётся третий –
Малюсенький, как гном.
А я качусь над ними –
На колесе одном.
Подстановки «плюс два»
ПВО ИВНМР ЁЖЁХЪМХ МРТПЖБ
Д УТВДПЖПЮЖ У ПВОК РП РФУФВН
СРУМРНЮМХ Д ЁЖФУФДЖ ГВТОВНЖБ
К ОРЛЁРЁЭТВ ПЖ ЩКФВН
ПЖ ДРУЧКЫВНУБ ФЖНЖЦРПРО
К Д ФВТВМВПКЫЖ ПЖ ДПКМ
МВМ ДЭТРУ РП ФВМКО ХЩЗПЭО
ПЖ ЙПВБ УВОЭЧ ЕНВДПЭЧ МПКЕ
Cтихотворение Валентина Берестова:
Нам жалко дедушку Корнея:
В сравненье с нами он отстал,
Поскольку в детстве «Бармалея»
И «Мойдодыра» не читал,
Не восхищался «Телефоном»
И в «Тараканище» не вник.
Как вырос он таким учёным,
Не зная самых главных книг?!
Стойкие шифры
Как зашифровать сообщение так, чтобы его никто не сумел прочитать? В детективных романах нам предлагают немало способов, но, оказывается, практически все из них ненадёжны с точки зрения математика. Однако те же математики придумали «совершенный» шифр, взломать который невозможно. Как же он устроен?
| Квантик 11 ноября 2013 |
Шифры замены
Обычные шифры из детективных романов часто устроены так: каждая буква сообщения заменяется каким-нибудь определённым значком или другой буквой. Подобные шифры очень ненадёжны, и вот почему. Буквы в текстах на русском языке (да и на любом языке вообще) встречаются неравномерно. Например, буква «О» в русских текстах встречается чаще всех других букв, а буква «Ъ» – реже всего. У каждой буквы есть своя примерная частота появления в тексте.
Сочетания букв тоже встречаются неравномерно (например, «ьь» вообще не встречается). Конечно, все эти частоты зависят от конкретного текста – скажем, в биологической статье о жужелицах буква «ж» явно будет встречаться чаще, чем обычно.
Так вот, описанный способ шифровки не изменяет частот – просто теперь с аналогичной частотой будет появляться не сама буква, а заменяющий её значок. Высчитав частоту появления каждого значка в шифровке и сравнив полученные данные с таблицей частот, мы можем сделать предположения, какой букве какой значок соответствует. Далее пробуем заменять значки один за одним на буквы, проверяя свои догадки, корректируя их и делая новые, и постепенно расшифровываем текст. Если он не слишком короткий, мы с большой вероятностью его полностью расшифруем (хотя это может оказаться не совсем простым делом). Кстати, намного чаще любой буквы встречается пробел, разделяющий слова. Поэтому если пробел используется в шифровке и тоже заменён на какой-то значок, мы разгадаем его в первую очередь.
Совершенный шифр
Опишем теперь шифр, который принципиально не поддается расшифровке без знания ключа. Сопоставим каждой букве русского алфавита свою последовательность из 0 и 1 длины 5 (пятизначный двоичный код), например: А – 00000, Б – 00001, В – 00010 и так далее (или в каком-то другом порядке). Если буквы Е и Ё кодировать одинаково, то последовательностей как раз хватит (их 32, а в алфавите 33 буквы).
Заменим в тексте каждую букву на её двоичный код, получим последовательность из 0 и 1 (двоичный текст). Это пока ещё не шифровка – мы бы легко разгадали, какая буква на какую последовательность заменена (тем же методом, что и в случае замены букв на значки).
Чтобы зашифровать полученный двоичный текст, нам потребуется ещё ключ – случайная последовательность из 0 и 1 такой же длины. Этот ключ должен быть и у отправителя шифрованного сообщения, и у адресата.
Для зашифровки просто складываем две последовательности нулей и единиц – двоичный текст сообщения и ключ: первую цифру с первой, вторую со второй, и так далее. Но складываем по особым правилам:
0 + 0 = 0, 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 0
(в математике это называется сложением по модулю 2).
Полученная последовательность и будет зашифрованным сообщением. Чтобы расшифровать её, надо просто. снова прибавить к ней ключ! Тогда мы как бы прибавим к исходной последовательности ключ два раза. А по нашим правилам, прибавляя две одинаковые цифры мы ничего не меняем, то есть мы вернёмся к исходному двоичному тексту. Схематически процесс шифрования и дешифрования можно описать так:
текст + ключ = шифровка; шифровка + ключ = текст + ключ + ключ = текст.
Ясно, что расшифровать сообщение, не зная ключа, невозможно. Нам как бы дана сумма двух чисел, и нельзя восстановить одно из слагаемых, ничего не зная про другое. Имея на руках лишь шифровку, мы знаем только, что исходный текст может быть абсолютно любым текстом соответствующей длины. Ведь по любому такому тексту можно изготовить ключ, который приведёт ровно к той же самой шифровке!
Недостаток описанного способа в том, что каждый текст требует нового ключа такой же длины – если повторять ключи, появляется возможность расшифровки. Например, мы могли бы попробовать вместо длинного ключа использовать ключ всего из пяти символов, скажем 11010. Разбиваем двоичный текст на пятёрки цифр и прибавляем к каждой пятёрке 11010. Фактически, мы просто заменяем каждую пятёрку цифр на какуюто другую фиксированную пятёрку. В этом случае расшифровать исходный текст так же легко, как если бы мы просто заменили его двоичным кодом, не прибавляя никакого ключа. Использовать длинные ключи, но всё же существенно более короткие, чем текст, тоже опасно – есть метод определения длины ключа, а после того как длина ключа установлена, можно применить частотный анализ.
Поэтому надо заготовить ключ огромной длины заранее и лишь указывать, например, в начале шифровки, какое место ключа используется. При этом очень важно, чтобы ключ был случайной последовательностью из 0 и 1. Например, последовательности 11111111111111111 и 010101010101010 не случайные. Кстати, придумать случайную последовательность не так-то просто. Трудно даже (но возможно) дать чёткое определение, какие последовательности могут считаться случайными.
Немного истории и литературы
Подобный шифр использовал Макс Кристиансен Клаузен, шифровальщик выдающегося советского разведчика Рихарда Зорге. Наиболее часто употребляемые буквы английского алфавита s, i, o, e, r, a, t, n заменялись цифрами от 0 до 7, а остальные буквы – числами от 80 до 99 (чтобы не возникало путаницы, когда числа записывались подряд). Ключом служили старые выпуски «Статистического ежегодника Германского рейха» с множеством числовых данных. Ключ записывали под текстом и прибавляли, причём если сумма двух цифр превышала 10, то записывалась только её последняя цифра. Например, вместо 7 + 5 писали 2, отбрасывая десяток (в математике это называется сложением по модулю 10). Восстанавливали исходное сообщение, «вычитая» ключ из шифровки. Когда выходило отрицательное число, как скажем при вычитании 5 из 2, было ясно, что надо вычитать из числа на 10 больше, то есть из 12 – вот и получали 7.
Японские тайные службы перехватили много радиограмм Зорге, но ни одной не сумели расшифровать. Более полный рассказ об этом читайте в замечательной книге Юлиуса Мадера «Репортаж о докторе Зорге».
А герой приключенческих романов Юлиана Семёнова «Семнадцать мгновений весны» и «Приказано выжить» разведчик Штирлиц, больше известный нам по знамениту кинофильму, использовал в качестве ключа художественную книгу Монтеня. При этом осмысленный текст сообщения«складывался» с осмысленным же (и значит, не случайным!) текстом ключа. Когда германским контрразведчикам стало известно предпор лагаемое содержание одной из шифровок, в частности – некоторые слова, которые там могли встречаться, – они попробовали их подставить в разные места шифровки и посмотреть, какой получается ключ. Попав в нужное место, они открывали кусочек ключа, в котором угадывались части осмысленных слов. Восстанавливая эти слова, они раскрывали и новый кусочек шифровки, и так постепенно расшифровали её.
Шифры с открытым ключом
Начиная с 1977 года, стали появляться новые шифры, основанные на глубоких математических идеях, высказанных американскими математиками Диффи и Хеллманом за два года до этого. Представьте себе, что два бизнесмена хотят переписываться друг с другом, надёжно шифруя сообщения, но забыли договориться о ключе. Они находятся в разных странах, всё их общение может прослушиваться конкурентами. Как тут быть? Оказывается, выходы есть. Опишем один из них, но без подробностей, только сам принцип.
Придуман способ шифровки, для которого надо знать лишь произведение pq двух каких-то простых чисел p и q, а сами числа p и q знать не нужно. А вот для расшифровки сообщения обязательно иметь в распоряжении и число p, и число q. «Ну и что тут такого?», – спросите вы. А вот что. Дело в том, что эти простые числа можно взять очень большими. И тут мы сталкиваемся с таким явлением: современные компьютерные мощности огромны, но всё же ограничены. Скажем, компьютер может за разумное время разложить на простые множители 200-значное число, но раскладывание 300-значных чисел ему уже не под силу (любому из известных алгоритмов потребуются многие годы). Всегда есть какая-то подобная граница. А выяснить про число, простое оно или нет, компьютеры могут очень быстро для гораздо более длинных чисел. Так вот, первый из компаньонов может с помощью компьютера найти какие-нибудь два, скажем, 400-значных простых числа p и q, перемножить их и открыто переслать результат второму (а сами числа p и q хранить в тайне). Получив произведение pq, тот зашифрует своё сообщение и отправит обратно первому. И первый его легко расшифрует – он-то знает оба числа p и q. А вот всяким там подслушивателям для расшифровки придётся сначала разложить на множители произведение pq, в котором 800 знаков – а с этим не справится ни один современный компьютер! Этот метод шифровки называется RSA, по первым буквам фамилий его создателей – Ривеста, Шамира и Адлемана.
Конечно, с развитием компьютерных технологий появляется возможность расшифровывать старые сообщения. Первая шифровка авторов RSA, опубликованная ими в 1977 году как вызов всем дешифровальщикам мира, продержалась 17 лет. Также есть опасность, что будет найден новый, быстрый алгоритм разложения чисел на простые множители. Но есть математическая гипотеза, что все такие алгоритмы работают принципиально не быстрее, чем уже известные.