Схема Сакаи — Касахары

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Схема Сакаи — Касахары (SAKKE) — личностная криптографическая система, предложенная Раучи Сакаи и Масао Касахара в 2003 году.[1] Вместе со схемой Боне — Франклина[en], данный алгоритм является одной из немногих личностных схем, применяемых в индустрии. Является криптографическим приложением спаривания[en] на эллиптических кривых и конечных полях. Доказательство безопасности схемы было изложено в 2005 году Ченом и Ченгом.[2] Схема описана в Инженерном совете Интернета (RFC) RFC 6508.

В связи с тем, что данная схема является специфичным случаем личностной криптографии, основным вариантом её использования является возможность кому угодно зашифровать сообщение, зная только публичный идентификатор (например, e-mail) получателя. В данном ключе, алгоритм позволяет избавиться от необходимости пользователям обмениваться публичными сертификатами для шифрования.

Описание схемы[править | править код]

Схема Сакаи — Касахара позволяет зашифровать сообщение для получателя с конкретным идентификатором . Таким образом, только пользователь с закрытым ключом , соответствующим , сможет расшифровать переданное сообщение.

Для реализации схемы необходимо, чтобы отправитель и получатель доверяли одному и тому же генератору закрытых ключей (ГЗК), который так же может называться системой управления ключами (KMS[en]). Целью ГЗК является генерация приватного ключа , соответствующего публичному идентификатору . ГЗК должен сохранно и безопасно доставить закрытый ключ получателю, а также свой (зависящий от ГЗК) открытый параметр всем участникам схемы. Данные действия не рассматриваются в определении самой схемы.

Предварительные замечания[править | править код]

Схема использует две мультипликативные группы и . Предполагается, что:

  • Задача Диффи — Хелмана[en], также известная как задача дискретного логарифмирования, тяжело решаема в . Это означает, что при данных элементах группы и , вычислительно тяжело найти такой , что .
  • Задача дискретного логарифмирования, тяжело решаема в . Это означает, что для двух элементов группы и , вычислительно сложно найти такой , что .
  • Существует билинейное отображение — спаривание Тейта — Лихтенбаума из в . Это означает, что для члена группы и для из группы выполняется:

Зачастую является суперсингулярной эллиптической кривой, как, например, (над конечным полем простого порядка ). Генератор простого порядка выбирается из . Группа является образом группы, сгенерированной , с помощью спаривания (над расширением второй степени конечного поля с простым порядком ).

Также необходимо наличие двух хэш-функций: и , таких, что:

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

Генерация ключей[править | править код]

На вход ГЗК подаётся главный ключ , удовлетворяющий , а также открытый ключ , являющимся элементом группы . Алгоритм вычисляет закрытый ключ , соответствующий следующим образом:

Шифрование[править | править код]

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

  1. Вычилить
  2. Сгенерировать : , где операция является побитовым «или».
  3. Сгенерировать точку в группе :
  4. Создать зашифрованное сообщение с помощью битовой маски:
  5. Зашифрованным сообщением является пара:

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

Дешифрование[править | править код]

Для того чтобы расшифровать сообщение, адресованное , получателю необходимо знать закрытый ключ , сгенерированный ГЗК и открытое значение . Процедура расшифровки сообщения состоит из следующих действий:

  1. Вычислить
  2. Получить зашифрованное сообщение: .
  3. Вычислить:
  4. Выделить сообщение:
  5. Чтобы проверить полученное сообщение, нужно вычислить . Сообщение достоверно тогда и только тогда, когда:

Демонстрация корректности алгоритма[править | править код]

Данные равенства показывают корректность приведённого алгоритма:

Благодаря билинейности отображения:

В результате получаем:

Стандартизация[править | править код]

С данным протоколом связаны два стандарта:

  • Первоначальная стандартизация была произведена IEEE в 2006.[3]
  • Схема была стандартизована IETF в 2012 году по RFC 6508. Алгоритм используется как часть протокола MIKEY_SAKKE, описанного в RFC 6509.

Примечания[править | править код]

  1. Sakai, Ryuichi; Kasahara, Masao. ID Based cryptosystems with pairing on elliptic curve (англ.) // Cryptography ePrint Archive : journal. — 2003. — Vol. 2003/054. Архивировано 19 января 2022 года.
  2. Chen, L.; Cheng, Z. Security proof of Sakai-Kasahara's identity-based encryption scheme (англ.) // Cryptography ePrint Archive : journal. — Vol. 2005/226. Архивировано 20 января 2022 года.
  3. Barbosa, M. SK-KEM: An Identity-Based KEM (неопр.). — 2006. — June (т. IEEE). Архивировано 3 марта 2016 года.