Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
kurs-release1.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
1.09 Mб
Скачать

5.2.1 Стандарт ассиметричного шифрования rsa

Самым распространенным алгоритмом асимметричного шифрования является RSA, названный по первым буквам имен его создателей (Rivest, Shamir, Adleman). Создатели данного алгоритма смогли эффективно воплотить на практике идею односторонних функций с секретом. Стойкость RSA базируется на сложности факторизации больших целых чисел.

В 1993 году RSA был опубликован в качестве стандарта (PKCS # 1: RSA Encryption Standard). На практике RSA может применяться как для зашифрования/расшифрования, так и для генерации/проверки электронно-цифровой подписи (ЭЦП).

5.2.1.1 Генерация ключей

Каждый участник информационного обмена генерирует пару ключей (открытый и секретный) в соответствие со следующими правилами:

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

Увеличение порядка чисел ведет к замедлению операции зашифрования/расшифрования;

С другой стороны увеличение порядка чисел p и q ведет к увеличению стойкости алгоритма.

Поэтому при выборе чисел следует руководствоваться практической необходимостью, так, например, при реализации RSA в интеллектуальных карточках с точки зрения скоростных параметров системы не следует выбирать слишком большие p и q в связи с ограниченными вычислительными возможностями, заложенными в интеллектуальных карточках. На практике, обычно рекомендуется выбирать эти числа порядка 150-200 десятичных знаков.

Вычисляется модуль системы n=pq и (n)=(p-1)(q-1) (функция Эйлера).

Выбирается достаточно большое число e удовлетворяющее условию 1<e<(n) и взаимно простое с (n).

Используя расширенный алгоритм Евклида вычисляется большое целое число d удовлетворяющее: ed=1 (mod (n)) 1<d<(n)

Таким образом, секретным ключом, использующимся для расшифрования является пара чисел (n, d), а открытым ключом для зашифрования является пара чисел (n,e). Открытый ключ помещается в общедоступный справочник. В соответствие с PKCS # 1 формат представления ключей имеет следующий вид:

RSAPublicKey := Sequence { modulus Integer, n/ модуль n / public Exponent Integer, e/ открытая экспонента зашифрования / }

Формат RSAPublicKey и RSAPrivateKey представлен в соответствие с ASN.1 (X.208 CCITT).

Секретный ключ имеет вид:

RSAPrivateKey := Sequence { version Version/ идентификатор версии, предназначен для совместимости с последующими версиями / modulus Integer, n/ модуль n / public Exponent Integer, e/ открытая экспонента зашифрования e / private Exponent Integer, d/ секретная экспонента расшифрования d / prime 1 Integer, p/ простое целое p / prime 2 Integer, q/ простое целое q / exponent1 Integer, d mod (p-1)/ данные экспоненты используются для обеспечения exponent 2 Integer, d mod (q-1) эффективности работы алгоритма / coefficient Integer, (inverse of q) mod p/ инверсия q (q-1(mod p), удовлетворяющая условию qq-1=1(mod p) / } Version := Integer

Зашифрование/расшифрование После выбора параметров системы (n, e, d) абонент готов к приему сообщений. Передача зашифрованных сообщений состоит из следующих шагов:

входное сообщение разбивается на блоки mi их размер определяется целым k соответствующего неравенству 10k-1<n<10k

вычисляется значение сi = mie mod n

значение сi, которое и является зашифрованным блоком сообщения посылается по открытым каналам передачи данных

Расшифрование состоит в вычислении значения mi=cidmod n.

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

cid mod n = mied mod n, учитывая что ed = 1 (mod (n)), получаем ed = 1+k(n), где k -целое число удовлетворяющее этому равенству. Поскольку mi(m)mod n является единичным элементом группы относительно операции умножения, данной группе принадлежит и элемент mi то: cid mod n=mimi(m) mod n = mi.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]