Электронная подпись

реклама
Алгоритмы шифрования данных (продолжение)
Пример шифрования с помощью алгоритма RSA
Открытый ключ: n произведение двух простых чисел p и q (p и q должны храниться в
секрете) e число, взаимно простое с (p-1)(q-1)
Закрытый ключ: d = e -1 mod ((p-1)(q-1))
Шифрование: c = m e mod n
Дешифрирование: m = c d mod n
Точно также сообщение может быть зашифровано с помощью d, а зашифровано с
помощью e, возможен любой выбор.
Короткий пример поможет пояснить работу алгоритма.
Если p = 47 и q = 71, то
n = pq = 3337
Ключ e не должен иметь общих множителей
(p-1)(q-1)= 46*70 =3220
Выберем (случайно) e равным 79. В этом случае
79*d = 1 (mod 3220); d = 79 -1 mod 3220 = 1019;
При вычислении этого числа использован расширенный алгоритм Эвклида
(Ext_Euclid.c). Опубликуем e и n, сохранив в секрете d. Отбросим p и q. Для
шифрования сообщения
m = 6882326879666683
сначала разделим его на маленькие блоки. Для нашего случая подойдут трехбуквенные
блоки. Сообщение разбивается на шесть блоков m i
ml = 688
m2 = 232
m3 = 687
m4 = 966
m5 = 668
m6 = 003
Первый блок шифруется как 688 79 mod 3337 = 1570 = cl
Выполняя те же операции для последующих блоков, создает шифротекст сообщения:
c = 1570 2756 2091 2276 2423 158
Для дешифрирование нужно выполнить такое же возведение в степень, используя ключ
дешифрирования 1019:
1570 1019 mod 3337 = 688 = ml
Аналогично восстанавливается оставшаяся часть сообщения.
Криптосистема Эль-Гамаля (ElGamal)
Данная система является альтернативой алгоритму RSA и при равном значении
ключа обеспечивает ту же криптостойкость. Метод Эль-Гамаля основан на проблеме
дискретного логарифма. Если возводить число в степень в конечном поле достаточно
легко, то восстановить аргумент по значению (то есть найти логарифм) довольно
трудно.
Для генерации пары ключей сначала выбирается простое число p и два случайных
числа, g и x, оба меньше p. Затем вычисляется
y = gk mod p
Открытым ключом являются y, g и p. И g, и p можно сделать общими для группы
пользователей. Закрытым ключом является x.
Для шифрования сообщения M сначала выбирается случайное число k, взаимно простое
с p - 1. Затем вычисляются
a = g k mod p
b = y k M mod p
Пара (a,b) является шифротекстом. Получаемый шифротекст в два раза длиннее
открытого текста. Для дешифрирования (a,b) вычисляется
M = b/a x mod p
Так как a x  g kx (mod p) и b/a x  y k M/a x  g xk M/ g kx = M (mod p), то все работает.
Или иначе ax mod p = yk mod p  (gk mod p)x mod p = (gx mod p)k mod p
Каждая подпись или шифрование EIGamal требует нового значения k, и это значение
должно быть выбрано случайным образом. Если когда-нибудь Злоумышленник
раскроет k, он сможет раскрыть закрытый ключ x. Если Злоумышленник когда-нибудь
сможет получить два сообщения, подписанные или зашифрованные с помощью одного
и того же k, то он сможет раскрыть x, даже не зная значение k.
Открытый ключ:
p простое число (может быть общим для группы пользователей)
g <p (может быть общим для группы пользователей)
y =g x mod p
Закрытый ключ:
x <p
Шифрование:
k выбирается случайным образом, взаимно простое с p-1
a (шифротекст) =g k mod p
b (шифротекст)= y k M mod p
Дешифрирование:
M (открытый текст) = b/a x mod p
Другой – более практичный вариант криптосистемы Эль-Гамаля
y = gx mod p
a = gk mod p
b = M  (yk mod p)
M = (ax mod p)  b,
где  операция сложения по модулю 2.
Электронная подпись
Электронной (цифровой) подписью называется присоединяемое к тексту его
криптографическое преобразование, которое позволяет при получении текста другим
пользователем проверить авторство и подлинность сообщения.
Рассмотрим потенциальные угрозы для противодействия которым используется
электронная подпись.
Отказ (ренегатство)
Модификация (переделка)
Подделка.(фабрикация сообщения получателем)
Активный перехват.(перехват сообщений в канале связи и их скрытая
модификация)
Маскировка (имитация). (посылка злоумышленником сообщения от имени
получателя)
Повтор.(перехваченное сообщение повторно передается как новое сообщение)
Несмотря на то, что принимаются всевозможные меры защиты от повторов,
именно на этот метод приходится большинство случаев незаконного снятия и траты денег в системах электронных платежей.
Наиболее действенным методом защиты от повтора являются
* использование имитовставок, (специальных кодовых сообщений посылаемых
после зашифрованных данных)
* учет входящих сообщений.
Путь создания электронной подписи был предложен У. Диффи и М. Хеллманом и
основывался, как и при открытом шифровании, на использовании пары связанных
между собой ключей (секретного и открытого). Их идея состояла в том, чтобы в
системе открытого шифрования поменять роли секретного и открытого ключей: ключ
подписывания сделать секретным, а ключ проверки - открытым.
Федеральный Закон "Об информации, информатизации и защите информации" (1995)
пункт 3 статьи 5. Юридическая сила документа может подтверждаться электронной
цифровой подписью. При этом "юридическая сила электронной цифровой подписи
признается при наличии в автоматизированной информационной системе программнотехнических средств, обеспечивающих идентификацию подписи установленного
режима их использования". Однако "право удостоверять идентичность электронной
цифровой подписи осуществляется на основании лицензии".
Пример электронной подписи на основе алгоритма RSA
Наиболее простым и распространенным инструментом электронной подписи является уже знакомый алгоритм RSA. Кроме этого существуют еще десятки других схем
цифровой подписи.
Предположим, что
d,p,q - секретные, а е, n=pq - открытые.
Замечания.
1. Разложение по n дает: (n)=(p-1)(q-1); зная (n) и e, можно найти d.
2. Из e и d можно найти кратность (n); кратность (n) позволяет определить
делители n.
Пусть DATA - передаваемое Отправителем получателю сообщение.
Отправитель подписывает DATA для Получателя при передаче :
Eeп,nп { Edо,nо {DATA}}.
При этом он использует:
* закрытый ключ Edо,nо Отправителя,
* открытый ключ Eeп,nп Получателя.
Получатель может читать это подписанное сообщение сначала при помощи
своего закрытого ключа Edп,nп с целью получения
Edо,nо {DATA} = Edп,nп {Eeп,nп {Edо,nо {DATA}}}
и затем - открытого ключа Eeоnо Отправителя для получения
DATA = Eeо,nо { Edо,nо {DATA}}.
Таким образом, у Получателя появляется сообщение DATA, посланное ему
Отправителем. Отправитель не может отказаться от своего сообщения, если он
признает, что секретный ключ известен только ему.
Нарушитель без знания секретного ключа не может ни сформировать, ни сделать
осмысленное изменение сообщения, передаваемого по линии связи.
Иногда нет необходимости зашифровывать передаваемое сообщение, но нужно
его скрепить электронной подписью. В этом случае текст шифруется закрытым ключом
отправителя и полученная цепочка символов прикрепляется к документу. Получатель с
помощью открытого ключа отправителя расшифровывает подпись и сверяет ее с
текстом (при этом длина сообщения удваивается).
DATA = Eeо,nо {Edо,nо {DATA}}
Использование хэш-функций для электронной подписи.
Как показывает практика, алгоритмы с открытым ключом очень неэффективны из-за
низкой скорости обработки большого объема данных. Для уменьшения времени на
генерацию и проверку подписи, а также для сокращения ее размера применяется
специальный механизм, называемый хэш-функцией (hash function). Хэш-функция
имеет исходные данные переменной длины и возвращает строку фиксированного
размера (иногда называемую дайджестом сообщения - MD), обычно (64)128 бит.
который является отображением подписываемого сообщения в строку фиксированной
длины, много меньшей размера самого сообщения. Вместо подписи самого документа
подписывается хэш-функция этого документа. Аналогичным образом проверяется
подпись не самого документа, а его хэш-функции.
Однонаправленная функция H(M) применяется к сообщению произвольной длины M и
возвращает значение фиксированной длины h.
h = H(M), где h имеет длину m
Свойства однонаправленных хэш-функций :
Зная M, легко вычислить h.
Зная H, трудно определить M, для которого H(M)=h.
Зная M, трудно определить другое сообщение, M', для которого H(M)= H(M').
MD2
MD2 - это другая 128-битовая однонаправленная хеш-функция, разработанная Роном
Ривестом . Безопасность MD2 опирается на случайную перестановку байтов. Эта
перестановка фиксирована и зависит от разрядов произвольной последовательности p.
S0, S1, S2, . . . , S255. Чтобы выполнить хеширование сообщения M:
(1) Дополнить сообщение i байтами, чтобы длина полученного сообщения была кратна
16 байтам.
(2) Добавьте к сообщению 16 байтов контрольной суммы.
(3) Проинициализировать 48-байтовый блок: X0, X1, X2, . . ., X47. Первые 16 байтов X
заполнить нулями, во вторые 16 байтов X скопируйте первые 16 байтов сообщения, а
третьи 16 байтов X должны быть равны XOR первых и вторых 16 байтов X.
(4) Вот как выглядит функция сжатия:
t=0
For j = 0 to 17
For k = 0 to 47
t = Xk XOR St
Xk= t
t = (t + j) mod 256
(5) Скопируйте во вторые 16 байтов X вторые 16 байтов сообщения, а третьи 16 байтов
X должны быть равны XOR первых и вторых 16 байтов X. Выполните этап (4).
Повторяйте этапы (5) и (4) по очереди для каждых 16 байтов сообщения.
(6) Выходом являются первые 16 байтов X.
Хотя в MD2 пока не было найдено слабых мест, она работает медленнее большинства
других предлагаемых хэш-функций.
Скачать