Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа? |
Криптография с использованием эллиптических кривых
Аналог алгоритма Диффи-Хеллмана обмена ключами
Обмен ключами с использованием эллиптических кривых может быть выполнен следующим образом. Сначала выбирается простое число и параметры a и b для уравнения эллиптической кривой. Это задает множество точек Ep (a,b). Затем в Ep (a,b) выбирается генерирующая точка G = (x1,y1). При выборе G важно, чтобы наименьшее значение n, при котором n x G = 0, оказалось очень большим простым числом. Параметры Ep (a,b) и G криптосистемы являются параметрами, известными всем участникам.
Обмен ключами между пользователями А и В производится по следующей схеме.
- Участник А выбирает целое число nA, меньшее n. Это число является закрытым ключом участника А. Затем участник А вычисляет открытый ключ PA = nA x G, который представляет собой некоторую точку на Ep (a,b).
- Точно так же участник В выбирает закрытый ключ nB и вычисляет открытый ключ PB.
- Участники обмениваются открытыми ключами, после чего вычисляют общий секретный ключ K
Участник А:
K = nA x PB
Участник В:
K = nВ x PА
Следует заметить, что общий секретный ключ представляет собой пару чисел. Если данный ключ предполагается использовать в качестве сеансового ключа для алгоритма симметричного шифрования, то из этой пары необходимо создать одно значение.
Алгоритм цифровой подписи на основе эллиптических кривых ECDSA
Алгоритм ECDSA (Elliptic Curve Digest Signature Algorithm) принят в качестве стандартов ANSI X9F1 и IEEE P1363.
Создание ключей:
- Выбирается эллиптическая кривая Ep (a,b). Число точек на ней должно делиться на большое целое n.
- Выбирается точка .
- Выбирается случайное число .
- Вычисляется Q = d x P.
- Закрытым ключом является d, открытым ключом - (E, P, n, Q).
Создание подписи:
- Выбирается случайное число .
- ВычисляетсяПроверяется, чтобы r не было равно нулю, так как в этом случае подпись не будет зависеть от закрытого ключа. Если r = 0, то выбирается другое случайное число k.
k x P = (x1, y1) и r = x1 (mod n).
- Вычисляется
k-1 mod n
- ВычисляетсяПроверяется, чтобы s не было равно нулю, так как в этом случае необходимого для проверки подписи числа s-1 mod n не существует. Если s = 0, то выбирается другое случайное число k.
s = k-1 (Н(M) + dr) (mod n)
- Подписью для сообщения М является пара чисел (r,s).
Проверка подписи:
- Проверить, что целые числа r и s принадлежат диапазону чисел [0, n-1]. В противном случае результат проверки отрицательный, и подпись отвергается.
- Вычислить w = s-1 (mod n) и H(M)
- Вычислить
u1 = H(M) w (mod n) u2 = rw (mod n)
- Вычислить
u1P + u2Q = (x0, y0) v = x0 (mod n)
- Подпись верна в том и только том случае, когда v = r
Шифрование/дешифрование с использованием эллиптических кривых
Рассмотрим самый простой подход к шифрованию/дешифрованию с использованием эллиптических кривых. Задача состоит в том, чтобы зашифровать сообщение М, которое может быть представлено в виде точки на эллиптической кривой Pm (x,y).
Как и в случае обмена ключом, в системе шифрования/дешифрования в качестве параметров рассматривается эллиптическая кривая Ep (a,b) и точка G на ней. Участник B выбирает закрытый ключ nB и вычисляет открытый ключ PB = nB x G. Чтобы зашифровать сообщение Pm используется открытый ключ получателя B PB. Участник А выбирает случайное целое положительное число k и вычисляет зашифрованное сообщение Cm, являющееся точкой на эллиптической кривой.
Cm = {k x G, Pm + k x PB}
Чтобы дешифровать сообщение, участник В умножает первую координату точки на свой закрытый ключ и вычитает результат из второй координаты:
Pm + k x PB - nB x (k x G) = Pm + k x (nB x G) - nB x (k x G) = Pm
Участник А зашифровал сообщение Pm добавлением к нему kxPB. Никто не знает значения k, поэтому, хотя PB и является открытым ключом, никто не знает k x PB. Противнику для восстановления сообщения придется вычислить k, зная G и k x G. Сделать это будет нелегко.
Получатель также не знает k, но ему в качестве подсказки посылается k x G. Умножив k x G на свой закрытый ключ, получатель получит значение, которое было добавлено отправителем к незашифрованному сообщению. Тем самым получатель, не зная k, но имея свой закрытый ключ, может восстановить незашифрованное сообщение.