Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 26 - КРИПТОГРАФИЧЕСКИЕ И СТЕГАНОГРАФИЧЕС....doc
Скачиваний:
66
Добавлен:
23.12.2018
Размер:
802.82 Кб
Скачать

2. Принципы построения симметричных и ассиметричных криптосистем

2.1. Криптосистемы с секретным ключом

Б ольшое влияние на развитие криптографии оказали появившиеся в конце 40-х годов работы американского математика Клода Шеннона. В своей статье «Теория связи в секретных системах», опубликованной в 1949 г., Шенноон обобщил накопленный до него опыт разработки шифров и представил модель секретной связи в виде, показанном на рис. 2.1.

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

Очевидно, шифратор выполняет некоторую функциональную операцию:

С = f(M, K) = ЕК(М).

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

М = f -1(С,K) = ЕК -1(С).

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

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

Типичным и наиболее простым примером реализации абсолютно стойкого шифра является шифр одноразового блокнота, найденного в 1917 г. инженером Гилбертом Вернамом из АТ&Т. В этом шифре осуществляется побитовое сложение n-битового открытого текста и n-битового ключа:

ci = mi ki, i = 1,...,n.

Здесь m1mn двоичные разряды открытого текста; k1...kn двоичные разряды ключа; с1сn — шифрованный текст в двоичном коде. обозначает операцию сложения по модулю 2: 00=0, 01=1, 10=1, 11=0.

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

С К = (М К) К = М (К К) = М 0 = М.

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

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

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

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

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

  2. равенство длины ключа и длины открытого текста;

  3. однократность использования ключа.

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

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

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

  1. Шифры подстановки (замены).

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

Шифры замены являются простейшими и наиболее популярными шифрами. Типичными примерами являются шифр Цезаря, «цифирная азбука» Петра I и «пляшущие человечки» А.Конан-Дойла. Как видно из самого названия, шифр замены осуществляет преобразование путем замены букв или других «частей» открытого текста на аналогичные «части» шифрованного текста. Легко дать математическое описание шифра замены. Пусть Х и Y два алфавита (открытого и шифрованного текстов соответственно), состоящие из одинакового числа символов. Пусть также g: Х Y — взаимнооднозначное отображение Х в Y. Тогда шифр замены действует так: открытый текст х1х2хn преобразуется в шифрованный текст g(х1)g(х2)…g(хn).

Если в алфавит входит n символов, то общее количество ключей равно n! Так, при n=26 имеем 26!>1026. Это число очень велико. Достаточно сказать, что возраст нашей планеты 109 лет. Все это указывает на бесперспективность лобовой атаки на шифр замены, но это не значит, что он является надежным. Оказывается, что успешный криптоанализ возможен с помощью частотного метода. Частота символа в тексте равна количеству его вхождений в этот текст, деленная на общее количество символов в тексте. Для каждого языка справедлив следующий эмпирический факт:

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

Шифр сдвига (к которому, в частности относится шифр Цезаря) является частным случаем общего шифра замены на совокупности лишь n ключей, в котором нижний ряд является циклическим сдвигом верхнего ряда. Ключ такого типа полностью определяется длиной сдвига s, 0s<n (s и s+n дают одинаковый результат). Алгоритм шифрования заключается в следующем:

ci mi + s (mod n),

где ci и mi –соответственно буквы открытого текста и кодограммы.

Аналогично осуществляется дешифрирование:

mi ci + s (mod n).

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

Открытый текст и криптотекст записываются в одном и том же алфавите. Для букв х и у в этом алфавите обозначим их сумму х+у как результат циклического сдвига буквы х вправо в алфавите на количество позиций, равное номеру буквы у в алфавите. При этом считаем, что нумерация букв в алфавите начинается с нуля. Например, для русского алфавита имеем: А+А=А, Б+А=Б, В+Б=Г, Я+В=Б. Эта операция естественным образом задается таблицей Вижинера размерами nn (n – количество букв в алфавите), в которой буква х+у находится на пересечении строки, отвечающей букве х, и столбца, соответствующего букве у.

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

На рис. 2.2 приведена таблица Вижинера для русского алфавита, а также пример шифрования текста «НАЧАЛО ВОЙНЫ В КОНЦЕ ИЮНЯ. РАМЗАЙ». В качестве ключа используется слово «САЛЬЕРИ».

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

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

  1. определяется строка таблицы, соответствующая букве ключа;

  2. в этой строке ищется буква криптотекста;

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

Общая модель шифрования заменой может быть представлена в виде:

сi = mi + w mod(n–1),

где сi – буква зашифрованного текста; mi – буква открытого текста; w – целое число в диапазоне от 0 до (n–1); n – число букв используемого алфавита.

Если w фиксировано, то формула описывает моноалфавитную замену, если w выбирается из последовательности w1, w2, …, wn, то получится полиалфавитная замена с периодом n. Если в полиалфавитной замене n>m (где m – число букв шифруемого текста) и любая последовательность w1, w2, …, wn используется только один раз, то такой шифр является теоретически нераскрываемым, если, конечно, криптоаналитик противника не имеет доступа к исходному тексту.

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

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

Примерами шифров перестановки являются шифр «Сцитала» и шифр частокола. Обычно открытый текст разбивается на отрезки равной длины (блоки), и каждый блок шифруется независимо. Пусть, например, длина блока равна п и — взаимнооднозначное отображение множества {1, 2,..., n} в себя. Тогда шифр перестановки действует так: отрезок открытого текста х1х2хn преобразуется в отрезок шифрованного текста х(1)х(2)х(n).

Шифрование простой перестановкой осуществляется следующим образом:

  1. выбирается ключевое слово с неповторяющимися символами;

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

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

В качестве примера зашифруем сообщение: «БУДЬТЕ ОСТОРОЖНЫ С ПРЕДСТАВИТЕЛЕМ ФИРМЫ «ФЕНИКС»», используя ключ 58137462. В исходном тексте вместо пробелов используется буква . Рис. 2.3 иллюстрирует процесс шифрования.

Выписывая текст по колонкам и группируя символы по пять, получаем зашифрованный текст в виде: ДОВФ НОЫСЕ ЬРП ИИИЕЖ ЕЕМСБ СТМФ НДЛЫ ТОРТ РКУТС АЕ.

Дешифрирование выполняется в следующем порядке:

  1. подсчитать число знаков в зашифрованном тексте и разделить его на число знаков ключа;

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

  3. по строкам таблицы прочитать исходный текст.

Открытый текст, записанный рядами

Ключ

5

8

1

3

7

4

6

2

Б

У

Д

Ь

Т

Е

О

С

Т

О

Р

О

Ж

Н

Ы

С

П

Р

Е

Д

С

Т

А

В

И

Т

Е

Л

Е

М

Ф

И

Р

М

Ы

Ф

Е

Н

И

К

С

Рис. 2.3. Шифрование методом простой перестановки

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

В общем случае шифр перестановки с периодом l переставляет l букв в произвольном порядке, который определяется ключом. Ключ удобно задавать таблицей , которая показывает, что первая буква блока открытого текста занимает позицию i1 в соответствующем блоке криптотекста, вторая буква перемещается на позицию i2, и т.д. Например, при l=4 шифр перестановки с ключом преобразует открытый текст МАМАМЫЛАРАМУРАНО в криптотекст АМАМАЛЫМУМАРОНАР.

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

  1. Шифрование методом гаммирования.

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

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

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

cш = (mо + gг) mod n,

где cш, mо, gг – символы соответственно зашифрованного, исходного текста и гаммы.

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

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

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

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

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