Здавалка
Главная | Обратная связь

Алгоритм обмена ключами Диффи-Хеллмана



Уитфилд Диффи (Whitfield Diffie) и Мартин Хеллман (Martin Hellman) разработали свою систему шифрования с открытым ключом в 1976 г. Система Диффи-Хеллмана (Diffie-Hellman) разрабатывалась для решения проблемы распространения ключей при использовании систем шифрования с секретными ключами. Идея заключалась в том, чтобы применять безопасный метод согласования секретного ключа без передачи ключа каким-либо другим способом. Следовательно, необходимо было найти безопасный способ получения секретного ключа с помощью того же метода связи, для которого разрабатывалась защита. Алгоритм Диффи-Хеллмана нельзя использовать для шифрования или дешифрования информации.

Алгоритм Диффи-Хеллмана работает следующим образом.

  1. Предположим, что двум абонентам (P1 и P2) требуется установить между собой безопасное соединение, для которого необходимо согласовать ключ шифрования.
  2. P1 и P2 принимают к использованию два больших целых числа a и b, причем 1 < a < b.
  3. P1 выбирает случайное число i и вычисляет I = ai mod b. P1 передает I абоненту P2.
  4. P2 выбирает случайное число j и вычисляет J = aj mod b. P2 передает J абоненту P1.
  5. P1 вычисляет k1 = Ji mod b.
  6. P2 вычисляет k2 = Ij mod b.
  7. Имеем k1 = k2 = ai*j mod b, следовательно, k1 и k2 являются секретными ключами, предназначенными для использования при передаче других данных.

Примечание

В приведенных выше уравнениях "mod" означает остаток. Например, 12 mod 10 = 2. Два - это остаток от деления 12 на 10.

Если злоумышленник прослушивает трафик, передаваемый по кабелю, то ему будут известны a, b, I и J. Тем не менее, остаются в секрете i и j. Уровень безопасности системы зависит от сложности нахождения i при известном I = ai mod b. Эта задача называется задачей дискретного логарифмирования и считается очень сложной (т. е. с помощью современного вычислительного оборудования ее решить практически невозможно), если числа очень велики. Следовательно, a и b необходимо выбирать очень тщательно. Например, оба числа b и (b - 1)/2 должны быть простыми и иметь длину не менее 512 бит. Рекомендуемая длина чисел составляет 1024 бит.

Алгоритм обмена ключами Диффи-Хеллмана используется во многих системах безопасности для реализации обмена ключами, используемыми для дополнительного трафика. Недостатком системы Диффи-Хеллмана является то, что она может быть уязвима для атаки посредником (см. рис. 12.9). Если атакующий сумеет разместить свой компьютер между двумя абонентами P1 и P2, подключить его к каналу связи и осуществлять перехват всей передаваемой информации, то он сможет выполнять обмен данными с P2, выдавая себя за P1, и с P1 под видом P2. Таким образом, обмен ключами будет происходить между P1 и злоумышленником и между P2 и злоумышленником. Тем не менее, осуществление такой атаки требует большого объема ресурсов, и в реальном мире такие атаки происходят редко.

Алгоритм RSA

В 1978 г. Рон Ривест, Ади Шамир и Лен Адельман разработали алгоритм шифрования Rivest-Shamir-Adleman (RSA) с открытым ключом. В отличие от алгоритма Диффи-Хеллмана RSA может использоваться для шифрования и дешифрования. Также, в отличие от алгоритма Диффи-Хеллмана, безопасность алгоритма RSA базируется на факторизации больших чисел. Задачу факторизации больших чисел принято считать очень сложной, если числа очень велики (1024 бит или больше).

Базовый алгоритм, позволяющий обеспечить конфиденциальность данных, очень прост.

Шифрованный текст = (открытый текст)e mod nОткрытый текст = (шифрованный текст)d mod nСекретный ключ = {d, n}Открытый ключ = {e, n}

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

Также следует заметить, что алгоритм может быть обращен для обеспечения аутентификации отправителя. В этом случае алгоритм будет иметь следующий вид.

Шифрованный текст = (открытый текст)d mod nОткрытый текст = (шифрованный текст)e mod nСекретный ключ = {d, n}Открытый ключ = {e, n}

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







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.