2013-04-03 5 views
3


Я пытаюсь понять механизм Encrypted Key Exchange. Я немного смутил эту иллюстрацию:
EKE
И не нашел много полезной ссылки там. Может кто-нибудь объяснить механизм EKE и как он работает? Что обмен обеими сторонами и почему это безопасно для нападения, например «Человек в середине»? это будет очень полезно.
Спасибо.Зашифрованный ключ Обменный обмен

ответ

4

При попытке найти реализацию EKE или DH-EKE, я ожидаю, что существует довольно ограниченное количество ссылок. Перекрестные ссылки в Википедии к каждому другому, а также объяснения, которые я встречаю, не всегда так понятны. Оригинальный патент EKE истек в 2011 году, что привело к опубликованию моего понимания EAP-EKE.

Я нашел лучшее объяснение в «Прикладной криптографии» Брюса Шнайера (2-е издание), включая усовершенствования алгоритма. Поскольку у вас уже есть образ процесса, я постараюсь выполнить непрофессионал - ответьте, что там происходит. Я просто изучаю себя, поэтому я могу ошибаться в этом изображении, но, похоже, это реализация DH-EKE. Я буду придерживаться идеи EKE в этом ответе, поскольку я думаю, что я в основном понимаю ;-)

Основой является то, что Алиса и Боб разделяют общий секрет. Я мог бы пропустить момент, как «слабый» он может быть (в вашем изображении он отмечен как слабый), но давайте предположим, что это действительный симметричный ключ криптографии.

Обе стороны имеют такой же симметричный ключ S, это общий секрет

  1. Алиса генерирует открытый/закрытый пары ключей уникальный для сеанса Па (частное) и Р'а (публичное) Алиса шифрует с помощью открытого ключа S и отправляет его Бобу.

  2. Боб (зная S) расшифровывает сообщение Алисы и восстанавливает открытый ключ Алисы P'a. Боб генерирует случайный ключ сеанса K. Боб шифрует K открытым публичным ключом Алиса P'a и отправляет его Алисе.

  3. Алиса расшифровывает сообщение и получает К. Алиса генерирует случайную строку Ra, шифрует его с K и посылает Бобу

  4. Боб расшифровывает сообщение, чтобы получить Ra, генерирует другой случайный Rb, шифрует как с K и отправляет зашифрованное сообщение Алисе.

  5. Алиса расшифровывает сообщение, проверяет, что ее собственный Ra является действительным в сообщении. Она шифрует только Rb с помощью K и отправляет Бобу.

  6. Боб расшифровывает Rb и проверяет, что его собственный Rb действителен.

Для того, чтобы Ева сняла человека в середине, она видела только ключи, зашифрованные другими ключами. Разумеется, использование пароля от контролируемого трафика между Алисой и Бобом невозможно без взлома алгоритма с открытым ключом. Слабый общий секрет, однако, позволяет Еве попытаться притвориться Алисой или Бобом на картинке, поэтому (моя терминология может быть испорчена здесь), можно смонтировать активную атаку на прослушивающий сервер.

Есть предположения в версии, которую я описал, лучше всего объясняемой другими (опубликовано), Алисе доверено создавать хорошую пару ключей, Бобу доверено создавать хороший ключ сеанса. Кроме того, некоторые алгоритмы подходят лучше (или немного хуже).В «Прикладной криптографии» есть вещи, но, поскольку мое второе издание, похоже, немного отстает от таких вещей, как AES, я доверяю, чтобы выкопать более актуальную информацию о хороших шифрах для выбора алгоритма.

Для чего мне кажется, что мне нужно реализовать EKE самостоятельно с C# и Java (Azure .NET back-end, клиент Android). Я пытаюсь упаковать его так, чтобы он мог быть полезен другим.

UPDATE: Очень простая реализация на C# доступен по адресу: https://github.com/kallex/sharp-eke-example

Это shortcutting несколько битов, как сейчас (только SHA256 из открытого текста использовать исходный ключ), поэтому принимать с осторожностью. Мое текущее использование будет генерировать и распространять защищенные ключи для обеих сторон в отдельном канале, поэтому для этого тестового стенда мне не нужна была более сложная реализация.

+0

Похоже, что для некоторых сценариев (генерируемых человеком паролей) слабым секретом является требование в этом процессе - и элегантность алгоритмов сияет именно в этой области. Это может повлиять на мое описание процесса, начинающего использовать общий секрет в качестве ключа. – Kallex

Смежные вопросы