Обмен зашифрованными ключами

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

Обмен зашифрованными ключами (Шаблон:Lang-en) — протокол, разработанный Стивом Белловином и Майклом Мерритом[1]. EKE работает при условии, что у пользователей до начала работы протокола есть общий секрет. Протокол позволяет формировать сеансовый ключ для установления защищенного соединения. Для каждого сеанса генерируется новый сессионный ключ.

Предисловие

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

Работа протокола EKE
Схема работы протокола обмена зашифрованными ключами.

Протокол EKE

Алиса и Боб обладают общим секретом P. Используя протокол EKE у них есть возможность генерировать общий сеансовый ключ K.

  1. Алиса генерирует случайную пару открытый-закрытый ключ, шифрует симметричным шифрованием открытый ключ K' с использованием общего секрета P в качестве ключа. Посылает Боб.
    • Alice{A,EP(K)}Bob
  2. Боб, зная общий секрет, расшифровывает сообщение и получает ключ K'. Далее - случайным образом генерирует сеансовый ключ k, шифрует его открытым ключом K' и общим секретом P. Посылает Алиса.
    • Bob{EP(EK(k))}Alice
  3. Алиса получает общий сеансовый ключ k, расшифровывая сообщение. Генерирует случайную строку RA, шифрует её на k. Посылает Боб.
    • Alice{Ek(RA)}Bob
  4. Боб получает строку Алисы, расшифровывая сообщение. Далее - генерирует свою случайную строку RB. Общим сеансовым ключом шифрует обе строки, передает зашифрованные строки Алисе.
    • Bob{Ek(RA,RB)}Alice
  5. Алиса получает RA и RB, расшифровывая сообщение. Значение RA,полученное от Боба, сравнивается с тем, что было выбрано в пункте (3). Если значения совпадают, то Алиса шифрует RB на ключе и посылает Бобу.
    • Alice{Ek(RB)}Bob
  6. Боб получает RB, расшифровывая сообщение. Значение RB,полученное от Алисы, сравнивается с тем, что было выбрано в пункте (4). Если значения совпадают, то работа протокола завершена - участники могут обмениваться сообщениями используя при их шифровании ключ k.

Стойкость к атакам

В результате работы протокола пассивный криптоаналитик Ева может получить доступ только к EP(K) и EP(EK(k)), а также к сообщениям, зашифрованным на общем сессионном ключе k. Так как в алгоритме используется схема асимметричного шифрования и ключи K' и k выбираются случайно, Ева не сможет подобрать P. Таким образом общий секрет P может быть простым паролем, который в состоянии запомнить человек.

Этапы 3-6 обеспечивают подтверждение. На этапах 3-5 Алиса удостоверяется, что Боб знает общий сеансовый ключ. На этапах 4-6 Боб удостоверяется, что Алиса знает общий сеансовый ключ. Эта же задача решается в протоколе Kerberos посредством обмена метками времени.

Реализации

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

Реализация EKE с использованием системы Эль-Гамаля[1]

Преимущества

При использовании схемы Эль-Гамаля[2] возможно упрощение основного протокола.

Инициализация

Значения g - порождающий элемент группы и p - модуль, по которому производятся вычисления, выбираются для всех пользователей протокола. Также в соответствии с протоколом EKE у пользователей есть общий секрет r. Тогда grmod(p) - открытый ключ.

Работа протокола

  1. В данном алгоритме открытый ключ не надо шифровать на общем секрете P. Для общего случая такой подход не работает. На первом шаге протокола Алиса посылает Бобу:
    • Alice{A,grmod(p)}Bob
  2. Для алгоритма Эль-Гамаля Боб выбирает случайное число R. Тогда на данном этапе Боб посылает данное сообщение:
    • Bob{EP(gRmod(p),kgrRmod(p))}Alice

Реализация EKE с использованием протокола Диффи — Хеллмана, DH-EKE[3]

Работа EKE с алгоритмом Диффи-Хеллмана, DH-EKE

При реализации EKE с использованием протокола Диффи — Хеллмана[4] ключ K генерируется автоматически участниками работы протокола во время его исполнения.

Преимущества

При использовании протокола DH-EKE решается уязвимость базового протокола Диффи-Хеллмана к атаке человек посередине(MITM). Если криптоаналитик не знает общий секрет пользователей, то он не сможет[3] подобрать ключ, потому что шифруются случайные значения.

Инициализация

Значения g - порождающий элемент группы и n - модуль, по которому производятся вычисления, выбираются для всех пользователей протокола. В соответствии с протоколом EKE у пользователей есть общий секрет P.

Работа протокола

  1. Алиса случайно выбирает rA, посылает его Бобу. При этом нет необходимости, чтобы Алиса шифровала первое сообщение на общем секрете P.
    • Alice{A,grAmod(n)}Bob
  2. Боб случайно выбирает rB, вычисляет K, генерирует случайную строку RB, шифрует её на ключе K. Далее - вычисляет grBmod(n), шифрует его на общем секрете P. Передает Алисе.
    • K=grA*rBmod(n)
    • Bob{EP(grBmod(n)),EK(RB)}Alice
  3. Алиса получает grBmod(n), расшифровывая первую часть сообщения с использованием общего секрета P. Далее - вычисляет K, расшифровывает полученным ключом вторую часть сообщения Боба. Генерирует случайную строку RA, шифрует полученные строки на ключе K и посылает Бобу.
    • Alice{EK(RA,RB)}Bob
  4. Боб получает RA и RB, расшифровывая сообщение. Значение RB,полученное от Алисы, сравнивается с тем, что было выбрано в пункте (3). Если значения совпадают, то Боб шифрует RA на ключе K и посылает Алисе.
    • Bob{EK(RA)}Alice
  5. Алиса получает RA, расшифровывая сообщение. Значение RA,полученное от Боба, сравнивается с тем, что было выбрано в пункте (4). Если значения совпадают, то работа протокола завершена - участники могут обмениваться сообщениями используя при их шифровании ключ K.

Усиленный протокол EKE

Стивом Белловином и Майклом Мерритом в работе[1] было предложено усиление части протокола запрос-ответ. Данное усиление позволяет[3] избежать компрометации данных при условии, что у криптоаналитика есть значение прошлого общего сеансового ключа k.

  • На шаге 3 Алиса генерирует случайное число SA. Посылает Бобу:
    • Alice{Ek(RA,SA)}Bob
  • На шаге 4 Боб генерирует случайное число SB и посылает Алисе:
    • Bob{Ek(RA,RB,SB)}Alice

При такой работе протокола Алиса и Боб могут вычислить общий сеансовый ключ -- S=SASB. В дальнейшем этот ключ используется для установления защищенного соединения, ключ k используется как ключ обмена ключами.

Допустим, что Ева получила доступ к значению S, но при этом работа протокола построена так, что это не даст Еве никакой информации об общем секрете P. К тому же, так как на ключе K шифруются только случайные данные, то криптографические подходы для его восстановлению неприменимы.

Примечания

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

Шаблон:Криптосистемы с открытым ключом

  1. 1,0 1,1 1,2 Шаблон:Статья
  2. Шаблон:Статья
  3. 3,0 3,1 3,2 Шнайер Б. Прикладная криптография. Протоколы, алгоритмы, исходные тексты на языке Си = Applied Cryptography. Protocols, Algorithms and Source Code in C. — Шаблон:М: Триумф, 2002. — С. 82. — 816 с. — 3000 экз. — ISBN 5-89392-055-4.
  4. Шаблон:Статья