PSEC-KEM (PSEC-KEM)

Перейти к навигации Перейти к поиску

PSEC-KEM (Provably Secure Elliptic Curve Encryption — Key Encapsulation Mechanism) — асимметричная схема шифрования. Основана на схеме Эль-Гамаля и эллиптических кривых. Данная схема разработана японской компанией Nippon Telegraph and Telephone(NTT), а именно Эйчиро Фуджисаки и Тацуаки Окамото. Является модификацией механизма PSEC-2 и вместо него в сентябре 2001 года был включен в проект NESSIE, а также в стандарт ISO/IEC 18033-2[1][2][3].

Предпосылки создания

[править | править код]

Криптосистемы, основанные на эллиптических кривых были впервые предложены Нилом Коблицем и Виктором Миллером[англ.] в 1985 году. Технически, криптосистема, основанная на задаче дискретного логарифмирования, может быть реализована с использованием групп эллиптических кривых в качестве базовой алгебраической структуры. Схема Эль-Гамаля была первым алгоритмом, построенным на проблеме вычисления дискретного логарифма с открытым ключом шифрования. Однако данная схема не отвечает строгим требованиям безопасности против адаптивных атак на основе подобранного шифротекста (CCA). Это побудило криптографов предлагать новые варианты криптосистем, которые являются более надежными[4].

История создания

[править | править код]

В начале 21-го века японская компания Nippon Telegraph and Telephone представила на первый этап проектов NESSIE и CRYPTREC 2000 три протокола шифрования на открытых ключах: PSEC-1, PSEC-2 и PSEC-3. PSEC-1 и PSEC-3 не выдержали конкуренции, а PSEC-2 смог пройти в следующий этап[4][3].

Многие из асимметричных алгоритмов были обновлены в начале второго этапа. Для асимметричных схем шифрования, эти изменения были произведены отчасти благодаря последним событиям в сфере криптографии, которые произошли после окончания срока представления работ на конкурсе NESSIE. Второй причиной этих изменений является прогресс стандартизации в ISO / IEC JTC1 / SC27. Стандарты развивались в направлении, определяющем гибридную схему шифрования. Поэтому разработчики модифицировали PSEC-2 на основе замечаний написанных Виктором Шоупом[англ.][5]. Модифицированный протокол назвали PSEC-KEM.

Главное отличие PSEC-KEM от PSEC-2 заключается в том, что PSEC-KEM использует другой тип гибридной схемы шифрования. Симметричный ключ, который часто называют сеансовым, используется для шифрования данных, а асимметричный для шифрования самого симметричного ключа. К тому же схема PSEC-2 подвергалась серьёзной критике, поскольку ни в описании протокола, ни в другой литературе не было точного доказательства безопасности алгоритма[6].

Развитие алгоритма

[править | править код]
  • 17 апреля 2001 — объявление Royalty-Free лицензии для основных патентов компании NTT в области шифрования и цифровой подписи, в том числе и PSEC.
  • 24 сентября 2001 — PSEC был выбран в качестве одного из алгоритмов шифрования на 2-го этапе проекта NESSIE.
  • 27 февраля 2003 — проект NESSIE объявил окончательный выбор алгоритмов шифрования и PSEC-КЕМ был включен в портфель рекомендованных NESSIE криптографических примитивов.
  • 10 июня 2004 — начался заключительный процесс для публикации предлагаемого стандарта RFC для добавления PSEC-KEM в качестве стандарта для шифрования XML.
  • 16 марта 2006 — PSEC-KEM включается в международный стандарт шифрования ISO / IEC (ISO / IEC18033-2).
  • 15 июня 2007 — в спецификацию PSEC-KEM была добавлена ISO версия алгоритма.
  • 27 июня 2008 — последнее обновление спецификации PSEC-KEM.
  • 7 июля 2008 — CRYPTREC одобрил изменение спецификации PSEC-KEM[3].

Краткое описание алгоритма

[править | править код]

PSEC-KEM относится к классу криптографических алгоритмов, использующих гибридную схему шифрования. Данная схема состоит их двух компонент: KEM (механизм инкапсуляции ключа)[англ.], предназначенного для шифрования симметричного ключа, и DEM (механизм инкапсуляции данных), предназначенного для шифрования данных. Для совмещения этих двух механизмов необходимо, чтобы длина симметричного ключа на выходе KEM механизма была равно длине ключа, который используется для шифрования в DEM механизме. Начальные параметры следует выбирать так, чтобы данные механизмы были совместимы. Алгоритм генерации пары открытый/закрытый ключ ничем не отличается от стандартного алгоритма, который используется в KEM шифровании. Далее необходимо провести следующие действия. Во-первых, запускаем KEM алгоритм шифрования ключа, на выходе получаем шифротекст c0 и симметричный ключ k. Во-вторых, запускаем DEM алгоритм, который с помощью симметричного ключа k зашифровывает сообщение M. В-третьих, получаем итоговый шифротекст . Чтобы расшифровать шифротекст C необходимо последовательно произвести следующие действия. Во-первых, разделяем С на и с помощью специального префикса в сообщении. Во-вторых, используя KEM алгоритм дешифрования получаем симметричный ключ K из . В-третьих, используя симметричный ключ K расшифровываем сообщение M из [7].

Полученная гибридная схема шифрования является семантически безопасной от адаптивых атак на основе подобранного шифротекста (CCA)[8].

Схема работает на трех функциях:

  1. KGP-PSEC — алгоритм генерации открытого и закрытого ключей (W, s).
  2. ES-PSEC-KEM-Encrypt — алгоритм получения симметричного ключа k и шифротекста c0 на основе открытого ключа W и формата R.
  3. ES-PSEC-KEM-Decrypt — алгоритм получения симметричного ключа k на основе закрытого ключа s и шифротекста c0[9].

Параметризующие параметры, открытый и закрытый ключи

[править | править код]

PSEC-KEM имеет следующие параметры:

  • E — эллиптическая кривая,
  • KDF — функция составления ключа,
  • hLen — длина начальной строки, целое положительное число,
  • keyLen — длина симметричного ключа, целое положительное число,
  • p — порядок эллиптической кривой.

Закрытый ключ:

s : неотрицательное число 0 ≤ s < p.

Открытый ключ:

W : точка на эллиптической кривой E[10].

Типы данных

[править | править код]

В PSEC-KEM используется пять различных типов данных:

  1. I — целое неотрицательное число.
  2. FE — элемент группы.
  3. OC — строка байт.
  4. BS — строка бит.
  5. ECP — точки эллиптической кривой[10].

Преобразования

[править | править код]
Преобразования между типами данных
Преобразования между типами данных

Функция преобразования принимает данные, представленные в одном из пяти типов и иногда некоторые дополнительные параметры, а затем выводит данные уже в другом типе. Названия всех функций построены по одному алгоритму. Пишется аббревиатура начального типа данных, затем цифра 2, и в конце пишется аббревиатура нового типа данных. Все преобразования имеют обратное преобразование. Например, FE2OSP(a), которое переводит строку байт в элемент группы a, имеет обратное преобразование OS2FEP(M), которое элементу группы ставит в соответствие строку байт. Некоторые из преобразований являются тривиальными и описаны только для формализации изложения. Функция преобразования всегда отвергает неправильные входные данные выводя спенциальную строку «INVALID»[11].

Генерация ключей (KGP-PSEC)

[править | править код]

Функция генерации ключей принимает на вход точку эллиптической кривой порядка . На выходе получаем открытый ключ и закрытый ключ в диапазоне от 0 до [12].

Кодирование ключа (ES-PSEC-KEM-Encrypt)

[править | править код]

Функция кодирования ключа принимает на вход открытый ключ , параметр , который указывает на то, используется ли сжатие или нет, и точку на эллиптической кривой . На выходе получаем симметричный ключ и шифротекст [12].

Декодирование ключа (ES-PSEC-KEM-Decrypt)

[править | править код]

Функция декодирования ключа принимает на вход закрытый ключ , шифротекст и точку на эллиптической кривой . На выходе получаем симметричный ключ [12].

Параметры системы

[править | править код]

Для последней версии данной схемы шифрования допустимыми являются следующие хеш-функции: SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512. Все они описаны в стандарте ISO / IEC 10118-3[12].

Необходимые параметры

[править | править код]
  • pLen ≥ 20 (256 бит), [11].
  • hLen ≥ 16, hLen — длина строки байт, которая генерируется случайным образом в самом начале алгоритма кодирования ключа[13].

Рекомендуемые параметры

[править | править код]
  • KDF = MGF1(SHA-256, hashLen = 32), KDF(Key derivation function) — функция составления ключа.
  • hLen = 32.
  • R = Compressed, R — параметр который указывает, нужно ли использовать сжатие данных при кодировании. Этот параметр также должен быть передан получателю, что он смог правильно декодировать информацию.
  • keyLen = 32 (256 бит), keyLen — длина симметричного ключа[13].

Функция составления ключа(MGF1)

[править | править код]

Принимает на вход строку байт произвольной длины и желаемую длину выходной строки в битах. Алгоритм работы основан на работе хеш-функций. Функция параметризована собственно хеш-функцией и длиной сообщения в байтах на выходе хеш-функции . На выходе работы функции получаем строку байт желаемой длины [12].

Безопасность

[править | править код]

Безопасность PSEC-KEM основана на сложности вычислительной задачи Диффи-Хеллмана(ECDHP), которая состоит в следующем:

Даны (P, xP, yP), где P — точка эллиптической кривой E и x, y случайно выбранные числа из {0, … , p-1}. Необходимо вычислить точку xyP. Предполагается, что эта вычислительная задача является неразрешимой. В общем случае, даже невозможно сказать, является ли конкретное решение правильным[14].

Доказательство Шоупа
[править | править код]

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

  • A — алгоритм решения задачи Диффи-Хеллмана.
  • l — список решений кандидатов для алгоритма А.
  • AdvantageCDH(A, l) — вероятность того, что список l содержит правильное решение.

Одно из доказательств безопасности PSEC-KEM состоит в том, чтобы показать, что:

[15]

Причем это должно быть верно для всех алгоритмов А, которые работают конечное время. Это доказательство было представлено Виктором Шоупом в 2001 году[16].

Работа Бонэ и Липтона
[править | править код]

Весомое замечание представили в своей работе Дэн Боне и Ричард Липтон[17]. Они показали, что если ECDLP (задача дискретного логарифмирования) не может быть решена за субэкспоненциальное время, то ECDHP также не может быть решена за это время. Так как широко распространено мнение о том, что проблема дискретного логарифмирования не может быть решена за субэкспоненциальное время, то представленная работа является весомым, хотя и не полностью строгим доводом того, что решение задачи ECDHP весьма трудоемко[18].

Применение

[править | править код]

20 февраля 2003 года PSEC-КЕМ был включён в список криптографических алгоритмов для использования японскими электронными системами государственного управления, а именно министерством общественного управления, внутренних дел почты и телекоммуникаций, и министерством экономики торговли и промышленности. 19 апреля 2005 года PSEC-КЕМ был сертифицирован в качестве стандартного шифра IETF для шифрования[3].

Примечания

[править | править код]
  1. NTT Corporation, p. 4.
  2. R. Shipsey, p. 1.
  3. 1 2 3 4 NTT Secure Platform.
  4. 1 2 A. Menezes, p. 2.
  5. V. Shoup, pp. 32—39.
  6. V. Shoup, p. 34.
  7. V. Shoup, pp. 16—17.
  8. A. Menezes, p. 3.
  9. NTT Corporation, p. 14.
  10. 1 2 NTT Corporation, p. 13.
  11. 1 2 NTT Corporation, p. 5.
  12. 1 2 3 4 5 NTT Corporation, pp. 14—15.
  13. 1 2 NTT Corporation, p. 17.
  14. R. Shipsey, pp. 4—5.
  15. R. Shipsey, p. 5.
  16. R. Shipsey, pp. 5—7.
  17. D. Boneh, R. J. Lipton, p. 283—297.
  18. A. Menezes, p. 8.

Литература

[править | править код]