Как и раньше, мы предполагаем, что алфавит А открытыx текстов, гаммы и шифртекстов представляет собой множество чисел Zn= {0,1,...,п–1} .
Пусть в распоряжении криптоаналитика оказались две криптограммы, полученные наложением одной и тойже гаммы на два разных открытых текста:
S1=T1+Г(mod n), S2 = Т2 + Г(mod n),
где
Рассмотрим возможности криптоаналитика по восстановлению исходных открытых текстов.
Прежде всего, можно найти позначную разность
S = S1 – S2 = T1 – Т2 (mod n).
Пусть S = {si}, i=1,2… . Тогда поставленная задача сводится к попытке подобрать пару открытых текстов, разность которых совпадает с известной последовательностью S . Будем в связи с этим говорить о разложении S на два составляющих открытых текста. В случае, когда данные тексты являются нормативными текстами, например, на русском, английском или другом языке, для решения последней задачи используется ряд подходов. Интуитивно понятно, что при достаточной длине текстов маловероятна возможность множественного представления данной последовательности S в виде разности T1 – T2. Как правило, такое разложение бывает единственным.
Один из таких подходов (хорошо известных из истории криптографии) связан с использованием некоторого запаса слов или словоформ, часто встречающихся в открытых текстах. Это могут быть, например, стандарты переписки, частые k-граммы и т. п.
Предположим сначала, что одно из вероятных слов встретилось в начале первого сообщения:
вероятное слово
В таком случае можно вычислить начало второго сообщения:
T2 =T1 – S.
Если l > 5, легко определить, является ли начало T2 читаемым" или нет. В первом случае нужно попытаться прочить начало T2 по смыслу. Во втором случае нужно сдвинуть начало вероятного слова в T1, и проделать то же самое.
Если удалось развить T2 до m знаков (т> l), то можно вычислить и соответствующие m –1 знаки, используя
T1 =T2 + S,
и попытаться, в свою очередь, развить по смыслу T1.
Продолжая этот процесс далее, мы частично или полностью восстановим оба текста или убедимся в том, что опробуемого вероятного слова данные тексты не содержат. В последнем случае следует попытаться ту же процедуру проделать для следующего вероятного слова.
Может оказаться так, что при опробовании некоторого слова удается восстановить лишь часть каждого из текстов, а дальнейшее развитие их по смыслу бесперспективно. В таком случае следует продолжить работу с другим вероятным словом.
Конечно, данный метод далеко не всегда приводит к успеху. Но нельзя пренебрегать шансом, который он дает.
Пример
Возьмем два текста на английском языке, содержащих наиболее часто встречающуюся триграмму THE:
T1 = THE APPLE, T2 = TELL THEM,
и зашифруем их одной и той же гаммой Г = ONETWOTHRE. При этом будем пользоваться числовыми значениями букв согласно следующей таблице:
А
В
С
D
E
F
G
H
I
J
К
L
M
N
Р
Q
R
S
Т
U
V
W
X
Y
Z
В результате зашифрования получаем:
T1
T2
Г
S1
S2
S
Предположим теперь, что триграмма THE находится в начале T1, тогда можно вычислить начало T2:
T1= T2+S=
Т
Н
Е
А
T2= T1– S=
Т
Е
L
L
Дальнейшие попытки продолжить по смыслу T1 или T2к успеху не приводят. Поэтому предположим, что T2 также содержит THE. С учетом полученного результата, мы получаем два варианта расположения триграммы THE в тексте T2. В первом из них триграмма THE расположена, начиная с пятой позиции, во втором – начиная с шестой позиции.
Рассмотрим первый вариант:
T2
Т
Е
L
L
Т
Н
Е
T1
Т
Н
Е
A
Р
Р
L
Теперь ясно, что T1 = THE APPLE, откуда получаем T2 = TELL THEM.
Идея другого способа разложения разности открытых текстов состоит в упорядочении возможных вариантов пар букв (ti, zi) по убыванию апостериорных вероятностей p(ti = v, z1 = v – u /si = и), и, v Î A, i = 1,2,... , построении для каждого i упорядоченных колонок, состоящих из таких пар, и попытке чтения (аналогичной изложенной выше) в колонках сразу двух открытых текстов. При этом (как и ранее) используются позначные модели рассматриваемых последовательностей и аналог формулы (9).
4.5.5. Криптоанализ шифра Виженера
Рассмотрим шифр модульного гаммирования с уравнением (1), для которого гамма является периодической последовательностью знаков алфавита. Как указывалось ранее, такая гамма обычно получалась периодическим повторением некоторого ключевого слова. Например, ключевое слово KEY дает гамму KEYKEYKEY... . Рассмотрим задачу вскрытия такого шифра по тексту одной криптограммы достаточной длины.
Пусть m– длина ключевого слова. Обычно криптоанализ шифра Виженера проводится в два этапа. На первом этапе определяется число m, на втором этапе – само ключевое слово.
Для определения числа mприменяется так называемый тест Казиски, названный в честь Ф. Казиски, применившего его в 1863 г. Тест основан на простом наблюдении того, что два одинаковых отрезка открытого текста, отстоящих друг от друга на расстоянии, кратном m, будут одинаково зашифрованы. В силу этого в шифртексте ищутся повторения длины, не меньшей трех, и расстояния между ними. Обратим внимание на то, что случайно такие одинаковые отрезки могут появиться в тексте с достаточно малой вероятностью.
Пусть d1,d2,... –найденные расстояния между повторениями и d – наибольший общий делитель этих чисел. Тогда m должно делить d. Чем больше повторений имеет текст, тем более вероятно, что m совпадает с d. Для уточнения значения m можно использовать так называемый индекс совпадения, введенный в практику У. Фридманом в 1920 г.
Для строки х = (х1,...,xm) длины т, составленной из букв алфавита А, индексом совпадения в х, обозначаемым Ic(х), будем называть вероятность того, что две случайно выбранные буквы из х совпадают.
Пусть А = {a1,...,аn}. Будем отождествлять буквы алфавита с числами, так что а1 º 0,..., an-1º n — 2, аn º n — 1.
Теорема.Индекс совпадения в х вычисляется по формуле
(14)
где fi– число вхождений буквы аi в х, i ÎZn.
Пусть х – строка осмысленного текста. Допустим, как и ранее, что буквы в х появляются на любом месте текста с соответствующими вероятностями р0,…,pn-1 независимо друг от друга, где рi– вероятность появления буквы i в осмысленном тексте, iÎZn. В такой модели открытого текста вероятность того, что две случайно выбранные буквы из х совпадают с iÎZn, равна рi2, следовательно,
(17)
Взяв за основу значения вероятностей рi, приведенные в Приложении 1 для открытых текстов, получим значения индексов совпадения для ряда европейских языков:
Таблица 6.Индексы совпадения европейских языков
Язык
Русский
Англ.
Франц.
Нем.
Итал.
Испан.
Ic(х)»
0,0529
0,0662
0,0778
0,0762
0,0738
0,0775
Предположим, что х – реализация независимых испытаний случайной величины, имеющей равномерное распределение на Zn. Тогда индекс совпадения вычисляется по формуле Ic(х)=1/n.
Вернемся к вопросу об определении числа m.
Пусть y1y2,…,ym – данный шифртекст. Выпишем его с периодом m:
Y1
Y2
…
Ym
y1
y2
...
ym
ym+1
ym+2
…
y2m
y2m+1
y2m+2
…
y3m
… … … …
и обозначим столбцы получившейся таблицы через Y1 ,Y2 ,…,Ym.
Если m – это истинная длина ключевого слова, то каждый столбец Yi, iÎ1,…, m , представляет собой участок открытого текста, зашифрованный простой заменой.
В силу сказанного выше (для английского языка) Ic(Yi)= 0,066 при любом i. С другой стороны, если m отлично от длины ключевого слова, то столбцы Yi будут более "случайными", поскольку они являются результатом зашифрования фрагментов открытого текста некоторым многоалфавитным шифром. Тогда Ic(Yi) будет ближе (для английского языка) к числу 1/26=0,038.
Заметная разница значений Ic(х) для осмысленных открытых текстов и случайных последовательностей букв (для английского языка – 0,066 и 0,038, для русского языка – 0,053 и 0,030) позволяет в большинстве случаев установить точное значение m .
Предположим, что на первом этапе мы нашли длину ключевого слова m. Рассмотрим теперь вопрос о нахождении самого ключевого слова. Для его нахождения можно использовать так называемый взаимный индекс совпадения.
Пусть х=(х1,...,хm),у=(у1,...,yl) – две строки букв алфавита А. Взаимным индексом совпадения в х и у, обозначаемым МIc(х,у), называется вероятность того, что случайно выбранная буква из х совпадает со случайно выбранной буквой из у.
Пусть fi– число вхождений буквы аi в х, gi– число вхождений буквы аi в y, iÎZn.
Теорема.Взаимный индекс совпадения в х и у вычисляется по формуле
Для этого напомним, что Ys является результатом зашифрования фрагмента открытого текста простой заменой букв алфавита (подстановкой) со сдвигом s. На основании этого получаем:
(20)
Заметим, что сумма в правой части последнего равенства зависит только от разности (si-sj)mod n, которую назовем относительным сдвигом Yi и Yj, поэтому Yi и Yj с относительными сдвигами s и п – s имеют одинаковые взаимные индексы совпадения. Приведем таблицу значений сумм (20) для английского языка:
Таблица 7. Взаимный индекс совпадения при сдвиге s
Сдвиг s
MIc(x,y)
0,066
0,039
0,032
0,034
0,044
0,033
0,036
0,039
0,034
0,034
0,038
0,045
0,039
0,043
Аналогичные таблицы можно получить и для других языков.
Обратим внимание на то, что ненулевые "сдвиги" дают взаимные индексы совпадения, изменяющиеся в пределах от 0,032 до 0,045, в то время как при нулевом сдвиге индекс М1с(х,у) близок к 0,066. Это наблюдение позволяет определить величины относительных сдвигов si– sj столбцов Yi и Yj .
Используя изложенный метод, мы сможем связать системой уравнений относительные сдвиги различных пар столбцов Yi и Yj .В результате останется 26 вариантов для ключевого слова, из которых можно выбрать наиболее предпочтительный вариант (если ключевое слово является осмысленным).
Следует отметить, что предложенный метод будет эффективным для не слишком больших значений m. Это объясняется тем, что для хороших приближений индексов совпадения требуются тексты достаточно большой длины.
Контрольные вопросы
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. Из каких простых замен «состоит» шифр гаммирования (как многоалфавитный шифр)?
Тема 5. Поточные шифры
5.1. Принципы построения поточных шифрсистем
В силу ряда естественных причин, связанных с простотой реализации и необходимостью достижения высоких скоростей шифрования, наибольшее распространение получили шифры, осуществляющие побуквенное зашифрование с помощью некоторого множества подстановочных преобразований алфавита открытых сообщений. Другими словами, речь идет об эндоморфных поточных многоалфавитных шифрах замены с множествами шифрвеличин и шифробозначений, совпадающими с алфавитом открытых сообщений. Далее рассматриваемые поточные шифры мы будем предполагать именно такими.
Для построения многоалфавитного поточного шифра замены необходимо указать его распределитель, определяющий порядок использования шифрующих преобразований, и сами эти преобразования, то есть простые замены, составляющие данный шифр замены. Применительно к рассматриваемому случаю правило зашифрования формулируется следующим образом.
Пусть А – алфавит открытых сообщений, совпадающий с множествами шифрвеличин и шифробозначений, {jа : А®А} – совокупность из r биекций множества А, х=а1,а2…,аl– произвольный открытый текст, kÎK – выбранный ключ зашифрования. Пусть
y(k,l)=а1(k)...аl(k), (aj(k)ÎNr, j=1,…,l) (5.1)
является распределителем, отвечающим данным значениям kÎK, lÎN , где y : К ´ N —> Nr. — некоторое отображение в множество Nr = {1,2,. ..,r} . Тогда правило зашифрования определяется формулой Еk(х)=у, где y=b1b2 …blи (5.2)
Таким образом, задача построения рассматриваемого шифра сводится к выбору множества шифрующих преобразований {jа} и отображения y, задающего распределитель.
В соответствии со сказанным выше, поточная шифрсистема представляется в виде двух основных блоков, отвечающих за выработку распределителя и собственно зашифрование очередного знака открытого текста. Первый блок вырабатывает последовательность номеров шифрующих преобразований, то есть фактически управляет порядком процедуры шифрования. Поэтому этот блок называют управляющим блоком, а вырабатываемую им последовательность номеров преобразований – управляющей последовательностью (или управляющей гаммой).
Второй блок в соответствии со знаком управляющей последовательности реализует собственно алгоритм зашифрования текущего знака. В связи с этим этот блок называют шифрующим блоком.
Под номером преобразования следует понимать некий набор символов, достаточный для однозначной идентификации преобразования и удобный с точки зрения практической реализации шифра. Например, номером преобразования может быть двоичный вектор заданной длины.
Достаточно, чтобы в каждом такте шифрующий блок обеспечивал возможность зашифрования лишь текущего знака aj открытого текста в соответствии с (5.2). При этом совсем не обязательно строить целиком подстановочное преобразование aj(k) на всем алфавите А.
Обычно управляющая гамма представляет собой псевдослучайную последовательность, удовлетворяющую некоторой рекуррентной зависимости. В общем случае рекуррентная последовательность (на заданном множестве А) определяется формулой
x(i +m)=f(х((i),..., x(i + т -1)), i > 0,
в которой f : А m —> А – некоторая функция от т переменных.
Для получения рекуррентных последовательностей используются различные датчики псевдослучайных чисел. Наиболее известным таким датчиком с хорошо изученными свойствами является линейный конгруэнтный генератор над конечным кольцом или полем. Закон его функционирования представляется в виде
х(i +1) = а • х(i) +b, i > 0.
Обобщением линейного конгруэнтного генератора являются конгруэнтные генераторы, определяемые формулой вида
x(i+1)=f(x(i)), i > 0, (5.3)
в которой f : A —> A – произвольное отображение, легко вычисляемое для любого аргумента. Достаточно полно исследованы свойства таких генераторов, задаваемых полиномиальными преобразованиями f .
Изучались также генераторы, определяемые неполиномиальной рекуррентной зависимостью. Примером является целочисленный генератор, основанный на ''методе середины квадратов", для которого вычисление х(i+1) с помощью (3) сводится к отбрасыванию определенного числа знаков из десятичной (или двоичной) записи числа х(i)2.
Исследования подобных, а также других генераторов, определяемых некими алгоритмическими правилами, показывают, что они уступают по своим (необходимым в криптографических приложениях) аналитическим и статистическим качествам рекуррентным последовательностям. Дело в том, что аналитическое представление преобразований позволяет проводить более глубокие исследования и строить последовательности с лучшими криптографическими качествами. В настоящее время большинство датчиков псевдослучайных чисел, в том числе реализованных в программных продуктах ведущих фирм, построены на основе регистров сдвига с линейными функциями обратной связи, или коротко – линейных регистров сдвига (ЛРС).
Вид алгоритмов, реализуемых шифрующими блоками поточных шифрсистем, может изменяться в широких пределах. При этом требования к свойствам шифрующего блока в значительной степени зависят от качества управляющей последовательности.
С целью усложнения задачи восстановления управляющей последовательности по виду применяемого шифрующего преобразования может быть использован способ построения шифрующего блока, при котором многим различным знакам управляющих последовательностей отвечают одинаковые шифрующие преобразования. В таком случае, даже если полностью известно шифрующее преобразование, криптоаналитик не сможет однозначно определить управляющую последовательность и тем самым упростить задачу нахождения ключей криптографического алгоритма.
Если множество шифрующих преобразований {jа} достаточно велико, то можно обеспечить стойкость шифрования даже при повторном использовании ключей. Для этого достаточно, чтобы в множестве {jа} содержались npeo6paзования, переводящие любую пару букв открытого текста в любую пару букв шифрованного текста. Тогда по паре текстов, зашифрованных на одном и том же ключе, нельзя получить информацию об открытых текстах, поскольку любой паре букв шифртекстов может соответствовать произвольная пара букв открытых текстов.
Следует отметить, что указанные качества шифрующего блока повышают криптографическую стойкость, но достигаются за счет избыточности числа простых замен, составляющих данный шифр замены. Действительно, если исключить возможность повторного использования ключей и обеспечить необходимые свойства управляющей последовательности, то можно ограничиться множеством из А подстановок {jа}, нижние строки которых образуют латинский квадрат. В этом случае мы приходим к введенному ранее шифру табличного гаммирования.
Сформулируем ряд требований, обычно предъявляем к блокам поточной шифрсистемы, нарушение которых приводит к появлению аналитических или статистических слабостей алгоритма шифрования, снижающих его стойкость.
Требования к управляющему блоку:
– период управляющей гаммы должен превышать максимально возможную длину открытых сообщений, подлежащих шифрованию;
– статистические свойства управляющей гаммы должны приближаться к свойствам случайной равновероятной последовательности;
– в управляющей гамме должны отсутствовать простые аналитические зависимости между близко расположенными знаками;
– криптографический алгоритм получения знаков управляющей гаммы должен обеспечивать высокую сложность определения секретного ключа.
Требование к шифрующему блоку:
– применение алгоритма шифрования должно носить универсальный характер и не зависеть от вида шифруемой информации.
Иногда выдвигается дополнительное требование:
– способ построения шифрующего блока должен обеспечивать криптографическую стойкость шифра при перекрытиях управляющей гаммы, в частности при повторном использовании ключей.
Заметим, что выполнение перечисленных требований является необходимым, но не достаточным условием криптографической стойкости поточного шифра.