ЗАРОЖДЕНИЕ КРИПТОГРАФИИ

         

Многоалфавитные шифры замены с периодическим ключом


Рассмотрим 30-буквенный алфавит русского языка:

АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ.

В этом алфавите отсутствуют буквы , Й и Ъ, что практически не ограничивает возможностей по составлению открытых сообщений на русском языке. В самом деле, замена буквы на букву Е, буквы Й - на букву И, а буквы Ъ - на букву Ь позволяет понять смысл открытого сообщения, написанного с использованием этого алфавита.

В алфавите любого естественного языка буквы следуют друг за другом в определенном порядке. Это дает возможность присвоить каждой букве алфавита ее естественный порядковый номер. Так, в приведенном алфавите букве А присваивается порядковый номер 1, букве О - порядковый номер 14, а букве Ы - порядковый номер 27. Если в открытом сообщении каждую букву заменить ее естественным порядковым номером в рассматриваемом алфавите, то преобразование числового сообщения в буквенное позволяет однозначно восстановить исходное открытое сообщение. Например, числовое сообщение 1 11 20 1 3 9 18 преобразуется в буквенное сообщение: АЛФАВИТ.

Дополним естественный порядок букв в алфавите. Будем считать, что за последней буквой алфавита следует его первая буква. Такой порядок букв достигается, если расположить их на окружности в естественном порядке по часовой стрелке. При таком расположении можно каждой из букв присвоить порядковый номер относительно любой буквы алфавита. Такой номер назовем относительным порядковым номером. Заметим, что если число букв в алфавите равно , то относительный порядковый номер данной буквы может принимать все значения от 0 до в зависимости от буквы, относительно которой он вычисляется. Для примера рассмотрим исходный 30-буквенный алфавит русского языка, расположенный на окружности (см. рис.).

В этом случае порядковый номер буквы А относительно буквы А равен 0, относительно буквы Я он уже равен 1 и так далее, относительно буквы Б порядковый номер А равен 29. Значения относительных порядковых номеров букв алфавита из букв совпадают со значениями всевозможных остатков от деления целых чисел на натуральное число . Убедитесь в том, что порядковый номер какой-либо буквы алфавита относительно другой буквы равен остатку от деления разности их естественных порядковых номеров на число букв в алфавите.


Обозначим символами:
 - порядковый номер буквы с естественным порядковым номером относительно буквы с естественным порядковым номером ;
 - остаток от деления целого числа на натуральное число .

При этом справедливо равенство

, где  - число букв в алфавите.

Для удобства обозначим

, . Тогда имеют место равенства:



Формула () непосредственно получается из () и ее можно использовать для замены буквы с естественным порядковым номером на букву с естественным порядковым номером . Число называется знаком гаммы.

Для уяснения введенных обозначений читателю предлагается самостоятельно решить следующие задачи.

1. Докажите, что для любых целых , и любого натурального справедливо равенство: , где  - целая часть числа (наибольшее целое число, не превосходящее числа ).

2. Докажите равенство () и равенство:



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

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

Число отрезков некоторой длины , состоящих из чисел от 0 до равно , так как на каждой из позиций отрезка может быть любое из чисел (независимо от чисел, находящихся на других позициях). Для наглядности приведем значения при в зависимости от значений :
1 2 3 4 5 6 7
30 900 27000 810000 24300000

8 9 10
Как видно из приведенной таблицы, число ключей рассматриваемого шифра замены с ключом периода 10, достаточно внушительно и составляет уже сотни триллионов. Это обстоятельство делает практически невозможным вскрытие шифра методом перебора всех его ключей даже при меньших значениях периода гаммы.




Для рассматриваемого шифра характерно то, что буквы открытого текста, зашифрованные одним и тем же знаком гаммы, по сути, зашифрованы одним и тем же шифром простой замены. Например, ключевая таблица этого шифра простой замены при знаке гаммы, равном 1, имеет вид:
А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я А
Вторую строку этой ключевой таблицы называют алфавитом шифрования, соответствующим данному знаку гаммы. Поскольку в рассматриваемом шифре возможны все значения гаммы от 0 до 29, то данный шифр можно рассматривать как 30-алфавитный шифр замены. Если каждому из этих алфавитов поставить в соответствие его первую букву, то каждый знак гаммы можно заменить этой буквой. В этом случае ключ рассматриваемого шифра можно взаимнооднозначно заменить соответствующим словом в этом же алфавите. Такой многоалфавитный шифр замены был описан в 1585 году французом Блезом де Виженером в его ``Трактате о шифрах'':
ABCDEFGHIJKLMNOPQRSTUVWXYZ

BCDEFGHIJKLMNOPQRSTUVWXYZA

CDEFGHIJKLMNOPQRSTUVWXYZAB

DEFGHIJKLMNOPQRSTUVWXYZABC

EFGHIJKLMNOPQRSTUVWXYZABCD

FGHIJKLMNOPQRSTUVWXYZABCDE

GHIJKLMNOPQRSTUVWXYZABCDEF

HIJKLMNOPQRSTUVWXYZABCDEFG

IJKLMNOPQRSTUVWXYZABCDEFGH

JKLMNOPQRSTUVWXYZABCDEFGHI

KLMNOPQRSTUVWXYZABCDEFGHIJ

LMNOPQRSTUVWXYZABCDEFGHIJK

MNOPQRSTUVWXYZABCDEFGHIJKL

NOPQRSTUVWXYZABCDEFGHIJKLM

OPQRSTUVWXYZABCDEFGHIJKLMN

PQRSTUVWXYZABCDEFGHIJKLMNO

QRSTUVWXYZABCDEFGHIJKLMNOP

RSTUVWXYZABCDEFGHIJKLMNOPQ

STUVWXYZABCDEFGHIJKLMNOPQR

TUVWXYZABCDEFGHIJKLMNOPQRS

UVWXYZABCDEFGHIJKLMNOPQRST

VWXYZABCDEFGHIJKLMNOPQRSTU

WXYZABCDEFGHIJKLMNOPQRSTUV

XYZABCDEFGHIJKLMNOPQRSTUVW

YZABCDEFGHIJKLMNOPQRSTUVWX

ZABCDEFGHIJKLMNOPQRSTUVWXY

Все алфавиты шифрования относительно латинского алфавита были сведены им в таблицу, получившую впоследствии название ее автора. Выше приведена таблица Виженера для современного латинского алфавита, она состоит из списка 26 алфавитов шифрования. Способ зашифрования с помощью таблицы Виженера заключается в том, что первый из алфавитов соответствует алфавиту открытого текста, а букве ключевого слова соответствует алфавит шифрования из данного списка, начинающийся с этой буквы. Буква шифрованного текста находится в алфавите шифрования на месте, соответствующем данной букве открытого текста. Простота построения таблицы Виженера делает эту систему привлекательной для практического использования. Рассмотрим пример вскрытия многоалфавитного шифра замены с периодическим ключом, содержащийся в рассказе Жюля Верна ``Жангада''. Вот текст, который был получен с помощью такого типа шифра:
<


table cellpadding="3" >

С Г У Ч П В Э Л Л З Й Р Т Е П Н Л Н Ф Г И Н Б О Р Г Й У Г Л Ч Д К О Т Х Ж Г У У М З Д Х Р Ъ С Г С Ю Д Т П Ъ А Р В Й Г Г И Щ В Ч Э Е Ц С Т У Ж В С Е В Х А Х Я Ф Б Ь Б Е Т Ф З С Э Ф Т Х Ж З Б З Ъ Г Ф Б Щ И Х Х Р И П Ж Т З В Т Ж Й Т Г О Й Б Н Т Ф Ф Е О И Х Т Т Е Г И И О К З П Т Ф Л Е У Г С Ф И П Т Ь М О Ф О К С Х М Г Б Т Ж Ф Ы Г У Ч О Ю Н Ф Н Ш З Г Э Л Л Ш Р У Д Е Н К О Л Г Г Н С Б К С С Е У П Н Ф Ц Е Е Е Г Г С Ж Н О Е Ы И О Н Р С И Т К Ц Ь Е Д Б У Б Т Е Т Л О Т Б Ф Ц С Б Ю Й П М П З Т Ж П Т У Ф К Д Г Догадавшись, что ключом является натуральное число, персонаж ``Жангады'', судья Жаррикес, объясняет сыну обвиняемого Маноэлю, как был зашифрован документ: -``Давайте возьмем фразу, все равно какую, ну хотя бы вот эту:
У СУДЬИ ЖАРРИКЕСА ПРОНИЦАТЕЛЬНЫЙ УМ

А теперь я возьму наудачу какое-нибудь число, чтобы сделать из этой фразы криптограмму. Предположим, что число состоит из трех цифр, например, 4, 2 и 3. Я подписываю число 423 под строчкой так, чтобы под каждой буквой стояла цифра, и повторяю число, пока не дойду до конца фразы. Вот что получится:
У С У Д Ь И Ж А Р Р И К Е С А П Р О Н И Ц А Т Е Л Ь Н Ы Й У М
4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4 2 3 4
Будем заменять каждую букву нашей фразы той буквой, которая стоит после нее в алфавите
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
на месте, указанном цифрой. Например, если под буквой А стоит цифра 3, вы отсчитываете три буквы и заменяете ее буквой Г. Если буква находится в конце алфавита и к ней нельзя прибавить нужного числа букв, тогда отсчитывают недостающие буквы с начала алфавита.

Доведем до конца начатую криптограмму, построенную на числе 423, и исходная фраза заменится следующей:
<


Ч У Ц И Ю Л К В У Ф К Н Й У Г У Т С С К Щ Д Ф И П Ю Р Я Л Ц Р
Но как найти числовой ключ? Подсчет, проведенный Жаррикесом, показывает, что поиск ключа перебором всех возможных чисел, состоящих не более чем из 10 цифр, потребует более трехсот лет. Судья пытается наудачу отгадать заветное число. Наступает день казни. Обвиняемого Жоама Дакосту ведут на виселицу

Но все заканчивается благополучно. Помог счастливый случай. Другу Жоама удается узнать, что автора криптограммы звали Ортега. Поставив буквы О, Р, Т, Е, Г, А над последними шестью буквами документа и подсчитав, на сколько эти буквы по алфавиту сдвинуты относительно букв криптограммы, судья, наконец, находит ключ к документу:
исходное сообщение О Р Т Е Г А
шифрованное сообщение Т У Ф К Д Г
относительный сдвиг букв 4 3 2 5 1 3
Г.А.Гуревич в статье ``Криптограмма Жюля Верна'' (журнал ``Квант'' #9, 1985 г.) обращает внимание на то, что судья прошел практически весь путь до отгадки. Будучи уверенным, что в документе упоминается имя Жоама Дакосты, судья строит предположение: ``Если бы строчки были разделены на слова, то мы могли бы выделить слова, состоящие из семи букв, как и фамилия Дакоста, и, опробуя их одно за другим, может быть и отыскали бы число, являющееся ключом криптограммы''. Маноэль, в свою очередь, поняв основную идею судьи, предлагает опробовать возможные расположения слова ДАКОСТА в исходном тексте. Поскольку текст состоит из 252 букв, то достаточно опробовать не более 246 вариантов. В один прекрасный момент, записав над фрагментом ЙБНТФФЕ слово ДАКОСТА, мы определили бы последовательность цифр 5134325. Естественно предположить, что последняя цифра 5 - начало следующего периода:
исходное сообщение ... Д А К О С Т А ...
шифрованное сообщение ... Й Б Н Т Ф Ф Е ...
относительный сдвиг букв ... 5 1 3 4 3 2 5 ...
Вместо ключа 432513 мы нашли его циклическую перестановку 513432, что ни в коей мере не мешает расшифрованию текста. Для этого достаточно для каждой буквы шифрованного текста определить букву, относительно которой данная буква сдвинута на величину соответствующей цифры ключа:
С Г У Ч П В Э Л Л З Й Р Т Е П Н Л Н Ф Г И Н Б О Р
4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4
Н А С Т О Я Щ И Й В И Н О В Н И К К Р А Ж И А Л М




Г Й У Г Л Ч Д К О Т Х Ж Г У У М З Д Х Р Ъ С Г С Ю
3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3
А З О В И У Б И Й С Т В А С О Л Д А Т О Х Р А Н Ы

Д Т П Ъ А Р В Й Г Г И Щ В Ч Э Е Ц С Т У Ж В С Е В
2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2
В Н О Ч Ь Н А Д В А Д Ц А Т Ь В Т О Р О Е Я Н В А

Х А Х Я Ф Б Ь Б Е Т Ф З С Э Ф Т Х Ж З Б З Ъ Г Ф Б
5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5
Р Я Т Ы С Я Ч А В О С Е М Ь С О Т Д В А Д Ц А Т Ь

Щ И Х Х Р И П Ж Т З В Т Ж Й Т Г О Й Б Н Т Ф Ф Е О
1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1
Ш Е С Т О Г О Г О Д А Н Е Ж О А М Д А К О С Т А Н

И Х Т Т Е Г И И О К З П Т Ф Л Е У Г С Ф И П Т Ь М
3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3
Е С П Р А В Е Д Л И В О П Р И Г О В О Р Е Н Н Ы Й

О Ф О К С Х М Г Б Т Ж Ф Ы Г У Ч О Ю Н Ф Н Ш З Г Э
4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4
К С М Е Р Т И А Я Н Е С Ч А С Т Н Ы Й С Л У Ж А Щ

Л Л Ш Р У Д Е Н К О Л Г Г Н С Б К С С Е П У Н Ф Ц
3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 1 5 3 4 3
И Й У П Р А В Л Е Н И Я А Л М А З Н О Г О О К Р У

Е Е Е Г Г С Ж Н О Е Ы И О Н Р С И Т К Ц Ь Е Д Б У
2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2
Г А Д А Я О Д И Н В Ч Е М И П О Д П И С Ы В А Ю С

Б Т Е Т Л О Т Б Ф Ц С Б Ю Й П М П З Т Ж П Т У Ф К
5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5 1 3 4 3 2 5
Ь С В О И М Н А С Т О Я Щ И М И М Е Н Е М О Р Т Е


Д Г
1 3
Г А
Итак, первая идея состоит в использовании вероятного слова, то есть слова, которое с большой вероятностью может содержаться в данном открытом тексте. Речь идет в том числе и о словах, часто встречающихся в любых открытых текстах. К ним, например, относятся такие слова как КОТОРЫЙ, ТОГДА, ЧТО, ЕСЛИ, приставки ПРИ, ПРЕ, ПОД и т.п.

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

Для определения периода гаммы могут быть применены два способа. Первый из них известен как тест Казизки, второй способ использует так называемый индекс совпадения.

Тест Казизки был описан в 1863 году Фридрихом Казизки. Он основан на следующем наблюдении: два одинаковых отрезка открытого текста будут соответствовать двум одинаковым отрезкам шифрованного текста, если разность номеров позиций их начал кратна периоду гаммы. Следовательно, если мы обнаружим два одинаковых отрезка шифрованного текста, состоящих по крайней мере из трех букв, то с большой вероятностью им соответствуют одинаковые отрезки открытого текста (случайное совпадение маловероятно). Тест Казизки, по сути, заключается в том, что в шифрованном тексте надо найти пары одинаковых отрезков, вычислить разности номеров позиций их начал и определить общие делители найденных разностей. Как правило, один из этих общих делителей равен периоду гаммы.

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




Для иллюстрации этого подхода рассмотрим тот же самый шифрованный текст, записанный в виде последовательности столбцов, содержащих по шесть подряд идущих букв текста в каждом (подряд идущие буквы текста располагаются в столбцах сверху вниз):
С Э Т Ф Р Ч Ж Д С А И Ц С Я Т Т Ъ Х Т Т Т Х И Ф Ф О М Ы Н Э Д Г С Ф Г Ы И Д Т Ц М Т
Г Л Е Г Г Д Г Х Ю Р Щ С Е Ф Ф Х Г Х З Г Ф Т О Л И Ф Г Г Ф Л Е Г С Ц С И Т Б Л С П У
У Л П И Й К У Р Д В В Т В Б З Ж Ф Р В О Ф Т К Е П О Б У Н Л Н Н Е Е Ж О К У О Б З Ф
Ч З Н Н У О У Ъ Т Й Ч У Х Ь С З Б И Т Й Е Е З У Т К Т Ч Ш Ш К С У Е Н Н Ц Б Т Ю Т К
П Й Л Б Г Т М С П Г Э Ж А Б Э Б Щ П Ж Б О Г П Г Ь С Ж О З Р О Б П Е О Р Ь Т Б Й Ж Д
В Р Н О Л Х З Г Ъ Г Е В Х Е Ф З И Ж Й Н И И Т С М Х Ф Ю Г У Л К Н Г Е С Е Е Ф П П Г
Составим для каждой из 6 получившихся строк соответствующий ей набор частот встречаемости букв в каждой из них:
А Б В Г Д Е Ж З И Й К Л М Н О П
1 строка 1 0 0 2 3 0 1 0 3 0 0 0 2 1 1 0
2 строка 0 1 0 9 1 3 0 1 2 0 0 4 0 0 1 1
3 строка 0 3 4 0 1 3 2 2 1 1 3 2 0 3 4 2
4 строка 0 2 0 0 0 4 0 3 1 2 3 0 0 4 1 0
5 строка 1 6 0 4 1 1 4 1 0 2 0 0 1 0 4 5
6 строка 0 0 2 5 0 5 1 2 3 1 1 2 1 3 1 2

Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
1 строка 1 4 8 0 4 2 2 1 0 0 1 2 0 2 0 1
2 строка 1 4 2 1 5 3 1 0 0 1 0 0 0 0 1 0
3 строка 2 0 2 4 3 0 0 0 0 0 0 0 0 0 0 0
4 строка 0 2 6 4 0 1 1 3 2 0 1 0 1 0 1 0
5 строка 2 2 2 0 0 0 0 0 0 1 0 0 2 2 0 0
6 строка 1 2 1 1 3 3 0 0 0 0 1 0 0 0 1 0


По этой таблице частот встречаемости букв вычислим для каждой строки соответствующий ей индекс совпадения:
<


Номер строки 1 2 3 4 5 6


Индекс совпадения
0,060 0,077 0,045 0,053 0,057 0,057
Для всего шифрованного текста индекс совпадения равен 0,040, что заметно меньше, чем индекс совпадения для каждой из указанных строк. Это является хорошим подтверждением гипотезы о длине периода гаммы.

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

Next: 7.5. Условия задач олимпиад

Up: 7. Олимпиады по криптографии

Previous: Ответы к упражнению.

Contents:



Немного теории


Next: Что надо знать перед

Up: 6. Компьютер и криптография

Previous: Для чего компьютеру нужна

Contents:



Ненадежность


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

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

Таблица I. Апостериорные вероятности для криптограммы типа

Цезаря

Расшифровки
0,028 0,0377 0,1111 0,3673 1
0,038 0,0314      
0,131 0,0881      
0,029 0,0189      
0,020        
0,053 0,0063      
0,063 0,0126      
0,001        
0,004        
0,034 0,1321 0,2500    
0,025   0,0222    
0,071 0,1195      
0,080 0,0377      
0,020 0,0818 0,4389 0,6327  
0,001        
0,068 0,0126      
0,061 0,0881 0,0056    
0,105 0,2830 0,1667    
0,025        
0,009        
0,015   0,0056    
0,002        
0,020        
0,001        
0,082 0,0503      
0,014        
(десятичных единиц) 1,2425 0,9686 0,6034 0,285 0
<
Для самых простых систем эти вычисления можно эффективно выполнить. дает апостериорные вероятности для , примененного к английскому тексту, причем ключ выбирался случайно из 26 возможных ключей. Для того чтобы можно было использовать обычные таблицы частот букв, диграмм и триграмм, текст был начат в случайном месте (на страницу открытой наугад книги был случайно опущен карандаш). Сообщение, выбранное таким способом, начинается с ``creases to'' (карандаш опущен на третью букву слова increases). Если известно, что сообщение начинается не с середины, а с начала некоторого предложения, то нужно пользоваться иной таблицей, соответствующей частотам букв, диграмм и триграмм, стоящих в начале предложения.

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

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

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




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

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

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

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

В ``Математической теории связи'' показано, что естественной математической мерой этой неопределенности является условная энтропия передаваемого сигнала при условии, что принятый сигнал известен. Эта условная энтропия для удобства будет называться ненадежностью.

С криптографической точки зрения секретная система почти тождественна системе связи при наличии шума. На сообщение (передаваемый сигнал) действует некоторый статистический элемент (секретная система с ее статистически выбранным ключом). В результате получается криптограмма (аналог искаженного сигнала), подлежащая дешифрированию. Основное различие заключается в следующем: во-первых, в том, что преобразование при помощи шифра имеет обычно более сложную природу, чем возникающее за счет шума в канале; и, во-вторых, ключ в секретной системе обычно выбирается из конечного множества, в то время как шум в канале чаще является непрерывным, выбранным по существу из бесконечного множества.

Учитывая эти соображения, естественно использовать ненадеж-ность в качестве теоретической меры секретности. Следует отметить, что имеются две основные ненадежности: ненадежность ключа и ненадежность сообщения. Они будут обозначаться через и соответственно. Их величины определяются соотношениями




где , и  -- криптограмма, сообщение и ключ;

 -- вероятность ключа и криптограммы ;

 -- апостериорная вероятность ключа , если перехвачена криптограмма ;

и  -- аналогичные вероятности, но не для ключа, а для сообщения.

Суммирование в проводится по всем возможным криптограммам определенной длины (скажем, ) и по всем возможным ключам. Для суммирование проводится по всем сообщениям и криптограммам длины . Таким образом, и являются функциями от  -- числа перехваченных букв. Это будет иногда указываться в обозначении так: , . Заметим, что эти ненадежности являются ``полными'', т.е. не делятся на с тем, чтобы получить скорость ненадежности, которая рассматривалась в работе ``Математическая теория связи''.

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

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

Up: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ

Previous: 10. Совершенная секретность

Contents:



Неотслеживаемость. Электронные деньги


``И он сделает то, что всем - малым и великим, богатым и нищим, свободным и рабам - положено будет начертание на правую руку их или на чело их,

И что никому нельзя будет ни покупать, ни продавать, кроме того, кто имеет это начертание, или имя зверя, или число имени его.

Здесь мудрость. Кто имеет ум, тот сочти число зверя, ибо это число человеческое; число его шестьсот шестьдесят шесть.''

Откровение святого Иоанна Богослова, глава 13.

Лет пятнадцать назад, а может быть и больше, жители некоторых районов Москвы обнаруживали в своих почтовых ящиках необычные послания. На листочках, вырванных из ученических тетрадей, не слишком грамотные люди старательно переписывали один и тот же текст, повествующий о том, что где-то в Брюсселе (не иначе, как в штаб-квартире НАТО) появился конфьютер (сохраняем терминологию авторов) под названием ``Зверь'' и с номером 666. И этот конфьютер якобы предначертал каждому смертному определенное число, без которого не то что покупать или продавать, но даже шагу ступить нельзя будет. В заключение, разумеется, предрекался скорый конец света.

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

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

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


Для предотвращения подобной угрозы необходима система контроля за доступом к ресурсам, которая удовлетворяет двум, казалось бы, взаимно исключающим требованиям. Во-первых, всякий желающий должен иметь возможность обратиться к этой системе анонимно, а во-вторых, при этом все же доказать свое право на доступ к тому или иному ресурсу. Обычные бумажные деньги обеспечивают оба этих свойства. Если ресурсом, например, является некоторый товар, то наличие у покупателя достаточного количества купюр является доказательством его права на доступ к ресурсу. С другой стороны, хотя каждая бумажная купюра и имеет уникальный номер, отслеживать купюры по номерам практически невозможно. Кредитные карточки удовлетворяют только второму требованию.

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

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

В платежной системе используются три основные транзакции:

снятие со счета;

платеж;

депозит.

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




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

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

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

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




и посылает это значение банку. Множитель часто называют затемняющим множителем. Банк вычисляет значение и возвращает его покупателю. Покупатель легко ``снимает'' затемняющий множитель и получает подписанную банкноту

.

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

Безопасность банка в этой системе электронных платежей основывается на вере в стойкость схемы

Применение функции в этой конструкции необходимо ввиду известного свойства мультипликативности схемы RSA: если и - подписи для и соответственно, то

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

В этом примере банк выдает банкноты только достоинством в 1 фантик и все платежи должны быть кратны этой величине. Оказывается, можно реализовать и более гибкую систему. Рассмотрим следующую систему электронных платежей из работы Шаума []. Здесь уместно отметить, что все основные идеи, связанные с понятием неотслеживаемости, электронными деньгами и со схемами затемненной подписи, принадлежат этому голландскому математику.




Система из работы [] также основана на схеме электронной подписи RSA. Допуская некоторую вольность в обозначениях будем писать вместо , где , и называть эту величину корнем -ой степени из . Как и выше, - некоторая односторонняя функция, которую выбирает и публикует банк.

Устанавливается соглашение, согласно которому корню степени, равной -му нечетному простому числу, соответствует номинал в фантиков. Т.е. предъявитель пары является владельцем электронной банкноты достоинством в 1 фантик. Если в этой паре вместо корня кубического присутствует корень 7-ой степени, то банкнота имеет достоинство 4 фантика, а если 21-ой степени - то 5 фантиков. Иными словами, для банкноты достоинством фантиков необходим корень степени, равной произведению всех простых чисел, соответствующих единицам в двоичном представлении числа .

Все банкноты, выдаваемые банком, имеют одинаковое достоинство. Для простоты изложения будем, как и в [], предполагать, что оно равно 15 фантикам. Тогда подпись банка на банкноте, это - корень -ой степени, где . Для этой схемы нужен также еще дополнительный модуль RSA , который используется в работе с так называемой копилкой (см. ниже). Этот модуль выбирается и публикуется таким же образом, как и модуль .

Транзакция снятия со счета выполняется таким же образом, как описано выше. В результате покупатель получает электронную банкноту .

Предположим теперь, что покупатель желает заплатить продавцу 5 фантиков. Для этого он вычисляет

, просто возводя полученную банкноту в 55-ую степень, и создает копилку, выбирая случайное значение и вычисляя . Здесь опять - затемняющий множитель. Транзакция платежа начинается с пересылки значений ,

, а также суммы платежа (5 фантиков) продавцу. Продавец, в свою очередь, передает всю эту информацию банку. Банк легко проверяет, что пара

представляет собой подлинную банкноту достоинством 5 фантиков. Он проверяет по специальному регистру, не была ли банкнота с номером потрачена ранее. Если нет, записывает в регистр вновь полученную банкноту, увеличивает счет продавца на 5 фантиков и посылает продавцу уведомление о завершении транзакции платежа, а также ``сдачу'' (10 фантиков) покупателю, возвращаемую через копилку: .




В транзакции депозита покупатель посылает банку копилку

. Банк проверяет ее таким же образом, как и банкноту в транзакции платежа, и если копилка с номером подлинная и ранее не использовалась в транзакции депозита, то зачисляет сумму 10 фантиков на счет покупателя.

Если все платежи, осуществляемые покупателями, делаются на максимальную сумму (15 фантиков), то схема обеспечивает безусловную (или теоретико-информационную) неотслеживаемость покупателя: выдавая затемненную подпись, банк не получает никакой информации о номере подписываемой банкноты.

Необходимость депозита полученной от банка ``сдачи'' нарушает неотслеживаемость: банк запоминает все платежи, а значит, и все ``сдачи'', и при выполнении транзакции депозита может ``вычислить'' клиента, если последний выполнил платеж на уникальную или достаточно редко встречающуюся сумму. Эта проблема частично может быть решена за счет многократного использования копилки в транзакциях платежа.

Предположим, что покупатель получил в банке вторую банкноту с номером и желает заплатить тому же или другому продавцу сумму в 3 фантика. Тогда в транзакции платежа он может использовать копилку со ``сдачей'', оставшейся после первого платежа, и послать продавцу ,

, . Платеж выполняется таким же образом, как было описано выше, и в результате покупатель получит копилку .

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

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




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

Как уже отмечалось выше, без обращения к банку в каждой транзакции платежа невозможно предотвратить повторную трату одной и той же электронной монеты. Вместо этого автономные системы обеспечивают идентификацию нарушителя post factum. Конструкции автономных систем электронных платежей достаточно сложны (см., например, [], []), поэтому здесь мы описываем лишь их основную идею, да и то в самых общих чертах. Наше описание предполагает использование схемы аутентификации Шнорра, но можно использовать и любую другую схему, обладающую всеми необходимыми свойствами.

Каждый клиент банка выбирает секретный ключ , содержащий идентификатор этого клиента, и затем вычисляет открытый ключ . В транзакции снятия со счета клиент выбирает случайное значение и вычисляет . Электронная монета состоит из некоторой строки, содержащей и , и подписи банка для этой строки. Основная трудность здесь состоит в том, что банк должен подписать монету затемненной подписью, но при этом убедиться в том, что монета имеет требуемую структуру. Один из способов решения этой проблемы заинтересованный читатель может найти в работе Якоби [].

В транзакции платежа продавец сначала проверяет подпись банка, и, если она корректна, выбирает случайный запрос , как в схеме аутентификации Шнорра, и посылает покупателю. Последний вычисляет и посылает продавцу. Продавец проверяет правильность ответа, используя те значения и , которые содержатся в монете.




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

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

В большинстве автономных систем могут использоваться лишь в одном платеже, после чего необходимо выполнить депозит. Если монета может использоваться во многих платежах, без промежуточных депозитов, то такая монета называется переводимой. Если бы переводимые монеты могли находиться в обращении достаточно долго, то это обеспечило бы практическую неотслеживаемость клиентов. Но с другой стороны, стало бы значительно сложнее обнаруживать повторные траты одной и той же монеты. Еще один недостаток в том, что длина переводимой монеты возрастает с каждым ее переводом от клиента к клиенту. С интуитивной точки зрения это представляется естественным, поскольку монета должна содержать информацию, позволяющую банку идентифицировать нарушителя, потратившего монету дважды. Поэтому каждый клиент, через которого проходит монета, должен оставить на ней свои ``отпечатки пальцев''. Шаум и Педерсен [] доказали, что возрастание длины переводимой монеты и в самом деле неизбежно.

Next: 3.4. Протоколы типа ``подбрасывание

Up: 3. Криптографические протоколы

Previous: 3.2. Целостность. Протоколы аутентификации

Contents:



Новые направления


В 1983 году в книге ``Коды и математика'' М.Н.Аршинова и Л.Е.Садовского (библиотечка ``Квант'') было написано: ``Приемов тайнописи - великое множество, и, скорее всего, это та область, где уже нет нужды придумывать что-нибудь существенно новое.'' Однако это было очередное большое заблуждение относительно криптографии. Еще в 1976 году была опубликована работа молодых американских математиков У.Диффи и М.Э.Хеллмана ``Новые направления в криптографии''1), которая не только существенно изменила криптографию, но и привела к появлению и бурному развитию новых направлений в математике. Центральным понятием ``новой криптографии'' является понятие односторонней функции (подробнее об этом см. главу ).

, обладающая двумя свойствами:

а) существует полиномиальный алгоритм вычисления значений ;

б) не существует полиномиального алгоритма инвертирования функции (т.е. решения уравнения относительно , точное определение см. на стр. ).

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

Еще одним новым понятием является понятие функции с секретом. Иногда еще употребляется термин функция с ловушкой. Функцией с секретом называется функция

, зависящая от параметра и обладающая тремя свойствами:

а) существует полиномиальный алгоритм вычисления значения для любых и ;

б) не существует полиномиального алгоритма инвертирования при неизвестном ;

в) существует полиномиальный алгоритм инвертирования при известном .

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


Применение функций с секретом в криптографии позволяет:

1) организовать обмен шифрованными сообщениями с использованием только открытых каналов связи, т.е. отказаться от секретных каналов связи для предварительного обмена ключами;

2) включить в задачу вскрытия шифра трудную математическую задачу и тем самым повысить обоснованность стойкости шифра;

3) решать новые криптографические задачи, отличные от шифрования ( и др.).

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

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

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




посылает

пользователю  в качестве своей цифровой подписи. Пользователь  хранит в качестве доказательства того, что подписал сообщение .

Сообщение, подписанное цифровой подписью, можно представлять себе как пару , где  - сообщение,  - решение уравнения

,

 - функция с секретом, известная всем взаимодействующим абонентам. Из определения функции очевидны следующие полезные свойства цифровой подписи:

1) подписать сообщение , т.е. решить уравнение , может только абонент - обладатель данного секрета ; другими словами, подделать подпись невозможно;

2) проверить подлинность подписи может любой абонент, знающий открытый ключ, т.е. саму функцию ;

3) при возникновении споров отказаться от подписи невозможно в силу ее неподделываемости;

4) подписанные сообщения можно, не опасаясь ущерба, пересылать по любым каналам связи.

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

1) вначале у и нет никакой общей секретной информации, но в конце процедуры такая общая секретная информация (общий ключ) у и

появляется, т.е. вырабатывается;

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

Диффи и Хеллман предложили решать эти задачи с помощью функции

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

Сама процедура или, как принято говорить, протокол выработки общего ключа описывается следующим образом.

Абоненты и независимо друг от друга случайно выбирают по одному натуральному числу - скажем и . Эти элементы они держат в секрете. Далее каждый из них вычисляет новый элемент:




(Числа и считаются общедоступными.) Потом они обмениваются этими элементами по каналу связи. Теперь абонент , получив и зная свой секретный элемент , вычисляет новый элемент:

Аналогично поступает абонент :

Тем самым у и появился общий элемент поля, равный . Этот элемент и объявляется общим ключом и .

Из описания протокола видно, что противник знает

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

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

Объектом изучения теории криптографических протоколов являются удаленные абоненты, взаимодействующие, как правило, по открытым каналам связи. Целью взаимодействия абонентов является решение какой-то задачи. Имеется также противник, который преследует собственные цели. При этом противник в разных задачах может иметь разные возможности: например, может взаимодействовать с абонентами от имени других абонентов или вмешиваться в обмены информацией между абонентами и т.д. Противником может даже оказаться один из абонентов или несколько абонентов, вступивших в сговор.

Приведем еще несколько примеров задач, решаемых удаленными абонентами. (Читателю рекомендуем по своему вкусу самостоятельно придумать еще какие-нибудь примеры.)

1. Взаимодействуют два не доверяющих друг другу абонента. Они хотят подписать контракт. Это надо сделать так, чтобы не допустить следующую ситуацию: один из абонентов получил подпись другого, а сам не подписался.

Протокол решения этой задачи принято называть протоколом подписания контракта.

2. Взаимодействуют два не доверяющих друг другу абонента. Они хотят бросить жребий с помощью монеты. Это надо сделать так, чтобы абонент, подбрасывающий монету, не мог изменить результат подбрасывания после получения догадки от абонента, угадывающего этот результат.




Протокол решения этой задачи принято называть .

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

1) - множество целых чисел, которое содержит одинаковое количество четных и нечетных чисел;

2) любые числа , имеющие один образ , имеют одну четность;

3) по заданному образу ``трудно'' вычислить четность неизвестного аргумента .

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

1) выбирает (``подбрасывает монету''), зашифровывает , т. e. вычисляет , и посылает абоненту ;

2) получает , пытается угадать четность и посылает свою догадку абоненту ;

3) получает догадку от и сообщает , угадал ли он, посылая ему выбранное число ;

4) проверяет, не обманывает ли , вычисляя значение и сравнивая его с полученным на втором шаге значением .

3. Взаимодействуют два абонента и (типичный пример: - клиент банка, - банк). Абонент хочет доказать абоненту , что он именно , а не противник.

Протокол решения этой задачи принято называть .

4. Взаимодействуют несколько удаленных абонентов, получивших приказы из одного центра. Часть абонентов, включая центр, могут быть противниками. Необходимо выработать единую стратегию действий, выигрышную для абонентов.

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

Осмысление различных протоколов и методов их построения привело в 1985-1986 г.г. к появлению двух плодотворных математических моделей - и . Математические исследования этих новых объектов позволили доказать много утверждений, весьма полезных при разработке криптографических протоколов (подробнее об этом см. главу ).




Под интерактивной системой доказательства понимают протокол взаимодействия двух абонентов: (доказывающий) и

(проверяющий). Абонент хочет доказать , что утверждение истинно. При этом абонент самостоятельно, без помощи , не может проверить утверждение (поэтому и называется проверяющим). Абонент может быть и противником, который хочет доказать , что утверждение

истинно, хотя оно ложно. Протокол может состоять из многих раундов

обмена сообщениями между и и должен удовлетворять двум условиям:

1) полнота - если действительно истинно, то абонент

убедит абонента признать это;

2) корректность - если ложно, то абонент вряд ли убедит абонента , что истинно.

Здесь словами ``вряд ли'' мы для простоты заменили точную математическую формулировку.

Подчеркнем, что в определении системы не допускалось, что

может быть противником. А если оказался противником, который хочет ``выведать'' у какую-нибудь новую полезную для себя информацию об утверждении ? В этом случае , естественно, может не хотеть, чтобы это случилось в результате работы протокола . Протокол , решающий такую задачу, называется доказательством с нулевым разглашением и должен удовлетворять, кроме условий 1) и 2), еще и следующему условию:

3) - в результате работы протокола абонент не увеличит свои знания об утверждении

или, другими словами, не сможет извлечь никакой информации о том, почему истинно.

Next: 1.5. Заключение

Up: 1. Основные понятия криптографии

Previous: 1.3. Математические основы

Contents:



Оценка секретных систем


Имеется несколько различных критериев, которые можно было бы использовать для оценки качества предлагаемой секретной системы. Рассмотрим наиболее важные из этих критериев.

1. Количество секретности.

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

2. Объем ключа.

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

3. Сложность операции шифрования и дешифрирования.

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

4. Разрастание числа ошибок.

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

5. Увеличение объема сообщения.

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

Next: 6. Алгебра секретных систем

Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

Previous: 4. Примеры секретных систем

Contents:



Односторонние функции


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

Поскольку понятие односторонней функции - центральное в математической криптографии, ниже мы даем его формальное определение.

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

Функция называется честной, если существует полином такой, что для всех .

Определение 1. Честная функция называется односторонней,

если

1. Существует полиномиальный алгоритм, который для всякого вычисляет .

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

Вероятность здесь определяется случайным выбором строки и случайными величинами, которые использует в своей работе.

Условие 2 качественно означает следующее. Любая полиномиальная вероятностная машина Тьюринга может по данному найти из уравнения лишь с пренебрежимо малой вероятностью.

Заметим, что требование честности нельзя опустить. Поскольку длина входного слова машины равна , ей может не хватить полиномиального (от ) времени просто на выписывание строки , если слишком сильно ``сжимает'' входные значения.

Ясно, что из предположения о существовании односторонних функций следует, что PNP. Однако, не исключена следующая ситуация: PNP, но односторонних функций нет.

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


Для других криптографических схем подобный результат доказывается не столь просто. В работе Импальяццо и Луби [] доказана необходимость односторонних функций для существования целого ряда стойких криптографических схем.

Из всего сказанного следует, что предположение о существовании односторонних функций является самым слабым криптографическим предположением, которое может оказаться достаточным для доказательства существования стойких криптографических схем различных типов. На выяснение того, является ли это условие и в самом деле достаточным, направлены значительные усилия специалистов. Трудность задачи построения криптографических схем из односторонних функций можно пояснить на следующем примере. Пусть  - односторонняя функция и нам требуется построить криптосистему с секретным ключом. В такой криптосистеме имеется только один ключ - секретный, который известен и отправителю, и получателю шифрованного сообщения. Алгоритмы шифрования и дешифрования оба зависят от этого секретного ключа  и таковы, что для любого открытого текста . Ясно, что если криптограмму сообщения вычислять как , то противник, перехвативший , может вычислить лишь с пренебрежимо малой вероятностью. Но во-первых, непонятно, каким образом сможет восстановить сообщение из криптограммы законный получатель? Во-вторых, из того, что функция

односторонняя следует лишь, что противник не может вычислить все сообщение целиком. А это - весьма низкий уровень стойкости. Желательно, чтобы противник, знающий криптограмму , не мог вычислить ни одного бита открытого текста.

На настоящий момент доказано, что существование односторонних функций является необходимым и достаточным условием для существования стойких криптосистем с секретным ключом, а также стойких криптографических протоколов нескольких типов, включая протоколы электронной подписи. С другой стороны, имеется результат Импальяццо и Рудиха [], который является достаточно сильным аргументом в пользу того, что для некоторых типов криптографических схем (включая протоколы распределения ключей типа Диффи-Хеллмана) требуются более сильные предположения, чем предположение о существовании односторонних функций. К сожалению, этот результат слишком сложный, чтобы его можно было разъяснить в настоящей главе.

Next: 2.4. Псевдослучайные генераторы

Up: 2. Криптография и теория

Previous: 2.2. Криптография и гипотеза

Contents:



Олимпиады по криптографии для школьников


Next: Предисловие

Up: Введение в криптографию

Previous: Литература к главе 6

Contents:



Ответы к упражнению.


1) Шифр маршрутной перестановки

1 2 3 4 5 6 7 8 9 10 11 12 13 14
25 24 17 16 9 8 1 2 7 10 15 18 23 26

15 16 17 18 19 20 21 22 23 24 25 26 27 28
27 22 19 14 11 6 3 4 5 12 13 20 21 28

2) Шифр ``решетка''

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2 11 15 17 18 22 26 30 34 38 42 53 56 57 60

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
1 4 5 8 19 23 27 31 35 39 43 44 46 50 59

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
3 6 7 10 12 24 28 32 36 40 41 45 47 48 52

46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
9 13 14 16 20 21 25 29 33 37 49 51 54 55 58

3) ШВП

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
23 1 17 34 7 29 12 24 2 18 35 8 30 13 25

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
3 19 36 9 31 14 26 4 20 37 10 32 15 27 5

31 32 33 34 35 36 37 38
21 38 11 33 16 28 6 22

Next: 7.4. Многоалфавитные шифры замены

Up: 7.3. Шифры перестановки

Previous: 7.3. Шифры перестановки

Contents:



Подобные системы


Две секретные системы и будем называть подобными, если существует отображение , имеющее обратное , такое, что

Это означает, что шифрование с помощью даст то же, что шифрование с помощью с последующим применением отображения . Если использовать запись для обозначения того, что подобно , то, очевидно, из следует . Кроме того, из и следует, что и, наконец, . Резюмируя вышеизложенное, можно сказать, что подобие систем является соотношением эквивалентности.

Криптографический смысл подобия состоит в том, что если , то и  -- эквивалентны с точки зрения дешифрирования. Действительно, если шифровальщик противника перехватывает криптограмму из системы , он может перевести ее в криптограмму из системы простым применением к ней отображения . Обратно, криптограмма из системы переводится в криптограмму из системы с помощью . Если и применяются к одному и тому же пространству сообщений или языку, то имеется взаимооднозначное соответствие между получающимися криптограммами. Соответствующие друг другу криптограммы дают одинаковое апостериорное распределение вероятностей для всех сообщений.

Если имеется некоторый способ раскрытия системы , то любая система , подобная , может быть раскрыта после приведения ее к с помощью операции . Этот способ часто используется на практике.

В качестве тривиального примера рассмотрим , в которой буквы сообщения заменяются не буквами, а произвольными символами. Она подобна обычной простой подстановке с заменой на буквы. Вторым примером могут служить и . Последний иногда раскрывают, переводя его сначала в шифр Цезаря. Это можно сделать, обратив алфавит в криптограмме. , Бофора и вариант Бофора все подобны, если ключ является случайным. (т.е. сообщением, используемым в качестве ``ключа'') с используемыми вначале ключами

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

Next: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ

Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

Previous: 7. Чистые и смешанные

Contents:



Поиграем в ``кубики''. Протоколы голосования


``...всеобщее голосование бессмысленно.

...Вы, вероятно, согласитесь со мной, что гениальные люди встречаются редко, не правда ли? Но будем щедры и допустим, что во Франции их сейчас имеется человек пять. Прибавим, с такой же щедростью, двести высокоталантливых людей, тысячу других, тоже талантливых, каждый в своей области, и десять тысяч человек так или иначе выдающихся. Вот вам генеральный штаб в одиннадцать тысяч двести пять умов. За ним идет армия посредственности, за которой следует вся масса дурачья. А так как посредственность и дураки всегда составляют огромное большинство, то немыслимо представить, чтобы они могли избрать разумное правительство."

Г. де Мопассан. ``Обед и несколько мыслей''.

В этом разделе мы займемся бессмысленными вещами, а именно, обсудим, как помочь ``массе дурачья'' избрать ``неразумное правительство'', т.е. рассмотрим протоколы голосования.

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

Как отмечалось во введении, примитивные криптографические протоколы используются как своеобразные ``строительные блоки'' или ``кубики'', из которых складывается прикладной протокол. В данном разделе мы рассмотрим не столько конструкцию каждого отдельного ``кубика'', сколько процесс сборки.

Пусть в голосовании участвуют избирателей , которые являются абонентами компьютерной сети и подают свои голоса в электронной форме. Предположим для простоты, что голосование имеет два исхода: ``за'' и ``против'', которые будут представляться как 1 и соответственно. Из всех возможных требований к протоколу голосования выделим пока два основных:


1) голосование должно быть тайным;

2) должна быть обеспечена правильность подсчета голосов.

Как уже отмечалось в предыдущем разделе, протоколы голосования можно рассматривать как частный случай

В начальный момент у каждого участника есть секретное значение - его голос, - и требуется вычислить функцию

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

Остается второй путь - создание центра подсчета голосов (в дальнейшем для краткости будем называть его просто центр). Сначала предположим, что центр честный и пользуется безусловным доверием всех избирателей. В такой ситуации напрашивается следующее решение. Центр выбирает секретный и открытый  - ключи некоторой криптосистемы с открытым ключом - и публикует . Каждый избиратель посылает центру сообщение, содержащее идентификатор этого избирателя и его голос , зашифрованный на ключе . Центр проверяет соответствие поданных бюллетеней спискам избирателей, расшифровывает бюллетени и отбрасывает недействительные (в которых голоса отличны от и 1), подсчитывает и публикует итог.

Уже в этой простой схеме есть ``подводный камень''. Если каждый избиратель просто шифрует свой бит на ключе , то возможных криптограмм всего две и ни о какой анонимности голосов речи быть не может. Можно шифровать строку, которая состоит из бита , дополненного, например, справа случайной строкой. Это накладывает дополнительные требования на криптосистему: старший бит открытого текста должен быть трудным, т.е. задача его вычисления по криптограмме должна быть эквивалентна (в смысле полиномиальной сводимости) задаче вычисления всего открытого текста. Такие криптосистемы существуют, но лучше использовать криптосистему вероятностного шифрования (см. []), в ней криптограмма сообщения на ключе вычисляется с помощью рандомизированного алгоритма: , где - случайная строка. Это означает, что у каждого сообщения существует, вообще говоря, экспоненциально много криптограмм, вычисленных на одном и том же ключе. Но дешифрование при этом всегда однозначно! Криптосистемы вероятностного шифрования были введены в работе Гольдвассер и Микали [], где при некоторых предположениях доказано существование криптосистем такого типа, обладающих так называемой семантической стойкостью. Это - своего рода аналог шенноновской абсолютной стойкости, но относительно противника, работающего за полиномиальное время.




Мы рассмотрим в качестве примера один из вариантов криптосистемы Эль-Гамаля [], основанной на задаче дискретного логарифмирования. В обозначениях из раздела  пусть - подгруппа , порожденная . Для сообщения выбирается и вычисляется криптограмма , где ,

. Получатель, знающий секретный ключ , вычисляет

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

В такой схеме голосование, по существу, не может быть тайным, поскольку центр знает, как голосовал каждый избиратель. Но с правильностью подсчета голосов ситуация иная. Предположим, что для проведения голосования создано табло - хранилище информации, в котором для каждого избирателя выделена отдельная строка. Эта строка содержит, например, полные паспортные данные избирателя, и в эту строку он помещает свой бюллетень. Предполагается, что табло доступно на чтение всем участникам голосования, а также сторонним наблюдателям. По истечении срока подачи голосов табло ``закрывается'', т.е. фиксируется его состояние. После этого выделяется некоторое время, в течение которого каждый избиратель проверяет содержимое своей строки на табло. Все претензии разбираются, при необходимости вносятся соответствующие изменения и, когда все избиратели удовлетворены, содержимое табло фиксируется окончательно.

После этого центр вычисляет

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

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

. Проблема в том, что проверяющий не знает значение и не может самостоятельно выяснить, верно ли, что . Но нетрудно проверить, что должно выполняться сравнение . Поэтому проверяющий может потребовать от центра доказательство следующего факта: дискретный логарифм по основанию равен дискретному логарифму по основанию . Мы приводим предназначенный для этой цели протокол Шаума и Педерсена [], цитируя его по работе [].

Next: 3.7. За пределами стандартных

Up: 3. Криптографические протоколы

Previous: 3.5. Еще раз о

Contents:



Поучимся на чужих ошибках


Next: Удобно, красиво, но ...

Up: 6. Компьютер и криптография

Previous: Так где же взять

Contents:



и информатики Академии ФСБ Российской


C 1991 г. Институт криптографии, связи и информатики Академии ФСБ Российской Федерации проводит ежегодные олимпиады по криптографии и математике для школьников г. Москвы и Подмосковья. Год от года растет популярность этих олимпиад, о чем свидетельствует, например, то, что в последней из них приняло участие более пятисот школьников 9-11 классов. Олимпиады по криптографии и математике вызывают интерес у школьников необычностью своего жанра. Кроме того, призерам предоставляются льготы при поступлении в Институт.
Школьники часто спрашивают, с какой литературой по криптографии им следует познакомиться, чтобы успешно выступить на олимпиаде. Никаких специальных знаний для решения задач не требуется - в этом вы убедитесь, ознакомившись с задачами, которые приводятся в данной главе. Вместе с тем, мы не можем отрицать, что предварительное знакомство с криптографией полезно хотя бы чисто психологически, поскольку ``внешний вид'' задач может показаться необычным. Многие задачи нашей олимпиады - криптографические. Часть задач имеет криптографическую окраску, но их суть - математическая. Отдельные задачи - чисто математические.
При подведении итогов каждой олимпиады мы знакомим участников с общедоступными книгами по криптографии, которых в последние годы появилось достаточно много. Однако эти книги либо слишком сложны для школьников, либо поверхностны или недостаточно полны, либо малодоступны. Поэтому авторы настоящей главы поставили перед собой две основные цели: во-первых, предложить элементарное введение в криптографию, используя при этом чудесные детективные сюжеты известных произведений Ж. Верна, А. Конан Дойла, Э. По, В. Каверина, связанные с зашифрованными сообщениями; во-вторых, привести условия задач всех наших олимпиад с ответами и решениями.
Next: 7.1. Введение
Up: 7. Олимпиады по криптографии
Previous: 7. Олимпиады по криптографии
Contents:


Предмет криптографии


Что же является предметом криптографии?

Для ответа на этот вопрос вернемся к задаче ТП, чтобы уточнить ситуацию и используемые понятия.

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

Для наиболее типичных, часто встречающихся ситуаций такого типа введены даже специальные понятия:

- государственная тайна;

- военная тайна;

- коммерческая тайна;

- юридическая тайна;

- врачебная тайна и т.д.

Далее мы будем говорить о защищаемой информации, имея в виду следующие признаки такой информации:

- имеется какой-то определенный круг законных пользователей, которые имеют право владеть этой информацией;

- имеются незаконные пользователи, которые стремятся овладеть этой информацией с тем, чтобы обратить ее себе во благо, а законным пользователям во вред.

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

О них мы поговорим ниже.

Теперь мы можем изобразить ситуацию, в которой возникает задача ТП, следующей схемой (см. рис. 1).

Рис. 1.

Здесь A и B - удаленные законные пользователи защищаемой информации; они хотят обмениваться информацией по общедоступному каналу связи. П - незаконный пользователь (противник), который может перехватывать передаваемые по каналу связи сообщения и пытаться извлечь из них интересующую его информацию. Эту формальную схему можно считать моделью типичной ситуации, в которой применяются криптографические методы защиты информации.

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


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

Вскрытие (взламывание) шифра - процесс получения защищаемой информации из шифрованного сообщения без знания примененного шифра.

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



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



Следовательно, на пути от одного законного пользователя к другому информация должна защищаться различными способами, противостоящими различным угрозам. Возникает ситуация цепи из разнотипных звеньев, которая защищает информацию. Естественно, противник будет стремиться найти самое слабое звено, чтобы с наименьшими затратами добраться до информации. А значит, и законные пользователи должны учитывать это обстоятельство в своей стратегии защиты: бессмысленно делать какое-то звено очень прочным, если есть заведомо более слабые звенья (``принцип равнопрочности защиты'').


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




1)  является ли она для противника более ценной, чем стоимость атаки;

2) является ли она для вас более ценной, чем стоимость защиты.

Именно перечисленные соображения и являются решающими при выборе подходящих средств защиты: физических, стеганографических, криптографических и др.

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

Долгое время занятие криптографией было уделом чудаков-одиночек. Среди них были одаренные ученые, дипломаты, священнослужители. Известны случаи, когда криптография считалась даже черной магией. Этот период развития криптографии как искусства длился с незапамятных времен до начала ХХ века, когда появились первые шифровальные машины. Понимание математического характера решаемых криптографией задач пришло только в середине ХХ века - после работ выдающегося американского ученого К.Шеннона.

История криптографии связана с большим количеством дипломатических и военных тайн и поэтому окутана туманом легенд. Наиболее полная книга по истории криптографии содержит более тысячи страниц. Она опубликована в 1967 году и на русский язык не переведена1). На русском языке недавно вышел в свет фундаментальный труд по истории криптографии в России2).

Свой след в истории криптографии оставили многие хорошо известные исторические личности. Приведем несколько наиболее ярких примеров. Первые сведения об использовании шифров в военном деле связаны с именем спартанского полководца Лисандра (). Цезарь использовал в переписке шифр, который вошел в историю как . В древней Греции был изобретен вид шифра, который в дальнейшем стал называться ``квадрат Полития''. Одну из первых книг по криптографии написал аббат И.Трителий (1462-1516), живший в Германии. В 1566 году известный математик Д.Кардано опубликовал работу с описанием изобретенной им системы шифрования (``решетка Кардано''). Франция ХVI века оставила в истории криптографии шифры короля Генриха IV и Ришелье. В упомянутой книге Т.А.Соболевой подробно описано много российских шифров, в том числе и 1700 года, автором которой был Петр Великий. (Некоторые примеры из книги приведены на форзаце.)




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

Рассмотрим более подробно два примера.

Шифр ``Сцитала''. Этот шифр известен со времен войны Спарты против Афин в V веке до н.э. Для его реализации использовалась сцитала - жезл, имеющий форму цилиндра. На сциталу виток к витку наматывалась узкая папирусная лента (без просветов и нахлестов), а затем на этой ленте вдоль оси сциталы записывался открытый текст. Лента разматывалась и получалось (для непосвященных), что поперек ленты в беспорядке написаны какие-то буквы. Затем лента отправлялась адресату. Адресат брал такую же сциталу, таким же образом наматывал на нее полученную ленту и читал сообщение вдоль оси сциталы.

Отметим, что в этом шифре преобразование открытого текста в шифрованный заключается в определенной перестановке букв открытого текста. Поэтому класс шифров, к которым относится и шифр ``Сцитала'', называется .

Шифр Цезаря.

Этот шифр реализует следующее преобразование открытого текста: каждая буква открытого текста заменяется третьей после нее буквой в алфавите, который считается написанным по кругу, т.е. после буквы ``я'' следует буква ``а''. Отметим, что Цезарь заменял букву третьей после нее буквой, но можно заменять и какой-нибудь другой. Главное, чтобы тот, кому посылается шифрованное сообщение, знал эту величину сдвига. Класс шифров, к которым относится и шифр Цезаря, называется .

Из предыдущего изложения понятно, что придумывание хорошего шифра - дело трудоемкое. Поэтому желательно увеличить ``время жизни'' хорошего шифра и использовать его для шифрования как можно большего количества сообщений. Но при этом возникает опасность, что уже разгадал (вскрыл) шифр и читает защищаемую информацию. Если же в шифре есть сменный ключ, то, заменив ключ, можно сделать так, что разработанные противником методы уже не дают эффекта.




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

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

Вернемся к формальному описанию основного объекта криптографии (рис. 1, стр. ). Теперь в него необходимо внести существенное изменение - добавить недоступный для противника секретный канал связи для обмена ключами (см. рис. 2). Создать такой канал связи вполне реально, поскольку нагрузка на него, вообще говоря, небольшая.



Рис. 2.

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




Способность шифра противостоять всевозможным атакам на него называют стойкостью шифра.

Под атакой на шифр понимают попытку вскрытия этого шифра.

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

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

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

Из более специфических приведем еще три примера возможностей противника:

- противник может перехватывать все шифрованные сообщения, но не имеет соответствующих им открытых текстов;

- противник может перехватывать все шифрованные сообщения и добывать соответствующие им открытые тексты;

- противник имеет доступ к шифру (но не к ключам!) и поэтому может зашифровывать и дешифровывать любую информацию.

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




Английский математик Чарльз Беббидж (ХIХ в.):
`` Всякий человек, даже если он не знаком с техникой вскрытия шифров, твердо считает, что сможет изобрести абсолютно стойкий шифр, и чем более умен и образован этот человек, тем более твердо это убеждение. Я сам разделял эту уверенность в течение многих лет.''

``Отец кибернетики'' Норберт Винер:
``Любой шифр может быть вскрыт, если только в этом есть настоятельная необходимость и информация, которую предполагается получить, стоит затраченных средств, усилий и времени...''

Автор шифра

Ф. Зиммерманн (``Компьютерра'', # 48 от 1.12.1997, стр. 45-46):
``Каждый, кто думает, что изобрел непробиваемую схему шифрования, - или невероятно редкий гений, или просто наивен и неопытен...''
``Каждый программист воображает себя криптографом, что ведет к распространению исключительно плохого криптообеспечения...''

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

Криптология - наука, состоящая из двух ветвей: криптографии и криптоанализа.

Криптография - наука о способах преобразования (шифрования) информации с целью ее защиты от незаконных пользователей.

Криптоанализ - наука (и практика ее применения) о методах и способах вскрытия шифров.

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

Next: 1.3. Математические основы

Up: 1. Основные понятия криптографии

Previous: 1.1. Введение

Contents:



Работы по теории информации



Отрывок из статьи К. Шеннона ``Теория связи в секретных системах'' приводится по изданию: К. Шеннон `` Работы по теории информации и кибернетике'', М., ИЛ, 1963, с. 333-369 (перевод В. Ф. Писаренко).
Next: 1. Введение и краткое
Up: Введение в криптографию
Previous: Литература к главе 7
Contents:


Примеры секретных систем


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

1. Шифр простой подстановки.

В производится замена каждой буквы сообщения на некоторый определенный символ (обычно также на букву).

Таким образом, сообщение

где  -- последовательные буквы, переходит в

причем функция имеет обратную функцию. Ключ является просто перестановкой алфавита (если буквы заменяются на буквы), например,

Первая буква -- заменяет букву , заменяет и т.д.

2. Транспозиция с фиксированным периодом .

сообщение делится на группы символов длины и к каждой группе применяется одна и та же перестановка. Эта перестановка является ключом; она может быть задана некоторой перестановкой первых целых чисел.

Таким образом, для в качестве перестановки можно взять 23154. Это будет означать, что

переходит в

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

.

3. Шифр Виженера и его варианты.

ключ задается набором из букв. Такие наборы подписываются с повторением под сообщением и полученные две последовательности складываются по модулю 26 (каждая буква рассматриваемого алфавита нумеруется от до ).

Таким образом,

где  -- буква ключа, полученная сокращением числа по модулю . Например, с помощью ключа получаем

Сообщение
Повторяемый ключ
Криптограмма

Шифр Виженера с периодом 1 называется . Он представляет собой простую подстановку, в которой каждая буква сообщения сдвигается вперед на фиксированное число мест по алфавиту. Это число и является ключом; оно может быть любым от 0 до 25. Так называемый шифр Бофора (Beaufort) и видоизмененный шифр Бофора подобны шифру Виженера. В них сообщения зашифровываются с помощью равенств

соответственно. Шифр Бофора с периодом 1 называется обратным шифром Цезаря.


Повторное применение двух или более шифров Виженера будет называться составным шифром Виженера. Он имеет уравнение

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

и выбираются случайно и независимо среди чисел 0, 1, ..., 25. Если ключом служит текст, имеющий смысл, то имеем шифр ``бегущего ключа''.
4. Диграммная, триграммная и -граммная подстановки.
Вместо подстановки одной буквы можно использовать подстановку диграмм, триграмм и т.д. Для диграммной подстановки в общем виде требуется ключ, состоящий из перестановок диграмм. Он может быть представлен с помощью таблицы, в которой ряд соответствует первой букве диграммы, а столбец -- второй букве, причем клетки таблицы заполнены заменяющими символами (обычно также диграммами).
5. Шифр Виженера с перемешанным один раз алфавитом.
Такой шифр представляет собой простую подстановку с последующим применением шифра Виженера



``Обратным'' к такому шифру является шифр Виженера с последующей простой подстановкой



6. Матричная система
Имеется один метод подстановки -грамм, который заключается в применении к последовательным -граммам некоторой матрицы, имеющей обратную. Предполагается, что буквы занумерованы от 0 до 25 и рассматриваются как элементы некоторого алгебраического кольца. Если к -грамме сообщения применить матрицу , то получится -грамма криптограммы

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




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

заменяется на

и т.д.
9. Шифр с автоключом.
Шифр типа Виженера, в котором или само сообщение или результирующая криптограмма используются в качестве ``ключа'', называется шифром с автоключом. Шифрование начинается с помощью ``первичного ключа'' (который является настоящим ключом в нашем смысле) и продолжается с помощью сообщения или криптограммы, смещенной на длину первичного ключа, как в указанном ниже примере, где первичным ключом является набор букв . В качестве ``ключа'' используется сообщение:

Сообщение
Ключ
Криптограмма

Если в качестве ``ключа'' использовать криптограмму, то получится1)

Сообщение
Ключ
Криптограмма

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

Например, букве соответствует ``число'' 41. После того как полученный ряд чисел подвергнут некоторой перестановке, его можно снова разбить на пары чисел и перейти к буквам.
11. Коды.
В кодах слова (или иногда слоги) заменяются группами букв. Иногда затем применяется шифр того или иного вида.
Next: 5. Оценка секретных систем
Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ
Previous: 3. Способы изображения систем
Contents:


Протоколы типа ``подбрасывание монеты по телефону''


``- Хорошо, дайте же сюда деньги.

- На что-ж деньги? У меня вот они в руке! Как только напишете расписку, в ту же минуту их возьмете.

- Да позвольте, как же мне писать расписку? Прежде нужно видеть деньги.

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

Н. В. Гоголь. ``Мертвые души'', глава 5.

В данном разделе мы кратко обсудим те типы криптографических протоколов, в которых два участника должны обменяться некоторой информацией. Но участники не доверяют друг другу и каждый из них может оказаться обманщиком. Поэтому, если один из участников по неосторожности ``выпустит информацию из рук'' преждевременно, то в обмен он может получить совсем не то, проблемы здесь те же, что и в ``протоколе'' обмена расписки на ассигнации у Чичикова и Собакевича.

Из всех криптографических протоколов данного типа, пожалуй, наиболее наглядным, и к тому же достаточно простым, является протокол подбрасывания монеты. Предположим, что двум участникам, Алисе и Бобу, необходимо бросить жребий. В случае, когда они оба физически находятся в одном и том же месте, задачу можно решить с помощью обычной процедуры подбрасывания монеты. Если кто-либо из участников не доверяет монете, можно использовать другие источники случайности. Правда, создание надежных источников случайности - весьма непростая задача, но она уже относится к математической статистике, а не к криптографии.

Если же Алиса и Боб удалены друг от друга и могут общаться лишь по каналу связи, то задача о жребии, на первый взгляд, кажется неразрешимой. В самом деле, если, следуя обычной процедуре подбрасывания монеты, первый ход делает Алиса, которая выбирает один из возможных вариантов - ``орел'' или ``решка'', то Боб всегда может объявить тот исход, который ему выгоден.

Тем не менее, эта задача была решена Блюмом []. Любопытно, что даже в заголовке своей работы Блюм охарактеризовал предложенный им метод как метод ``решения нерешаемых задач''.


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

В отсутствие надежного агента срабатывает идея, которую проще всего понять на следующей ``физической'' реализации. Боб выбирает случайный бит , записывает его на листе бумаги, запирает этот лист в ящике, оставляя ключ от замка у себя, и посылает ящик Алисе. Предполагается, что, не имея ключа, Алиса не может добраться до содержимого ящика. Получив ящик, Алиса выбирает случайный бит и посылает его Бобу. В ответ Боб посылает Алисе ключ от ящика. Исходом подбрасывания монеты будет опять-таки бит .

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

Next: 3.5. Еще раз о

Up: 3. Криптографические протоколы

Previous: 3.3. Неотслеживаемость. Электронные деньги

Contents:



Псевдослучайные генераторы


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

генерируют из него последовательность длины , где - некоторый полином. Такая криптосистема (обозначим ее ) позволяет шифровать сообщение (или совокупность сообщений) длиной до битов по формуле , где - поразрядное сложение битовых строк по модулю 2. Дешифрование выполняется по формуле . Из результатов Шеннона вытекает, что такая криптосистема не является абсолютно стойкой, т.е. стойкой против любого противника (в чем, впрочем, нетрудно убедиться и непосредственно). Но что будет, если требуется защищаться только от полиномиально ограниченного противника, который может атаковать криптосистему лишь с помощью полиномиальных вероятностных алгоритмов? Каким условиям должны удовлетворять последовательность и алгоритм , чтобы криптосистема была стойкой? Поиски ответов на эти вопросы привели к появлению понятия псевдослучайного генератора, которое было введено Блюмом и Микали [].

Пусть - функция, вычислимая за полиномиальное (от ) время. Такая функция называется генератором. Интуитивно, генератор является псевдослучайным, если порождаемые им последовательности неотличимы никаким полиномиальным вероятностным алгоритмом от случайных последовательностей той же длины . Формально этот объект определяется следующим образом.

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

Вероятность здесь определяется случайным выбором строки

и случайными величинами, которые

использует в своей работе. Пусть

Эта вероятность определяется случайным выбором строки и случайными величинами, которые использует в своей работе. Подчеркнем, что функция

вычисляется детерминированным алгоритмом.




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

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

Нетрудно убедиться, что для существования псевдослучайных генераторов необходимо существование односторонних функций. В самом деле, сама функция должна быть односторонней. Доказательство этого простого факта мы оставляем читателю в качестве упражнения. Вопрос о том, является ли существование односторонних функций одновременно и достаточным условием, долгое время оставался открытым. В 1982 г. Яо [] построил псевдослучайный генератор, исходя из предположения о существовании односторонних перестановок, т.е. сохраняющих длину взаимнооднозначных односторонних функций. За этим последовала серия работ, в которых достаточное условие все более и более ослаблялось, пока наконец в 1989-1990 гг. Импальяццо, Левин и Луби [] и Хостад [] не получили следующий окончательный результат.



Теорема 1.   Псевдослучайные генераторы существуют тогда и только тогда, когда существуют односторонние функции.

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

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

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






Определение 3. Криптосистема называется стойкой, если для любой полиномиальной вероятностной машины Тьюринга , для любого полинома и всех достаточно больших

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

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

как подпрограмму, подавая ей на вход строку . Получив от пару , проверяет, действительно ли и если да, то выдает 1, в противном случае - 0, и останавливается. Легко видеть, что работает за полиномиальное (от ) время. Убедимся, что алгоритм

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

Разумеется, стойкость криптосистемы с секретным ключом можно определять различным образом. Например, можно рассматривать стойкость против атаки с выбором открытого текста: противник может предварительно выбрать полиномиальное количество открытых текстов и получить их криптограммы, после чего он получает ту криптограмму, по которой ему требуется вычислить хотя бы один бит соответствующего открытого текста. Нетрудно убедиться, что криптосистема с псевдослучайным генератором в качестве является стойкой и против атаки с выбором открытого текста.

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

Next: 2.5. Доказательства с нулевым

Up: 2. Криптография и теория

Previous: 2.3. Односторонние функции

Contents:



Разделение секрета для произвольных структур доступа


Начнем с формальной математической модели. Имеется множество

и (совместное) распределение вероятностей на их декартовом произведении

. Соответствующие случайные величины обозначаются через . Имеется также некоторое множество подмножеств множества , называемое структурой доступа.

Определение 1.  

Пара называется совершенной вероятностной СРС, реализующей структуру доступа , если

(1)

(2)

Это определение можно истолковать следующим образом. Имеется множество всех возможных секретов, из которого секрет выбирается с вероятностью , и имеется СРС, которая ``распределяет'' секрет между участниками, посылая ``проекции'' секрета с вероятностью . Отметим, что -й участник получает свою ``проекцию'' и не имеет информации о значениях других ``проекций'', однако знает все множества , а также оба распределения вероятностей и

Эти два распределения могут быть эквивалентно заменены на одно:

, что и было сделано выше. Цель СРС, как указывалось во введении, состоит в том, чтобы:

а) участники из разрешенного множества (т.е. ) вместе могли бы однозначно восстановить значение секрета - это отражено в свойстве ;

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

Замечание о терминологии. В англоязычной литературе для обозначения ``порции'' информации, посылаемой участнику СРС, были введены термины ``share'' (А. Шамир) и ``shadow'' (Г. Блейкли). Первый термин оказался наиболее популярным и автор долго боролся с соблазном привлечь массового читателя, постоянно используя в качестве его перевода слово ``акция''. Неадекватная (во всех смыслах) замена ``акции'' на ``проекцию'' может быть несколько оправдана следующим примером.

Пример 1.  

Множество всех возможных секретов состоит из , и , ``представленных'' соответственно: шаром; кубом, ребра которого параллельны осям координат; цилиндром, образующие которого параллельны оси . При этом диаметры шара и основания цилиндра, и длины ребра куба и образующей цилиндра, равны. Первый участник получает в качестве своей ``доли'' секрета его проекцию на плоскость , а второй - на плоскость . Ясно, что вместе они однозначно восстановят секрет, а порознь - не могут. Однако, эта СРС не является совершенной, так как любой из участников получает информацию о секрете, оставляя только два значения секрета как возможные при данной проекции (например, если проекция - квадрат, то шар невозможен).


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

Пример 2.  

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

, которое очевидно равно , если , и равно - в остальных случаях. Теперь легко проверяется и свойство
, означающее в данном случае независимость случайной величины от случайных величин при любом собственном подмножестве .

Данное выше определение СРС, оперирующее словами ``распределение вероятностей'', ниже переведено, почти без потери общности, на комбинаторный язык, который представляется автору более простым для понимания. Произвольная -матрица , строки которой имеют вид

, где , называется матрицей комбинаторной СРС, а ее строки - ``правилами'' распределения секрета. Для заданного значения секрета дилер СРС случайно и равновероятно выбирает строку из тех строк матрицы , для которых значение нулевой координаты равно .

Определение 2.  



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





Сопоставим совершенной вероятностной СРС, задаваемой парой , матрицу состоящую из строк , таких что 0$" width="66" height="31" >. Заметим, что если в положить все ненулевые значения одинаковыми, а условия и

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

Пример 2. (продолжение)  

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

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

Удивительно, но простой схемы примера 2 оказывается достаточно, чтобы из нее, как из кирпичиков, построить совершенную СРС для произвольной структуры доступа. А именно, для всех разрешенных множеств, т.е. для , независимо реализуем описанную только что пороговую -СРС, послав тем самым -му участнику столько ``проекций''  , скольким разрешенным множествам он принадлежит. Это словесное описание несложно перевести на комбинаторный язык свойств матрицы и убедиться, что эта СРС совершенна. Как это часто бывает, ``совершенная'' не значит ``экономная'', и у данной СРС размер ``проекции'' оказывается, как правило, во много раз больше, чем размер секрета. Эту схему можно сделать более экономной, так как достаточно реализовать пороговые -СРС только для минимальных разрешенных множеств , т.е. для , где - совокупность минимальных (относительно включения) множеств из . Тем не менее, для пороговой -СРС размер ``проекции'' (измеренный, например, в битах) будет в раз больше размера секрета (это наихудший случай для рассматриваемой конструкции). С другой стороны, как мы убедимся чуть позже, любая пороговая структура доступа может быть реализована идеально, т.е. при совпадающих размерах ``проекции'' и секрета. Поэтому естественно возникает вопрос о том, каково максимально возможное превышение размера ``проекции'' над размером секрета для наихудшей структуры доступа при наилучшей реализации. Формально, , где берется по всем структурам доступа на участниках, а , где берется по всем СРС, реализующим данную структуру доступа , а - по . Приведенная конструкция показывает, что

. С другой стороны, как было доказано лишь недавно [], . Такая огромная ``щель'' между верхней и нижней оценкой дает, по нашему мнению, достаточный простор для исследований (автор предполагает, что растет экспоненциально от ).

Next: 5.3. Линейное разделение секрета

Up: 5. Математика разделения секрета

Previous: 5.1. Введение

Contents:



Руки прочь от моих файлов!


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

Вы, конечно, можете объяснить брату, что он не прав, подкрепив свои слова парой подзатыльников и другими весомыми аргументами. Это называется административные меры защиты.

Вы можете поставить пароль на включение компьютера. Как думаете, сколько времени продержится такая защита? Правильно. Дня три-четыре. Потом ваш брат замучает вас просьбами разрешить ему поиграть в WarCraft, и вам придется поделиться с ним паролем.

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

Как же организовать разграничение доступа на своем компьютере? Если бы у вас была установлена не Windows 95, а Windows NT или UNIX, вы легко могли бы ограничить доступ к своим файлам. В UNIX вам пришлось бы набрать команду chmod с нужными параметрами, а в Windows NT хватило бы нескольких движений мышью. Но у вас стоит Windows 95, а Windows 95 разграничение доступа не поддерживает. Так что же вам делать? Неужели нельзя защитить свои файлы от других пользователей?

Можно. Тут нам на помощь приходит криптография. Если вы не хотите, чтобы другие читали ваш файл, этот файл нужно зашифровать. Пусть его теперь читают все кому не лень. Все равно, если кто-то, кроме вас, прочитает этот файл, он увидит не содержимое файла, а шифртекст. Конечно, используемый шифр должен быть достаточно стойким.

Next: Как вводить ключ?

Up: 6.3. Как зашифровать файл?

Previous: 6.3. Как зашифровать файл?

Contents:



Секретные системы


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

На передающем конце имеются два источника информации -- источник сообщений и источник ключей. Источник ключей

Рис. 1. Схема общей секретной системы.

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

Очевидно, шифровальщик на передающем конце выполняет некоторую функциональную операцию. Если  -- сообщение,  -- ключ и  -- зашифрованное сообщение (криптограмма), то имеем

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

Отображение , примененное к сообщению , дает криптограмму . Индекс соответствует конкретному используемому ключу.

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

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


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

Во всяком случае, это обратное отображение должно существовать и быть единственным для каждого , которое может быть получено из с помощью ключа . Приходим, таким образом, к следующему определению: секретная система есть семейство однозначно обратимых отображений множества возможных сообщений во множество криптограмм, при этом отображение имеет вероятность . Обратно, любое множество объектов такого типа будет называться ``секретной системой''. Множество возможных сообщений для удобства будет называться ``пространством сообщений'', а множество возможных криптограмм -- ``пространством криптограмм''.

Две секретные системы совпадают, если они образованы одним и тем же множеством отображений и одинаковыми пространствами сообщений и криптограмм, причем вероятности ключей в этих системах также совпадают.

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

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

1. Наложенное ограничение слабее, чем кажется с первого взгляда, из-за широты нашего определения секретной системы. Предположим, что шифровальщик перехватывает сообщение и не знает, использовалась ли здесь , или , или шифр типа . Он может считать, что сообщение зашифровано с помощью системы, в которой часть ключа является указанием того, какой из трех типов имеющихся ключей был использован, а следующая часть -- конкретный ключ этого типа. Указанным трем различным возможностям шифровальщик приписывает вероятности, учитывая при этом все имеющиеся у него сведения об априорных вероятностях использования шифровальщиком противника соответствующих типов шифров.




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

Эта ситуация аналогична ситуации, возникающей в теории игр, где предполагается, что партнер ``обнаруживает'' используемую стратегию игры. В обоих случаях это предположение служит для более четкого описания сведений, которыми располагает противная сторона.

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

Если сообщения создаются марковским процессом, то вероятности разных сообщений определяются структурой этого марковского процесса. Однако подойдем к вопросу с более общей точки зрения и будем трактовать сообщения просто как абстрактное множество объектов, которым приписаны вероятности, причем эти объекты не обязательно состоят из последовательностей букв и не обязательно создаются марковским процессом.

Следует подчеркнуть, что далее во всех случаях секретная система означает не одно, а целое множество отображений. После того как выбран ключ, используется только одно из этих отображений и отсюда можно было бы прийти к определению секретной системы как единственного преобразования языка. Однако противник не знает, какой ключ выбран, и остальные возможные ключи столь же важны для него, как и истинный. Именно существование этих других возможных ключей и придает системе секретность. Так как мы интересуемся в первую очередь секретностью, то вынуждены предпочесть данное нами определение понятия секретной системы. Тип ситуации, когда остальные возможности так же важны, как и осуществившаяся, часто встречается в стратегических играх. Ход шахматной игры в большой степени контролируется угрозами, которые не осуществляются. Нечто подобное представляет из себя ``фактическое существование'' нереализованных возможностей в теории игр.




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

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

Можно создать искусственные криптографические ситуации типа ``урны и игральной кости'', в которых априорные вероятности имеют вполне определенный смысл и идеализация, использованная здесь, является наверняка подходящей. Но в других случаях, которые можно себе представить, например, при перехвате сообщений, передаваемых между собой марсианами, высадившимися на Землю, априорные вероятности были бы настолько неопределенными, что не имели бы никакого значения.

Наиболее часто встречающиеся на практике криптографические задачи лежат где-то между этими крайними пределами. Шифровальщик противника может иметь желание разделить возможные сообщения на категории ``приемлемых'', ``возможных, но малоправдоподобных'' и ``неприемлемых'', но чувствуется, что более подробное подразделение не имело бы смысла.

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

Next: 3. Способы изображения систем

Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

Previous: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

Contents:



Шифры перестановки


Шифр, преобразования из которого изменяют только порядок следования символов исходного текста, но не изменяют их самих, называется .

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

(6)

где  - номер места шифртекста, на которое попадает первая буква исходного сообщения при выбранном преобразовании,  - номер места для второй буквы и т.д. В верхней строке таблицы выписаны по порядку числа от 1 до , а в нижней - те же числа, но в произвольном порядке. Такая таблица называется подстановкой степени .

Зная подстановку, задающую преобразование, можно осуществить как зашифрование, так и расшифрование текста. Например, если для преобразования используется подстановка

и в соответствии с ней зашифровывается слово МОСКВА, то получится КОСВМА. Попробуйте расшифровать сообщение НЧЕИУК, полученное в результате преобразования с помощью указанной выше подстановки.

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

Читатель, знакомый с методом математической индукции, может легко убедиться в том, что существует

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

С увеличением числа значение растет очень быстро. Приведем таблицу значений для первых 10 натуральных чисел:

1 2 3 4 5 6 7 8 9 10
1 2 6 24 120 720 5040 40320 362880 3628800

При больших для приближенного вычисления можно пользоваться известной формулой Стирлинга

где .

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


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

Широкое распространение получили шифры перестановки, использующие некоторую геометрическую фигуру. Преобразования из этого шифра состоят в том, что в фигуру исходный текст вписывается по ходу одного ``маршрута'', а затем по ходу другого выписывается с нее. Такой шифр называют маршрутной перестановкой. Например, можно вписывать исходное сообщение в прямоугольную таблицу, выбрав такой маршрут: по горизонтали, начиная с левого верхнего угла поочередно слева направо и справа налево. Выписывать же сообщение будем по другому маршруту: по вертикали, начиная с верхнего правого угла и двигаясь поочередно сверху вниз и снизу вверх.

Зашифруем, например, указанным способом фразу:
ПРИМЕРМАРШРУТНОЙПЕРЕСТАНОВКИ

используя прямоугольник размера :

П Р И М Е Р М
Н Т У Р Ш Р А
О Й П Е Р Е С
И К В О Н А Т
Зашифрованная фраза выглядит так:
МАСТАЕРРЕШРНОЕРМИУПВКЙТРПНОИ

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

Ниже приводятся описания трех разновидностей шифров перестановки, встречавшихся в задачах олимпиад.

. Одним из самых первых шифровальных приспособлений был жезл (``Сцитала''), применявшийся еще во времена войны Спарты против Афин в V веке до н. э. Это был цилиндр, на который виток к витку наматывалась узкая папирусная лента (без просветов и нахлестов), а затем на этой ленте вдоль его оси записывался необходимый для передачи текст. Лента сматывалась с цилиндра и отправлялась адресату, который, имея цилиндр точно такого же диаметра, наматывал ленту на него и прочитывал сообщение. Ясно, что такой способ шифрования осуществляет перестановку местами букв сообщения.

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




Имеются еще и чисто физические ограничения, накладываемые реализацией шифра ``Сцитала''. Естественно предположить, что диаметр жезла не должен превосходить 10 сантиметров. При высоте строки в 1 сантиметр на одном витке такого жезла уместится не более 32 букв (

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

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

Поясним процесс шифрования на примере. Пусть в качестве ключа используется решетка , приведенная на рис. .



Рис. 6.

Зашифруем с ее помощью текст

ШИФРРЕШЕТКАЯВЛЯЕТСЯЧАСТНЫМСЛУЧАЕМШИФРАМАРШРУТНОЙПЕРЕСТАНОВКИ

Наложив решетку на лист бумаги, вписываем первые 15 (по числу вырезов) букв сообщения: ШИФРРЕШЕТКАЯВЛЯ.... Сняв решетку, мы увидим текст, представленный на рис. . Поворачиваем решетку на . В окошечках появятся новые, еще не заполненные клетки. Вписываем в них следующие 15 букв. Получится запись, приведенная на рис. . Затем переворачиваем решетку на другую сторону и зашифровываем остаток текста аналогичным образом (рис. , ).



Рис. 7.



Рис. 8.



Рис. 9.



Рис. 10.

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

Можно доказать, что число возможных трафаретов, то есть количество ключей шифра ``решетка'', составляет (см. задачу ). Этот шифр предназначен для сообщений длины . Число всех перестановок в тексте такой длины составит , что во много раз больше числа . Однако, уже при размере трафарета число возможных решеток превосходит 4 миллиарда.




Широко распространена разновидность шифра маршрутной перестановки, называемая ``шифром вертикальной перестановки'' (ШВП). В нем снова используется прямоугольник, в который сообщение вписывается обычным способом (по строкам слева направо). Выписываются буквы по вертикали, а столбцы при этом берутся в порядке, определяемом ключом. Пусть, например, этот ключ таков: (5,4,1,7,2,6,3), и с его помощью надо зашифровать сообщение:
ВОТПРИМЕРШИФРАВЕРТИКАЛЬНОЙПЕРЕСТАНОВКИ

Впишем сообщение в прямоугольник, столбцы которого пронумерованы в соответствии с ключом:
5 1 4 7 2 6 3
В О Т П Р И М
Е Р Ш И Ф Р А
В Е Р Т И К А
Л Ь Н О Й П Е
Р Е С Т А Н О
В К И - - - -
Теперь, выбирая столбцы в порядке, заданном ключом, и выписывая последовательно буквы каждого из них сверху вниз, получаем такую криптограмму:
ОРЕЬЕКРФИЙА-МААЕО-ТШРНСИВЕВЛРВИРКПН-ПИТОТ-
Число ключей ШВП не более , где  - число столбцов таблицы. Как правило, гораздо меньше, чем длина текста (сообщение укладывается в несколько строк по букв), а, значит, и много меньше .

Пользуясь приведенной выше

при больших и , попытайтесь оценить, во сколько раз число возможных перестановок ШВП с столбцами меньше числа всех перестановок на тексте длины , кратном .

В случае, когда ключ ШВП не рекомендуется записывать, его можно извлекать из какого-то легко запоминающегося слова или предложения. Для этого существует много способов. Наиболее распространенный состоит в том, чтобы приписывать буквам числа в соответствии с обычным алфавитным порядком букв. Например, пусть ключевым словом будет ПЕРЕСТАНОВКА. Присутствующая в нем буква А получает номер 1. Если какая-то буква входит несколько раз, то ее появления нумеруются последовательно слева направо. Поэтому второе вхождение буквы А получает номер 2. Поскольку буквы Б в этом слове нет, то буква В получает номер 3 и так далее. Процесс продолжается до тех пор, пока все буквы не получат номера. Таким образом, мы получаем следующий ключ:




П Е Р Е С Т А Н О В К А
9 4 10 5 11 12 1 7 8 3 6 2
Перейдем к вопросу о методах вскрытия шифров перестановки. Проблема, возникающая при восстановлении сообщения, зашифрованного ШП, состоит не только в том, что число возможных ключей велико даже при небольших длинах текста. Если и удастся перебрать все допустимые варианты перестановок, не всегда ясно, какой из этих вариантов истинный. Например, пусть требуется восстановить исходный текст по криптограмме АОГР, и нам ничего не известно, кроме того, что применялся шифр перестановки. Какой вариант ``осмысленного'' исходного текста признать истинным: ГОРА или РОГА? А может быть АРГО? Приведем пример еще более запутанной ситуации. Пусть требуется восстановить сообщение по криптограмме
ААНИНК-ТЕОМЛ,З.ЬЬЗИВТЛП-ЬЯО

полученной шифром перестановки. Возможны, как минимум, два варианта исходного сообщения:
КАЗНИТЬ,-НЕЛЬЗЯ-ПОМИЛОВАТЬ. и

КАЗНИТЬ-НЕЛЬЗЯ,-ПОМИЛОВАТЬ.
Эти варианты имеют прямо противоположный смысл и в имеющихся условиях у нас нет возможности определить, какой из вариантов истинный.

Иногда, за счет особенностей реализации шифра, удается получить информацию об использованном преобразовании (перестановке). Рассмотрим шифр ``Сцитала'' из задачи . Выше уже рассматривался вопрос о количестве перестановок, реализуемых ``Сциталой''. Их оказалось не более 32. Это число невелико, поэтому можно осуществить перебор всех вариантов. При достаточной длине сообщения, мы, скорее всего, получим единственный читаемый вариант текста. Однако, используя информацию о расположении линий, оставленных шифровальщиком, удается определить диаметр стержня, а значит, и возникающую перестановку букв (см. задачу ).

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

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




Аналогичная ситуация возникает и при ``неполном'' использовании шифра ``решетка'' (см. задачу ). Пусть имеется решетка размера , и зашифрованное с ее помощью сообщение длины , не содержащее пробелов. Незаполненные мест в решетке при условии, что , соответствуют вырезам в четвертом положении решетки. На основе такой информации, происходит резкое уменьшение числа допустимых решеток (их будет ). Читателю предлагается самостоятельно подсчитать число допустимых решеток при mr/4$" width="72" height="31" >.

На примере решения задачи  продемонстрируем еще один подход к вскрытию шифров вертикальной перестановки - лингвистический. Он основан на том, что в естественных языках некоторые комбинации букв встречаются очень часто, другие - гораздо реже, а многие вообще не встречаются (например - ``ыьъ'').

Будем подбирать порядок следования столбцов друг за другом так, чтобы во всех строках этих столбцов получались ``читаемые'' отрезки текста. В приведенном решении задачи восстановление текста начинается с подбора цепочки из трех столбцов первой группы, содержащей в последней строке сочетание ТЧК, так как естественно предположить, что сообщение заканчивается точкой. Далее подбираются столбцы, продолжающие участки текста в других строках, и т.д.

Сочетание лингвистического метода с учетом дополнительной информации довольно быстро может привести к вскрытию сообщения.

В заключение рассказа о шифрах перестановки приведем историю с зашифрованным автографом А. С. Пушкина, описанную в романе В. Каверина ``Исполнение желаний''.

Главный герой романа - студент-историк Н. Трубачевский, - занимавшийся работой в архиве своего учителя - академика Бауэра С. И., - нашел в одном из секретных ящиков пушкинского бюро фрагмент недописанной Х главы ``Евгения Онегина''. Это был перегнутый вдвое полулист плотной голубоватой бумаги с водяным знаком 1829 года. На листе было написано следующее.




1. Властитель слабый и лукавый 1. Нечаянно пригретый славой
2. Его мы очень смирным знали 2. Орла двуглавого щипали
3. Гроза двенадцатого года 3. Остервенение народа
4. Но Бог помог - стал ропот ниже 4. Мы очутилися в Париже
5. И чем жирнее, тем тяжеле 5. Скажи, зачем ты в самом деле
6. Авось, о Шиболет народный 6. Но стихоплет великородный
7. Авось, аренды забывая 7. Авось по манью Николая
8. Сей муж судьбы, сей странник бранный 8. Сей всадник, папою венчанный
9. Тряслися грозно Пиринеи 9. Безрукий князь друзьям Мореи
10. Я всех уйму с моим народом 10. А про себя и в ус не дует
11. Потешный полк Петра Титана 11. Предавших некогда тирана
12. Россия присмирела снова 12. Но искра пламени иного
13. У них свои бывали сходки 13. Они за рюмкой русской водки
14. Витийством резким знамениты 14. У беспокойного Никиты
15. Друг Марса, Вакха и Венеры 15. Свои решительные меры
16. Так было над Невою льдистой 16. Блестит над каменкой тенистой
17. Плешивый щеголь, враг труда 17. Над нами царствовал тогда
18. Когда не наши повара 18. У Бонапартова шатра
19. Настала - кто тут нам помог? 19. Барклай, зима иль русский бог?
20. И скоро силою вещей 20. А русский царь главой царей
21. О русский глупый наш народ 21. ...
22. Тебе б я оду посвятил 22. Меня уже предупредил
23. Ханжа запрется в монастырь 23. Семействам возвратит Сибирь
24. Пред кем унизились цари 24. Исчезнувший как тень зари
25. Волкан Неаполя пылал 25. Из Кишинева уж мигал
26. Наш царь в конгрессе говорил 26. Ты александровский холоп (?)
27. Дружина старых усачей 27. Свирепой шайке палачей
28. И пуще царь пошел кутить 28. Уже издавна, может быть
29. Они за чашею вина 29. ...
30. Сбирались члены сей семьи 30. У осторожного Ильи
31. Тут Лунин дерзко предлагал 31. И вдохновенно бормотал
32. Но там, где ранее весна 32. И над холмами Тульчина
Без особых усилий Трубачевский прочитал рукопись, и ничего не понял. Он переписал ее, получилась бессвязная чепуха, в которой одна строка, едва начавшая мысль, перебивается другой, а та - третьей, еще более бессмысленной и бессвязной. Он попробовал разбить рукопись на строфы, - опять не получилось. Стал искать рифмы, - как будто и рифм не было, хотя на белый стих все это мало похоже. Просчитал строку - четырехстопный ямб, размер, которым написан ``Евгений Онегин''.




Трубачевский с азартом взялся за рукопись, пытался читать ее, пропуская по одной строке, потом по две, по три, надеясь случайно угадать тайную последовательность, в которой были записаны строки. У него ничего не получалось. Тогда он стал читать третью строку вслед за первой, пятую за третьей, восьмую за пятой, предположив, что пропуски должны увеличиваться в арифметической прогрессии. Все то же! Отчаявшись, он бросил эту затею. Однако, она не давала ему покоя ни на лекции, ни в трамвае... Как шахматист, играющий в уме, он не только знал наизусть каждую строчку, он видел ее в десяти комбинациях сразу.

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

Сможете ли вы прочитать эти стихи? Ответ вы найдете в романе В. Каверина.

Next: Ответы к упражнению.

Up: 7. Олимпиады по криптографии

Previous: Ж. Верн, ``Путешествие к центру

Contents:



Шифры замены


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

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

, то есть любые два различные множества не содержат одинаковых элементов. Множество называется множеством для буквы .

Таблица

(1)

является шифра замены. Зная ее, можно осуществить как зашифрование, так и расшифрование.

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

а б в г д е ж з и к л м н о п р
21 37 14 22 01 24 62 73 46 23 12 08 27 53 35 04
40 26 63 47 31 83 88 30 02 91 72 32 77 68 60 44
10 03 71 82 15 70 11 55 90 69 38 61 54 09 84 45

с т у ф х ц ч ш щ ъ ы ь э ю я
20 13 59 25 75 43 19 29 06 65 74 48 36 28 16
52 39 07 49 33 85 58 80 50 34 17 56 78 64 41
89 67 93 76 18 51 87 66 81 92 42 79 86 05 57

то сообщение ``я знаком с шифрами замены'' может быть зашифровано, например, любым из следующих трех способов:

16 55 54 10 69 09 61 89 29 90 49 44 10 08 02 73 21 32 83 54 74
41 55 77 10 23 68 08 20 66 90 76 44 21 61 90 55 21 61 83 54 42
57 30 27 10 91 68 32 20 80 02 49 45 40 32 46 55 40 08 83 27 42
<
Так как множества , , , ..., попарно не пересекаются, то по каждому символу шифрованного сообщения можно однозначно определить, какому множеству он принадлежит, и, следовательно, какую букву открытого сообщения он заменяет. Поэтому расшифрование возможно и открытое сообщение определяется единственным образом.

Часто состоит из одного элемента. Например, в романе Ж. Верна ``Путешествие к центру Земли'' в руки профессора Лиденброка попадает пергамент с рукописью из знаков рунического письма. Каждое множество состоит из одного элемента. Элемент каждого множества выбирается из набора символов вида

(2)
В рассказе А. Конан Дойла ``Пляшущие человечки'' каждый символ изображает пляшущего человечка в самых различных позах

(3)
На первый взгляд кажется, что чем хитрее символы, тем труднее вскрыть сообщение, не имея ключа. Это, конечно, не так. Если каждому символу однозначно сопоставить какую-либо букву или число, то легко перейти к зашифрованному сообщению из букв или чисел. В романе Ж. Верна ``Путешествие к центру Земли'' каждый рунический знак был заменен на соответствующую букву немецкого языка, что облегчило восстановление открытого сообщения. С точки зрения криптографов использование различных сложных символов не усложняет шифра. Однако, если зашифрованное сообщение состоит из букв или цифр, то вскрывать такое сообщение удобнее.

Рассмотрим некоторые примеры шифров замены. Пусть каждое множество состоит из одной буквы. Например,

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

Запомнить произвольный порядок букв алфавита достаточно сложно. Поэтому всегда пытались придумать какое-либо правило, по которому можно просто восстановить вторую строчку в ().




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

(5)
В одной из задач (задача ) используется шифр Цезаря. Запомнить ключ в этом случае просто - надо знать первую букву второй строки () (последовательность букв в алфавите предполагается известной). Однако такой шифр обладает большим недостатком. Число различных ключей равно числу букв в алфавите. Перебрав эти варианты, можно однозначно восстановить открытое сообщение, так как при правильном выборе ключа получится ``осмысленный'' текст. В других случаях обычно получается ``нечитаемый'' текст. Задача  именно на это и рассчитана. Несмотря на то, что используется фраза на латинском языке, которого школьники не знают, многие участники олимпиады смогли указать открытое сообщение.

Другим примером шифра замены может служить лозунговый шифр. Здесь запоминание ключевой последовательности основано на лозунге - легко запоминаемом слове. Например, выберем слово-лозунг ``учебник'' и заполним вторую строку таблицы по следующему правилу: сначала выписываем слово-лозунг, а затем выписываем в алфавитном порядке буквы алфавита, не вошедшие в слово-лозунг. Вторая строка в () примет вид
у ч е б н и к а в г д ж з л м о

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

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

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




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

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

Популярные у школьников криптограммы (типа рассмотренной в задаче ) по сути дела являются шифром замены с ключом
0 1 2 3 4 5 6 7 8 9
ш и ф р з а м е н ы
в котором каждой цифре ставится в соответствие буква. При этом должны соблюдаться правила арифметики. Эти правила значительно облегчают определение открытого текста, так же, как правила синтаксиса и орфографии в задаче  облегчают нахождение четверостишия В. Высоцкого.

Любые особенности текста, которые могут быть вам известны, - ваши помощники. Например, в задаче  прямо сказано, что в тексте есть выражения ``зпт'', ``тчк'', как часто бывает в реальных телеграммах. И эта подсказка - путь к решению задачи.

Шифрование даже относительно небольших текстов на одном ключе для рассмотренных шифров замены создает условия для вскрытия открытых сообщений. Поэтому такие шифры пытались усовершенствовать. Одно из направлений - построение шифров разнозначной замены, когда каждой букве ставится в соответствие один или два символа. (Простейшим примером является шифр, определяемый в задаче .) Например,
а б в г д е ж з и к л м н о п р
73 74 51 65 2 68 59 1 60 52 75 61 8 66 58 3
с т у ф х ц ч ш щ ъ ы ь э ю я
69 64 53 54 9 62 71 4 67 56 72 63 55 70 57
Если шифрованное сообщение написано без пробелов между символами, то появляется дополнительная трудность при разбиении шифрованного сообщения на отдельные символы и слова.




Другое направление создания шифров замены состоит в том, чтобы множества шифробозначений  содержали более одного элемента. Такие шифры получили название шифров многозначной замены. Они позволяют скрыть истинную частоту букв открытого сообщения, что существенно затрудняет вскрытие этих шифров. Главная трудность, которая возникает при использовании таких шифров, заключается в запоминании ключа. Надо запомнить не одну строчку, а для каждой буквы алфавита  - множество ее шифробозначений . Как правило, элементами множеств являются числа. Из художественной литературы и кинофильмов про разведчиков вам известно, что во время второй мировой войны часто использовались так называемые книжные шифры. Множество шифробозначений для каждой буквы определяется всеми пятизначными наборами цифр, в каждом из которых первые две цифры указывают номер страницы, третья цифра - номер строки, четвертая и пятая цифры - номер места данной буквы в указанной строке. Поэтому при поимке разведчика всегда пытались найти книгу, которая могла быть использована им в качестве ключа.

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

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

Next: А. Конан Дойл, ``Пляшущие человечки''

Up: 7. Олимпиады по криптографии

Previous: 7.1. Введение

Contents:



Система шифрования RSA


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

Пусть и натуральные числа. Функция , реализующая схему RSA, устроена следующим образом

(1)

Для дешифрования сообщения достаточно решить сравнение

(2)

При некоторых условиях на и это сравнение имеет единственное решение .

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

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

(3)

Такое число существует, поскольку , и притом единственно. Здесь и далее символом будет обозначаться наибольший общий делитель чисел и . Классическая теорема Эйлера, см. [], утверждает, что для каждого числа , взаимно простого с , выполняется сравнение

и, следовательно,

(4)

Таким образом, в предположении , единственное решение сравнения () может быть найдено в виде

(5)

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

Функция (), принятая в системе RSA, может быть вычислена достаточно быстро. Как это сделать, мы обсудим чуть ниже. Пока отметим лишь, что обратная к функция вычисляется по тем же правилам, что и , лишь с заменой показателя степени на . Таким образом, для функции () будут выполнены указанные выше свойства а) и б).


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

, см. [, гл. 5], находим, что при , записываемом 100 десятичными цифрами, найдется не менее простых чисел, на которые придется делить при разложении его на множители. Очень грубые прикидки показывают, что компьютеру, выполняющему миллион делений в секунду, для разложения числа 10^{99}$" width="69" height="33" > таким способом на простые сомножители потребуется не менее, чем лет. Известны и более эффективные способы разложения целых чисел на множители, чем простой перебор простых делителей, но и они работают очень медленно. Таким образом, название статьи М. Гарднера вполне оправдано.

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

(6)
то единственное условие на выбор показателя степени в отображении () есть

(7)
Итак, лицо, заинтересованное в организации шифрованной переписки с помощью схемы RSA, выбирает два достаточно больших простых числа и . Перемножая их, оно находит число . Затем выбирается число , удовлетворяющее условиям (), вычисляется с помощью () число и с помощью () - число . Числа и публикуются, число остается секретным. Теперь любой может отправлять зашифрованные с помощью () сообщения организатору этой системы, а организатор легко сможет дешифровывать их с помощью ().




Для иллюстрации своего метода Ривест, Шамир и Адлеман зашифровали таким способом некоторую английскую фразу. Сначала она стандартным образом (a=01, b=02, ..., z=26, пробел=00) была записана в виде целого числа , а затем зашифрована с помощью отображения () при


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

была обещана награда в 100$.

Эта история завершилась спустя 17 лет в 1994 г., см. [], когда D. Atkins, M. Graff, A. K. Lenstra и P. C. Leyland сообщили о дешифровке фразы, предложенной в []. Она1) была вынесена в заголовок статьи [], а соответствующие числа и оказались равными

Интересующиеся могут найти детали вычислений в работе []. Здесь же мы отметим, что этот замечательный результат (разложение на множители 129-значного десятичного числа) был достигнут благодаря использованию алгоритма разложения чисел на множители, называемого методом квадратичного решета. Выполнение вычислений потребовало колоссальных ресурсов. В работе, возглавлявшейся четырьмя авторами проекта, и продолжавшейся после предварительной теоретической подготовки примерно 220 дней, на добровольных началах участвовало около 600 человек и примерно 1600 компьютеров, объединенных сетью Internet. Наконец, отметим, что премия в 100$ была передана в Free Software Foundation.

Описанная выше схема RSA ставит ряд вопросов, которые мы и попробуем обсудить ниже. Например, как проводить вычисления с большими числами, ведь стандартное математическое обеспечение не позволяет перемножать числа размером по 65 десятичных знаков? Как вычислять огромные степени больших чисел? Что значит быстрый алгоритм вычисления и что такое сложная вычислительная задача? Где взять большие простые числа? Как, например, построить простое число в 65 десятичных знаков? Существуют ли другие способы решения сравнения ()? Ведь, если можно найти решение (), не вычисляя секретный показатель или не разлагая число на простые сомножители, да еще сделать это достаточно быстро, вся система RSA разваливается. Наверное, читателю могут прийти в голову и другие вопросы.




Начнем с конца. За 17 лет, прошедших между публикациями работ [] и [], никто так и не смог дешифровать предложенную авторами RSA фразу. Конечно, это всего лишь косвенное подтверждение стойкости системы RSA, но все же достаточно убедительное. Ниже мы обсудим теоретические проблемы, возникающие при решении полиномиальных сравнений.

Мы не будем обсуждать, как выполнять арифметические действия с большими целыми числами, рекомендуем читателю обратиться к замечательной книжке Д. Кнута [, гл. 4]. Заметим только, что большое число всегда можно разбить на меньшие блоки, с которыми компьютер может оперировать так же, как мы оперируем с цифрами, когда проводим вычисления вручную на бумаге. Конечно, для этого нужны специальные программы. Созданы и получили достаточно широкое распространение даже специальные языки программирования для вычислений с большими числами. Укажем здесь два из них - PARI и UBASIC. Эти языки свободно распространяются. Информацию о том, как их получить в пользование, можно найти в книге [].

Next: 4.3. Сложность теоретико-числовых алгоритмов

Up: 4. Алгоритмические проблемы теории

Previous: 4.1. Введение

Contents:



Сколько дырок в вычислительных сетях?


При современном уровне развития компьютерных и информационных технологий даже обычный домашний ПК уже не мыслится отдельно от всего компьютерного киберпространства. Проникновение вычислительных сетей всюду, где есть компьютеры, стремление самих пользователей объединяться вынесло на передний план лозунг компании Sun Microsystem ``Сеть - это компьютер''. Разработчики современного программного обеспечения также стали ориентироваться на использование сетевых технологий и обеспечение пользователей удобными средствами для работы с распределенными ресурсами и удаленными источниками информации.

Многие из вас пользовались ресурсами глобальной сети Internet, кто-то имел возможность работать в локальных вычислительных сетях (ЛВС). Наверное, при этом вы задавали себе вопросы:

- как защищается информация, передаваемая по открытым каналам связи;

- можно ли, перехватывая данные, которыми обмениваются компьютеры в вычислительной сети, получить информацию о действиях работающих на них пользователей;

- можно ли вмешаться в протокол взаимодействия компьютеров;

- как защитить свои данные при их передаче по каналам локальных или глобальных сетей.

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

Во-первых, как защищается информация, передаваемая по каналам ЛВС и в глобальных сетях? Для большинства распространенных сетевых ОС можно ответить - никак!

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

Такой программой является широко распространенный программный пакет LANalyzer for Windows фирмы Novell. Для его использования не требуется каких-то специальных навыков работы в ЛВС. Для начала перехвата информации достаточно нажать кнопку ``Start'', а для просмотра пойманных пакетов кнопку ``View''. Дополнительные возможности программы, например настройки фильтров перехвата, можно изучить и использовать в дальнейшем, по ходу дела.


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

Например, пусть копируется файл help.txt с содержанием: Help, I need somebody, Help, not just anybody, Help, you know I need someone, help.

Этот файл может выглядеть при передаче по каналам ЛВС так (пакет декодирован программой LANalyzer):

ip: ======================= Internet Protocol ======================= Station:127.0.0.1 --->127.0.0.2 Protocol: TCP Version: 4 Header Length (32 bit words): 5 Precedence: Routine Normal Delay, Normal Throughput, Normal Reliability Total length: 194 Identification: 12292 Fragmentation not allowed, Last fragment Fragment Offset: 0 Time to Live: 128 seconds Checksum: 0xB689(Valid) tcp: ================= Transmission Control Protocol ================= Source Port: 1091 Destination Port: NETBIOS-SSN Sequence Number: 20624641 Acknowledgement Number: 849305 Data Offset (32-bit words): 5 Window: 7473 Control Bits: Acknowledgement Field is Valid (ACK) Push Function Requested (PSH) Checksum: 0xCB85(Valid) Urgent Pointer: 0 Data: 0: 00 00 00 96 FF 53 4D 42 2F 00 00 00 00 18 03 80 |.....SMB/....... 10: 00 00 00 00 00 00 00 00 00 00 00 00 00 08 FE CA |................ 20: 00 08 00 06 0E FF 00 00 00 00 08 00 00 00 00 FF |................ 30: FF FF FF 00 00 57 00 00 00 57 00 3F 00 00 00 00 |.....W...W.?.... 40: 00 57 00 48 65 6C 70 2C 20 49 20 6E 65 65 64 20 |.W.Help, I need 50: 73 6F 6D 65 62 6F 64 79 2C 0D 0A 48 65 6C 70 2C |somebody,..Help, 60: 20 6E 6F 74 20 6A 75 73 74 20 61 6E 79 62 6F 64 | not just anybod 70: 79 2C 0D 0A 48 65 6C 70 2C 20 79 6F 75 20 6B 6E |y,..Help, you kn 80: 6F 77 20 49 20 6E 65 65 64 20 73 6F 6D 65 6F 6E |ow I need someon 90: 65 2C 20 68 65 6C 70 2E 0D 0A |e, help...




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

Кроме того, злоумышленник иногда может вмешиваться в работу пользователей сети. В частности, некоторые атаки на сетевые ОС используют слабости протоколов идентификации получателей и отправителей информации в ЛВС. Дело в том, что каждый пакет, передаваемый по каналам ЛВС, снабжается электронными сетевыми адресами компьютера-отправителя пакета и компьютера, которому этот пакет предназначен. Это как адреса на почтовых конвертах.

В начале 90-х годов широко использовалась сетевая ОС Novell NetWare ver 3.11. Пользуясь слабостью реализованных в этой системе сетевых протоколов, злоумышленник с помощью специальной программы, подменяющей сетевые адреса, мог выдать свой компьютер за компьютер, на котором работает другой пользователь, в том числе Супервизор []. После чего мог давать системе любые запросы на использование ее ресурсов, заводить новых пользователей, устанавливать их права доступа. Данный способ подмены сетевых адресов получил название ``Голландская атака'' и широко описан в литературе.

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

Рассмотрим еще один важный вопрос, связанный с безопасностью сетевых ОС. В большинстве случаев компьютеры ЛВС объединяются в группы, которые в различных системах называются по разному: подсеть, домен, рабочая группа и т.д. Однако часто эти группы имеют некоторую общую структуру. В группе выделяется один (иногда несколько) мощный компьютер, называемый сервером или контроллером домена, который отвечает за общую безопасность. Остальные компьютеры (рабочие станции) предназначаются для работы пользователей сети.




Сервер несет ответственность за разрешение санкционированного доступа к ресурсам всей группы, например, к хранящимся на нем файлам или сетевым принтерам. Он отвечает и за допуск в сеть зарегистрированных пользователей.

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

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

Разберем это на примере сетевой ОС Novell NetWare ver 3.11.

Заметим, что в версии 2.12 этой системы пароль пользователя вообще передавался в открытом виде. Данное обстоятельство делало все усилия по организации разграничения доступа к информации совершенно бесполезными.

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

Шаг 1. Пользователь рабочей станции в ответ на запрос системы вводит свое имя и пароль.

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

Шаг 3. Рабочая станция запрашивает у сервера разовый ключ (случайный массив данных, используемый однократно, для одного входа пользователя в систему).

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




Шаг 5. Сервер осуществляет проверку билета и направляет рабочей станции сообщение о ее результате. Если проверка прошла успешно, то пользователь получает разрешение на доступ в систему.

При реализации данного протокола решался ряд задач по обеспечению его безопасности, а именно:

- сделать максимально трудным подбор пароля пользователя злоумышленником, перехватившим в ЛВС разовый ключ и билет;

- добиться невозможности повторного использования билета для получения доступа к ресурсам системы.

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

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

Алгоритм перерабатывает массив данных длиной 32 байта, его схема приведена ниже (см. рис. ). На ней:



Рис. 5. Схема криптографического преобразования, используемого ОС Novell NetWare.
 - массив данных из 32 элементов (байтов), после каждого шага работы схемы заполнение массива сдвигается на один элемент влево, а в записывается результат побитного сложения;

 - фиксированная таблица из 32 элементов (байтов), после каждого шага работы схемы заполнение таблицы циклически сдвигается на один элемент влево;

 - один элемент памяти (байт);

 - операция побитного сложения байтов;

и  - операции сложения и вычитания, соответственно, байтов по модулю 256;

 - операция получения остатка от деления на 32, результат этой операции используется как индекс для выборки элемента массива .

Схема работает 64 такта.

Несмотря на кажущуюся сложность схемы, оказалось, что она содержит ряд недостатков, позволяющих, при некоторых благоприятных условиях, подбирать пароль пользователя []. Например, злоумышленник, перехватив разовый ключ и билет, мог попытаться в лоб подобрать пароль пользователя. При этом он мог использовать словари наиболее часто встречающихся паролей, которые любой из вас может найти в Internet. Конечно, пароль не любого пользователя удастся таким образом подобрать. Но это слабое утешение.




Какой же может быть найден выход для пользователей, желающих надежно защитить свою информацию при ее передаче по открытым каналам вычислительных сетей?

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

Здесь может быть предложено два основных подхода по организации системы шифрования:

- предварительное шифрование информации перед передачей ее по сети;

- прозрачное шифрование пакетов сетевого информационного обмена.

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

Так работают пользователи программы Pretty Good Private (PGP), разработанной Филиппом Зиммерманом в начале 90-х годов и широко распространенной во всем мире. PGP позволяет вырабатывать индивидуальные ключи пользователей, безопасно ими обмениваться и шифровать данные. В нем реализованы алгоритм блочного шифрования IDEA и .

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

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

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




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

В глобальных сетях дела с этим обстоят значительно лучше. Уже достаточно давно получили широкое распространение программные продукты, предоставляющие пользователям возможность прозрачного шифрования данных, передаваемых по сети. Например, Netscape Navigator, занимающий 75% рынка программ, предназначенных для работы с World Wide Web (WWW) сети Internet и проведения через Internet расчетов по кредитным карточкам, включает в себя криптографическую подсистему.

Netscape используют миллионы людей по всему миру, тем не менее, в этой программе были найдены существенные ``дыры''. Ранние версии Netscape содержали изъяны в двух основных элементах криптографической подсистемы []:

собственно в самом алгоритме шифрования;

алгоритме генерации ключей.

Первый изъян состоял в том, что для шифрования данных сетевого информационного обмена в программе Netscape в варианте, предназначенном для экспорта из США (а именно им большинство и пользуется), реализован алгоритм гаммирования RC4 [] с ключом 40 бит! Возможности современной вычислительной техники таковы, что ключ такой длины можно определить простым перебором в течении нескольких дней. Какое-то время среди пользователей сети Internet даже развернулось нечто вроде соревнования - кто быстрее сможет найти ключ.

В июле 1994 года ключ шифрования был восстановлен за 8 дней с использованием объединенных вычислительных ресурсов 120 рабочих станций и двух параллельных суперкомпьютеров.

В августе 1995 года данная задача была решена за то же время с использованием около 100 компьютеров.

В декабре 1995 года один суперкомпьютер подобрал ключ за 7 дней.

Вторая ``дыра'' в системе защиты была выявлена у программы Netscape (версия 1.2) двумя студентами Калифорнийского университета в сентябре 1995 года. Суть ее в том, что были обнаружены существенные слабости в алгоритме генерации ключей шифрования. Ключ должен являться случайным числом. В Netscape для его вычисления был реализован алгоритм генерации ``случайных'' чисел, основанный на показании внутреннего таймера и значениях сетевых адресов. В результате анализа ими был предложен алгоритм подбора ключа в течение всего одной минуты, а программа, реализующая данный алгоритм, была опубликована в Internet.

Next: 6.5. Вместо заключения

Up: 6.4. Поучимся на чужих

Previous: Удобно, красиво, но ...

Contents:



Сложность теоретико-числовых алгоритмов


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

На первый взгляд странным также кажется, что операции умножения и деления приравниваются по сложности к операциям сложения и вычитания. Житейский опыт подсказывает, что умножать числа значительно сложнее, чем складывать их. В действительности же, вычисления можно организовать так, что на умножение или деление больших чисел понадобится не намного больше битовых операций, чем на сложение. В книге [] описывается алгоритм Шенхаге - Штрассена, основанный на так называемом быстром преобразовании Фурье, и требующий битовых операций для умножения двух -разрядных двоичных чисел. Таким же количеством битовых операций можно обойтись при выполнении деления с остатком двух двоичных чисел, записываемых не более, чем цифрами. Для сравнения отметим, что сложение -разрядных двоичных чисел требует битовых операций.

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

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

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

Next: 4.4. Как отличить составное

Up: 4. Алгоритмические проблемы теории

Previous: 4.2. Система шифрования RSA

Contents:



Совершенная секретность


Предположим, что имеется конечное число возможных сообщений

с априорными вероятностями и что эти сообщения преобразуются в возможные криптограммы , так что

После того как шифровальщик противника перехватил некоторую криптограмму , он может вычислить, по крайней мере в принципе, апостериорные вероятности различных сообщений . Естественно определить совершенную секретность с помощью следующего условия: для всех апостериорные вероятности равны априорным вероятностям независимо от величины этих последних. В этом случае перехват сообщения не дает шифровальщику противника никакой информации1). Теперь он не может корректировать никакие свои действия в зависимости от информации, содержащейся в криптограмме, так как все вероятности, относящиеся к содержанию криптограммы, не изменяются. С другой стороны, если это условие равенства вероятностей не выполнено, то имеются такие случаи, в которых для определенного ключа и определенных выборов сообщений апостериорные вероятности противника отличаются от априорных. А это в свою очередь может повлиять на выбор противником своих действий и, таким образом, совершенной секретности не получится. Следовательно, приведенное определение неизбежным образом следует из нашего интуитивного представления о совершенной секретности.

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

где

 -- априорная вероятность сообщения ;

 -- условная вероятность криптограммы при условии, что выбрано сообщение , т.е. сумма вероятностей всех тех ключей, которые переводят сообщение в криптограмму ;

 -- вероятность получения криптограммы ;

 -- апостериорная вероятность сообщения при условии, что перехвачена криптограмма .

Для совершенной секретности системы величины и должны быть равны для всех и . Следовательно, должно быть выполнено одно из равенств: или [это решение должно быть отброшено, так как требуется, чтобы равенство осуществлялось при любых значениях ], или же


для любых и .

Наоборот, если , то

и система совершенно секретна. Таким образом, можно сформулировать следующее:

Теорема 6.  

Необходимое и достаточное условие для совершенной секретности состоит в том, что


для всех и , т.е. не должно зависеть от .

Другими словами, полная вероятность всех ключей, переводящих сообщение в данную криптограмму , равна полной вероятности всех ключей, переводящих сообщение в ту же самую криптограмму для всех и .

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

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

где . В этом случае оказывается справедливым равенство и система является совершенно секретной. Один пример такой системы показан на рис. , где



Рис. 5. Совершенная система.
Совершенно секретные системы, в которых число криптограмм равно числу сообщений, а также числу ключей, характеризуются следующими двумя свойствами: 1) каждое связывается с каждым только одной линией; 2) все ключи равновероятны. Таким образом, матричное представление такой системы является ``латинским квадратом''.

В ``Математической теории связи'' показано, что количественно информацию удобно измерять с помощью энтропии. Если имеется некоторая совокупность возможностей с вероятностями

, то энтропия дается выражением

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






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



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

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

Такой вид совершенной секретности реализован в .

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

Можно было бы ожидать, что если в пространстве сообщений имеются фиксированные известные статистические связи, так что имеется определенная скорость создания сообщений в смысле, принятом в ``Математической теории связи'', то необходимый объем ключа можно было бы снизить в среднем в раз, и это действительно верно. В самом деле, сообщение можно пропустить через преобразователь, который устраняет избыточность и уменьшает среднюю длину сообщения как раз во столько раз. Затем к результату можно применить шифр Вернама. Очевидно, что объем ключа, используемого на букву сообщения, статистически уменьшается на множитель , и в этом случае источник ключа и источник сообщений в точности согласован -- один бит ключа полностью скрывает один бит информации сообщения. С помощью методов, использованных в ``Математической теории связи'', легко также показать, что это лучшее, чего можно достигнуть.




Совершенно секретные системы могут применяться и на практике, их можно использовать или в том случае, когда полной секретности придается чрезвычайно большое значение, например, для кодирования документов высших военных инстанций управления или же в случаях, где число возможных сообщений мало. Так, беря крайний пример, когда имеются в виду только два сообщения -- ``да'' или ``нет'', -- можно, конечно, использовать совершенно секретную систему со следующей таблицей отображений:

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

Next: 11. Ненадежность

Up: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ

Previous: 9. Введение

Contents:



Способы изображения систем


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

Рис. 2. Схемы простых систем.

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

Next: 4. Примеры секретных систем

Up: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ

Previous: 2. Секретные системы

Contents:



Так где же взять случайную последовательность?


Возможно, у вас уже появилась мысль, что истинно случайную последовательность программным путем не получить. Это не так. Существует, по крайней мере, один способ, позволяющий получить истинно случайную последовательность байтов. Основная идея этого способа заключается в том, чтобы привлечь к процессу выработки случайной последовательности самого пользователя.

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

Случайная? Несомненно. Равномерно распределенная? Вряд ли. Какое у нее будет распределение? Трудно сказать. Если пользователь набирает текст, получится одно распределение, если работает с Norton Commander - другое, если играет в Tetris - третье. Будут ли соседние элементы последовательности зависеть друг от друга? Скорее всего, да.

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

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

Распределение интервалов времени между последовательными нажатиями на клавиши несложно рассчитать. Для этого нужно прежде всего написать резидентную программу, которая перехватывала бы прерывание 16h, отвечающее за работу с клавиатурой, при каждом вызове прерывания получала бы текущее значение таймера, сравнивала его с предыдущим полученным значением, вычисляла разность и записывала полученное число в файл4). Затем нужно запустить эту программу и, пока она работает, поиграть некоторое время в Tetris. Проведите этот эксперимент в качестве упражнения.


Посмотрите на рисунок. Распределение нашей случайной величины будет выглядеть примерно так:

Распределение явно неравномерное, но это и не важно. Важно то, что распределение случайной величины при разных испытаниях примерно одинаково. Преобразовать это распределение в равномерное совсем несложно.

Остается решить последнюю проблему. Таймер компьютера тикает с частотой 18,2 раза в секунду, т.е. один тик занимает примерно 55 миллисекунд. Когда пользователь нажимает клавиши подряд, не думая, или просто держит клавишу нажатой, интервалы между последовательными нажатиями составляют 100-200 миллисекунд. Получается, что первый пик на приведенном графике на самом деле выглядит примерно так, как показано на рисунке.

А это нехорошо - в полученной случайной последовательности числа 2 и 3 будут встречаться гораздо чаще, чем любые другие. После преобразования к равномерному распределению значения этих часто встречающихся чисел изменятся, но сам факт наличия двух-трех значений, на которые приходится львиная доля наблюдений, останется.

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

Next: 6.4. Поучимся на чужих

Up: 6.3. Как зашифровать файл?

Previous: Где взять истинно случайную

Contents:



Удобно, красиво, но ...


Рассмотрим примеры использования криптографических алгоритмов в широко распространенных программных продуктах.

В последнее время проблема защиты информации перестала быть головной болью только государственных структур, над нею начинают задумываться многие обычные пользователи ПК. Идя навстречу их пожеланиям, многие производители программ стали включать в свои продукты функции защиты данных. Однако в большинстве случаев разработчики таких программ не ставят своей целью использовать в них сколько-нибудь стойкие алгоритмы. Они считают основной своей задачей предоставить пользователям возможность защитить информацию либо от случайного несанкционированного доступа, либо от неквалифицированного взломщика. Программные продукты, о которых речь пойдет ниже, широко известны. Они, скорее, маскируют информацию, чем реализуют алгоритмы надежного криптографического закрытия.

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

Если вы посмотрите в меню сохранения документов программы Word, то в параметрах этой операции обнаружите возможность указать пароль для доступа к документу. То есть для его открытия и дальнейшей работы с ним пользователь должен ввести пароль. Что происходит с документом, если в соответствующем поле параметров ввести пароль?

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

Мы увидим, что файл, представляющий документ в формате Microsoft Word, имеет сложную структуру. Он состоит из заголовка и нескольких разделов, которые описывают текст, а также содержат данные о работе пользователя с документом и служебную информацию. В одном из разделов файла, соответствующем документу без пароля, мы можем увидеть сам открытый текст. При этом в том же разделе файла с паролем мы обнаружим уже случайную последовательность символов. Оказывается, пароль использовался не только для разрешения доступа к документу при его открытии, но и являлся ключом некоторой криптографической схемы, зашифровавшей текст.


Очевидно, что если не зашифровывать текст, то сама идея использовать пароль была бы бесполезной. Любой пользователь сначала мог бы ``вытащить руками'' из файла большую часть текста, а потом перенести его в Word. В то же время, выбранная в Microsoft Word схема шифрования информации остановит только начинающего хакера []. Рассмотрим ее подробнее.

Из пароля пользователя Word вырабатывает массив длиной 16 байт, который назовем гаммой (gamma[0..15]). Далее, каждый байт открытого текста (plain_text[i]) последовательно складывается побитно (XOR) с байтом гаммы, в результате получаются знаки шифрованного текста

(cipher_text[i]),

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

cipher_text[i] := plain_text[i] XOR gamma[i mod 16] ,

где mod 16 - операция получения остатка от целочисленного деления на 16.

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

Заметим, что самый частый символ в документе Word - это пробел (его значение в кодировке ASCII есть 0x20). В этом легко убедиться, просматривая документ в шестнадцатиричном формате. Следовательно, самым частым символам в таблице частот соответствуют зашифрованные пробелы, и, складывая побитно значения этих символов с 0x20, мы получим все 16 знаков гаммы. Далее, зная гамму, расшифровываем весь текст. Не правда ли, просто!

На эту очевидную слабость многие сразу обратили внимание. Поэтому фирма Microsoft для последних версий текстового процессора Microsoft Word, начиная с Word 97, полностью изменила алгоритм шифрования файлов, встроив в него хорошо известные алгоритмы шифрования RC4 и хеширования MD5.




Теперь посмотрим, как защищаются пароли пользователя в операционных системах (ОС) MicrosoftWindows95 первых версий (до OSR 2).

Большинство современных сетевых ОС являются многопользовательскими, это и Novell NetWare, и Microsoft Windows NT, и т.д. Для разграничения доступа пользователей к своим ресурсам эти ОС требуют от последних доказать свою подлинность. Делается это с помощью пароля, который известен и ОС, и пользователю. Ясно, насколько важно системе для обеспечения ее безопасности надежно и недоступно для постороннего доступа хранить информацию о паролях пользователей.

ОС Microsoft Windows 95 не является многопользовательской и не предоставляет возможность пользователям разделять свои ресурсы. Тем не менее, для удобства работы она запрашивает у пользователя при входе в систему его имя и пароль. Но если он ничего не ответит (нажмет кнопку ``Cancel''), ОС все равно разрешит ему работать дальше. Для чего же тогда запрашивается пароль?

Дело в том, что ПК может работать в локальной вычислительной сети (ЛВС), где ему доступны ресурсы или серверы, для обращения к которым требуются пароли, причем, возможно, различные. Чтобы пользователю не нужно было их все запоминать, ОС Microsoft Windows 95 запоминает пароли для доступа к ресурсам ЛВС в специальном файле с именем ``имя_пользователя.pwl''. В этом файле данные шифруются на том самом пароле, который система запрашивает у пользователя при его входе в систему. Если пароль введен правильно, то в дальнейшем ОС сама подставляет соответствующий пароль при запросе пользователя на доступ к ресурсам или серверам ЛВС.

Данные в .pwl файлах шифруются следующим образом []. Из пароля пользователя по алгоритму шифрования RC4 вырабатывается . Каждый пароль на доступ к соответствующему ресурсу вместе с некоторой служебной информацией суммируется побитно с полученной гаммой. То есть каждый раз при шифровании используется одна и та же гамма. Если учесть, что .pwl файл содержит зашифрованную запись, начинающуюся с имени пользователя, дополненного до 20 символов пробелами, то задача вскрытия пароля становится элементарной. Получив первые 20 знаков гаммы, мы можем прочитать любой сохраненный в файле пароль (учитывая то обстоятельство, что редко когда используются пароли длиной более 10 символов).

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

Next: Сколько дырок в вычислительных

Up: 6.4. Поучимся на чужих

Previous: 6.4. Поучимся на чужих

Contents:



Удобно ли носить большую с вязку ключей?


Перед вами программа для шифрования. Что является секретным в этой программе? Сама программа? Исходный текст? Описание алгоритма? Ответ, безусловно, зависит от условий ее применения. Конечно, лучше всего сделать так, чтобы ваш конкурент не имел ни того, ни другого, ни третьего. Поэтому обычно подобные программы защищают и от копирования, и от дизассемблирования, и от работы под отладчиком и т.д. Если она защищена грамотным специалистом, то пройдет не один месяц, пока защита будет снята. Тем не менее, программа, как правило, используется длительное время, а хакеров сейчас великое множество. Поэтому лучше сразу исходить из того, что все связанное с программой секрета на представляет.

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

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

Но как вводить ключ в программу и где хранить ключи? Если программу использовать интенсивно, то ключей нужно очень много. Где их брать и как заменять один на другой?

Скупой рыцарь хранил свои сокровища в сундуках, которые были закрыты с помощью замков, ключи от которых он постоянно носил с собой. Он правильно делал, что никогда не расставался с ключами. Но поскольку он был очень богат, то ключей у него было очень много, и носить такую связку ему, наверно, было очень неудобно. Вообще-то, он мог завести еще один сундук, куда можно было бы сложить все ключи. Тогда бы ему потребовалось носить всего один ключ. Именно эта идея используется в ключевых системах с главным ключом, когда все ключи, кроме главного, хранятся в компьютере на винчестере в зашифрованном виде. Хотя такой способ хранения ключей несколько усложняет процедуру доступа к зашифрованной информации, преимущества здесь неоспоримы. Действительно, можете ли вы представить себе человека, который помнит несколько сотен ключей?


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

В 1976 году американские математики Диффи и Хеллман предложили перейти к . Давайте издадим книгу-справочник с открытыми ключами всех корреспондентов и поместим ее на общедоступном сервере. Это полностью снимет проблему с хранением большого числа ключей.

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

Более того, плодотворность идеи выразилась в проявлении большого интереса к ней у значительной части крупных математиков. Ведь для реализации такой системы нужны были труднорешаемые математические задачи. А кто, кроме самих математиков, может придумать такие задачи!

Посмотрим, например, как организуется выработка ключей в широко распространенном протоколе SSH (Secure Shell). Данный протокол обеспечивает аутентификацию и закрытие коммуникаций при взаимодействии UNIX машин. Для выработки ключей в нем используется протокол, являющийся модификацией хорошо известного протокола обмена ключами, предложенного Диффи и Хеллманом. Пусть  - большое простое число и . Пусть  - число, имеющее порядок равный по модулю . Оно является образующим элементом мультипликативной группы порядка . Помимо операции возведения в степень в протоколе используются алгоритмы и , принятые в США в качестве стандартов. Протокол состоит в следующем (см. []).




Клиент C генерирует случайное число , , вычисляет значение и отправляет сообщение ``'' серверу S.

Сервер S генерирует случайное число , , вычисляет значение , вычисляет значение ключа , вычисляет проверочное значение (здесь  - функция хеширования на основе алгоритма SHA,  - некоторая строка, содержащая идентифицирующую информацию о клиенте и сервере,  - открытый ключ сервера), вычисляет значение цифровой подписи под на своем секретном ключе в соответствии с алгоритмом DSS, а затем отправляет сообщение ``'' клиенту C.

Клиент C проверяет, действительно ли является ключом сервера. Если да, то вычисляет значение ключа , проверяет правильность значения вектора . Наконец, проверяет подпись под этим значением.



В этом протоколе простое число строится из известного каждому школьнику числа по формуле

и равно

179769313486231590770839156793787453197860296048756011706444
423684197180216158519368947833795864925541502180565485980503
646440548199239100050792877003355816639229553136239076508735
759914822574862575007425302077447712589550957937778424442426
617334727629299387668709205606050270810842907692932019128194
467627007.
Его шестнадцатиричная запись имеет ``менее случайный'' вид

FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1
29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD
EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245
E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED
EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381
FFFFFFFF FFFFFFFF.


Данное число построено Ричардом Шреппелем из университета штата Аризона, а его свойства описаны в работе [].

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

Next: 49783156431138-я попытка

Up: 6.2. Немного теории

Previous: Какой алгоритм выбрать?

Contents:



Указания и решения


Next: ...к задачам первой олимпиады

Up: 7. Олимпиады по криптографии

Previous: Задачи девятой олимпиады

Contents:



Условия задач олимпиад по математике и криптографии


Ниже приводятся задачи девяти олимпиад по криптографии и математике. Нумерация задач двойная: первая цифра - номер олимпиады, вторая - номер задачи в олимпиаде. Для решения задач не требуется специальных знаний. Все необходимые определения даны в условиях. Задачи рассчитаны на учащихся 9, 10 и 11 классов.

Next: Задачи первой олимпиады

Up: 7. Олимпиады по криптографии

Previous: 7.4. Многоалфавитные шифры замены

Contents:



Вместо введения


Next: Для чего криптографии нужен

Up: 6. Компьютер и криптография

Previous: 6. Компьютер и криптография

Contents:



Вместо заключения


Математическая теория криптографических протоколов развивается совместными усилиями ученых различных стран. Среди авторов работ, посвященных протоколам, встречаются имена математиков США и Израиля, Канады и Голландии, Италии и Японии, Франции и Германии, Дании и Венгрии. Этот список можно продолжить. И лишь наша замечательная математическая школа практически никаких заслуг в этой области не имеет. Будем надеяться, что в недалеком будущем ситуация изменится и не без участия кого-либо из наших читателей.

Next: Литература к главе 3

Up: 3. Криптографические протоколы

Previous: 3.7. За пределами стандартных

Contents:


Next: Полезные советы

Up: 6. Компьютер и криптография

Previous: Сколько дырок в вычислительных

Contents:



Как передать нужную информацию нужному


Как передать нужную информацию нужному адресату в тайне от других?
Каждый из читателей в разное время и с разными целями наверняка пытался решить для себя эту практическую задачу (для удобства дальнейших ссылок назовем ее ``задача ТП'', т. е. задача Тайной Передачи). Выбрав подходящее решение, он, скорее всего, повторил изобретение одного из способов скрытой передачи информации, которым уже не одна тысяча лет.
Размышляя над задачей ТП, нетрудно прийти к выводу, что есть три возможности.
1. Создать абсолютно надежный, недоступный для других канал связи между абонентами.
2. Использовать общедоступный канал связи, но скрыть сам факт передачи информации.
3. Использовать общедоступный канал связи, но передавать по нему нужную информацию в так преобразованном виде, чтобы восстановить ее мог только адресат.
Прокомментируем эти три возможности.
1. При современном уровне развития науки и техники сделать такой канал связи между удаленными абонентами для неоднократной передачи больших объемов информации практически нереально.
2. Разработкой средств и методов скрытия факта передачи сообщения занимается стеганография.
Первые следы стеганографических методов теряются в глубокой древности. Например, известен такой способ скрытия письменного сообщения: голову раба брили, на коже головы писали сообщение и после отрастания волос раба отправляли к адресату.
Из детективных произведений хорошо известны различные способы тайнописи между строк обычного, незащищаемого текста: от молока до сложных химических реактивов с последующей обработкой.
Также из детективов известен метод ``микроточки'': сообщение записывается с помощью современной техники на очень маленький носитель (микроточку), который пересылается с обычным письмом, например, под маркой или где-нибудь в другом, заранее обусловленном месте.
В настоящее время в связи с широким распространением компьютеров известно много тонких методов ``запрятывания'' защищаемой информации внутри больших объемов информации, хранящейся в компьютере. Наглядный пример запрятывания текстового файла в графический можно найти в Интернете1); он же приведен в журнале ``Компьютерра'', # 48 (225) от 1 декабря 1997 г., на стр. 62. (Следует отметить, что авторы статьи в журнале ошибочно относят стеганографию к криптографии. Конечно, с помощью стеганографии можно прятать и предварительно зашифрованные тексты, но, вообще говоря, стеганография и криптография - принципиально различные направления в теории и практике защиты информации.)

В теоретической криптографии существуют два основных подхода к определению стойкости криптосистем и криптографических протоколов (в дальнейшем мы будем также использовать общий термин - криптографические схемы): теоретико-информационный и теоретико-сложностной. Теоретико-информационный подход предполагает, что противник, атакующий криптографическую схему, не имеет даже теоретической возможности получить информацию, достаточную для осуществления своих целей. Классическим примером здесь может служить с одноразовыми ключами, абсолютно стойкий против пассивного противника.
Подавляющее большинство используемых на практике криптографических схем не обладает столь высокой стойкостью. Более того, обычно бывает несложно указать алгоритм, который выполняет стоящую перед противником задачу, но не практически, а в принципе. Рассмотрим следующий пример.
Пример 1. (Криптосистема с открытым ключом)  
полностью определяется тремя алгоритмами: генерации ключей, шифрования и дешифрования. Алгоритм генерации ключей
общедоступен; всякий желающий может подать ему на вход случайную строку надлежащей длины и получить пару ключей . Открытый ключ публикуется, а секретный ключ и случайная строка хранятся в секрете. Алгоритмы шифрования и дешифрования таковы, что если - пара ключей, сгенерированная алгоритмом , то для любого открытого текста . Для простоты изложения предполагаем, что открытый текст и криптограмма имеют одинаковую длину . Кроме того, считаем, что открытый текст, криптограмма и оба ключа являются строками в двоичном алфавите.

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




Математическая криптография возникла как наука о шифровании информации, т.е. как наука о криптосистемах. В классической шенноновской модели системы секретной связи имеются два полностью доверяющих друг другу участника, которым необходимо передавать между собой информацию, не предназначенную для третьих лиц. Такая информация называется конфиденциальной или секретной. Возникает задача обеспечения конфиденциальности, т.е. защиты секретной информации от внешнего противника. Эта задача, по крайней мере исторически, - первая задача криптографии. Она традиционно решается с помощью криптосистем.
Представим теперь себе следующую ситуацию. Имеются два абонента и сети связи, скажем, компьютерной сети.  - это банк, в котором у имеется счет и хочет переслать по сети в электронной форме платежное поручение перевести, например, 10 фантиков со своего счета на счет другого клиента . Нужна ли в данном случае криптографическая защита? Предлагаем читателю самостоятельно поразмышлять и убедиться, что такая защита и в самом деле необходима. Но здесь следует отметить следующий очень важный момент: у и нет никакой конфиденциальной информации. В самом деле, клиенты пересылают банку в качестве сообщений платежные поручения, содержание которых стандартно и общеизвестно. Для банка важно убедиться в том, что данное сообщение действительно исходит от , а последнему, в свою очередь, необходимо, чтобы никто не мог изменить сумму, указанную в платежном поручении, или просто послать поддельное поручение от его имени. Иными словами, требуется гарантия поступления сообщений из достоверного источника и в неискаженном виде. Такая гарантия называется обеспечением целостности информации и составляет вторую задачу криптографии.
Нетрудно видеть, что при пересылке платежных поручений в электронной форме возникает еще и совершенно иной тип угроз безопасности клиентов: всякий, кто перехватит сообщение от к , узнает, что получил от 10 фантиков. А что будет, если эта информация попадет в руки мафии? Возможно, кто-то из читателей скажет, что здесь как раз и требуется конфиденциальность. И будет неправ! На самом деле клиентам необходимо нечто, аналогичное свойству анонимности обычных бумажных денег. Хотя каждая бумажная купюра имеет уникальный номер, определить, кто ее использовал и в каких платежах, практически невозможно. Аналог этого свойства в криптографии называется неотслеживаемостью. Обеспечение неотслеживаемости - третья задача криптографии.



Вопрос ``как сосчитать?'' всегда сопутствовал теоретико-числовым исследованиям. Труды Евклида и Диофанта, Ферма и Эйлера, Гаусса, Чебышева и Эрмита содержат остроумные и весьма эффективные алгоритмы решения диофантовых уравнений, выяснения разрешимости сравнений, построения больших по тем временам простых чисел, нахождения наилучших приближений и т.д. Без преувеличения можно сказать, что вся теория чисел пронизана алгоритмами. В последние два десятилетия, благодаря в первую очередь запросам криптографии и широкому распространению ЭВМ, исследования по алгоритмическим вопросам теории чисел переживают период бурного и весьма плодотворного развития. Мы кратко затронем здесь лишь те алгоритмические аспекты теории чисел, которые связаны с криптографическими применениями.
Вычислительные машины и электронные средства связи проникли практически во все сферы человеческой деятельности. Немыслима без них и современная криптография. Шифрование и дешифрование текстов можно представлять себе как процессы переработки целых чисел при помощи ЭВМ, а способы, которыми выполняются эти операции, как некоторые функции, определенные на множестве целых чисел. Все это делает естественным появление в криптографии методов теории чисел. Кроме того, стойкость ряда современных криптосистем обосновывается только сложностью некоторых теоретико-числовых задач (см. []).
Но возможности ЭВМ имеют определенные границы. Приходится разбивать длинную цифровую последовательность на блоки ограниченной длины и шифровать каждый такой блок отдельно. Мы будем считать в дальнейшем, что все шифруемые целые числа неотрицательны и по величине меньше некоторого заданного (скажем, техническими ограничениями) числа . Таким же условиям будут удовлетворять и числа, получаемые в процессе шифрования. Это позволяет считать и те, и другие числа элементами кольца вычетов . Шифрующая функция при этом может рассматриваться как взаимнооднозначное отображение колец вычетов

а число представляет собой сообщение в зашифрованном виде.



Рассмотрим следующую, в наше время вполне реальную ситуацию. Два совладельца драгоценности хотят положить ее на хранение в сейф. Сейф современный, с цифровым замком на 16 цифр. Так как совладельцы не доверяют друг другу, то они хотят закрыть сейф таким образом, чтобы они могли открыть его вместе, но никак не порознь. Для этого они приглашают третье лицо, называемое дилером, которому они оба доверяют (например, потому что оно не получит больше доступ к сейфу). Дилер случайно выбирает 16 цифр в качестве ``ключа'', чтобы закрыть сейф, и затем сообщает первому совладельцу втайне от второго первые 8 цифр ``ключа'', а второму совладельцу втайне от первого - последние 8 цифр ``ключа''. Такой способ представляется с точки здравого смысла оптимальным, ведь каждый из совладельцев получил ``полключа'' и что может быть лучше?! Недостатком данного примера является то, что любой из совладельцев, оставшись наедине с сейфом, может за пару минут найти недостающие ``полключа'' с помощью несложного устройства, перебирающего ключи со скоростью 1МГц. Кажется, что единственный выход - в увеличении размера ``ключа'', скажем, вдвое. Но есть другой, математический выход, опровергающий (в данном случае - к счастью) соображения здравого смысла. А именно, дилер независимо выбирает две случайные последовательности по 16 цифр в каждой, сообщает каждому из совладельцев втайне от другого ``его'' последовательность, а в качестве ``ключа'', чтобы закрыть сейф, использует последовательность, полученную сложением по модулю 10 соответствующих цифр двух выбранных последовательностей. Довольно очевидно (и ниже мы это докажем), что для каждого из совладельцев все возможных ``ключей'' одинаково вероятны и остается только перебирать их, что потребует в среднем более полутора лет для устройства, перебирающего ключи со скоростью 100МГц.
И с математической, и с практической точки зрения неинтересно останавливаться на случае двух участников и следует рассмотреть общую ситуацию. Неформально говоря, ``схема, разделяющая секрет'' (СРС) позволяет ``распределить'' секрет между участниками таким образом, чтобы заранее заданные разрешенные множества участников могли однозначно восстановить секрет (совокупность этих множеств называется структурой доступа), а неразрешенные - не получали никакой дополнительной к имеющейся априорной информации о возможном значении секрета. СРС с последним свойством называются совершенными (и только они, как правило, рассматриваются в этой статье).



Если вы хотите передать свое текстовое сообщение (последовательность символов некоторого алфавита) адресату так, чтобы оно осталось тайным для посторонних лиц, то у вас есть, по крайней мере, две возможности. Вы можете попытаться скрыть сам факт передачи текста, то есть прибегнуть к методам , в арсенале которой - симпатические (невидимые) чернила, и тому подобные средства. Другая возможность заключается в попытке скрыть смысл сообщения от посторонних лиц, случайно или намеренно познакомившихся с передаваемым текстом. В этом случае вы можете прибегнуть к . Термин ``криптография'' происходит от двух греческих слов: ``криптос'' - тайна и ``графейн'' - писать, и означает тайнопись. ``Тайнопись'' как раз и подразумевает, что вы скрываете смысл своего сообщения.
Сообщение, которое вы хотите передать адресату, будем называть . Например, в задаче  (раздел ``Условия задач'') одним из открытых сообщений является фраза:

КОРАБЛИ ОТХОДЯТ ВЕЧЕРОМ
Для сохранения сообщения в тайне оно преобразуется криптографическими методами и только после этого передается адресату. Преобразованное сообщение будем называть шифрованным сообщением (или зашифрованным сообщением). Другое название зашифрованного сообщения - криптограмма (или ). В задаче  зашифрованное сообщение выглядит так:

ЮПЯТБНЩМСДТЛЖГПСГХСЦЦ
Зашифрованное сообщение не обязательно должно быть последовательностью букв, как в указанной выше задаче. Часто зашифрованное сообщение может представлять собой последовательность цифр или специальных знаков (например, ).
Процесс преобразования открытого сообщения в шифрованное будем называть или зашифрованием. Адресату заранее сообщается, как из шифрованного сообщения получить открытое. Этот процесс получения исходного сообщения называют .
При выборе правила шифрования надо стремиться к тому, чтобы посторонние лица, не знающие правила расшифрования, не смогли восстановить по криптограмме открытое сообщение. В этом случае вы скроете смысл сообщения и обеспечите ``тайнопись''.



Рассмотрим вопросы, связанные с ``теоретической секретностью'' систем. Насколько устойчива некоторая система, если шифровальщик противника не ограничен временем и обладает всеми необходимыми средствами для анализа криптограмм? Имеет ли криптограмма единственное решение (даже если для нахождения этого решения может потребоваться такой объем работ, что его практически нельзя будет выполнить), а если нет, то сколько она имеет приемлемых решений? Какой объем текста, зашифрованного в данной системе, нужно перехватить для того, чтобы решение стало единственным? Существуют ли секретные системы, в которых вообще нельзя найти единственного решения независимо от того, каков объем перехваченного зашифрованного текста? Существуют ли секретные системы, в которых противник не получает никакой информации, сколько бы он ни перехватывал зашифрованного текста? В анализе этих вопросов найдут широкое применение понятия энтропии, избыточности, а также и другие понятия, введенные в работе ``Математическая теория связи''1).
Next: 10. Совершенная секретность
Up: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ
Previous: Часть II. ТЕОРЕТИЧЕСКАЯ СЕКРЕТНОСТЬ
Contents:


Введение и краткое содержание


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

Наше изложение будет ограничено в нескольких отношениях. Во-первых, имеются три общих типа секретных систем: 1) , которые включают применение таких методов, как невидимые чернила, представление сообщения в форме безобидного текста или маскировки криптограммы, и другие методы, при помощи которых факт наличия сообщения скрывается от противника; 2) тайные системы (например, инвертирование речи), в которых для раскрытия сообщения требуется специальное оборудование; 3) ``собственно'' , где смысл сообщения скрывается при помощи шифра, кодаи т.д., но само существование сообщения не скрывается и предполагается, что противник обладает любым специальным оборудованием, необходимым для перехвата и записи переданных сигналов. Здесь будет рассмотрен только третий тип систем, так как системы маскировки представляют в основном психологическую проблему, а тайные системы -- техническую проблему.

Во-вторых, наше изложение будет ограничено случаем дискретной информации, где сообщение, которое должно быть зашифровано, состоит из последовательных дискретных символов, каждый из которых выбран из некоторого конечного множества. Эти символы могут быть буквами или словами некоторого языка, амплитудными уровнями ``квантованной'' речи или видеосигнала и т.д., но главное ударение будет сделано на случае букв.

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


определяется абстрактно как некоторое множество отображений одного пространства (множества возможных сообщений) в другое пространство (множество возможных криптограмм). Каждое конкретное отображение из этого множества соответствует способу шифрования при помощи конкретного ключа.
Предполагается, что отображения являются взаимнооднозначными, так что если известен ключ, то в результате процесса расшифровки возможен лишь единственный ответ.
Предполагается далее, что каждому ключу (и, следовательно, каждому отображению) соответствует некоторая априорная вероятность -- вероятность выбрать этот ключ. Аналогично каждому возможному сообщению соответствует априорная вероятность, определяемая задающим сообщение вероятностным процессом. Эти вероятности различных ключей и сообщений являются фактически априорными вероятностями для шифровальщика противника и характеризуют его априорные знания относительно интересующей его проблемы.
Чтобы использовать такую секретную систему, сначала выбирается некоторый и посылается в точку приема. Выбор ключа определяет конкретное отображение из множества отображений, образующих систему. Затем выбирается сообщение и с помощью отображения, соответствующего выбранному ключу, из этого сообщения формируется . Эта криптограмма передается в точку приема по некоторому каналу и может быть перехвачена . На приемном конце с помощью отображения, обратного выбранному, из криптограммы первоначальное сообщение.
Если противник перехватит криптограмму, он может с ее помощью сосчитать апостериорные вероятности различных возможных сообщений и ключей, которые могли быть использованы для составления такой криптограммы. Это множество апостериорных вероятностей образует его сведения о ключах и сообщениях после перехвата. ``Сведения'', таким образом, представляют собой некоторое множество предположений, которым приписаны вероятности. Вычисление апостериорных вероятностей является общей задачей расшифровки.
Проиллюстрируем эти понятия простым примером. В со случайным ключом имеется отображений, соответствующих способам, которыми мы можем заменить 26 различных букв. Все эти способы равновозможны, и поэтому каждый имеет априорную вероятность Если такой шифр применяется к ``нормативному английскому языку'' и предполагается, что шифровальщик противника не знает ничего об источнике сообщений, кроме того, что он создает английский текст, то априорными вероятностями различных сообщений из букв являются просто их относительные частоты в нормативном английском тексте.



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

Она представляет собой следующее. Сначала делается предварительный выбор, какая из систем или будет использоваться, причем система выбирается с вероятностью , а система с вероятностью . После этого выбранная система используется описанным выше способом.
Будет показано, что секретные системы с этими двумя операциями комбинирования образуют, по существу, ``линейную ассоциативную алгебру'' с единицей, -- алгебраический объект, подробно изучавшийся математиками.
Среди многих возможных секретных систем имеется один тип с многочисленными особыми свойствами. Этот тип назовем ``чистой'' системой. Система является чистой, если все ключи равновероятны и если для любых трех отображений , , из множества отображений данной системы произведение




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

Если и подобны, то между получающимися в результате применения этих систем множествами криптограмм можно установить взаимнооднозначное соответствие, приводящее к тем же самым апостериорным вероятностям. Такие две системы аналитически записываются одинаково.
Во второй части статьи рассматривается проблема ``теоретической секретности''. Насколько легко некоторая система поддается раскрытию при условии, что для анализа перехваченной криптограммы противник располагает неограниченным количеством времени и специалистов? Эта проблема тесно связана с вопросами связи при наличии шумов, и понятия энтропии и неопределенности, введенные в теории связи, находят прямое применение в этом разделе криптографии.
определяется следующими требованиями к системе. Требуется, чтобы апостериорные вероятности различных сообщений, полученные после перехвата противником данной криптограммы, были бы в точности равны априорным вероятностям тех же сообщений до перехвата. Покажем, что ``совершенная секретность'' возможна, но требует в случае конечного числа сообщений того жесамого числа возможных ключей. Если считать, что сообщение создается с данной ``скоростью'' (понятие скорости будет определено позже), то ключ должен создаваться с той же самой или с большей скоростью.



Если используется секретная система с конечным ключом и перехвачены букв криптограммы, то для противника будет существовать определенное множество сообщений с определенными вероятностями, которые могли бы создать эту криптограмму. С увеличением  это множество обычно сужается до тех пор, пока в конце концов не получится единственного ``решения'' криптограммы: одно сообщение с вероятностью, близкой к единице, а все остальные с вероятностями, практически равными нулю. В работе определяется величина , названная . Эта величина измеряет (в статистическомсмысле), насколько близка средняя криптограмма из букв к единственному решению, т.е. насколько неточно известно противнику истинное сообщение после перехвата криптограммы из букв. Далее выводятся различные свойства ненадежности, например: ненадежность ключа не возрастает с ростом . Эта ненадежность является теоретическим показателем секретности -- теоретическим, поскольку она позволяет противнику дешифрировать криптограмму лишь в том случае, если он обладает неограниченным запасом времени.
В этой же части определяется функция для некоторых идеализированных типов шифров, называемых случайными шифрами. С некоторыми видоизменениями эта функция может быть применена ко многим случаям, представляющим практический интерес. Это дает способ приближенного вычисления количества материала, который требуется перехватить, чтобы получить решение секретной системы.
Из подобного анализа следует, что для обычных языков и обычных типов шифров (но не кодов) это ``расстояние единственности'' равно приблизительно . Здесь  -- число, измеряющее ``объем'' пространства ключей. Если все ключи априори равновероятны, то равно логарифму числа возможных ключей. Вводимое число  -- это избыточность языка. Оно измеряет количество ``статистических ограничений'', налагаемых языком. Для простой подстановки со случайным ключом наше равно или приблизительно 20, а (в десятичных единицах на букву) для английского языка равно приблизительно 0,7. Таким образом, единственность решения достигается приблизительно при 30 буквах.



Для некоторых ``языков'' можно построить такие секретные системы с конечным ключом, в которых неопределенность не стремится к нулю при . В этом случае противник не получит единственного решения такого шифра, сколько бы материала он не перехватил, и у него будет оставаться много альтернатив с довольно большими вероятностями. Такие системы назовем идеальными системами. В любом языке можно аппроксимировать такую ситуацию, т.е. отсрочить приближение к нулю до сколь угодно больших . Однако такие системы имеют много недостатков, таких как сложность и чувствительность к ошибкам при передаче криптограммы.
Третья часть статьи посвящена ``практической секретности''. Две системы с одинаковым объемом ключа могут быть обе разрешимы единственным образом, когда перехвачено букв, но они могут значительно отличаться по количеству времени и усилий, затрачиваемых для получения решения. На основе анализа основных недостатков секретных систем предлагаются методы построения систем, для решения которых требуются большие затраты времени и сил. Наконец, рассматривается проблема несовместимости различных желательных качеств секретных систем.
Next: Часть I. МАТЕМАТИЧЕСКАЯ СТРУКТУРА СЕКРЕТНЫХ
Up: Приложение
Previous: Приложение
Contents:


Введение в криптографию


под общей редакцией В. В. Ященко 1)
www.cryptography.ru

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

Книга рассчитана на студентов-математиков и специалистов по информационной безопасности.

Авторский коллектив: В. В. Ященко (редактор, глава 1), Н. П. Варновский (глава 2,3),
Ю. В. Нестеренко (глава 4), Г. А. Кабатянский (глава 5),
П. Н. Девянин, В. Г. Проскурин, А. В. Черемушкин (глава 6),
П. А. Гырдымов, А. Ю. Зубов, А. В. Зязин, В. Н. Овчинников (глава 7).

Next:

Contents:



За пределами стандартных предположений. Конфиденциальная передача сообщений


``Ты умеешь считать? - спросила Белая Королева.- Сколько будет один плюс один плюс один плюс один плюс один плюс один плюс один плюс один плюс один плюс один?

- Я не знаю, - ответила Алиса. - Я сбилась со счета.

Она не умеет считать,- сказала Черная Королева.''

Л. Кэрролл. ``Алиса в зазеркалье''.

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

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

Задача конфиденциальной передачи сообщений состоит в следующем. Имеются два участника, Алиса и Боб, которые являются абонентами сети связи. Участники соединены проводами, по каждому из которых можно пересылать сообщения в обе стороны, независимо от того, что происходит с другими проводами. Никакой общей секретной информации у Алисы и Боба изначально нет. У Алисы имеется конфиденциальное сообщение , и задача состоит в том, чтобы его конфиденциальным же образом передать Бобу. Против участников действует активный противник, который может полностью контролировать не более проводов. Полный контроль означает, что противник перехватывает все сообщения, передаваемые по данному проводу, и может заменять их любыми другими сообщениями.


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

В предположении задача конфиденциальной передачи сообщений может быть решена с помощью следующего простого протокола.

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

Далее, пусть - большое простое число, n$" width="43" height="28" >. Алиса выбирает случайный полином степени над . Пусть . Идея состоит в том, чтобы передать Бобу в качестве одноразового ключа для шифра Вернама. При этом нужно обеспечить такую передачу, чтобы противник не мог узнать ничего о значении . Для этого Алиса использует пороговую схему разделения секрета, т.е. посылает значение по -му проводу. Пусть , - значение, которое Боб получил по -му проводу. Если все пар интерполируются полиномом степени , то передача успешна и Боб может вычислить ключ . Далее Алиса и Боб общаются по описанному выше открытому каналу. Если Боб получил ключ , то он уведомляет об этом Алису специальным сообщением. Алиса вычисляет и посылает Бобу криптограмму . Боб дешифрует криптограмму и получает сообщение . Если пары не интерполируются полиномом степени , то Боб посылает все эти пары Алисе, которая обнаружит хотя бы для одного , что . Ясно, что в этом случае провод контролируется противником. Алиса посылает Бобу список всех таких номеров , и соответствующие провода исключаются из работы. После этого Алиса и Боб повторяют весь протокол, используя оставшиеся провода. Ясно, что после не более повторений передача ключа будет успешной.




Данный протокол - простейший вариант протокола конфиденциальной передачи сообщений из работы Долева и др. []. В этой работе предложен значительно более эффективный протокол, который при том же предположении является доказуемо стойким против более сильного противника.

Если противник пассивный, т.е. он лишь подслушивает не более проводов, то задача конфиденциальной передачи сообщений решается совсем просто. Мы предлагаем читателю в качестве несложного упражнения самостоятельно сконструировать соответствующий протокол при t$" width="41" height="28" >.

Протокол конфиденциальной передачи сообщений является доказуемо стойким в предположении, что противнику не хватает ресурсов, чтобы контролировать хотя бы половину проводов, которыми соединены Алиса и Боб. Этот результат наводит на следующие размышления. Так называемый здравый смысл подсказывает, что для построения системы секретной связи целесообразно создать закрытую сеть связи, т.е. такую, доступ к которой сильно ограничен. Но, по-видимому, действительно надежное решение следует искать в прямо противоположном направлении: объединить все сети связи в единую открытую сеть с очень большим количеством соединений между каждой парой абонентов. Конечно, это - всего лишь теоретические рассуждения, относящиеся к математической модели реальных систем. Но сколько раз еще результаты, полученные в математической криптографии, как и в любых других научных дисциплинах, заставят нас усомниться в очевидности тех решений, которые подсказываются здравым смыслом.

Next: 3.8. Вместо заключения

Up: 3. Криптографические протоколы

Previous: 3.6. Поиграем в ``кубики''.

Contents:



Задачи четвертой олимпиады


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

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

Р П Т Е Ш А В Е С Л
О Я Т А Л - Ь З Т -
- У К Т - Я А Ь - С
Н П - Ь Е У - Ш Л С
Т И Ь З Ы Я Е М - О
- Е Ф - - Р О - С М

Криптограмма

12 2 24 5 3 21    6 29    28 2 20 18    20 21 5 10     27 17 2 11 2 16 -

19 2     27 5     8 29 12 31 22 2 16,     19 2     19 5     17 29 8 29 6 29 16:

8 2 19 19 29     10    19 29 14 19 29    29 19 10     2 24 2 11 2 16

10 14 18 21     17 2 20 2 28 29 16     21 29 28 6 29 16.

получена заменой букв на числа (от 1 до 32) так, что разным буквам соответствуют разные числа. Отдельные слова разделены несколькими пробелами, буквы - одним пробелом, знаки препинания сохранены. Буквы ``е'' и ``'' не различаются. Прочтите четверостишие В. Высоцкого.

``Шифровальный диск'' используется для зашифрования числовых сообщений. Он состоит из неподвижного диска и соосно вращающегося на нем диска меньшего диаметра. На обоих дисках нанесены цифры от 0 до 9, которые расположены в вершинах правильных 10-угольников, вписанных в диски.

Цифра на неподвижном диске зашифровывается в цифру подвижного диска, лежащую на том же радиусе, что и .


Для построения вписанного 10- угольника без транспортира надо уметь строить угол в . Попытайтесь вычислить с точностью до 0,1 значение какой-либо тригонометрической функции такого угла без таблиц и калькулятора.
Зашифрование фразы на латинском языке осуществлено в два этапа. На первом этапе каждая буква текста заменяется на следующую в алфавитном порядке (последняя Z заменяется на первую A). На втором этапе применяется шифр простой замены с неизвестным ключом. Его применение заключается в замене каждой буквы шифруемого текста буквой того же алфавита, при этом разные буквы заменяются разными буквами. Ключом такого шифра является таблица, в которой указано, какой буквой надо заменить каждую букву алфавита.
По данному шифртексту


OSZJX FXRE YOQJSZ RAYFJ
восстановите открытое сообщение, если известно, что для использованного (неизвестного) ключа результат шифрования не зависит от порядка выполнения указанных этапов для любого открытого сообщения. Пробелы в тексте разделяют слова.
Латинский алфавит состоит из следующих 24 букв:


A B C D E F G H I J L M N O P Q R S T U V X Y Z.
Для проверки телетайпа, печатающего буквами русского алфавита

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
передан набор из 9 слов, содержащий все 33 буквы алфавита. В результате неисправности телетайпа на приемном конце получены слова


ГЪЙ АЭЕ БПРК ЕЖЩЮ НМЬЧ СЫЛЗ ШДУ ЦХОТ ЯФВИ
Восстановите исходный текст, если известно, что характер неисправности таков, что каждая буква заменяется буквой, отстоящей от нее в указанном алфавите не дальше, чем на две буквы. Например, буква Б может перейти в одну из букв А, Б, В, Г.
Исходное сообщение из букв русского алфавита преобразуется в числовое сообщение заменой каждой его буквы числом по следующей таблице:


А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Для зашифрования полученного числового сообщения используется шифрующий отрезок последовательности



подходящей длины, начинающийся с .
При зашифровании каждое число числового сообщения складывается с соответствующим числом шифрующего отрезка. Затем вычисляется остаток от деления полученной суммы на 30, который по данной таблице заменяется буквой. Восстановите сообщение КЕНЗЭРЕ, если шифрующий отрезок взят из последовательности, у которой и
для любого натурального .
Чтобы запомнить периодически меняющийся пароль в ЭВМ, математики придумали следующий способ. При известном числе (например, номере месяца в году), пароль представляет собой первые шесть цифр наименьшего решения уравнения

(Число меньшей значности дополняется справа необходимым числом нулей.)
Решите такое уравнение при произвольном 0$" width="42" height="28" >.
Next: Задачи пятой олимпиады
Up: 7.5. Условия задач олимпиад
Previous: Задачи третьей олимпиады
Contents:


Задачи девятой олимпиады


Суммой двух букв назовeм букву, порядковый номер которой в алфавите имеет тот же остаток от деления на число букв в алфавите, что и сумма порядковых номеров исходных двух букв. Суммой двух буквенных последовательностей одинаковой длины назовем буквенную последовательность той же длины, полученную сложением букв исходных последовательностей, стоящих на одинаковых местах.

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

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

Некоторую последовательность из букв русского алфавита

А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я

раз прибавили по правилу задачи 9.1 к слову КРИПТОША. Получили слово АНАЛИТИК. Найдите эту последовательность. Какое наименьшее число раз надо прибавить ее к слову АНАЛИТИК, чтобы получить слово КРИПТОША?

Каждую букву исходного сообщения заменили ее двузначным порядковым номером в русском алфавите согласно таблице

А Б В Г Д Е Ж З И Й К Л М Н О П
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17
Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

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

317564404970017677550547850355.

Восстановите исходное сообщение.

Клетки квадрата пронумеровали так, что клетка в правом нижнем углу получила номер 1, а все остальные получили разные номера от 2 до 16. Оказалось, что суммы номеров клеток каждой строки, каждого столбца, а также каждой из двух диагоналей квадрата одинаковы (``магический'' квадрат). Клетки квадрата заполнили буквами некоторого сообщения так, что его первая буква попала в клетку с номером 1, вторая - в клетку с номером 2 и т.д. В результате построчного выписывания букв заполненного квадрата (слева направо и сверху вниз) получилась последовательность букв

<
Ы Р Е У С Т Е В Ь Т А Б Е В К П.
Восстановите магический квадрат и исходное сообщение.
Окружность радиуса 5 с центром в начале координат пересекает ось абсцисс в точках и . Укажите все возможные расположения на окружности точек , и , удовлетворяющие одновременно следующим четырем условиям:
(1) координаты точек , и  - целые числа;
(2) ордината точки меньше нуля, а ординаты точек и больше нуля;
(3) абсцисса точки меньше абсциссы точки ;
(4) сумма площадей частей круга, лежащих внутри углов и равна половине площади круга, ограниченного исходной окружностью.
Для всех значений параметра решите неравенство

Next: 7.6. Указания и решения
Up: 7.5. Условия задач олимпиад
Previous: Задачи восьмой олимпиады
Contents:


Задачи первой олимпиады


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

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

Найдите число различных ключей для произвольного четного числа .

В адрес олимпиады пришло зашифрованное сообщение:

Ф В М Е Ж Т И В Ф Ю

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

Для передачи информации от резидента Гарриваса в Нагонии только что внедренному разведчику был установлен следующий порядок.

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

Для передачи числа в условленном месте оставлялась равная этому числу денежная сумма.

На момент разработки операции в Нагонии имели хождение денежные купюры достоинством 1,3,7 и 10 бут (бут - денежная единица Нагонии). Однако в результате денежной реформы купюры достоинством 1 и 3 бут были изъяты из обращения.


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

Восстановите цифровые значения букв, при которых справедливы все указанные равенства, если разным буквам соответствуют различные цифры. Расставьте буквы в порядке возрастания их цифровых значений и получите искомый текст.
Одна фирма предложила устройство для автоматической проверки пароля. Паролем может быть любой непустой упорядоченный набор букв в алфавите . Будем обозначать такие наборы большими латинскими буквами. Устройство перерабатывает введенный в него набор в набор . Отображение держится в секрете, однако про него известно, что оно определено не для каждого набора букв и обладает следующими свойствами. Для любого набора букв
1) ;
2) ;
3) набор получается из набора выписыванием букв в обратном порядке.
Устройство признает предъявленный пароль верным, если . Например, трехбуквенный набор является верным паролем, так как
. Подберите верный пароль, состоящий более чем из трех букв.
Next: Задачи второй олимпиады
Up: 7.5. Условия задач олимпиад
Previous: 7.5. Условия задач олимпиад
Contents:


Задачи пятой олимпиады


Комбинация трех натуральных чисел, лежащих в диапазоне от 10 до 20 включительно, является отпирающей для кодового замка, если выполнено соотношение . Найдите все отпирающие комбинации для замка с

Сообщение было построчно записано в таблицу, имеющую 20 столбцов. При этом в каждую клетку таблицы записывалось по одной букве сообщения, пробелы между словами были опущены, а знаки препинания заменены на условные комбинации: точка - ТЧК, запятая - ЗПТ. Затем столбцы таблицы были некоторым образом переставлены, в результате чего был получен текст:

Я Н Л В К Р А Д О Е Т Е Р Г О М И З Я Е
Й Л Т А Л Ф Ы И П Е У И О О Г Е Д Б О Р
Ч Р Д Ч И Е С М О Н Д К Х И Н Т И К Е О
Н У Л А Е Р Е Б Ы Ы Е Е З И О Н Н Ы Ч Д
Ы Т Д О Е М П П Т Щ В А Н И П Т Я З С Л
И К С И - Т Ч Н О - - Е - Л У Л - Т - Ж

Прочтите исходное сообщение.

5.3. Из точки внутри треугольника на его стороны , , опущены перпендикуляры , , . Докажите, что .

Зашифрование сообщения состоит в замене букв исходного текста на пары цифр в соответствии с некоторой (известной только отправителю и получателю) таблицей, в которой разным буквам алфавита соответствуют разные пары цифр. Криптографу дали задание восстановить зашифрованный текст. В каком случае ему будет легче выполнить задание: если известно, что первое слово второй строки - ``термометр'' или что первое слово третьей строки - ``ремонт''? Обоснуйте свой ответ. (Предполагается, что таблица зашифрования криптографу неизвестна).

Решите уравнение:

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

ЙМЫВОТСЬЛКЪГВЦАЯЯ

УКМАПОЧСРКЩВЗАХ

ШМФЭОГЧСЙЪКФЬВЫЕАКК

соответствовало исходное сообщение МОСКВА. Попробуйте расшифровать три текста

ТПЕОИРВНТМОЛАРГЕИАНВИЛЕДНМТААГТДЬТКУБЧКГЕИШНЕИАЯРЯ

ЛСИЕМГОРТКРОМИТВАВКНОПКРАСЕОГНАЬЕП

РТПАИОМВСВТИЕОБПРОЕННИГЬКЕЕАМТАЛВТДЬСОУМЧШСЕОНШЬИАЯК

при условии, что двум из них соответствует одно и то же сообщение. Сообщениями являются известные крылатые фразы.

Next: Задачи шестой олимпиады

Up: 7.5. Условия задач олимпиад

Previous: Задачи четвертой олимпиады

Contents:



Задачи седьмой олимпиады


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

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

Известен список зашифрованных паролей:

4249188780319, 4245133784397, 5393511, 428540012393,

4262271910365, 4252370031465, 4245133784735

и два пароля 4208212275831, 4242592823026, имеющиеся в зашифрованном виде в этом списке. Можно ли определить какие-либо другие пароли? Если да, то восстановите их.

В результате перестановки букв сообщения получена криптограмма:

БТИПЧЬЛОЯЧЫЬТОТПУНТНОНЗЛЖАЧОЬОТУНИУХНИППОЛОЬЧОЕЛОЛС

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

Знаменитый математик Леонард Эйлер в 1759 г. нашел замкнутый маршрут обхода всех клеток шахматной доски ходом коня ровно по одному разу. Прочтите текст, вписанный в клетки шахматной доски по такому маршруту (см. рис. ). Начало текста в a4.

Рис. 12.

При 0$" width="42" height="28" >, 0$" width="40" height="29" >, 0$" width="40" height="28" > докажите неравенство:

\frac{1}{4}(a+b+c)^3. \end{displaymath}" width="250" height="38" >


Для рисования на большой прямоугольной доске используется мел с квадратным сечением со стороной 1 см. При движении мела стороны сечения всегда параллельны краям доски. Как начертить выпуклый многоугольник площадью 1 м с наименьшей площадью границы (площадь границы не входит в площадь многоугольника)?
Цифры 0,1,...,9 разбиты на несколько непересекающихся групп. Из цифр каждой группы составляются всевозможные числа, для записи каждого из которых все цифры группы используются ровно один раз (учитываются и записи, начинающиеся с нуля). Все полученные числа расположили в порядке возрастания и -ому числу поставили в соответствие -ую букву алфавита

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
Оказалось, что каждой букве соответствует число и каждому числу соответствует некоторая буква. Шифрование сообщения осуществляется заменой каждой буквы соответствующим ей числом. Если ненулевое число начинается с нуля, то при шифровании этот нуль не выписывается. Восстановите сообщение 873146507381 и укажите таблицу замены букв числами.
Next: Задачи восьмой олимпиады
Up: 7.5. Условия задач олимпиад
Previous: Задачи шестой олимпиады
Contents:


Задачи шестой олимпиады


В системе связи, состоящей из 1997 абонентов, каждый абонент связан ровно с другими. Определите все возможные значения .

Квадратная таблица размером

заполнена натуральными числами от 1 до 1997 так, что в каждой строке присутствуют все числа от 1 до 1997. Найдите сумму чисел, стоящих на диагонали, которая соединяет левый верхний и правый нижний углы таблицы, если заполнение таблицы симметрично относительно этой диагонали.

Текст

М И М О П Р А С Т Е Т И Р А С И С П Д
И С А Ф Е И И Б О Е Т К Ж Р Г Л Е О Л О
И Ш И С А Н Н С Й С А О О Л Т Л Е Я Т У
И Ц В Ы И П И Я Д П И Щ П Ь П С Е Ю Я Я

получен из исходного сообщения перестановкой его букв. Текст

У Щ Ф М Ш П Д Р Е Ц Ч Е Ш Ю Ш Ч Д А К Е
Ч М Д В К Ш Б Е Е Ч Д Ф Э П Й Щ Г Ш Ф Щ
Ц Е Ю Щ Ф П М Е Ч П М Е Р Щ М Е О Ф Ч Щ
Х Е Ш Р Т Г Д И Ф Р С Я Ы Л К Д Ф Ф Е Е

получен из того же исходного сообщения заменой каждой буквы на другую букву так, что разные буквы заменены разными, а одинаковые - одинаковыми. Восстановите исходное сообщение.

На каждой из трех осей установлено по одной вращающейся шестеренке и неподвижной стрелке. Шестеренки соединены последовательно. На первой шестеренке 33 зубца, на второй - 10, на третьей - 7. На каждом зубце первой шестеренки по часовой стрелке написано по одной букве русского языка в алфавитном порядке:

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ

На зубцах второй и третьей шестеренки в порядке возрастания по часовой стрелке написаны цифры от 0 до 9 и от 0 до 6 соответственно. Когда стрелка первой оси указывает на букву, стрелки двух других осей указывают на цифры.

Буквы сообщения шифруются последовательно. Зашифрование производится вращением первой шестеренки против часовой стрелки до первого попадания шифруемой буквы под стрелку. В этот момент последовательно выписываются цифры, на которые указывают вторая и третья стрелки. В начале шифрования стрелка 1-го колеса указывала на букву А, а стрелки 2-го и 3-го колес - на цифру 0.


а) зашифруйте слово О Л И М П И А Д А;
б) расшифруйте сообщение 2 4 8 0 9 2 8 3 9 1 1 2 1 1.
Цифры от 1 до 9 расположены на окружности в некотором неизвестном порядке. При зашифровании цифрового сообщения каждая отличная от 0 цифра заменяется на соседнюю с ней цифру на окружности по часовой стрелке, а при расшифровании - на соседнюю с ней цифру на окружности против часовой стрелки. Цифра 0 остается без изменения в обоих случаях.
Укажите условия, при которых порядок цифр на данной окружности можно однозначно восстановить по двум цифровым текстам - результатам расшифрования и зашифрования одного и того же цифрового текста с помощью данной окружности.
Докажите, что для каждого простого числа последовательность является периодической с периодом 2, если равно остатку от деления числа на 24 при всех .
Найдите все значения параметра , при которых уравнение

имеет ровно 1997 различных решений.
Next: Задачи седьмой олимпиады
Up: 7.5. Условия задач олимпиад
Previous: Задачи пятой олимпиады
Contents:


Задачи третьей олимпиады


Установите, можно ли создать проводную телефонную сеть связи, состоящую из 993 абонентов, каждый из которых был бы связан ровно с 99 другими.

Шифрпреобразование простой замены в алфавите

, состоящем из различных букв, заключается в замене каждой буквы шифруемого текста буквой того же алфавита, причем разные буквы заменяются разными. Ключом шифра простой замены называется таблица, в которой указано, какой буквой надо заменить каждую букву алфавита . Если слово СРОЧНО зашифровать простой заменой с помощью ключа:

А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я

Ч

Я Ю Э Ы Ь Щ Ш Ц Х Ф У Б Д Т З В Р П М Л К А И О Ж Е С Г Н

то получится слово ВЗДАБД. Зашифровав полученное слово с помощью того же ключа еще раз, получим слово ЮШЫЧЯЫ. Сколько всего различных слов можно получить, если указанный процесс шифрования продолжать неограниченно?

Сообщение, зашифрованное в пункте А шифром простой замены в алфавите из букв русского языка и знака пробела (-) между словами, передается в пункт Б отрезками по 12 символов. При передаче очередного отрезка сначала передаются символы, стоящие на четных местах в порядке возрастания их номеров, начиная со второго, а затем - символы, стоящие на нечетных местах (также в порядке возрастания их номеров), начиная с первого. В пункте B полученное шифрованное сообщение дополнительно шифруется с помощью некоторого другого шифра простой замены в том же алфавите, а затем таким же образом, как и из пункта А, передается в пункт В. По перехваченным в пункте В отрезкам:

С О - Г Ж Т П Н Б Л Ж О
Р С Т К Д К С П Х Е У Б
- Е - П Ф П У Б - Ю О Б
С П - Е О К Ж У У Л Ж Л
С М Ц Х Б Э К Г О Щ П Ы
У Л К Л - И К Н Т Л Ж Г

восстановите исходное сообщение, зная, что в одном из переданных отрезков зашифровано слово КРИПТОГРАФИЯ.

Дана последовательность чисел

в которой есть последняя цифра числа . Докажите, что эта последовательность периодическая и ее наименьший период равен 20.


Исходное сообщение, состоящее из букв русского алфавита и знака пробела (-) между словами, преобразуется в цифровое сообщение заменой каждого его символа парой цифр согласно следующей таблице:


А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я -
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

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

2339867216458160670617315588
Равносторонний треугольник разбит на четыре части так, как показано на рисунке, где и  - середины сторон и соответственно. Известно, что и . В каком отношении точки и делят сторону , если известно, что из этих частей можно составить квадрат?


Рис. 11.



Next: Задачи четвертой олимпиады
Up: 7.5. Условия задач олимпиад
Previous: Задачи второй олимпиады
Contents:


Задачи восьмой олимпиады


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

Рис. 13.

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

Сообщение, подлежащее зашифрованию, представляет собой цифровую последовательность, составленную из дат рождения 6 членов оргкомитета олимпиады. Каждая дата представлена в виде последовательности из 8 цифр, первые две из которых обозначают день,следующие две - месяц, а остальные - год. Например, дата рождения великого математика Л.Эйлера 4 апреля 1707 года представляется в виде последовательности 04041707. Для зашифрования сообщения строится ключевая последовательность длины 48. Для еепостроения все нечетные простые числа, меньшие 100, выписываются через запятую в таком порядке, что модуль разности любых двух соседних чисел есть та или иная степень числа 2. При этом каждое простое число выписано ровно один раз, а числа 3, 5 и 7 записаны в виде 03, 05 и 07 соответственно. Удалив запятые из записи этой последовательности, получим искомую ключевую последовательность.

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

<
150220454213266744305682533362327363924975709849
Определите даты рождения членов оргкомитета олимпиады.
Квадрат размера разбит на клетки размера . В начальный момент некоторые клетки окрашены в черный цвет, а остальные - в белый. По клеткам квадрата прыгает Криптоша. В момент попадания Криптоши в очередную клетку происходит изменение цвета на противоположный у всех тех клеток, расстояния от центров которых до центра клетки с Криптошей есть натуральные числа. После того как Криптоша побывал в каждой клетке квадрата ровно 1999 раз, квадрат оказался раскрашенным так, как показано на рисунке. Восстановите цвет всех клеток квадрата в начальный момент.


Рис. 14.


Для всех действительных чисел , решите уравнение

Разложите число на простые множители.
Next: Задачи девятой олимпиады
Up: 7.5. Условия задач олимпиад
Previous: Задачи седьмой олимпиады
Contents:


Задачи второй олимпиады


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

В наш адрес поступило сообщение, зашифрованное с помощью шифра ``Сцитала''. Однако ее автор, заботясь о том, чтобы строчки были ровные, во время письма проводил горизонтальные линии, которые остались на полоске в виде черточек между буквами. Угол наклона этих черточек к краю ленты равен , ширина полоски равна , а ширина каждой строки равна . Укажите, как, пользуясь имеющимися данными, прочитать текст.

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

Найдите исходное цифровое сообщение по шифрованному сообщению:

4 2 3 4 6 1 4 0 5 3 1 3

Рассмотрим преобразование цифрового текста, в котором каждая цифра заменяется остатком от деления значения многочлена

на число 10, где ,  - фиксированные натуральные числа.

Выясните, при каких значениях , указанное преобразованиеможет быть шифрпреобразованием (т.е. допускает однозначное расшифрование).

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


Докажите, что для любых числовых значений букв существует комбинация, открывающая замок.
Сообщение, записанное в алфавите

АБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ
зашифровывается при помощи последовательности букв этого же алфавита. Длина последовательности равна длине сообщения. Шифрование каждой буквы исходного сообщения состоит в сложении ее порядкового номера в алфавите с порядковым номером соответствующей буквы шифрующей последовательности и замене такой суммы на букву алфавита, порядковый номер которой имеет тот же остаток от деления на 30, что и эта сумма.
Восстановите два исходных сообщения, каждое из которых содержит слово КОРАБЛИ, если результат их зашифрования при помощи одной и той же шифрующей последовательности известен:

ЮПТЦАРГШАЛЖЖЕВЦЩЫРВУУ и ЮПЯТБНЩМСДТЛЖГПСГХСЦЦ
Буквы русского алфавита занумерованы в соответствии с таблицей:


А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ь Ы Э Ю Я
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Для зашифрования сообщения, состоящего из букв, выбирается ключ  - некоторая последовательность из букв приведенного выше алфавита. Зашифрование каждой буквы сообщения состоит в сложении ее номера в таблице с номером соответствующей буквы ключевой последовательности и замене полученной суммы на букву алфавита, номер которой имеет тот же остаток от деления на 30, что и эта сумма.
Прочтите шифрованное сообщение: РБЬНТСИТСРРЕЗОХ, если известно, что шифрующая последовательность не содержала никаких букв, кроме А, Б и В.
Next: Задачи третьей олимпиады
Up: 7.5. Условия задач олимпиад
Previous: Задачи первой олимпиады
Contents:


и криптографические методы все шире


За последние годы криптография и криптографические методы все шире входят в нашу жизнь и даже быт. Вот несколько примеров. Отправляя Email, мы в некоторых случаях отвечаем на вопрос меню: ``Нужен ли режим зашифрования?'' Владелец интеллектуальной банковской карточки, обращаясь через терминал к банку, вначале выполняет криптографический протокол аутентификации карточки. Пользователи сети Интернет наверняка знакомы с дискуссиями вокруг возможного принятия стандарта цифровой подписи для тех страниц, которые содержат ``критическую'' информацию (юридическую, прайс-листы и др.). С недавних пор пользователи сетей стали указывать после своей фамилии наряду с уже привычным ``Email ...'' и менее привычное - ``Отпечаток открытого ключа ...''.
С каждым днем таких примеров становится все больше. Именно новые практические приложения криптографии и являются одним из источников ее развития.

Next: 2. Криптография и теория
Up: 1. Основные понятия криптографии
Previous: 1.4. Новые направления
Contents:

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

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

обладающие групповой структурой. С их помощью удалось построить весьма эффективные алгоритмы разложения чисел на множители и проверки целых чисел на простоту. В отличие от мультипликативной группы порядок группы при одном и том же меняется в зависимости от целых параметров , . Это оказывается весьма существенным, например, при разложении чисел на множители. Мы отсылаем читателей за подробностями использования эллиптических кривых к статье [].
Next: Литература к главе 4
Up: 4. Алгоритмические проблемы теории
Previous: 4.8. Дискретное логарифмирование
Contents:


Ж.Верн, ``Путешествие к центру Земли''


В руки профессора Лиденброка попадает пергамент со следующей рукописью:

``Это - рунические письмена; знаки эти совершенно похожи на знаки манускрипта Снорре. Но ...что же они означают? - спрашивает профессор, - ...Ведь это все же древнеисландский язык, - бормотал он себе под нос''. Изучение рукописи привело профессора к выводу о том, что это зашифрованное сообщение. Для его прочтения профессор решил заменить буквы сообщения их аналогами в современном немецком алфавите: ``А теперь я буду диктовать тебе, - говорит он своему помощнику, - буквы нашего алфавита, соответствующие каждому из этих исландских знаков''. Он называл одну букву за другой, и таким образом последовательно составлялась таблица непостижимых слов:

m . r n l l s e s r e u e l s e e c J d e
s g t s s m f u n t e i e f n i e d r k e
k t , s a m n a t r a t e S S a o d r r n
e m t n a e I n u a e c t r r i l S a
A t v a a r . n s c r c i e a a b s
c c d r m i e e u t u l f r a n t u
d t , i a c o s e i b o K e d i i I

Можно было предположить, что таинственная запись сделана одним из обладателей книги, в которой находился пергамент. Не оставил ли он своего имени на какой-нибудь странице? На обороте второй страницы профессор обнаружил что-то вроде пятна, похожего на чернильную кляксу. Воспользовавшись лупой, он различил несколько наполовину стертых знаков, которые можно было восстановить. Получилась запись

которая читалась как ``арне сакнуссем'' - имя ученого XVI столетия, знаменитого алхимика!

Далее профессор рассуждал так: ``Документ содержит 132 буквы, 79 согласных и 53 гласных. Приблизительно такое же соотношение существует в южных языках, в то время как наречия севера бесконечно богаче согласными. Следовательно, мы имеем дело с одним из южных языков.'' ``...Сакнуссем, - продолжал профессор, - был ученый человек; поэтому раз он писал не на родном языке, то, разумеется, должен был отдавать предпочтение языку, общепринятому среди образованных умов XVI века, а именно - латинскому. Если я ошибаюсь, то можно будет испробовать испанский, французский, итальянский, греческий или еврейский. Но ученые XVI столетия писали обычно по-латински. Таким образом, я вправе признать не подлежащим сомнению, что это - латынь.''


``Всмотримся хорошенько, - сказал он, снова взяв исписанный листок. - Вот ряд из 132 букв, расположенных крайне беспорядочно. Вот слова, в которых встречаются только согласные, как, например, первое m.rnlls; в других, напротив, преобладают гласные, например, в пятом unteief, или в предпоследнем - oseibo. Очевидно, что эта группировка не случайна; она произведена автоматически, при помощи неизвестного нам соотношения, которое определило последовательность этих букв. Я считаю несомненным, что первоначальная фраза была написана правильно, но затем по какому-то принципу, который надо найти, подверглась преобразованию. Тот, кто владел бы ключом этого шифра, свободно прочел бы ее. Но что это за ключ?''

``При желании затемнить смысл фразы первое, что приходит на ум, как мне кажется, это написать слова в вертикальном направлении, а не в горизонтальном''. Проверяя эту гипотезу, он начал диктовать, называя сначала первые буквы каждого слова, потом вторые; он диктовал буквы в таком порядке:
messunkaSenrA.icefdoK.segnittamurtnece

rtserrette,rotaivsadua,ednecsedsadnelak

artniiiluJsiratracSarbmutabiledmekmeret

arcsilucoIsleffenSn I

С полученным текстом у профессора долго ничего не выходило. Это почти привело его в отчаяние. Однако ``...совершенно машинально я стал обмахиваться этим листком бумаги, так что лицевая и оборотная стороны листка попеременно представали перед моими глазами. ... Каково же было мое изумление, когда вдруг мне показалось, что передо мной промелькнули знакомые, совершенно ясные слова, латинские слова: craterem, terrestre!'' Дело в том, что читать этот текст нужно было не слева направо, как обычно, а наоборот! Таким образом, случай помог профессору найти ключ к решению задачи. Документ гласил следующее:

``In Sneffels Ioculis craterem kem delibat umbra Scartaris Julii intra calendas descende, audas viator, et terrestre centrum attinges. Kod feci. Arne Saknussem''.

В переводе это означало: ``Спустись в кратер Екуль Снайфедльс, который тень Скартариса ласкает перед июльскими календами, отважный странник, и ты достигнешь центра Земли. Это я совершил. Арне Сакнуссем''.

Next: 7.3. Шифры перестановки

Up: 7.2. Шифры замены

Previous: Э. По, ``Золотой жук''

Contents: