Другое

Алгоритм Диффи-Хеллмана в С и Java: определение и как работает

Lorem ipsum dolor

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

Алгоритм Диффи-Хеллмана решил главную проблему в шифровании — распределение секретных ключей между сторонами. Ведь для секретного «общения» между несколькими сторонами нужны:

  • открытые ключи шифрования, к которым может получить доступ кто угодно;

  • закрытые ключи шифрования, которые знают только участники «общения».

Секретный ключ нужен для того, чтобы один участник «общения» при помощи него зашифровал свое сообщение и отправил «собеседнику». «Собеседник», получив зашифрованное сообщение, при помощи секретного ключа расшифрует его и прочтет. Если зашифрованное сообщение будет перехвачено в момент передачи, тогда без знания секретного ключа для хакера оно окажется бесполезным.

Но как быть, если «собеседники» хотят «начать общаться», но канал между ними не зашифрован? А это значит, что открыто обменяться секретным ключом они не могут, потому что его могут перехватить. Эту проблему решает алгоритм Диффи-Хеллмана.

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

Этот криптографический алгоритм был разработан двумя учеными: Уитфилдом Диффи и Мартином Хеллманом. Впервые идея этого алгоритма была озвучена в 1976 году. Идея простая, но эффективная.

Давайте посмотрим на процесс действия этого алгоритма на примере красок вместо криптографических ключей. Допустим, у нас есть 2 пользователя, которые хотят создать общую секретную краску. Их общение происходит по незащищенному каналу. Сам процесс:

  1. Оба пользователя выбирают общую краску, например, желтую.

  2. Каждый пользователь выбирает секретную краску для себя. Например, первый — оранжевую, а второй — голубую. Каждый знает только о собственной краске и держит ее в секрете.

  3. Каждый пользователь смешивает общую краску со своей секретной. У первого будет «желтая + оранжевая», у второго будет «желтая + голубая».

  4. Пользователи обмениваются между собой своими смесями красок. Первый пользователь передал собеседнику смесь «желтая + оранжевая», а второй передал собеседнику смесь «желтая + голубая».

  5. Потом каждый пользователь смешивает смесь красок, полученную от собеседника, со своей секретной краской. Первый пользователь добавляет в смесь «желтая + голубая» свою секретную оранжевую. А второй пользователь добавляет в смесь «желтая + оранжевая» свою секретную голубую.

  6. Полученная смесь из 3-х красок и будет общей секретной краской. У обоих пользователей на руках будет краска «желтая + голубая + оранжевая». При этом ни один из пользователей не будет знать секретной краски собеседника.

Точно такое же «смешивание» секретных ключей происходит по алгоритму Диффи-Хеллмана. На примере с краской может показаться, что алгоритм ненадежный, потому что хакер может перехватить передаваемую «смесь красок». Потом отделить от «смеси» известную ему «желтую» и в остатке получить «секретную» краску.

На словах процесс действительно несложный. Однако в реальной жизни передаваемые «смеси» из ключей представляют собой очень большие значения, которые практически не отделимы друг от друга. Плюс в «смеси» могут участвовать не только 2 ключа, а гораздо больше, что делает их расшифровку практически невозможной. Помимо этого, такое смешивание ключей называют односторонним процессом. То есть это категория процессов, которая легко протекает в одну сторону и достаточно сложно в другую. В нашем случае смешать 2 краски легко, но потом из этой смеси нереально полностью отделить краски друг от друга. Точно так же происходит и при смешивании ключей. Смешать 2 ключа между собой довольно просто, а отделить практически нереально.

Насколько стойкий алгоритм Диффи-Хеллмана

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

Однако у него есть и слабое место. Он не может противостоять атаке «человек посередине». Это такой вид атаки, когда общение между двумя пользователями происходит через третьего. То есть в нашем случае с красками может появиться третий «человек посередине», который будет получать краску от первого пользователя и передавать второму, и наоборот, получать от второго и передавать первому. Однако в смесь к одному и второму он добавит свою секретную краску. Причем ни первый ни второй пользователь не будут подозревать о существовании третьего и будут думать, что они общаются напрямую друг с другом.

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

Заключение

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

Схожие статьи

Windows 10 creators update: что это за обновление и нужно ли его устанавливать?
Другое

Windows 10 creators update: что это за обновление и нужно ли его устанавливать?

Квантовый компьютер D-Wave: описание мощнейшего в мире компьютера
Другое

Квантовый компьютер D-Wave: описание мощнейшего в мире компьютера

Другое

CI и CI+: в чём разница между этими технологиями защиты контента?

Профессия дизайнер пользовательских интерфейсов: коротко о главном
Другое

Профессия дизайнер пользовательских интерфейсов: коротко о главном