Асимметричные системы шифрования. Криптосистема rsa

1 АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA

Введение

Одним из обширных классов криптографических  систем являются так называемые асимметричные  или двухключевые системы с открытым ключом. Эти системы характеризуются  тем, что для шифрования и дешифрования используются разные ключи. Криптография с открытым ключом возникла в связи с необходимостью слудующих двух проблем:

  1. Проблема рассылки ключей. Симметричнае криптоситемы требуют наличия специального защищенного канала для передачи секретного ключа. Кроме того, при общении N пользователей необходимо пересылать N^2/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-ключи генерируются  следующим образом:

  1. Выбираются два различных случайных простых числа   и   заданного размера (например, 1024 бита каждое).
  2. Вычисляется их произведение  , которое называется модулем.
  3. Вычисляется значение функции Эйлера от числа  :

  1. Выбирается целое число   ( ), взаимно простое со значением функции  . Обычно в качестве   берут простые числа, содержащие небольшое количество единичных бит в двоичной записи, например, простые числа Ферма 17, 257 или 65537.
    • Число   называется открытой экспонентой (англ. public exponent)
    • Время, необходимое для шифрования с использованием быстрого возведения в степень, пропорционально числу единичных бит в  .
    • Слишком малые значения  , например 3, потенциально могут ослабить безопасность схемы RSA.[15]
  2. Вычисляется число  , мультипликативно обратное к числу   по модулю  , то есть число, удовлетворяющее условию:

    • Число   называется секретной экспонентой. Обычно, оно вычисляется при помощи расширенного алгоритма Евклида.
  1. Пара   публикуется в качестве открытого ключа RSA (англ. RSA public key).
  1. Пара   играет роль закрытого ключа RSA (англ. RSA private key) и держится в секрете.

Шифрование и расшифрование

Предположим, Боб хочет послать Алисе сообщение  .

Сообщениями являются целые числа в интервале от   до  , т.е  .

Алгоритм:

  • Взять открытый ключ   Алисы
  • Взять открытый текст 
  • Зашифровать сообщение с использованием открытого ключа Алисы:

Алгоритм:

  • Принять зашифрованное сообщение 
  • Взять свой закрытый ключ 
  • Применить закрытый ключ для расшифрования сообщения:


 

Уравнения   и  , на которых основана схема RSA, определяют взаимно обратные преобразования множества 

Таблица -1

Этап

Описание операции

Результат операции

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

Выбрать два простых числа

,

Вычислить модуль

Вычислить функцию Эйлера

Выбрать открытую экспоненту

Вычислить секретную экспоненту

Опубликовать открытый ключ

Сохранить закрытый ключ

Шифрование

Выбрать текст для зашифровки

Вычислить шифротекст

Расшифрование

Вычислить исходное сообщение


Система RSA может использоваться не только для шифрования, но и для цифровой подписи.

Предположим, что Алисе (стороне  ) нужно отправить Бобу (стороне  ) сообщение  , подтверждённое электронной цифровой подписью.

Алгоритм:

  • Взять открытый текст 
  • Создать цифровую подпись   с помощью своего секретного ключа  :

  • Передать пару  , состоящую из сообщения и подписи.

Алгоритм:

  • Принять пару 
  • Взять открытый ключ   Алисы
  • Вычислить прообраз сообщения из подписи:

  • Проверить подлинность подписи (и неизменность сообщения), сравнив   и 

Поскольку цифровая подпись обеспечивает как аутентификацию автора сообщения, так и подтверждение целостности содержимого подписанного сообщения, она служит аналогом подписи, сделанной от руки в конце рукописного документа.

Важное свойство цифровой подписи заключается в том, что  её может проверить каждый, кто  имеет доступ к открытому ключу её автора. Один из участников обмена сообщениями после проверки подлинности цифровой подписи может передать подписанное сообщение ещё кому-то, кто тоже в состоянии проверить эту подпись. Например, сторона   может переслать стороне   электронный чек. После того как сторона   проверит подпись стороны   на чеке, она может передать его в свой банк, служащие которого также имеют возможность проверить подпись и осуществить соответствующую денежную операцию.

Заметим, что подписанное  сообщение   не зашифровано. Оно пересылается в исходном виде и его содержимое не защищено от нарушения конфиденциальности. Путём совместного применения представленных выше схем шифрования и цифровой подписи в системе RSA можно создавать сообщения, которые будут и зашифрованы, и содержать цифровую подпись. Для этого автор сначала должен добавить к сообщению свою цифровую подпись, а затем — зашифровать получившуюся в результате пару (состоящую из самого сообщения и подписи к нему) с помощью открытого ключа принадлежащего получателю. Получатель расшифровывает полученное сообщение с помощью своего секретного ключа. Если проводить аналогию с пересылкой обычных бумажных документов, то этот процесс похож на то, как если бы автор документа поставил под ним свою печать, а затем положил его в бумажный конверт и запечатал, с тем чтобы конверт был распечатан только тем человеком, кому адресовано сообщение.

Поскольку генерация  ключей происходит значительно реже операций, реализующих шифрование, расшифрование, а также создание и проверку цифровой подписи, задача вычисления   представляет основную вычислительную сложность. Эта задача может быть разрешена с помощью алгоритма быстрого возведения в степень. С использованием этого алгоритма для вычисления   требуется   операций умножения по модулю.

Чтобы проанализировать время выполнения операций с открытым и закрытым ключами, предположим, что открытый ключ   и закрытый ключ  удовлетворяют соотношениям  ,  . Тогда в процессах их применения выполняется соответственно   и   умножений по модулю.

Таким образом время  выполнения операций растёт с увеличением  количества ненулевых битов в двоичном представлении открытой экспоненты e. Чтобы увеличить скорость шифрования, значение e часто выбирают равным 17, 257 или 65537 — простым числам, двоичное представление которых содержит лишь две единицы: 1710=100012, 25710=1000000012, 6553710=10000000000000001(простые числа Ферма).

По эвристическим оценкам  длина секретной экспоненты  , нетривиальным образом зависящей от открытой экспоненты   и модуля  , с большой вероятностью близка к длине  . Поэтому расшифрование данных идёт медленнее чем шифрование, а проверка подписи быстрее чем её создание.

Алгоритм 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, Twofish).

Криптосистема RSA используется в самых различных продуктах, на различных платформах и во многих отраслях. В настоящее время криптосистема RSA встраивается во многие коммерческие продукты, число которых постоянно увеличивается. Также ее используют операционные системы Microsoft, Apple, Sun и Novell. В аппаратном исполнении RSA алгоритм применяется в защищенных телефонах, на сетевых платах Ethernet, на смарт-картах, широко используется в криптографическом оборудовании Zaxus (Racal). Кроме того, алгоритм входит в состав всех основных протоколов для защищенных коммуникаций Internet, в том числе S/MIME, SSL и S/WAN, а также используется во многих учреждениях, например, в правительственных службах, в большинстве корпораций, в государственных лабораториях и университетах. На осень 2000 года технологии с применением алгоритма RSA были лицензированы более чем 700 компаниями.

Технологию шифрования 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 для обеспечения секретности и/или установления подлинности (аутентификации). Например, включают в себя систему RSA рекомендации IEEE P1363 и WAP WTLS.

На начало 2001 года криптосистема RSA являлась наиболее широко используемой криптосистемой открытого (public) ключа  и зачастую называется стандартом де факто. Вне зависимости от официальных  стандартов существование такого стандарта чрезвычайно важно для развития электронной коммерции и вообще экономики. Единая система открытого (public) ключа допускает обмен документами с электронно-цифровыми подписями между пользователями различных государств, использующими различное программное обеспечение на различных платформах; такая возможность насущно необходима для развития электронной коммерции. Распространение системы RSA дошло до такой степени, что ее учитывают при создании новых стандартов. При разработке стандартов цифровых подписей, в первую очередь в 1997 был разработан стандарт ANSI X9.30, поддерживающий Digital Signature Standard (стандарт Цифровой подписи). Годом позже был введен ANSI X9.31, в котором сделан акцент на цифровых подписях RSA, что отвечает фактически сложившейся ситуации в частности для финансовых учреждений.

Недостатки защищенной аутентификации (установления подлинности) были главным препятствием для замены бумажного документооборота электронным; почти везде контракты, чеки, официальные  письма, юридические документы все еще выполняются на бумаге. Именно это – необходимость элементов бумажного документооборота – не позволяло полностью перейти к электронным транзакциям. Предлагаемая RSA цифровая подпись – инструмент, который позволит перевести наиболее существенные бумажные документо-потоки в электронно-цифровой вид. Благодаря цифровым подписям многие документы – паспорта, избирательные бюллетени, завещания, договора аренды – теперь могут существовать в электронной форме, а любая бумажная версия будет в этом случае только копией электронного оригинала. Все это стало возможным благодаря стандарту цифровых подписей RSA.

 


Асимметричные системы шифрования. Криптосистема rsa