Аффинная система подстановок Цезаря.

Символы алфавита Zm можно не только складывать по модулю m, но и умножать по этому модулю. Применяя одновременно операции сложения и умножения по модулю m над элементами множества Zm, можно получить систему подстановок, называемую аффинной системой подстановок Цезаря. Аффинная система – это одновременное сложение и умножение по mod m над элементами Zm.

Еa,b : Zm ® Zm

Еa,b : t ® Еa,b(t)

Еa,b(t) = (at + b)mod m;

a, b – целые числа, причем 0 < a, b < m: НОД(a, m) = 1.

Здесь буква, соответствующая t, заменяется на букву, соответствующую (at + b)mod m

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

Например, пусть m = 33, a = 5, b = 3. Тогда наименьший общий делитель НОД(5, 33) = 1, и мы получаем следующее соответствие между числовыми кодами букв:

t
5t+3
t
5t+3
t
5t+3

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

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

Исходное сообщение:

МОСКОВСКИЙ_ИНСТИТУТ_СТАЛИ_И_СПЛАВОВ,

будет выглядеть следующим образом:

ЮЗЦФЗНЦФКПЯКВЦЫКЫ_ЫЯЦЫГПКЯКЯЦМПГНЗН.

Здесь ключ – это пара чисел a, b.

Криптосистема Хилла.

Алгебраический метод, обобщающий аффинную подстановку Цезаря

Еa,b : Zm ® Zm,

Ea,b(t) = t® at + b(mod m)

для определения n-грамм, был сформулирован Лестером С. Хиллом.

Множество целых Zm, для которого определены операции сложения, вычитания и умножения по модулю m, является примером кольца. Кольцо R представляет собой алгебраическую систему в которой определены операции сложения, вычитания и умножения пар элементов. Эта алгебраическая система обладает рядом свойств:

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

• умножение и сложение удовлетворяют ассоциативному и дистрибутивному законам.

Мультипликативное обратное a-1 элемента a кольца может существовать не всегда. Например, если модуль m = 26, то значе­ния 2-1(mod 26) и 13-1(mod 26) не могут существовать.

Если модуль m является простым числом р, то существует обратная величина любого ненулевого элемента t из Zp (при m = р), поскольку значения

t (mod m), 2t (mod m), 3t (mod m), .... ,(p-1) t (mod m)

различаются, если 1 £ t £ p -1.

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

Множество всех n-грамм х = (х0, х,, х2,.... xn-1) с компонентами из кольца Zm образует векторное пространство Zm,n над кольцом Zm. Каждая n-грамма х называется вектором. В векторном про­странстве Zmn для векторов х определены операции сложения и вычитания по модулю n, а также скалярное умножение вектора на элемент t кольца Zm . Сложение и скалярное умножение являются операциями, удовлетворяющими коммутативному, ассоциативному и дистрибутивному законам. Вектор х является линейной комбинацией векторов

(i): 0 <i < L}, если

х = t0x(0) + t1x(1) +... + tL-1.,x(L-1)(mod m).

Линейное преобразование Т является отображением:

T : Zm,n ® Zm,n,, T : x ® y, y=T(x),

которое удовлетворяет условию линейности

T = (t´x + s´y)-t´Т(х) + s´Т(у) (mod m) для всех s, t в Zm и х, у в Zm п.

Линейное преобразование Т может быть представлено матрицей размером n´n вида

Аффинная система подстановок Цезаря. - student2.ru

причем Аффинная система подстановок Цезаря. - student2.ru .

Базисом для векторного пространства Аффинная система подстановок Цезаря. - student2.ru является набор векторов из {х(i) : 0 < i < L}, которые линейно независимы и порождают Аффинная система подстановок Цезаря. - student2.ru .Каждый базис для Аффинная система подстановок Цезаря. - student2.ru содержит n линейно независи­мых векторов Любой набор из n векторов, которые линейно независимы над Аффинная система подстановок Цезаря. - student2.ru является базисом.

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

Если векторы {х(i) 0 < i < n} линейно независимы над Аффинная система подстановок Цезаря. - student2.ru , тогда их образы {Т(х(i)) : 0 £ i < п} линейно независимы над Аффинная система подстановок Цезаря. - student2.ru только в том случае, если определитель матрицы Аффинная система подстановок Цезаря. - student2.ru , обозначаемый как det (Т), не делится на любое простое р, которое делит m. В этом случае преобразование Аффинная система подстановок Цезаря. - student2.ru называется обратимым (или невырожденным) линейным преобразованием, имеющим обратное преобразование Аффинная система подстановок Цезаря. - student2.ru , где l-единичная матрица. Кроме того, Аффинная система подстановок Цезаря. - student2.ru также является линейным преобразованием.

Например, когда m = 26 и матрица преобразования

Аффинная система подстановок Цезаря. - student2.ru Аффинная система подстановок Цезаря. - student2.ru ,

то определитель этой матрицы

det(T) = 9 = 1(mod 2),

det(T) = 9 = 9{mod 13).

Поэтому существует обратное преобразование Аффинная система подстановок Цезаря. - student2.ru . Нетрудно убедиться, что

Аффинная система подстановок Цезаря. - student2.ru

удовлетворяет соотношению Аффинная система подстановок Цезаря. - student2.ru .

Пусть Аффинная система подстановок Цезаря. - student2.ru является линейным преобразованием на Аффинная система подстановок Цезаря. - student2.ru с матрицей

Аффинная система подстановок Цезаря. - student2.ru

Используем это преобразование Аффинная система подстановок Цезаря. - student2.ru для определения биграммной подстановки в английском алфавите {ABCDEFGH..XYZ}. Сначала разобьем n-грамму открытого текста на биграммы, причем выберем n кратным 2. Например, 12-грамма PAYMOREMONEY делится на шесть биграмм:

PA YM OR EM ON EY

Затем в каждой биграмме открытого текста заменим каждую букву ее числовым эквивалентом из таблицы:

Аффинная система подстановок Цезаря. - student2.ru .

Преобразование биграмм Аффинная система подстановок Цезаря. - student2.ru открытого текста в биграммы Аффинная система подстановок Цезаря. - student2.ru , шифртекста осуществляется в соответствии с уравнением

Аффинная система подстановок Цезаря. - student2.ru Аффинная система подстановок Цезаря. - student2.ru

или

Аффинная система подстановок Цезаря. - student2.ru

где Аффинная система подстановок Цезаря. - student2.ru и Аффинная система подстановок Цезаря. - student2.ru – вектор столбцов биграмм шифртекста и открытого текста соответственно.

Получаем

Аффинная система подстановок Цезаря. - student2.ru ,

Аффинная система подстановок Цезаря. - student2.ru

Аффинная система подстановок Цезаря. - student2.ru

Аффинная система подстановок Цезаря. - student2.ru

Аффинная система подстановок Цезаря. - student2.ru

Аффинная система подстановок Цезаря. - student2.ru .

Заменяя в биграммах шифртекста числа на соответствующие буквы согласно таблицы, получаем 12-грамму шифртекста

ТЕ ЕЕ PJ WQ DP GY

Для расшифрования биграмм Аффинная система подстановок Цезаря. - student2.ru , шифртекста и восстановления биграмм Аффинная система подстановок Цезаря. - student2.ru открытого текста необходимо выполнить обратное преобразование Аффинная система подстановок Цезаря. - student2.ru согласно уравнению

Аффинная система подстановок Цезаря. - student2.ru

В рассмотренном примере матрицы преобразования имели размер 2x2 и шифровались биграммы (пары) букв Хотя буква Е может быть зашифрована по-разному в различных парах исходного сообщения одна и та же пара, например ЕМ будет шифроваться всегда одинаково на протяжении всего исходного текста.

Задание на лабораторную работу

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

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

Порядок выполнения работы

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

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

3. написать главную функцию, которая организует ввод/вывод исходного текста и по запросу пользователя шифрует исходный или дешифрует зашифрованный текст.

Оформление отчета

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

Контрольные вопросы

1. В чем заключается суть метода шифрования подстановкой?

2. Чем различаются между собой одноалфавитная и многоалфавитная подстановки?

3. Опишите достоинства аффинной системы подстановок Цезаря?

4. Каким образом формируются биграммы в криптосистеме Хилла?

5. Какое линейное преобразование применяется в криптосистеме Хилла?

Лабораторная работа №3

Шифрование данных методом гаммирования

в симметричных криптосистемах

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

Теоретическое введение

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

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

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

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

Датчики ПСЧ

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

а) Конгруэнтные датчики

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

Одним из хороших конгруэнтных генераторов является линейный конгруэнтный датчик ПСЧ. Он вырабатывает последовательности псевдослучайных чисел T(i), описываемые соотношением

T(i+1) = (A*T(i)+C) mod m,

где А и С - константы, Т(0) - исходная величина, выбранная в качестве порождающего числа. Очевидно, что эти три величины и образуют ключ.

Такой датчик ПСЧ генерирует псевдослучайные числа с определенным периодом повторения, зависящим от выбранных значений А и С. Значение m обычно устанавливается равным 2n , где n - длина машинного слова в битах. Датчик имеет максимальный период М до того, как генерируемая последовательность начнет повторяться. По причине, отмеченной ранее, необходимо выбирать числа А и С такие, чтобы период М был максимальным. Как показано Д. Кнутом, линейный конгруэнтный датчик ПСЧ имеет максимальную длину М тогда и только тогда, когда С - нечетное, и Аmod 4 = 1.

Для шифрования данных с помощью датчика ПСЧ может быть выбран ключ любого размера. Например, пусть ключ состоит из набора чисел x(j) размерностью b, где j=1, 2, ..., n. Тогда создаваемую гамму шифра G можно представить как объединение непересекающихся множеств H(j).

б) Датчики М-последовательностей

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

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

Строго это можно представить в виде следующих отношений:

r1:=r0 r2:=r1 ... rk-1:=rk-2

r0:=a0 r1 a1 r2 ... ak-2 rk-1

Гi:= rk-

Здесь r0 r1 ... rk-1 - k однобитных регистров, a0 a1 ... ak-1 - коэффициенты непpиводимого двоичного полинома степени k-1. Гi - i-е значение выходной гаммы.

Период М-последовательности, исходя из ее свойств равен 2k-1.

Другим важным свойством М-последовательности является объем ансамбля, т.е. количество различных М-последовательностей для заданного k. Эта характеристика приведена в таблице:

k
объем ансамбля

Очевидно, что такие объемы ансамблей последовательности неприемлемы.

Поэтому на практике часто используют последовательности Голда, образующиеся суммированием нескольких М-последовательностей. Объем ансамблей этих последовательностей на несколько порядков превосходят объемы ансамблей порождающих М-последовательности. Так, при k=10 ансамбль увеличивается от 1023 (М-последовательности) до 388000.

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

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

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

Задание на лабораторную работу

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

2. Используя алгоритм шифрования данных методом гаммирования с ПСП на основе М-последовательности, написать программу шифрования и дешифрования произвольного набора символов на любом языке программирования.

Порядок выполнения работы

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

2. функцию шифрования, в которую в качестве параметров передается ключ (очередное число ПСП) и символ (или строка символов) исходного текста.

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

4. главную функцию, которая организует ввод/вывод исходного текста и по запросу пользователя шифрует исходный или дешифрует зашифрованный текст.

Оформление отчета

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

Контрольные вопросы

1. Что понимают под гаммированием?

2. В чем состоит отличие между случайной и псевдослучайной последовательностями чисел?

3. В чем похожи моно и многоалфавитные системы шифрования и системы гаммирования?

4. Что такое период ПСП?

Лабораторная работа №4

Шифрование данных в асимметричной криптосистеме RSA

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

Теоретическое введение

Алгоритм RSA предложен в 1978 г. тремя авторами: Р. Райвестом, А. Шамиром и А. Адлеманом. Это первый полноценный алгоритм работы с открытым ключом, который может работать как в режиме шифрования данных, так и в режиме цифровой подписи.

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

В криптосистеме RSA открытый ключ КВ, секретный ключ kB, сообщение М и криптограмма С принадлежат множеству целых чисел

ZN={0,1,2,…,N-1}

где N – модуль:

N=P´Q

В данном случае P и Q – случайные большие простые числа. Для обеспечения максимальной безопасности выбирают P и Q равной длины и хранят в секрете.

Множество ZN с операциями сложения и умножения по модулю N образует арифметику по модулю N.

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

Аффинная система подстановок Цезаря. - student2.ru

где Аффинная система подстановок Цезаря. - student2.ru – функция Эйлера.

Функция Эйлера Аффинная система подстановок Цезаря. - student2.ru указывает количество положительных целых чисел в интервале от 1 до N, которые взаимно просты с N.

Второе из указанных условий означает, что открытый ключ КВ и функция Эйлера Аффинная система подстановок Цезаря. - student2.ru должны быть взаимно простыми.

Далее, используя расширенный алгоритм Евклида, вычисляют секретный ключ kB такой, что

Аффинная система подстановок Цезаря. - student2.ru

или

Аффинная система подстановок Цезаря. - student2.ru

Это можно осуществить, так как получатель сообщения В знает пару простых чисел P и Q и может легко найти Аффинная система подстановок Цезаря. - student2.ru . Заметим, что следует произвести проверку на взаимную простоту kB и KB.

Открытый ключ KB используется для шифрования сообщения, а секретный ключ kB – для расшифрования.

Шифрование определяет криптограмму С через пару (открытый ключ КВ, сообщение М) в соответствии со следующей формулой:

Аффинная система подстановок Цезаря. - student2.ru

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

Определение значения М по известным С, КВ и N практически не осуществимо при Аффинная система подстановок Цезаря. - student2.ru .

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

Аффинная система подстановок Цезаря. - student2.ru .

Подставляя в данную формулу значение для С, получаем:

Аффинная система подстановок Цезаря. - student2.ru

Величина Аффинная система подстановок Цезаря. - student2.ru имеет важное значение в теории Эйлера, которая утверждает, что если НОД(x,N)=1, то

Аффинная система подстановок Цезаря. - student2.ru

или в несколько более общей форме

Аффинная система подстановок Цезаря. - student2.ru .

Учитывая вышесказанное, получаем:

Аффинная система подстановок Цезаря. - student2.ru

Таким образом, если криптограмму

Аффинная система подстановок Цезаря. - student2.ru

возвести в степень kB, то в результате получим исходное открытое сообщение М, так как

Аффинная система подстановок Цезаря. - student2.ru

Таким образом, получатель В, создавая криптограмму С, защищает два параметра: секретный ключ kB, пару чисел (P, Q), произведение которых дает значение модуля N.

Противнику известны лишь значения КВ и N. Если бы он смог разложить число N на множители, то, узнав тройку чисел (P, Q, KB), вычислил значение Аффинная система подстановок Цезаря. - student2.ru и вычислил секретный ключ. Однако, разложение достаточно большого числа на множители вычислительно не осуществимо, что и определяет криптостойкость алгоритма RSA.

Для алгоритма RSA этап создания ключей состоит из следующих операций:

1. Выбираются два простых числа p и q

2. Вычисляется их произведение n=(p´q)

3. Выбирается произвольное число e (e<n), такое, что НОД(e,(p-1)(q-1))=1, то есть e должно быть взаимно простым с числом (p-1)(q-1).

4. Методом Евклида решается в целых числах уравнение e´d+(p-1)(q-1) ´y=1. Здесь неизвестными являются переменные d и y – метод Евклида как раз и находит множество пар (d,y), каждая из которых является решением уравнения в целых числах.

5. Два числа (e,n) – публикуются как открытый ключ.

6. Число d хранится в строжайшем секрете – это и есть закрытый ключ, который позволит читать все послания, зашифрованные с помощью пары чисел (e,n).

Задание на лабораторную работу

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

Порядок выполнения работы

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

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

3. написать главную функцию, которая организует ввод/вывод исходного текста и по запросу пользователя шифрует исходный или дешифрует зашифрованный текст.

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

Оформление отчета

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

Контрольные вопросы

1. Что понимают под однонаправленной функцией?

2. Какие параметры защищает криптосистема RSA?

3. Какие параметры криптосистемы RSA известны противнику?

4. При каких значениях параметров алгоритма криптосистема RSA станет абсолютно стойкой?

Лабораторная работа №5

Шифрование данных в асимметричных криптосистемах

по схеме Эль-Гамаля

Цель работы: изучить методы шифрования данных по схеме Эль-Гамаля и освоить их практическое применение.

Теоретическое введение

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

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

Для генерации пары: открытый ключ, секретный ключ, сначала выбирают некоторое большое простое число Р и некоторое большое целое число Q, причем Q<P. Эти два числа распространяются среди группы пользователей.

Затем выбирают случайное число X<P, которое является секретным ключом.

Далее вычисляется открытый ключ Y по формуле:

Y = QX mod P.

Для зашифровки сообщения М выбирают случайное целое число К так, что

1 < K < P-1, НОД (K, P-1 )=1

Затем вычисляют числа:

a = QK mod P; b = YK M mod P

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

Для расшифрования вычисляют Аффинная система подстановок Цезаря. - student2.ru (*)

Так как Аффинная система подстановок Цезаря. - student2.ru ,

Аффинная система подстановок Цезаря. - student2.ru

то соотношение (*) справедливо.

Пример: Для простоты возьмем небольшие числа. Пусть Р = 11, Q = 2, X = 8.

Вычисляем Y = QX mod P = 28 mod 11 = 256 mod 11 = 3

Итак, открытый ключ равен 3.

Пусть сообщение М = 5. Выберем некоторое случайное число К = 9. Убедимся, что НОД(К, Р-1) = 1. Действительно, НОД(9, 10) = 1. Вычисляем пару чисел (a, b).

a = QK mod P = 29 mod 11 = 512 mod 11 = 6;

b = YKM mod P = 39*5 mod 11 = 19683*5 mod 11 = 9.

Получаем шифртекст (a, b) = (6, 9).

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

Аффинная система подстановок Цезаря. - student2.ru

Это выражение можно представить в виде: Аффинная система подстановок Цезаря. - student2.ru или Аффинная система подстановок Цезаря. - student2.ru .

Решая данное сравнение, находим М = 5.

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

Задание на лабораторную работу

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

Порядок выполнения работы

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

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

3. написать главную функцию, которая организует ввод/вывод исходного текста и по запросу пользователя шифрует исходный или дешифрует зашифрованный текст.

4. для написания функций шифрования и дешифрования потребуется проверить два больших числа на взаимную простоту, используя алгоритм Евклида; вычислить число, обратное данному, в поле целых чисел, используя расширенный алгоритм Евклида для вычисления обратных величин; определить возведение в степень большого числа по модулю; решить сравнение вида a´x=b(mod n). Алгоритмы выполнения этих задач приведены в приложении.

Оформление отчета

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

Контрольные вопросы

1. Чем обусловлена безопасность схемы Эль-Гамаля?

2. Какие параметры защищает криптосистема Эль-Гамаля ?

3. Какие параметры криптосистемы Эль-Гамаля известны противнику?

4. Насколько отличаются по длине исходный текст и шифртекст в криптосистеме Эль-Гамаля?

Лабораторная работа №6

Алгоритм электронной цифровой подписи

Цель работы: изучить алгоритмы электронной цифровой подписи и освоить их практическое применение.

Теоретическое введение

Алгоритм цифровой подписи RSA

Первой и наиболее известной во всем мире системой ЭЦП стала система RSA, математическая схема которой была разработана в 1977 г в Массачусетском технологическом институте США.

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

N=P´Q

и значение функции Аффинная система подстановок Цезаря. - student2.ru

Далее отправитель вычисляет число Е из условий Аффинная система подстановок Цезаря. - student2.ru

и число D из условий

Аффинная система подстановок Цезаря. - student2.ru

Пара чисел (Е N) является открытым ключом. Эту пару чисел автор передает партнерам по переписке для проверки его цифровых подписей. Число D сохраняется автором как секретный ключ для подписывания.

Допустим, что отправитель хочет подписать сообщение M перед его отправкой. Сначала сообщение М (блок информации, файл, таблица) сжимают с помощью хэш-функции в целое число m.

m=h(M)

3aтем вычисляют цифровую подпись S под электронным документом М, используя хэш-значение m и секретный ключ D.

Аффинная система подстановок Цезаря. - student2.ru

Пара (M,S) предается партнеру-получателю как электронный документ М, подписанный цифровой подписью S, причем подпись S сформирована обладателем секретного ключа D.

После приема пары (M,S) получатель вычисляет хэш-значение сообщения М двумя разными способами. Прежде всего, он восстанавливает хэш-значение Аффинная система подстановок Цезаря. - student2.ru , применяя криптографическое преобразование подписи S с использованием открытого ключа Е:

Аффинная система подстановок Цезаря. - student2.ru

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

m=h(M)

Если соблюдается равенство вычисленных значении т.е.

Аффинная система подстановок Цезаря. - student2.ru

то получатель признает пару (М, S) подлинной. Доказано, что только обладатель секретного ключа D может сформировать цифровую подпись S по документу М, а определить секретное число D по открытому числу Е не легче, чем разложить модуль N на множители.

Алгоритм цифровой подписи Эль Гамаля (EGSA)

Название ЕGSA происходит от слов El Gamal Signature Algorihm (алгоритм цифровой подписи Эль Гамаля). Идея EGSA основана на том, что для обоснования практической невозможности фальсификации цифровой подписи может быть использована более сложная вычислительная задача, чем разложение на множители большого целого числа, – задача дискретного логарифмирования. Кроме того, Эль- Гамалю удалось избежать явной слабости алгоритма цифровой подписи RSA, связанного с возможностью подделки цифровой подписи под некоторыми сообщениями без определения секретного ключа.

Рассмотрим подробнее алгоритм цифровой подписи Эль-Гамаля. Для того чтобы генерировать пару ключей (открытый ключ -секретный ключ), сначала выбирают некоторое большое простое целое число Р и большое целое число G, причем G<Р.

Отправитель и получатель подписанного документа используют при вычислениях одинаковые большие целые числа Аффинная система подстановок Цезаря. - student2.ru и Аффинная система подстановок Цезаря. - student2.ru , которые не являются секретными.

Отправитель выбирает случайное целое число Х, 1<Х£(Р-1) и вычисляет

Аффинная система подстановок Цезаря. - student2.ru

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

Число X является секретным ключом отправителя для подписания документов и должно храниться в секрете.

Для того чтобы подписать сообщение М, сначала отправитель хэширует его с помощью хэш-функции h( ) в целое число m:

m=h(M), 1<m£(Р-1),

и генерирует случайное целое число К, 1<К<(Р-1), такое что К и (Р-1) являются взаимно простыми. Затем отправитель вычисляет целое число а

а = GK modP

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

m = X´a + К´b (mod (Р-1)).

Пара чисел (а,b) образует цифровую подпись S

S=(а,b),

проставляемую под документом М.

Тройка чисел (М,а,b) передается получателю в то время, как пара чисел (X,К) держится в секрете.

После приема подписанного сообщения (М,а,b) получатель должен проверить, соответствует ли подпись S=(а,b) сообщению М. Для этого получатель сначала вычисляет по принятому сообщению М число

m=h(M).

Затем получатель вычисляет значение

Аффинная система подстановок Цезаря. - student2.ru Аффинная система подстановок Цезаря. - student2.ru

и признает сообщение М подлинным, если и только если

Аффинная система подстановок Цезаря. - student2.ru

Иначе говоря, получатель проверяет справедливость соотношения

Аффинная система подстановок Цезаря. - student2.ru Аффинная система подстановок Цезаря. - student2.ru

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

Пример.Выберем числа Р = 11 G = 2 и секретный ключ Х=8. Вычисляем значение открытого ключа

Аффинная система подстановок Цезаря. - student2.ru

Предположим, что исходное сообщение М характеризуется хэш-значением m=5.

Для того чтобы вычислить цифровую подпись для сообщения М имеющего хэш-значение m=5, сначала выберем случайное целое число К=9. Убедимся, что числа К и (Р-1) являются взаимно простыми Действительно

НОД(9,10)=1.

Далее вычисляем элементы а и b подписи

Аффинная система подстановок Цезаря. - student2.ru

элемент b определяем, используя расширенный алгоритм Евклида:

m = X´a + К´b (mod (Р-1)),

При m=5, a=6, X=3, К=9, Р=11 получаем

5=(6´8+9´b)(mod10)
или 9´b=-43(mod10).

Решение: b=3. Цифровая подпись представ

Наши рекомендации