アリスとボブがDiffie-Hellman鍵交換を使用して互いにメッセージを送信するプロジェクトを行っています。私にループを投げかけているのは、彼らが使用している証明書をこれに組み込んで、彼らの秘密のメッセージを取得できるようにする方法です。
MIM attakcsについて私が理解していることから、この図に示すように、MIMは詐欺師として機能します。
以下は私のプロジェクトの詳細です。通信する前にgとpの両方で合意していることは理解していますが、署名を検証するための証明書を持っている場合、どうすればこれを実装できますか?
アリスは⟨signA(NA、Bob)、pkA、certA⟩を準備します。ここで、signAはアリスが使用するデジタル署名アルゴリズム、「Bob」はボブの名前、pkAはXに従ってエンコードされたgxmodpに等しいアリスの公開鍵です。 Diffie-Hellman鍵交換で指定されている固定g、pの場合は509であり、certAは、署名を検証するアリスの公開鍵を含むアリスの証明書です。最後に、NAは8バイトの長さのナンス(ランダムな文字列)です。
ボブはアリスの署名をチェックし、⟨signB{NA、NB、Alice}、pkB、certB⟩で応答します。アリスは、ナンスNAをチェックし、Diffie-Hellman鍵交換に従って、pkA、pkBに基づいてジョイントキーを計算するというメッセージを受け取ります。次に、アリスはメッセージ⟨signA{NA、NB、Bob}、EK(MA)、certA⟩をボブに送信し、Bobrespondswith⟨SignB{NA、NB、Alice}、EK(MB)、certB⟩。
ここで、MAとMBは対応するシークレットメッセージです。