Читаем Криптономикон, часть 2 полностью

Через полчаса вместе с горящим газом выплескивается раскаленный поток. Шипя и поднимая пар, он оседает на дно реки. Долгое время не видно ничего, кроме белых облаков, но через час или два под водой и вокруг камня, на котором примостился Рэнди, проявляется, растекаясь по дну, блестящая, широкая река золота.

ПРИЛОЖЕНИЕ:

ПАСЬЯНС ШИФРОВАЛЬНЫЙ АЛГОРИТМ

Брюс Шнайер,

автор «Прикладной криптографии»

Президент «Каунтерпейн системс»

http://www.counterpane.com

В романе Нила Стивенсона «Криптономикон» персонаж по имени Енох Роот описывает персонажу по имени Рэнди Уотерхауз криптосистему под кодовым названием «Понтифик», а после сообщает, что алгоритм реализуется при помощи колоды карт. Дальше герои обмениваются несколькими сообщениями, зашифрованными этим способом. Систему «Пасьянс» (в романе она выступает под кодовым названием «Понтифик», дабы до поры до времени скрыть, что в ней используется карточная колода) я придумал, чтобы агенты на местах могли выходить на связь, не полагаясь на электронику и не имея при себе компрометирующих инструментов. Агент может оказаться в ситуации, где у него просто не будет доступа к компьютеру, или пострадать, если при нем обнаружат средства секретной связи. А колода карт… что может быть безобиднее?

Стойкость «Пасьянса» основана на случайности перетасованной колоды. Манипулируя ею, коммуникант способен создать цепочку «случайных» букв, которые потом комбинируются с сообщением. Разумеется, «Пасьянс» можно воспроизвести на компьютере, но создан он для использования вручную.

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

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

ШИФРОВАНИЕ С ПОМОЩЬЮ «ПАСЬЯНСА»

«Пасьянс» — поточный шифр с обратной связью по выходу. Иногда это называется генератор гаммы. Основная идея в том, что «Пасьянс» генерирует шифрующий поток из чисел от 1 до 26. Для шифрования сгенерируйте столько же букв ключевого потока, сколько содержит открытый текст. Потом суммируйте их по модулю 26, одну за другой, с буквами открытого текста. Для расшифрования сгенерируйте тот же ключевой поток и вычитайте по модулю 26 из шифртекста, чтобы получить открытый текст.

Для примера зашифруем первое сообщение из романа Стивенсона, «DO NOT USE PC»:


1. Разбейте сообщение открытого текста на группы по пять букв. (Ничего такого магического в цифре 5 нет, это просто традиция.) Последнюю группу дополните буквами «X». Тогда если сообщение «DO NOT USE PC», то открытый текст:

DONOT USEPC

2. С помощью «Пасьянса» сгенерируйте десять букв шифрующего потока. (Подробности дальше.) Предположим, это:

KDWUP ONOWT

3. Переведите открытый текст из букв в числа: А = 1, В = 2, и так далее:

4 15 14 15 20 21 19 5 16 3

4. Точно так же переведите в числа ключевой поток:

11 4 23 21 16 15 14 15 23 20

5. Сложите числа открытого текста с числами ключевого потока по модулю 26. (То есть если сумма превышает 26, вычтите из результата 26.) Например, 1 + 1 = 2, 26 + 1 = 27, а 27 — 26 = 1, так что 26 + 1 = 1.

15 19 11 10 10 10 7 20 13 23

6. Переведите числа обратно в буквы.

OSKJJ JGTMW

Когда натренируетесь, сможете складывать буквы в уме, не переводя их в числа. Тут надо просто привыкнуть. Легко запомнить А + А = В; труднее, что Т + Q = К.

РАСШИФРОВКА С ПОМОЩЬЮ «ПАСЬЯНСА»


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


1. Возьмите шифртекст и разбейте его на группы из пяти букв. (Он уже должен быть в таком виде.)

OSKJJ JGTMW

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

KDWUP ONOWT

3. Переведите шифртекст из букв в цифры:

15 19 11 10 10 10 7 20 13 23

4. Переведите ключевой поток аналогичным образом:

11 4 23 21 16 15 14 15 23 20

5. Вычтите числа ключевого потока из чисел шифртекста по модулю 26. Например, 22 — 1 = 20, 1 — 22 = 5. (Это легко. Если первое число меньше второго, перед вычитанием прибавьте к нему 26. Тогда 1 — 22 =? станет 27 — 22 = 5.)

4 15 14 15 20 21 19 5 16 3

6. Переведите числа обратно в буквы.

DONOT USEPC

Расшифрование происходит так же, как зашифрование, только вы вычитаете ключевой поток из шифртекста.

ГЕНЕРАЦИЯ БУКВ КЛЮЧЕВОГО ПОТОКА

Перейти на страницу:

Похожие книги

Rossija (reload game)
Rossija (reload game)

Кирилл Еськов и Михаил Харитонов Историческое повествование в жанре контрреализма в пяти частях, сорока главах и одиннадцати документах (негарантированной подлинности), с Прологом (он же Опенинг) и Эпилогом (он же Эндинг), а также «учетными карточками» стран и героев, долженствующими пробить читателя на ностальгию по культовой игре «Empire: Total War» достославной компании Sega, каковая компания уклонилась от оплаты сего продакт-плейсмента, но зато и не рискует теперь стать соответчиком авторов о искам к ним за срывание всех и всяческих масок и оскорбление всех и всяческих чувств. В Библиотеке Мошкова. Дорогие читатели! Вы можете пожертвовать на издание других книг Михаила Харитонова по реквизитам: Шалимова Надежда Валерьевна — вдова Михаила Харитонова: Сбербанк: 5469 3800 9051 6294 Надежда Валерьевна Ш. Или по номеру: 8-916-116-27-63 — (телефон привязан к карте) Тинькофф: 5536 9138 8624 6814 Яндекс-кошелёк: 410012831037853 Яндекс — карта: 5106 2180 3945 8971 PayPal: QIWI: 89161162763 (Пожалуйста, не забывайте писать в «назначение платежа»: «Дарение».) Еськов Кирилл Юрьевич: «Альфа-Банк»: KIRILL ESKOV 5559 4933 6817 9082 PayPal: QIWI: 89161162763 (Пожалуйста, не забывайте писать в «назначение платежа»: «Дарение».)

Михаил Юрьевич Харитонов , Кирилл Еськов

Самиздат, сетевая литература / Киберпанк / Социально-психологическая фантастика