Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КЗИ-2003.19.11 крипто.doc
Скачиваний:
0
Добавлен:
10.02.2020
Размер:
49.77 Mб
Скачать

4.2. Алгоритм электронной цифровой подписи Эль Гамаля (egsa). Egsa (el Gamal Signature Algorithm).

Рассматриваемый алгоритм электронной цифровой подписи EGSA был разработан американским ученым арабского происхождения Тахиром Эль Гамалем (Taher El Gamal) в 1985 году. Надежность и устойчивость этого метода аутентификации электронных сообщений основана на методе одностороннего преобразования дискретных логарифмов в конечном поле.

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

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

Процесс алгоритмизации Эль Гамаля определяется следующим образом:

1. Случайным образом выбирается большое простое число Р и большое число G (в практической криптографии эти числа составляют Р ≈ 21024 ≈ 10308; G ≈ 2512 ≈ 10154). Условием ограничения является Р > G. Процесс реализации алгоритма дискретного логарифмирования в конечном поле для упрощения и детального рассмотрения его отдельных операций целесообразно рассмотреть на меньших числах в рамках разработанной автором обучающей системы по алгоритмизации процессов аутентификации электронных сообщений на основе цифровых подписей.

Для рассматриваемого примера принимается Р = 883; G = 784.

2. Задается случайным образом секретное число, которое принимается в качестве закрытого ключа системы индивидуальной абонентской аутентификации при условии, что это число должно быть меньше (Р-1), (х < Р-1). Для примера х = 612. Следовательно, закрытым (секретным) ключом абонента-отправителя будет КЗА = 612.

3. После определения закрытого ключа абонент-отправитель вычисляет открытый ключ КОА.

КОА = mod P

При заданных числовых значениях Р = 883; G = 784; КЗА = 612 значение открытого ключа абонента-отправителя определится как:

КОА = mod P = 784612 mod 883

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

КОА = 784612 mod 883 = 324 mod 883 → 324.

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

Рис. 9. Алгоритм возведения в степень по модулю при вычислении открытого ключа КОА.

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

Открытыми параметрами системы аутентификации являются:

Р – модуль системы (Р = 883), большое простое число;

G – большое целое число (G<P, G=784);

КОА – открытый ключ абонента-отправителя подписанных электронных сообщений (КОА=324).

Закрытым (секретным) параметром системы аутентификации электронных сообщений является закрытый (секретный) ключ абонента-отправителя КЗАЗА=612).

Абонент-отправитель передает открытые параметры P; G; КОА всем абонентам корпоративной информационной системы для установления подлинности передаваемых им электронных сообщений.

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

Действия абонента-отправителя по формированию ЭЦП исходного сообщения «М».

4. Абонент-отправитель формирует исходное сообщение «М» (в качестве примера выбрано слово «Криптон») и вычисляет значение функции хеширования h(M)B. В рассматриваемом примере h(M)B = 52 48 52 48 50 42 46 46 40 56 48 48 50 54 46 42 52 56 56 52 50 50 50 50 44 52 48 48 54 50 46 42.

5. Для того, чтобы сформировать цифровую подпись сообщения «М» абонент-отправитель случайным образом задает целое число «k» с учетом следующих ограничений:

1 < k < Р-1 и НОД (k; (Р-1)) = 1,

т.е. выбранное случайное целое число «k» и значение (Р-1) должны быть взаимно простыми числами. Для примера «k» выбирается равным 547 k=547; число «k» также никому не передается и является постоянным только лишь для подписываемого сообщения «М».

6. Для формирования электронной цифровой подписи производятся следующие вычисления:

6.1. Вычисляется число a = Gk mod P, которое постоянно для всех элементов криптограммы функции хеширования h(M)B исходного сообщения «М». Например, для слова «Криптон»:

a = Gк mod P = 784547 mod 883 = 141 mod 883 → 141.

6.2. Вычисляются с помощью закрытого (секретного) ключа абонента-отправителя КЗА элементы криптограммы функции хеширования h(M)B исходного сообщения «М», h(M)B → Сi → bi

Это вычисление выполняется на основе расширенного алгоритма Евклида для решения сложных сравнений вида a * X ≡ b mod P, которое отображается при вычислении элементов криптограммы хэш-функции h(M)B в уравнение вида:

mi = (KOA * a + k * bi) mod (P-1),

где: mi – элементы значения числового выражения функции хеширования h(M)B исходного сообщения «М»;

k – случайное целое число, выбранное для формирования ЭЦП исходного сообщения;

а – постоянное число для множества элементов криптограммы Ch(M) функции хеширования h(M)B исходного сообщения «М»;

bi – множество элементов) функции хеширования h(M)B исходного сообщения «М».

В полученном уравнении определяемыми неизвестными параметрами являются значения элементов bi функции хеширования h(M)B исходного сообщения «М».

Ci = bi = mod (P-1)

Для криптограммы хэш-значения сообщения «М» элементы криптограммы определяются как:

Ci = bi = mod 882

547 * bi = (mi – 86292) mod 882

Рассмотрим решение этого уравнения относительно bi с использованием .расширенного алгоритма Евклида для значения первого элемента хэш-функции сообщения «Криптон» m1 = 52:

547 * b1 ≡ (m1 – 86292) mod 882; 547* b1 ≡ (52 – 86292) mod 882;

547 * b1 ≡ - 86240 mod 882; 547 * b1≡- 686 mod 882; 547 * b1 ≡ 196 mod 882;

Откуда: b1 = 196 * 547-1 mod 882, так как Р – простое число и функция Эйлера известна, то b1 определяется как:

b1 = 196 * 547-1 mod 882 = 196 * 547φ(Р) – 1 mod 882 = 196 * 547881 mod 882 =

= 196*337 mod 882 = 66052 mod 882 = 784 mod 882 → 784.

Значения остальных элементов криптограммы хэш-функции b2 … b32 определяются аналогичным образом и соответственно равны:

bi → {b1, b2, … b32} → {784, 318, 784, 318, 110, 60, 526, 526, 268, 368, 318, 318, 110, 576, 526, 60, 784, 368, 368, 784, 110, 110, 110, 110, 734, 784, 318, 318, 576, 110, 526, 60.

Множество чисел, состоящее из компонентов «а» и «bi» представляют собой электронную цифровую подпись сообщения «М» («Криптон») в виде криптограммы:

ЭЦП → Ch(M) → {a, bi} → {141_784 141_318 141_784 141_318 141_110 141_60 141_526 141_526 141_268 141_368 141_318 141_318 141_110 141_576 141_526 141_60 141_784 141_368 141_368 141_784 141_110 141_110 141_110 141_110 141_734 141_784 141_318 141_318 141_576 141_110 141_526 141_60}.

Сообщение «М» и криптограмма хэш-функции Ch(M) передаются абоненту-получателю подписанного ЭЦП сообщения «М».

Действия абонента-получателя по аутентификации принятого электронного сообщения «М».

После приема подписанного сообщения «М» абонент-получатель должен проверить соответствует ли подпись ЭЦП → Ch(M) → {a, bi} принятому сообщению «М», т.е. убедится в достоверности принятого сообщения. Для чего абонент-получатель выполняет следующие операции:

7. Абонент-получатель производит вычисления значения чисел еще одного параметра аутентификации:

Ai = (KOAa * ) mod P

Где: КОА – открытый ключ абонента-отправителя, служащий для проверки ЭЦП и полученный от абонента отправителя. В рассматриваемо примере КОА = 324, следовательно, значение Аi для каждого элемента криптограммы хэш-функции принятого сообщения (ЭЦП) будет иметь вид:

Ai = (324141 * ) mod 883.

Для первого элемента криптограммы процесс дешифрования определится как:

А1 = (324141 * 141784) mod 883 = (734 * 462) mod 883 = 339108 mod 883 = 36.

Остальные значения параметра Ai определяются аналогичным образом. В совокупности множества значений Ai для принятой ЭЦП определяются как:

Ai → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.

8. Затем абонент-получатель вычисляет числовое значение функции хеширования принятого сообщения «М»:

h(M)В → { 52 48 52 48 50 42 46 46 40 56 48 48 50 54 46 42 52 56 56 52 50 50 50 50 44 52 48 48 54 50 46 42}.

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

Ai = mod P

Где: G – значение открытого параметра, полученного от абонента-отправителя (см. п.1 процесса алгоритмизации Эль Гамаля). В рассматриваемом примере G = 784. Таким образом, для рассматриваемого примера:

Ai = mod P = mod 883

Например, для вычисления значения A1 = 78452 mod 883 = 182805760 mod 883 = 36 mod 883 → 36.

Остальные значения Ai = mod P для элементов функции хеширования от 2 до 32 определяются аналогичным образом. В результате множество вычисленных элементов Ai = mod P определяется как:

Ai = mod P = mod 883 → {A1 A2 A3 … A32} → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.

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

Для рассматриваемого примера сравниваются элементы Ai и Ai

Ai → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.

Ai → {36 400 36 400 763 327 727 727 676 639 400 400 763 519 727 327 36 639 639 36 763 763 763 763 520 36 400 400 519 763 727 327 }.

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