Асимметричные системы шифрования. Криптосистема rsa
1 АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
Введение
Одним из обширных классов криптографических систем являются так называемые асимметричные или двухключевые системы с открытым ключом. Эти системы характеризуются тем, что для шифрования и дешифрования используются разные ключи. Криптография с открытым ключом возникла в связи с необходимостью слудующих двух проблем:
- Проблема рассылки ключей. Симметричнае криптоситемы требуют наличия специального защищенного канала для передачи секретного ключа. Кроме того, при общении N пользователей необходимо пересылать N^2/2 ключей. При нарушении конфиденциальности компьютера одного пользователся злоумышленник получает доступ сразу ко всем его ключам и может начать от его имени рассылать сообщения всем адресатам, с которыми этот пользователь состоял в переписке.
- Проблема подписи, т.е. проверки подлинности автора сообщения.
Криптографическая система с открытым ключом (или Асимметричное шифрование, Асимметричный шифр) — система шифрования и/или электронной цифровой подписи (ЭЦП), при которой открытый ключ передаётся по открытому (то есть незащищённому, доступному для наблюдения) каналу, и используется для проверки ЭЦП и для шифрования сообщения. Для генерации ЭЦП и для расшифрования сообщения используется секретный ключ. Криптографические системы с открытым ключом в настоящее время широко применяются в различных сетевых протоколах.
Идея криптографии с открытым ключом очень тесно связана с идеей односторонних функций, то есть таких функций f(x), что по известному x довольно просто найти значение f(x), тогда как определение x из f(x) сложно в смысле теории.
Но сама односторонняя функция бесполезна в применении: ею можно зашифровать сообщение, но расшифровать нельзя. Поэтому криптография с открытым ключом использует односторонние функции с лазейкой. Лазейка — это некий секрет, который помогает расшифровать. То есть существует такой y, что зная f(x) и y, можно вычислить x. К примеру, если разобрать часы на множество составных частей, то очень сложно собрать вновь работающие часы. Но если есть инструкция по сборке (лазейка), то можно легко решить эту проблему.
Алгоритмы криптосистемы с открытым ключом можно использовать:
- Как самостоятельные средства для защиты передаваемой и хранимой информации
- Как средства распределения ключей. Обычно с помощью алгоритмов криптосистем с открытым ключом распределяют ключи, малые по объёму. А саму передачу больших информационных потоков осуществляют с помощью других алгоритмов.
- Как средства аутентификации пользователей.
История появления и развития
Начало
асимметричным шифрам было положено
в работе «Новые направления в
современной криптографии» Уитфилда
Диффи и Мартина Хеллмана, опубликованной
в 1976 году. Находясь под влиянием работы
Ральфа Меркле (англ. Ralph Merkle) о распространении
открытого ключа, они
предложили метод получения секретных
ключей, используя открытый канал. Этот
метод экспоненциального обмена ключей,
который стал известен как обмен ключами
Диффи — Хеллмана, был первым опубликованным
практичным методом для установления
разделения секретного ключа между заверенными
пользователями канала. В 2002 году Хеллман
предложил называть данный алгоритм «Диффи
— Хеллмана — Меркле», признавая вклад
Меркле в изобретение криптографии с открытым
ключом. Эта же схема была разработана
Малькольмом Вильямсоном в 1970-х, но держалась
в секрете до 1997 года. Метод Меркле по распространению
открытого ключа был изобретён в 1974 и опубликован
в 1978 году, его также называют загадкой
Меркле.
В 1977 году учёными Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом из Массачусетского технологического института был разработан алгоритм шифрования, основанный на проблеме о разложении на множители. Система была названа по первым буквам их фамилий (RSA — Rivest, Shamir, Adleman). Эта же система была изобретена в 1973 году Клиффордом Коксом (англ. Clifford Cocks), работавшим в центре правительственной связи (GCHQ), но эта работа хранилась лишь во внутренних документах центра, поэтому о её существовании было не известно до 1977 года. RSA стал первым алгоритмом, пригодным и для шифрования, и для цифровой подписи.
Вообще, в основу известных асимметричных криптосистем кладётся одна из сложных математических проблем, которая позволяет строить односторонние функции и функции-лазейки. Например, криптосистемы Меркля — Хеллмана и Хора — Ривеста опираются на так называемую задачу об укладке рюкзака.
Опубликованная в ноябре 1976 года статья Уитфилда Диффи и Мартина Хеллмана «Новые направления в криптографии» (англ. New Directions in Cryptography) перевернула представление о криптографических системах, заложив основы криптографии с открытым ключом. Разработанный впоследствии алгоритм Диффи — Хеллмана позволял двум сторонам получить общий секретный ключ, используя незащищенный канал связи. Однако этот алгоритм не решал проблему аутентификации. Без дополнительных средств пользователи не могли быть уверены, с кем именно они сгенерировали общий секретный ключ.
Изучив
эту статью, трое учёных Рональд
Ривест, Ади Шамир и Леонард
Адлеман из Массачусетского технологического
института (MIT) приступили
к поискам математической функции, которая
бы позволяла реализовать сформулированную
Уитфилдом Диффи и Мартином Хеллманом
модель криптографической системы с открытым
ключом. После работы над более чем 40 возможными
вариантами, им удалось найти алгоритм,
основанный на различии в том, насколько
легко находить большие простые числа
и насколько сложно раскладывать на множители
произведение двух больших простых чисел,
получивший впоследствии название RSA.
Система была названа по первым буквам
фамилий её создателей.
В августе 1977 года в колонке «Математические игры» Мартина Гарднера в журнале Scientific American, с разрешения Рональда Ривеста появилось первое описание криптосистемы RSA. Читателям также было предложено дешифровать английскую фразу, зашифрованную описанным алгоритмом:
9686 |
9613 |
7546 |
2206 |
1477 |
1409 |
2225 |
4355 |
8829 |
575 |
9991 |
1245 |
7431 |
9874 |
6951 |
2093 |
816 |
2982 |
2514 |
5708 |
3569 |
3147 |
6622 |
8839 |
8962 |
8013 |
3919 |
9055 |
1829 |
9451 |
5781 |
5154 |
В качестве открытых параметров системы были использованы числа n=1143816...6879541 (129 десятичных знаков, 425 бит, также известно как RSA-129 и e=9007. За расшифровку была обещана награда в 100 долларов США. По заявлению Ривеста, для факторизации числа потребовалось бы более 40 квадриллионов лет. Однако чуть более чем через 15 лет, 3 сентября 1993 года было объявлено о старте проекта распределённых вычислений с координацией через электронную почту по нахождению сомножителей числа RSA-129 и решению головоломки. На протяжении полугода более 600 добровольцев из 20 стран жертвовали процессорное время 1600 машин (две из которых были факс-машинами). В результате были найдены простые множители и расшифровано исходное сообщение, которое представляет собой фразу «THE MAGIC WORDS ARE SQUEAMISH OSSIFRAGE (англ.)» («Волшебные слова — это брезгливый ягнятник»). Полученную награду победители пожертвовали в фонд свободного программного обеспечения.
После публикации Мартина Гарднера полное описание новой криптосистемы любой желающий мог получить, выслав по почте запрос Рональду Ривесту, с приложенным конвертом с обратным адресом и марками на 35 центов. Полное описание новой криптосистемы было опубликовано в журнале «Communications of the ACM» в феврале 1978 года.
Заявка на патент была подана 14 декабря 1977 года, в качестве владельца был указан MIT. Патент 4405829 был выдан 20 сентября 1983 года, а 21 сентября 2000 года срок его действия истёк. Однако за пределами США у изобретателей патента на алгоритм не было, так как в большинстве стран его необходимо было получить до первой публикации.
В 1982
году Ривест, Шамир и Адлеман организовали
компанию RSA Data Security (англ.) (в настоящий
момент — подразделение EMC). В 1989 году
RSA, вместе с симметричным шифром DES,
упоминается в RFC 1115, тем самым
начиная использование алгоритм а в зарождающейся
сети Internet, а в 1990 году использовать алгоритм
начинает министерство обороны США.
В ноябре 1993 года открыто публикуется версия 1.5 стандарта PKCS1 (англ.), описывающего применение RSA для шифрования и создания электронной подписи. Последние версии стандарта также доступны в виде RFC (RFC 2313 — 1.5, 1993 год; RFC 2437 — 2.0, 1998 год; RFC 3447 — 2.1, 2002 год).
В декабре 1997 года была обнародована информация, согласно которой британский математик Клиффорд Кокс (Clifford Cocks), работавший в центре правительственной связи (GCHQ) Великобритании, описал криптосистему аналогичную RSA в 1973 году.
Описание алгоритма
RSA-ключи генерируются следующим образом:
- Выбираются два различных случайных простых числа и заданного размера (например, 1024 бита каждое).
- Вычисляется их произведение , которое называется модулем.
- Вычисляется значение функции Эйлера от числа :
- Выбирается целое число ( ), взаимно простое со значением функции . Обычно в качестве берут простые числа, содержащие небольшое количество единичных бит в двоичной записи, например, простые числа Ферма 17, 257 или 65537.
- Число называется открытой экспонентой (англ. public exponent)
- Время, необходимое для шифрования с использованием быстрого возведения в степень, пропорционально числу единичных бит в .
- Слишком малые значения , например 3, потенциально могут ослабить безопасность схемы RSA.[15]
- Вычисляется число , мультипликативно обратное к числу по модулю , то есть число, удовлетворяющее условию:
- Число называется секретной экспонентой. Обычно, оно вычисляется при помощи расширенного алгоритма Евклида.
- Пара публикуется в качестве открытого ключа RSA (англ. RSA public key).
- Пара играет роль закрытого ключа RSA (англ. RSA private key) и держится в секрете.
Шифрование и расшифрование
Предположим, Боб хочет послать Алисе сообщение .
Сообщениями являются целые числа в интервале от до , т.е .
Алгоритм:
|
Алгоритм:
|
Уравнения и , на которых основана схема RSA, определяют взаимно обратные преобразования множества
Таблица -1
Этап |
Описание операции |
Результат операции |
Генерация ключей |
Выбрать два простых числа |
,
|
Вычислить модуль |
| |
Вычислить функцию Эйлера |
| |
Выбрать открытую экспоненту |
| |
Вычислить секретную экспоненту |
| |
Опубликовать открытый ключ |
| |
Сохранить закрытый ключ |
| |
Шифрование |
Выбрать текст для зашифровки |
|
Вычислить шифротекст |
| |
Расшифрование |
Вычислить исходное сообщение |
|
Система RSA может использоваться не только для шифрования, но и для цифровой подписи.
Предположим, что Алисе (стороне ) нужно отправить Бобу (стороне ) сообщение , подтверждённое электронной цифровой подписью.
Алгоритм:
|
Алгоритм:
|
Поскольку цифровая подпись обеспечивает как аутентификацию автора сообщения, так и подтверждение целостности содержимого подписанного сообщения, она служит аналогом подписи, сделанной от руки в конце рукописного документа.
Важное свойство цифровой подписи заключается в том, что её может проверить каждый, кто имеет доступ к открытому ключу её автора. Один из участников обмена сообщениями после проверки подлинности цифровой подписи может передать подписанное сообщение ещё кому-то, кто тоже в состоянии проверить эту подпись. Например, сторона может переслать стороне электронный чек. После того как сторона проверит подпись стороны на чеке, она может передать его в свой банк, служащие которого также имеют возможность проверить подпись и осуществить соответствующую денежную операцию.
Заметим, что подписанное сообщение не зашифровано. Оно пересылается в исходном виде и его содержимое не защищено от нарушения конфиденциальности. Путём совместного применения представленных выше схем шифрования и цифровой подписи в системе RSA можно создавать сообщения, которые будут и зашифрованы, и содержать цифровую подпись. Для этого автор сначала должен добавить к сообщению свою цифровую подпись, а затем — зашифровать получившуюся в результате пару (состоящую из самого сообщения и подписи к нему) с помощью открытого ключа принадлежащего получателю. Получатель расшифровывает полученное сообщение с помощью своего секретного ключа. Если проводить аналогию с пересылкой обычных бумажных документов, то этот процесс похож на то, как если бы автор документа поставил под ним свою печать, а затем положил его в бумажный конверт и запечатал, с тем чтобы конверт был распечатан только тем человеком, кому адресовано сообщение.
Поскольку генерация ключей происходит значительно реже операций, реализующих шифрование, расшифрование, а также создание и проверку цифровой подписи, задача вычисления представляет основную вычислительную сложность. Эта задача может быть разрешена с помощью алгоритма быстрого возведения в степень. С использованием этого алгоритма для вычисления требуется операций умножения по модулю.
Чтобы проанализировать время выполнения операций с открытым и закрытым ключами, предположим, что открытый ключ и закрытый ключ удовлетворяют соотношениям , . Тогда в процессах их применения выполняется соответственно и умножений по модулю.
Таким образом время
выполнения операций растёт с увеличением
количества ненулевых битов в двоичном
представлении открытой экспоненты e. Чтобы увеличить скорость шифрования,
значение e часто выбирают равным 17, 257 или 65537 — простым
числам, двоичное представление которых
содержит лишь две единицы: 1710=100012,
25710=1000000012, 6553710=100000000000000012 (
По эвристическим оценкам длина секретной экспоненты , нетривиальным образом зависящей от открытой экспоненты и модуля , с большой вероятностью близка к длине . Поэтому расшифрование данных идёт медленнее чем шифрование, а проверка подписи быстрее чем её создание.
Алгоритм RSA намного медленнее чем AES и другие алгоритмы блочного шифрования.
Стойкость алгоритма основывается на сложности вычисления обратной функции к функции шифрования
.
Для вычисления по известным нужно найти такой , чтобы
то есть
Вычисление обратного элемента по модулю не является сложной задачей, однако злоумышленнику неизвестно значение . Для вычисления функции Эйлера от известного числа необходимо знать разложение этого числа на простые множители. Нахождение таких множителей и является сложной задачей, а знание этих множителей — «потайной дверцей» (англ. backdoor), которая используется для вычисления владельцем ключа. Существует множество алгоритмов для нахождения простых сомножителей, так называемой факторизации, самый быстрый из которых на сегодняшний день — общий метод решета числового поля, скорость которого для k-битного целого числа составляет
для некоторого .
В 2010 году группе учёных из Швейцарии, Японии, Франции, Нидерландов, Германии и США удалось успешно вычислить данные, зашифрованные при помощи криптографического ключа стандарта RSA длиной 768 бит. Нахождение простых сомножителей осуществлялось общим методом решета числового поля. По словам исследователей, после их работы в качестве надежной системы шифрования можно рассматривать только RSA-ключи длиной 1024 бита и более. Причём от шифрования ключом длиной в 1024 бит стоит отказаться в ближайшие три-четыре года.
Кроме того, при неправильной
или неоптимальной реализации или
использовании алгоритма
Основные достоинства и недостатки метода
Преимущества:
- Преимущество асимметричных шиф
ров перед симметричными шифрами со стоит в отсутствии необходимости предварительной передачи секретного ключа по надёжному каналу. - В симметричной криптографии ключ держится в секрете для обеих сторон, а в асимметричной криптосистеме только один секретный.
- При симметричном шифровании необходимо обновлять ключ после каждого факта передачи, тогда как в асимметричных криптосистемах пару (E,D) можно не менять значительное время.
- В больших сетях число ключей в асимметричной криптосистеме значительно меньше, чем в симметричной.
Недостатки:
- Преимущество алгоритма симметр
ичного шифрования над несимметричным заключается в том, что в первый относительно легко внести изменения. - Хотя сообщения надежно шифруются, но «засвечиваются» получатель и отправитель самим фактом пересылки шифрованного сообщения.
- Несимметричные алгоритмы используют более длинные ключи, чем симметричные.
- Процесс шифрования-расшифрования с использованием пары ключей проходит на два-три порядка медленнее, чем шифрование-расшифрование того же текста симметричным алгоритмом.
- В чистом виде асимметричные криптосистемы требуют существенно больших вычислительных ресурсов, потому на практике используются в сочетании с другими алгоритмами.
- Для ЭЦП сообщение предварительно подвергается хешированию, а с помощью асимметричного ключа подписывается лишь относительно небольшой результат хеш-функции.
- Для шифрования они используются в форме гибридных криптосистем, где большие объёмы данных шифруются симметричным шифром на сеансовом ключе, а с помощью асимметричного шифра передаётся только сам сеансовый ключ.
Таблица - 2
Сравнение некоторых алгоритмов
Алгоритм |
Ключ |
Назначение |
Криптостойкость, MIPS |
Примечания |
RSA |
До 4096 бит |
Шифрование и подпись |
2,7•1028 для ключа 1300 бит |
Основан на трудности задачи факторизации больших чисел; один из первых асимметричных алгоритмов. Включен во многие стандарты |
ElGamal |
До 4096 бит |
Шифрование и подпись |
При одинаковой длине ключа криптостойкость равная RSA, т.е. 2,7•1028 для ключа 1300 бит |
Основан на трудной задаче вычисления дискретных логарифмов в конечном поле; позволяет быстро генерировать ключи без снижения стойкости. Используется в алгоритме цифровой подписи DSA-стандарта DSS |
DSA |
До 1024 бит |
Только подписание |
Основан на трудности задачи дискретного логарифмирования в конечном поле; принят в качестве гос. стандарта США; применяется для секретных и несекретных коммуникаций; разработчиком является АНБ. | |
ECDSA |
До 4096 бит |
Шифрование и подпись |
Криптостойкость и скорость работы выше, чем у RSA |
Современное направление. Разрабатывается многими ведущими математиками |
Применение на практике
Система RSA используется для защиты программного обеспечения и в схемах цифровой подписи.
Также она используется в открытой системе шифрования PGP и иных системах шифрования (к примеру, DarkCryptTC и формат xdc) в сочетании с симметричными алгоритмами.
Из-за низкой скорости шифрования
(около 30 кбит/с при 512 битном ключе на процессоре 2 ГГц), сообщения
обычно шифруют с помощью более производительных
симметричных алгоритмов со случайным
ключом (сеансовый ключ), а с помощью RSA
шифруют лишь этот ключ, таким образом
реализуется гибридная криптосистема. Такой механизм
имеет потенциальные уязвимости ввиду
необходимости использовать криптостойкий генератор
случайных чисел для формирования случайного сеансового
ключа симметричного шифрования и эффективно
противостоящий атакам симметричный криптоалгоритм
(в данное время широкое применение находят AES,IDEA, Serpent, Two
Криптосистема RSA используется
в самых различных продуктах,
на различных платформах и во многих
отраслях. В настоящее время
Технологию шифрования RSA BSAFE используют около 500 миллионов пользователей всего мира. Так как в большинстве случаев при этом используется алгоритм RSA, то его можно считать наиболее распространенной криптосистемой общего (public) ключа в мире и это количество имеет явную тенденцию к увеличению по мере роста Internet.
Криптосистема RSA – часть многих мировых стандартов. Стандарт ISO 9796 описывает RSA как совместимый криптографический алгоритм, соотвествующий стандарту безопасности ITU-T X.509. Кроме этого криптосистема RSA является частью стандартов SWIFT, ANSI X9.31 rDSA и проекта стандарта X9.44 для американских банков. Австралийский стандарт управления ключами AS2805.6.5.3 также включает систему RSA.
Алгоритм RSA используется в Internet, в частности он входит в такие протоколы как S/MIME, IPSEC (INTERNET PROTOCOL SECURITY) и TLS (которым предполагается заменить SSL), а также в стандарт PKCS, применяемый в важных приложениях.
Для разработчиков приложений
с применением PKCS организация OSI Implementers'
Workshop (OIW) выпустила соглашение, которое
в частности посвящено
Множество других разрабатываемых в настоящее время стандартов включают в себя либо сам алгоритм RSA или его поддержку либо рекомендуют криптосистему RSA для обеспечения секретности и/или установления подлинности (аутентификации). Например, включают в себя систему RSA рекомендации IEEE P1363 и WAP WTLS.
На начало 2001 года криптосистема RSA являлась наиболее широко используемой криптосистемой открытого (public) ключа и зачастую называется стандартом де факто. Вне зависимости от официальных стандартов существование такого стандарта чрезвычайно важно для развития электронной коммерции и вообще экономики. Единая система открытого (public) ключа допускает обмен документами с электронно-цифровыми подписями между пользователями различных государств, использующими различное программное обеспечение на различных платформах; такая возможность насущно необходима для развития электронной коммерции. Распространение системы RSA дошло до такой степени, что ее учитывают при создании новых стандартов. При разработке стандартов цифровых подписей, в первую очередь в 1997 был разработан стандарт ANSI X9.30, поддерживающий Digital Signature Standard (стандарт Цифровой подписи). Годом позже был введен ANSI X9.31, в котором сделан акцент на цифровых подписях RSA, что отвечает фактически сложившейся ситуации в частности для финансовых учреждений.
Недостатки защищенной аутентификации (установления подлинности) были главным препятствием для замены бумажного документооборота электронным; почти везде контракты, чеки, официальные письма, юридические документы все еще выполняются на бумаге. Именно это – необходимость элементов бумажного документооборота – не позволяло полностью перейти к электронным транзакциям. Предлагаемая RSA цифровая подпись – инструмент, который позволит перевести наиболее существенные бумажные документо-потоки в электронно-цифровой вид. Благодаря цифровым подписям многие документы – паспорта, избирательные бюллетени, завещания, договора аренды – теперь могут существовать в электронной форме, а любая бумажная версия будет в этом случае только копией электронного оригинала. Все это стало возможным благодаря стандарту цифровых подписей RSA.

- Асимметрия больших полушарий головного мозга
- Асимметрия в Российской Федерации
- Асимметрия головного мозга
- Асимметрия головного мозга (2)
- Асимметрия головного мозга и ее проявление в спорте
- Асимметрия информации на рынке IPO
- Асимметрия информации на рынке страхования
- Асиметричні алгоритми кодування
- Асиметричність інформації та наслідки для економіки
- Асиміляційна модель національної інтеграції
- Асиміляція за дзвінкістю
- Асимметричная информация на рынке
- Асимметричность информации
- Асимметричные системы шифрования