Использование алгебраических систем в симметричных криптосистемах



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

Шифр Цезаря, также известный, как шифр сдвига, код Цезаря или сдвиг Цезаря – один из самых простых и наиболее широко известных методов шифрования.

Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее его в алфавите. Например, в шифре со сдвигом 3 в русском языке буква А была бы заменена на Г, Б на Д, и так далее.

Если сопоставить каждому символу алфавита его порядковый номер (нумеруя с 0), то шифрование и дешифрование можно выразить формулами модульной арифметики:

y  (

где x – символ открытого текста, y – символ шифрованного текста, m – мощность алфавита, b – ключ.

   С точки зрения математики шифр Цезаря является частным случаем аффинного шифра. В аффинном шифре каждой букве алфавита, состоящего из m символов, ставится в соответствие число из множества {0,…,m -1}. Затем при помощи модульной арифметики для каждого числа, соответствующего букве исходного алфавита, вычисляется новое число, которое заменит старое в шифротексте. Функция шифрования для каждой буквы следующая:

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

где – обратное к числу a по модулю m.

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

Пример 1. Составить таблицу зашифрования для аффинного шифра с ключом a =13, b =7 и зашифровать слово шифр.

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

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

 

а Б в г д е Ж з и к л М н о П
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
7 20 3 16 29 12 25 8 21 4 17 0 13 26 9
з Х г с я н Ы и ц д т А о ь К

 

р С т у ф х Ц ч ш щ ы Ь э ю Я
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
22 5 18 1 14 27 10 23 6 19 2 15 28 11 24
ч Е у б п э П ш ж ф в Р ю м Щ

 

Тогда для слова шифр шифртекстом будет слово жцпч.

 

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

Так как аффинный шифр является шифром замены, то он обладает всеми уязвимостями этого класса шифров.

В случае шифрования сообщений на русском языке (то есть m = 33) существует 627 нетривиальных аффинных шифров, не учитывая 33 тривиальных шифра Цезаря. Это число легко посчитать, зная, что существует всего 20 чисел взаимно простых с 33 и меньших 33 (а это и есть возможные значения a). Каждому значению могут соответствовать 33 разных дополнительных сдвига (значение b); то есть всего существует 660 возможных ключей. Аналогично, для сообщений на английском языке (то есть m = 26) всего существует 312 возможных ключей. Такое ограниченное количество ключей приводит к тому, что система не является криптостойкой. Основная уязвимость шифра заключается в том, что криптоаналитик может выяснить путем полного перебора соответствие между двумя любыми буквами исходного текста и шифротекста.

 

ШифрХилла – шифр, похожий на аффинный шифр, но при этом вместо элементов a и b в формуле шифрования используются матрицы A и B. Лестер С. Хилл изобрел этот шифр в 1929, и это был первый шифр, который позволял на практике оперировать более чем с тремя символами одновременно.

Каждой букве алфавита так же, как и в аффинном шифре, сначала сопоставляется число. Для латинского алфавита часто используется простейшая схема: A = 0, B =1, ..., Z = 25, но это не является существенным свойством шифра. Блок из n букв рассматривается как n-мерный вектор и умножается на n × n матрицу по модулю 26, затем к полученному вектору прибавляют матрицу B . (Если в качестве основания модуля используется число большее 26, то можно использовать другую числовую схему для сопоставления буквам чисел и добавить пробелы и знаки пунктуации.) Две матрицы являются ключом шифра. Матрица A должна быть обратима, чтобы была возможна операция расшифрования.

Вот формулы для зашифрования и расшифрования текста:

                   

(для векторов X и Y будем считать, что X Y ( mod m ), еслиу векторов X и Y сравнимы по модулю m соответствующие координаты).

Пример 2. Зашифровать слово шифр шифром Хилла с ключом A = , B = . Найти ключ для расшифрования этого шифра.

Зададим соответствие между буквами русского языка и элементами кольца классов вычетов по модулю 30 так, как в примере 1. Слово шифр при этом превратится в вектор X = (23, 8, 19, 15).

Умножим матрицу A на матрицу X :

 

Тогда Y = (6,21,29,18). Поэтому шифртекстом является слово жцяу.

Найдем обратную матрицу для матрицы A, это будет матрица A =

Поэтому формула расшифрования следующая:

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

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

В шифре Хилла в качестве основания модуля обычно выбирают простое число. Например, в более удобном варианте шифра Хилла в русском алфавите берут число символов 29 или 31.

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


Дата добавления: 2019-02-12; просмотров: 298; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!