SKEME

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

SKEME — криптографический протокол распространения ключей, созданный в 1996 году Хьюго Кравчиком(Шаблон:Lang-en). Он позволяет двум сторонам получить общий секретный ключ, используя незащищённый канал связи.

Протокол SKEME послужил основой для протокола IKE Шаблон:Sfn, определённого в RFC 2409.

Основные свойства протокола

  • аутентификация собеседников — уверенность в том, кто является собеседником Шаблон:Sfn;
  • perfect forward secrecy (PFS) — потеря секретных ключей не ведёт к компрометации прошлой переписки Шаблон:Sfn;
  • возможность отречения — третье лицо не сможет доказать, что сообщения написаны кем-либо другому адресату Шаблон:Sfn;
  • strong secrecy — злоумышленник не может детектировать изменение секретного ключа Шаблон:Sfn;
  • гибкость — четыре возможных режима работы позволяют достичь компромисса между производительностью и безопасностью Шаблон:Sfn.

Режимы и этапы

Обозначения

Для описания протокола используются следующие обозначения:

  • PKEA(arg) — шифрование сообщения arg с открытым ключом, принадлежащим стороне A;
  • H(arg) — вычисление криптографической хеш-функции с аргументом arg;
  • FK — псевдослучайная функция с ключом K, результат вычисления которой нельзя предсказать без знания ключа;
  • idA,idB — идентификаторы сторон A и B соответственно;
  • g,p — генератор и модуль соответственно, используемые в протоколе Диффи — Хеллмана.

Базовый режим

Первый этап

Во время первого этапа стороны A и B получают эфемерный ключ K0, зная открытые ключи друг друга Шаблон:Sfn. Для этого они обмениваются «половинками ключа», зашифрованными открытыми ключами друг друга, а затем комбинируют «половинки» при помощи хеш-функции.

AB:PKEB(KA)
BA:PKEA(KB)
K0=H(KA,KB)

Значения KA и KB должны быть выбраны случайным образомШаблон:Sfn. Если сторона A следует протоколу, то она может быть уверена в том, что эфемерный ключ K0 неизвестен никому, кроме B. Аналогично, сторона B может быть уверена в том, что эфемерный ключ не знает никто, кроме AШаблон:Sfn.

Второй этап

На втором этапе стороны используют протокол Диффи — ХеллманаШаблон:Sfn. Сторона А выбирает случайное число x и вычисляет значение gxmodp. Сторона B выбирает случайное число y и вычисляет значение gymodp. После этого, стороны обмениваются вычисленными значениями.

AB:gx(modp)
BA:gy(modp)

Третий этап

На третьем этапе происходит аутентификация gx и gy, переданных во время второго этапа, с использованием эфемерного ключа K0, полученного на первом этапе.

AB:FK0(gy,gx,idA,idB)
BA:FK0(gx,gy,idB,idA)

Включение gx в первое сообщение позволяет стороне B убедиться в том, что значение gx на втором этапе было действительно передано стороной AШаблон:Sfn. Значение gy в этом же сообщении позволяет B защититься от атаки повторного воспроизведенияШаблон:Sfn.

Генерация сессионного ключа

Результатом выполнения протокола является сессионный ключ, вычисляемый как SK=H(gxymodp)Шаблон:Sfn.

SKEME без PFS

Режим SKEME без PFS предоставляет возможность обмена ключами без вычислительных затрат, необходимых для обеспечения PFS Шаблон:Sfn. Для этого на втором этапе вместо значений gx и gy, стороны посылают друг другу случайные числа nonceA и nonceB.

AB:nonceA
BA:nonceB

Третий этап тоже модифицируется. Аргументы функции FK0 меняются с gx и gy на nonceA и nonceB соответственно.

AB:FK0(nonceB,nonceA,idA,idB)
BA:FK0(nonceA,nonceB,idB,idA)

Данная модификация второго и третьего этапа позволяет сторонам убедиться в том, что ключ K0, полученный на первом этапе, известен обеим сторонам. Шаблон:Sfn.

Результатом выполнения протокола в данном режиме является сессионный ключ, вычисляемый как SK=FK0(arg), где arg=FK0(nonceB,nonceA,idA,idB) Шаблон:Sfn.

Pre-shared key и PFS

В данном режиме предполагается, что сторонам уже известен секретный ключ (например, ключ задан вручную), и они используют этот ключ для того, чтобы получить новый сессионный ключ Шаблон:Sfn. В этом режиме первый этап можно пропустить и использовать секретный ключ вместо K0. В этом режиме обеспечивается perfect forward secrecy Шаблон:Sfn.

Сессионный ключ в данном режиме вычисляется так же, как в базовом Шаблон:Sfn.

Fast Re-Key

Fast Re-Key — самый быстрый режим протокола SKEME Шаблон:Sfn. Этот режим позволяет часто обновлять ключ без вычислительных затрат на асимметричное шифрование и на использование протокола Диффи — Хеллмана Шаблон:Sfn.

В этом режиме предполагается, что ключ K0 известен сторонам с предыдущего раунда протокола. Первый этап пропускается, а второй и третий этап, а также вычисление сессионного ключа выполняются так же, как в режиме SKEME без PFS Шаблон:Sfn.

Примечания

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

Литература

Ссылки