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

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

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

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

Описание схемы

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

Для реализации схемы необходимо, чтобы отправитель и получатель доверяли одному и тому же генератору закрытых ключей (ГЗК), который так же может называться системой управления ключами (Шаблон:Iw). Целью ГЗК является генерация приватного ключа KU, соответствующего публичному идентификатору IU. ГЗК должен сохранно и безопасно доставить закрытый ключ получателю, а также свой (зависящий от ГЗК) открытый параметр Z всем участникам схемы. Данные действия не рассматриваются в определении самой схемы.

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

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

e(P,xP)=e(xP,P)=e(P,P)x=gx

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

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

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

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

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

KU=(1z+H1(IDU))P

Шифрование

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

  1. Вычилить id=H1(IDU)
  2. Сгенерировать r: r=H1(𝕄||id), где операция || является побитовым «или».
  3. Сгенерировать точку R в группе E:
    R=r((id)P+Z)
  4. Создать зашифрованное сообщение с помощью битовой маски:
    S=𝕄H2(gr)
  5. Зашифрованным сообщением является пара: (R,S)

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

Дешифрование

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

  1. Вычислить id=H1(IDU)
  2. Получить зашифрованное сообщение: (R,S).
  3. Вычислить:
    w=e(R,KU)
  4. Выделить сообщение:
    𝕄=SH2(w)
  5. Чтобы проверить полученное сообщение, нужно вычислить r=H1(𝕄||id). Сообщение достоверно тогда и только тогда, когда:
    r((id)P+Z)R

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

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

w=e(R,KU)=e(r((id)P+Z),KU)=e(r((id)P+zP),KU)=e((r(id+z))P,KU)

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

w=e((r(id+z))P,KU)=e((r(id+z))P,(1(id+z))P)=e(P,P)r(id+z)(id+z)=gr

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

SH2(w)=(𝕄H2(gr))H2(w)=𝕄

Стандартизация

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

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

Примечания

Шаблон:Примечания

Шаблон:Криптография