Цифровая электронная подпись.
Процесс подписи документа выглядит следующим образом.
Для отправителя
1. строится хэш-функция h(M), идентифицирующая содержимое документа M.
2. Шифруется содержимое хэш-функции m закрытым ключом и помещается в то же сообщение, что и сам документ. Полученное сообщение пересылается по сети.
Для получателя
1. Строится собственный вариант хэш-функции h(M) подписанного документа M.
2. При помощи открытого ключа отправителя происходит расшифровка хэш-функции m, содержащейся в сообщении.
3. Происходит сравнение этих двух хэш-функций. Их совпадение гарантирует одновременно подлинность содержимого документа и его авторства.
В отличие от шифрования сообщения открытым ключом, для шифрования хэш-функции используется, а закрытый ключ отправителя. Таким образом, при шифровании сообщения удостоверяется лицо, которое будет читать данное сообщение, а при электронной подписи - лицо, пославшее документ.
Алгоритм цифровой подписи RSA
Первой и наиболее известной во всем мире конкретной системой ЭЦП стала система RSA, математическая схема которой была разработана в 1977 г. в Массачусетском технологическом институте США.
Алгоритм вычисления ключей подписывания электронных документов
1. Вычисляет два больших простых числа p и q,
2. Вычисляет их произведение n = p*q
3. Находит функцию Эйлера φ(n) = (p-1)(q-1).
4. Вычисляет число e из условий: e< φ(n), НОД (e, φ(n)) =1. пара (e,n)- является открытым ключом. Эту пару чисел автор передает партнерам по переписке для проверки его цифровых подписей.
5. Вычисляет число d из условий: d<n, e • d = 1 (mod φ(n)).
Пара чисел (d,n) является секретным ключом для подписывания.
Алгоритм вычисления ЭЦП документа:
1. Отправитель сжимает документ М с помощью хэш-функции h(M) в целое число m
m = h (M)
2. Вычисляет ЭЦП, под электронным документом M, используя m и секретный ключ (d,n)
S = md(mod n),
3. Документ М, и пара хэш- функция ,ЭЦП (M, S) отправляется получателю.
4. Получатель расшифровывает ЭЦП S на открытом ключе е отправителя.
m’=Se mod n.
5. Получатель вычисляет хеш-образ h(m) полученного сообщения M
m = h (M)
6. Проверяет равенство
h(M) = Se mod n.
В случае положительного результата проверки подпись принимается, в противном случае - отвергается.
Недостаток: Возможность подделки ЭЦП по некоторым сообщениям, без определения секретного ключа.
Алгоритм цифровой подписи Эль Гамаля (EGSA)
Идея EGSA основана на том, что для обоснования практической невозможности фальсификации цифровой подписи может быть использована задача дискретного логарифмирования.
Для реализации алгоритма участниками выбираются некоторые большие простые целые числа p(~1038 или ~21024) и g(~10154 или ~2512), g<p.
Алгоритм реализации для отправителя
1. Выбирается случайное целое число x, 1<x<(p-1), которое является секретным ключом для подписывания документов.
2. Вычисляется число y
y = Gx mod p,
которое является открытым ключом, и передается всем потенциальным получателям документов.
3. Определяется хэш-функция h(М) документа
m = h(М), 1<m (p-1),
4. Генерируется случайное целое число k, 1<k< (p -1), такое, что k и (p -1) являются взаимно простыми.
5.Вычисляется целое число а:
a = Gkmod p
6. Используя расширенный алгоритм Евклида, вычисляется c помощью секретного ключа x целое число b из уравнения
m = x • a + k • b ( mod (p-1)).
7. Электронный документ М, а также ЭЦП представленная парой (a,b) отправляются получателю.
Алгоритм реализации для отправителя
1. Получатель электронного документа (М, a,b) вычисляет по принятому сообщению M хэш-функцию
m = h(M),
2. Вычисляет значение А = ya ab (mod p)
3. Признает сообщение M подлинным, если, и только если выполняется условие А = gm (mod p). Или ya ab (mod p) = gm (mod p).
Пример.
Пусть p=11, g = 2 и секретный ключ x = 8, m = 5.
Вычисляем значение открытого ключа y = gx mod p = 28mod 11=3.
ЭЦП отправителя
Выберем случайное целое число к = 9, при этом к и (Р-1) являются взаимно простыми.
НОД(9,10) = 1.
Вычислим элементы а и b подписи а = gk mod p = 29 mod 11=6,
m = x • a + k • b ( mod (p-1)).
5 = (6*8 + 9* b)(mod 10) или 9 • b = -43(mod 10).
Решение: b = 3.
Цифровая подпись представляет собой пару: а = 6, b = 3.
Получатель
Вычисляет хэш-значение для сообщения p : m = 5.
Вычисляет два числа:
1) ya ab (mod p) = 36 • 63 (mod 11) = 10 (mod 11);
2) gm (mod p) = 25 (mod 11) = 10 (mod 11).
Так как эти два целых числа равны, принятое получателем сообщение признается подлинным.
Недостаток: по сравнению со схемой подписи RSA, длина цифровой подписи получается в 1,5 раза больше, что увеличивает время ее вычисления.