RSA — различия между версиями
(Метки: правка с мобильного устройства, правка из мобильной версии) |
(Метки: правка с мобильного устройства, правка из мобильной версии) |
||
| Строка 26: | Строка 26: | ||
# Выбирается целое число <tex>e</tex> (<tex>1 < e < \varphi(n)</tex>), [[взаимно простые числа|взаимно простое]] со значением функции <tex>\varphi(n)</tex>. Обычно в качестве <tex>e</tex> берут простые числа, содержащие небольшое количество единичных бит в двоичной записи. | # Выбирается целое число <tex>e</tex> (<tex>1 < e < \varphi(n)</tex>), [[взаимно простые числа|взаимно простое]] со значением функции <tex>\varphi(n)</tex>. Обычно в качестве <tex>e</tex> берут простые числа, содержащие небольшое количество единичных бит в двоичной записи. | ||
#* Число <tex>e</tex> называется открытой экспонентой (англ. ''public exponent'') | #* Число <tex>e</tex> называется открытой экспонентой (англ. ''public exponent'') | ||
| − | #* Время, необходимое для шифрования с использованием [[ | + | #* Время, необходимое для шифрования с использованием [[Быстрое_возведение_в_степень|быстрого возведения в степень]], пропорционально числу единичных бит в <tex>e</tex>. |
#* Слишком малые значения <tex>e</tex>, например 3, потенциально могут ослабить безопасность схемы RSA. | #* Слишком малые значения <tex>e</tex>, например 3, потенциально могут ослабить безопасность схемы RSA. | ||
| − | # Вычисляется число <tex>d</tex>, [[ | + | # Вычисляется число <tex>d</tex>, [[Мультипликативность_функции|мультипликативно]] обратное к числу <tex>e</tex> по модулю <tex>\varphi(n)</tex>, то есть число, удовлетворяющее сравнению: |
#: <tex>d\cdot e \equiv 1 \pmod{\varphi(n)}.</tex> | #: <tex>d\cdot e \equiv 1 \pmod{\varphi(n)}.</tex> | ||
| − | #* Число <tex>d</tex> называется секретной экспонентой. Обычно, оно вычисляется при помощи [[ | + | #* Число <tex>d</tex> называется секретной экспонентой. Обычно, оно вычисляется при помощи [[Наибольший_общий_делитель|расширенного алгоритма Евклида]]. |
# Пара <tex>\left\{ e, n \right\}</tex> публикуется в качестве открытого ключа RSA (англ. ''RSA public key''). | # Пара <tex>\left\{ e, n \right\}</tex> публикуется в качестве открытого ключа RSA (англ. ''RSA public key''). | ||
# Пара <tex>\left\{ d, n \right\}</tex> играет роль закрытого ключа RSA (англ. ''RSA private key'') и держится в секрете. | # Пара <tex>\left\{ d, n \right\}</tex> играет роль закрытого ключа RSA (англ. ''RSA private key'') и держится в секрете. | ||
| − | |||
| + | {{Определение | ||
| + | |definition='''Случайное простое число''' (англ. ''random prime numbers'') — в криптографии, простое число, содержащее в двоичной записи заданное количество битов <tex>k</tex>}} | ||
===Шифрование=== | ===Шифрование=== | ||
Версия 14:43, 1 мая 2018
| Определение: |
| RSA (аббревиатура от фамилий Rivest, Shamir и Adleman) — криптографический алгоритм с открытым ключом, основывающийся на вычислительной сложности задачи факторизации больших целых чисел. |
Криптосистема RSA стала первой системой, пригодной и для шифрования, и для цифровой подписи.
Содержание
Реализация
Алгоритм RSA включает в себя четыре этапа: генерация ключей, передача ключей, шифрование и расшифрование.
Криптографические системы с открытым ключом используют так называемые односторонние функции.
| Определение: |
| Односторонняя функция (англ. one-way function) — математическая функция, которая легко вычисляется для любого входного значения, но трудно найти аргумент по заданному значению функции. |
Под односторонностью понимается не теоретическая однонаправленность, а практическая невозможность вычислить обратное значение, используя современные вычислительные средства, за обозримый интервал времени.
В основу криптографической системы с открытым ключом RSA положена сложность задачи факторизации произведения двух больших простых чисел. Для шифрования используется операция возведения в степень по модулю большого числа. Для дешифрования (обратной операции) за разумное время необходимо уметь вычислять функцию Эйлера от данного большого числа, для чего необходимо знать разложение числа на простые множители.
| Определение: |
| Возведение в степень по модулю (англ. modular exponentiation) — это вычисление остатка от деления натурального числа (основание), возведенного в степень (показатель степени), на натуральное число (модуль). Обозначается: |
В криптографической системе с открытым ключом каждый участник располагает как открытым ключом (англ. public key), так и закрытым ключом (англ. private key). В криптографической системе RSA каждый ключ состоит из пары целых чисел. Каждый участник создаёт свой открытый и закрытый ключ самостоятельно. Закрытый ключ каждый из них держит в секрете, а открытые ключи можно сообщать кому угодно или даже публиковать их. Открытый и закрытый ключи каждого участника обмена сообщениями в криптосистеме RSA образуют «согласованную пару» в том смысле, что они являются взаимно обратными. То есть для любых допустимых пар открытого и закрытого ключей существуют соответствующие функции шифрования и расшифрования такие, что для любого сообщения , где — множество допустимых сообщений,
Создание открытого и секретного ключей
RSA-ключи генерируются следующим образом:
- Выбираются два различных случайных простых числа и заданного размера (например, бита каждое).
- Вычисляется их произведение , которое называется модулем.
- Вычисляется значение функции Эйлера от числа :
- Выбирается целое число (), взаимно простое со значением функции . Обычно в качестве берут простые числа, содержащие небольшое количество единичных бит в двоичной записи.
- Число называется открытой экспонентой (англ. public exponent)
- Время, необходимое для шифрования с использованием быстрого возведения в степень, пропорционально числу единичных бит в .
- Слишком малые значения , например 3, потенциально могут ослабить безопасность схемы RSA.
- Вычисляется число , мультипликативно обратное к числу по модулю , то есть число, удовлетворяющее сравнению:
- Число называется секретной экспонентой. Обычно, оно вычисляется при помощи расширенного алгоритма Евклида.
- Пара публикуется в качестве открытого ключа RSA (англ. RSA public key).
- Пара играет роль закрытого ключа RSA (англ. RSA private key) и держится в секрете.
| Определение: |
| Случайное простое число (англ. random prime numbers) — в криптографии, простое число, содержащее в двоичной записи заданное количество битов |