Система Orphus

Протоколы распространения ключей. Протокол Диффи-Хеллмана для мультипликативной группы

Задачей распространения ключей между двумя пользователями является создание секретных псевдослучайных сеансовых ключей шифрования и аутентификации сообщений. Пользователи предварительно создают и обмениваются ключами аутентификации один раз. В дальнейшем для создания защищенной связи пользователи производят взаимную аутентификацию и вырабатывают сеансовые ключи.

Алгоритм Диффи-Хеллмана

Алгоритм Диффи - Хеллмана позволяет двум или более пользователям обменяться без посредников ключом, который может быть использован затем для симметричного шифрования.

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

  • Предположим существует два абонента: Алиса и Боб.
  • Обоим абонентам известны некоторые общедоступные числа g и p.

1 этап

  • Алиса генерирует большое число - a, вычисляет сообщение A и пересылает его Бобу:
Alice\to\{A=g^a~\bmod~p\}\to Bob.
  • Боб генерирует большое число - b, вычисляет сообщение B и пересылает его Алисе:
Bob\to\{B=g^b~\bmod~p\}\to Alice.

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

2 этап

  • Алиса на основе имеющегося у нее числа a и полученного по сети B вычисляет значение
K_A=B^a~\bmod~p=g^{ab}~\bmod~p.
  • Боб на основе имеющегося у нее числа b и полученного по сети A вычисляет значение
K_B=A^b~\bmod~p=g^{ab}~\bmod~p.

Как нетрудно видеть, у Алисы и Боба получилось одно и тоже число

K=g^{ab}~\bmod~p.

Его они и могут использовать в качестве секретного ключа.

MTI

Протокол MTI - протокол взаимной аутентификации, разработанный Т.Мацумото, И.Такашима и Х.Имаи. Описание алгоритма

  • Предположим существует две стороны Алиса и Боб
  • Им известны общедоступные данные:
p,g,PK_{A}=g^a~\bmod~p, PK_{B}=g^{b}~\bmod~p.
  • Алиса и Боб обладают парой из долговременных секретного ключа расшифрования SK и открытого ключа шифрования PK для схемы шифрования с открытым ключом.
A: SK_{A}=a,~PK_{A}=g^a~\bmod~p,
B: SK_{B}=b,~PK_{B}=g^b~\bmod~p.

1 этап

  • Алиса генерирует случайное число x,~2\leqslant x\leqslant p-1, создает сообщение A и отправляет Бобу:
Alice\to\{A=g^x~\bmod~p\}\to Bob
  • Боб генерирует случайное число y,~2\leqslant y\leqslant p-1, создает сообщение B и отправляет Алисе:
Bob\to\{B=g^y~\bmod~p\}\to Alice

2 этап

  • Алиса, используя известные всем открытые данные и полученное сообщение B, создает сеансовый ключ:
K_A=(g^b)^x\cdot(g^y)^a=g^{bx+ay}~\bmod~p
  • Боб, используя известные всем открытые данные и полученное сообщение A, создает сеансовый ключ:
K_B=(g^x)^b\cdot(g^a)^y=g^{bx+ay}~\bmod~p

Сеансовые ключи обеих сторон совпадают

K_A=K_B=K..

STS

Протокол STS - протокол взаимной аутентификации, использующий идеи алгоритма Диффи-Хеллмана и RSA.

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

  • Пусть есть две стороны: Алиса и Боб.
  • Им известны общедоступные данные:
p, g, PK_{A}, PK_{B}..
  • Алиса и Боб обладают парой из долговременных секретного ключа SK и открытого ключа PK для схемы ЭЦП:
A: SK_{A},PK_{A},
B: SK_{B},PK_{B}.

Подпись сообщения имеет вид

A:~S_{A}(m)=S_{SK_{A}}(H(m)),
B:~S_{B}(m)=S_{SK_{B}}(H(m)),

где H(m) - криптографическая хэш-функция от сообщения m.

Протокол состоит из трех раундов обмена информацией между сторонами Алиса и Боб.

1 раунд

  1. Алиса случайно выбирает секретное число x\in[2,p-1].
  2. Вычисляет сообщение A
    A=g^{x}~\bmod~p.
  3. Отправляет его Бобу:
    Alice\to\{A\}\to Bob:.

2 раунд

  1. Боб случайно выбирает секретное число y\in[2,p-1].
  2. C помощью полученного сообщения A вычисляет общий секретный ключ:
    K=(g^x)^y=g^{xy}~\bmod~p.
  3. C помощью ключа шифрует сообщение для аутентификации:
    E_{K}(S_B(g^x,g^y)).
  4. Отправляет его Алисе:
    Bob\to\{g^y~\bmod~p, E_{K}(S_B(g^x,g^y))\}\to Alice.

3 раунд

  1. Алиса с помощью x и  g^y~\bmod~p вычисляет общий секретный ключ:
    K=(g^y)^x~\bmod~p=g^{xy}~\bmod~p,
  2. Расшифровывает сообщение:
    D_{K}(E_{K}(S_B(g^x,g^y)))=S_B(g^x,g^y).
  3. Аутентифицирует Боба, проверяя подпись S_B открытым ключом PK_B.
  4. Вычисляет и пересылает Бобу сообщение
    Alice\to\{E_{K}(S_A(g^x,g^y))\}\to Bob.
  5. Боб расшифровывает принятое сообщение:
    D_{K}(E_{K}(S_A(g^x,g^y)))=S_A(g^x,g^y).
  6. Осуществляет проверку подписи S_{A} с помощью открытого ключа PK_{A}.

Габидулин стр 132

Жиро

  • В протоколе Жиро участвуют три стороны - Алиса, Боб и надежный центр Трент.
  • У Трента есть открытый и секретный ключи криптосистемы RSA,
n=pq,~e,~d=e^{-1}~\bmod~\varphi(n),

с дополнительным параметром g, генератором подгруппы максимально возможного порядка мультипликативной группы \mathbb{Z}^{*}_{n}:

PK_{T}=(n,e,g) - открытый ключ,
SK_{T}=(d) - секретный ключ.

1 этап

Алиса и Боб вместе с Трентом создают свои секретные ключи, обмениваясь информацией по надежному защищенному каналу. Алиса и Боб выбирают свои секретные ключи, числа a и b:

SK_{A}=a,
SK_{B}=b,

и генерируют сообщения A и B и отправляют вместе с идентификаторами I_{A}, I_{B} центру сообщения Тренту:

Alice\to\{I_{A},~A=g^{-a}~\bmod~ n\}\to Trent,
Bob\to\{I_{B},~B=g^{-b}~\bmod~ n\}\to Trent,

2 этап

Трент вычисляет открытые ключи для Алисы и Боба и также по надежному каналу передает им:

Trent\to\{PK_{B}=(B-I_{B})^{SK_T}=(g^{-b}-I_B)^{d}~\bmod~n\}\to Alice,
Trent\to\{PK_{A}=(A-I_{A})^{SK_T}=(g^{-a}-I_A)^{d}~\bmod~n\}\to Bob.

3 этап

Получив сообщения от Трента, Алиса и Боб могут создать общий секретный симметричный сеансовый ключ.

Например, вычисления ключа для Алисы выглядят следующим образом:

K_{A}=(PK_B^{e}+I_B)^{SK_A}=(((g^{-b}-I_B)^d)^e+I_B)^a=(g^{-b}-I_{B}+I_B)^a=g^{-ab}~\bmod~n.

Аналогично Боб вычисляет

K_{B}=(PK_A^{e}+I_A)^{SK_B}=g^{-ab}~\bmod~n.

Система Orphus

Комментарии