web-dev-qa-db-ja.com

Diffie–Hellman鍵プロトコルを使用して安全な秘密鍵を作成する

たとえば、私には遠く離れた友人がいて、彼に秘密のメッセージを送りたいとしましょう。私はセキュリティの初心者だと言わざるを得ません。だから私は疑問に思っています、 Diffie–Hellman鍵交換プロトコル 必要なすべての計算の後に公開鍵を彼と彼らに送信することによって彼と安全な通信を行うことができますか?もちろん、私たち両方にとって同じになります)そしてそれを相互にメッセージを暗号化/復号化するために使用しますか?そして、私たちのコミュニケーションは安全ですよね?

2
アレックス

Diffie-Hellmanを使用すると、2者が秘密鍵を生成できますが、これは通信を覗き見している人が復元することはできません。この秘密鍵を使用して、DHプロトコルを実行した2者間に安全なチャネルを設定できます。

秘密鍵は、最初のメッセージを交換した2者間で確立されます。 1つのメッセージを送信して応答を受信した場合、このメッセージが友人からのものであることを知る方法はありません。代わりに、中間者から発生する可能性があります。 MitMはあなたのメッセージに返信し、あなたの友人にメッセージを送信することができます。したがって、あなたと通信するための1つの秘密鍵と、あなたの友人と通信するための1つの秘密鍵を設定できます。その点から、あなたとあなたの友人の両方がMitMとの安全なチャネルを持っており、MitMはメッセージを中継してスヌープするか、変更するか、保留するか、必要に応じてメッセージを挿入するかを選択できます。

認証なしで安全なチャネルを設定する方法はありません。友達と通信していることを確認したい場合は、プロトコルを開始する前に友達について何かを知っておく必要があります。そうすれば、攻撃者から友達に伝えることができます。たとえば、友達の公開鍵を持っているとします。あなたの友人も同じ問題に直面しています。

各当事者が相手の公開鍵を知ったら、DHは安全なチャネルを確立するための可能な方法です。 DHセットアップメッセージは公開鍵によって署名されているため、受信側はメッセージの信頼性を確認できます。