dimview: (Default)
[personal profile] dimview

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

Описание того, что получилось — под катом.

Сначала превращаем текст в цифры. Для этого используем такую шахматную таблицу:

  0 1 2 3 4 5 6 7 8 9
  С Е Н А Т О Р
7 Б В Г Д Ё Ж З И Й К
8 Л М П У Ф Х Ц Ч Ш Щ 
9 Ь Ы Ъ Э Ю Я . /

В таблице десять колонок, пронумерованных от 0 до 9. В верхнюю строку таблицы вписываем по буквам слово СЕНАТОР. Три последние клетки (7, 8 и 9) остаются незаполненными. Для каждой из незаполненных клеток добавляем отдельную строку. Вписываем в клетки этих строк оставшиеся буквы алфавита и два спецсимвола - точку и косую черту. Остаются две незаполненные клетки, их можно будет потом для чего-нибудь ещё использовать.

Буквы в слове СЕНАТОР представляются одной цифрой. Например, С превращается в 0, Р превращается в 6 и так далее. Остальные буквы представляются двумя цифрами — номером строки и номером колонки. Например, Ъ превращается в 92, Ё превращается в 74.

Таким образом буквы с большой частотностью кодируются меньшим количеством цифр. Это не только позволяет слегка сжать текст, но также затрудняет частотный анализ, который Шерлок Холмс использовал в рассказе "Пляшущие человечки".

Косая черта используется для перехода к цифрам и обратно. Каждая цифра повторяется два раза. Например, 42 превратится в /42/, то есть 97 44 22 97.

Для примера будем шифровать послание из пляшущих человечков — «ПРИХОДИ НЕМЕДЛЕННО».
П  Р  И  Х  О  Д  И   Н  Е  М  Е  Д  Л  Е  Н  Н  О
82 6  77 85 5  73 77  2  1  81 1  73 80 1  2  2  5

Теперь надо подготовить гамму. В идеальном случае это должна быть страница из одноразового блокнота, но поскольку мы решили обойтись подручными материалами, то будем использовать в качестве источника ключевого материала какую-нибудь книгу. Книга эта должна быть у обоих сторон. Выбираем страницу наугад и записываем третью букву в каждой строке. Переводим буквы в цифры по той же таблице.
Р  О  Л  К  И  Ш  Ч  С  С  И  А  Ш  С  Е  О  Ю  Н
6  5  80 79 77 88 87 0  0  77 3  88 0  1  5  94 2

Остаётся прибавить гамму к сообщению (для каждой цифры отдельно, по модулю 10) и добавить в начало трёхзначный номер страницы.
   82 67785 57377 21811 73801 225
04265 80797 78887 00773 88015 942
04247 47472 25154 21584 51816 167

Зашифрованное сообщение: 04247 47472 25154 21584 51816 167

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

Известные недостатки:

  • Нельзя повторно использовать одну и ту же страницу. Но при этом нельзя помечать использованные страницы. Можно положить закладку и двигать её только вперёд, но это заметно сокращает кодовое пространство.
  • Противник может получить доступ к гамме. Например, отсканировать и перепробовать все существующие книги.
  • Нет возможности уничтожить использованную страницу. Если книга попадёт в руки противнику, то уже неважно, вырвана там страница или нет — всегда можно найти ещё одну точно такую же книгу и прочитать с её помощью старые сообщения.
  • Гамма не совсем случайна. Третья буква распределена ровнее и корреляция между буквами в соседних строчках невелика, но это всё равно не настоящий одноразовый блокнот. С другой стороны зашифровать вручную много сообщений всё равно не получится, так что статистики для частотного анализа будет мало.
  • Нет контроля целостности сообщений. Я пытался придумать простой способ его добавить, но пока ничего толкового не нашёл.

From:
Anonymous( )Anonymous This account has disabled anonymous posting.
OpenID( )OpenID You can comment on this post while signed in with an account from many other sites, once you have confirmed your email address. Sign in using OpenID.
User
Account name:
Password:
If you don't have an account you can create one now.
Subject:
HTML doesn't work in the subject.

Message:

 
Notice: This account is set to log the IP addresses of everyone who comments.
Links will be displayed as unclickable URLs to help prevent spam.

Profile

dimview: (Default)
dimview

July 2017

S M T W T F S
      1
23 4567 8
9101112131415
16171819202122
23242526272829
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 28th, 2017 06:40 am
Powered by Dreamwidth Studios