Это не официальный сайт wikipedia.org 01.01.2023

Схема Сакаи — Касахары — Википедия

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

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

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

Описание схемыПравить

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

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

Предварительные замечанияПравить

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

e ( P , x P ) = e ( x P , P ) = e ( P , P ) x = g x  

Зачастую E   является суперсингулярной эллиптической кривой, как, например, E : y 2 = x 3 3 x   (над конечным полем простого порядка p  ). Генератор P   простого порядка q   выбирается из E  . Группа G   является образом группы, сгенерированной P  , с помощью спаривания (над расширением второй степени конечного поля с простым порядком p  ).

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

  • H 1   возвращает положительное целое число x  , удовлетворяющее 1 < x < q  .
  • H 2   возвращает n   битов, где n   является длиной сообщения M  .

Генерация ключейПравить

На вход ГЗК подаётся главный ключ z  , удовлетворяющий 1 < z < q  , а также открытый ключ Z = z P  , являющимся элементом группы E  . Алгоритм вычисляет закрытый ключ K U  , соответствующий I D U   следующим образом:

K U = ( 1 z + H 1 ( I D U ) ) P  

ШифрованиеПравить

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

  1. Вычилить i d = H 1 ( I D U )  
  2. Сгенерировать r  : r = H 1 ( M | | i d )  , где операция | |   является побитовым «или».
  3. Сгенерировать точку R   в группе E  :
    R = r ( ( i d ) P + Z )  
  4. Создать зашифрованное сообщение с помощью битовой маски:
    S = M H 2 ( g r )  
  5. Зашифрованным сообщением является пара: ( R , S )  

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

ДешифрованиеПравить

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

  1. Вычислить i d = H 1 ( I D U )  
  2. Получить зашифрованное сообщение: ( R , S )  .
  3. Вычислить:
    w = e ( R , K U )  
  4. Выделить сообщение:
    M = S H 2 ( w )  
  5. Чтобы проверить полученное сообщение, нужно вычислить r = H 1 ( M | | i d )  . Сообщение достоверно тогда и только тогда, когда:
    r ( ( i d ) P + Z ) R  

Демонстрация корректности алгоритмаПравить

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

w = e ( R , K U ) = e ( r ( ( i d ) P + Z ) , K U ) = e ( r ( ( i d ) P + z P ) , K U ) = e ( ( r ( i d + z ) ) P , K U )  

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

w = e ( ( r ( i d + z ) ) P , K U ) = e ( ( r ( i d + z ) ) P , ( 1 ( i d + z ) ) P ) = e ( P , P ) r ( i d + z ) ( i d + z ) = g r  

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

S H 2 ( w ) = ( M H 2 ( g r ) ) H 2 ( w ) = M  

СтандартизацияПравить

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

  • Первоначальная стандартизация была произведена 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 года.