Я делаю проект, в котором Алиса и Боб отправляют друг другу сообщения, используя обмен ключами Диффи-Хеллмана. То, что бросает меня в тупик, - это как включить сертификат, который они используют, чтобы я мог получить их секретные сообщения.
Из того, что я понимаю об атаках MIM, MIM действует как самозванец, как видно на этой диаграмме:
Ниже приведены подробности моего проекта. Я понимаю, что они оба договорились о g и p, прежде чем общаться, но как я смогу реализовать это, если у них обоих есть сертификат для проверки их подписей?
Алиса подготавливает ⟨signA (NA, Bob), pkA, certA⟩, где signA - алгоритм цифровой подписи, используемый Алисой, «Bob» - имя Боба, pkA - открытый ключ Алисы, равный gx mod p, закодированный в соответствии с к X.509 для фиксированного g, p, как указано в обмене ключами Диффи-Хеллмана, а certA - это сертификат Алисы, который содержит открытый ключ Алисы, который проверяет подпись; Наконец, NA - это nonce (случайная строка) длиной 8 байтов.
Боб проверяет подпись Алисы и отвечает «ignsignB {NA, NB, Alice}, pkB, certB⟩. Алиса получает сообщение, что проверяет свой одноразовый NA и вычисляет объединенный ключ на основе pkA, pkB в соответствии с обменом ключами Диффи-Хеллмана. Затем Алиса отправляет сообщение ⟨signA {NA, NB, Bob}, EK (MA), certA⟩ Бобу и Bobrespondswith⟨SignB {NA, NB, Alice}, EK (MB), certB⟩.
, где MA и MB - их соответствующие секретные сообщения.