7

アリスとボブがいるとします。

Alice は、Bob の公開鍵で暗号化したメッセージを Bob に送信します。Bob は、彼の秘密鍵を使用して暗号化を解除できる唯一の人物です。しかし、どうすればそのメッセージがアリスからのものだと確信できるのでしょうか?

彼が、アリスの公開鍵を使用してメッセージを暗号化して返信するとします。メッセージを解読できるのは Alice だけです。しかし、それがボブによって送信されたことをどのように確認できますか?

ボブが「これは間違いなくアリスから来た」と言えるように、アリスは自分のメッセージに何らかのパブリック ハッシュを追加する必要がありますか?

4

4 に答える 4

10

あなたが説明するシナリオは、実際には信頼性を提供しません。したがって、アリスとボブの両方が、お互いに話していることを確信できません。このシナリオは機密性を提供するだけであり、機密性も提供しません。

ボブは、アリスの公開鍵であると彼が考えている公開鍵が実際に彼女のものであることをアリスに手動で確認する必要があります(彼女に電話してロードを読み上げ、彼女の声でそれがアリスであることを確認することによって)。

この問題は通常、信頼できるサード パーティ (たとえば、VeriSign などの認証局) によって解決されます。たとえば、Alice が実際にこの特定の公開鍵の所有者であることを示す証明書を発行します。これは、最新のブラウザーで解決される方法であり、すべての SSL セッション (選択した銀行との) が機能する方法です。認証局が銀行からの証明書に署名し (証明書に含まれる公開鍵の所有者が実際に銀行であることを示します)、ブラウザーには認証局からの証明書が既に組み込まれています (検証可能な証明書のチェーンを構築します)。 )。

あなたが説明するシナリオは、いわゆるMITM(中間者)攻撃に対して脆弱であり、公開鍵暗号化だけでは解決できません。

于 2010-03-02T16:19:53.423 に答える
5

ボブはアリスの公開鍵も持っており、アリスは彼女の秘密鍵でメッセージに署名しました。ボブは、アリスの公開鍵を使用して署名を検証します。

アリスがボブからのメッセージであることを確認するために逆に進みます。

あとは、Bob が Alice の本当の公開鍵を持っていることを確認するだけです。

于 2010-03-02T16:11:23.803 に答える
1

あなたが話していることは、非常に大まかに言えば、.Net フレームワークにある非対称暗号化アルゴリズムの別の実装のように見えます。

.Net は、非対称暗号化に 2 つのブランチを採用しています !!!

  1. RSA ** すべての非対称 enc の目的で使用される Grand Mac パパ。
  2. DSA ** 作成者を検証するためのデジタル署名の使用と作成に関連しています。

どちらもアブストラクト

両者は、それらがどのように機能し、開発者がそれらをどのように実装するかという点で互いに非常に似ていますが、その下で、2 つの非常に異なるアルゴリズムが存在することを読みました。

あなたが話しているのはオプション 2 です。

.Net は DSACryptoServiceProvider と呼ばれるクラスを提供します。これにより、一般に署名と呼ばれる値でデータにタグを付けることができます。

MSの公式コースの教科書によると、大まかにどのように機能するかが分かります。

データ >>> ハッシュ Alg >>> ハッシュ値 >>>>>>>>> Asymm' Alg >>>> 署名送信者の PVT.KEY >>>

以下は、Bob が Alice が実際に送信者であるかどうかを確認する方法を示しています。

データ >>> ハッシュアルゴリズム >>> ハッシュ値 || 復号化された署名 <<< Asymm' Alg <<< 署名 <<< 送信者の PUB.KEY ? == ?

ご覧のとおり、アリスが送信者であることを確認するために、ボブは生成されたハッシュと復号化された署名を比較する必要があります。DSACrypto' クラスには、ここで使用できるメソッドが 4 つありますが、文脈上有効なのは 2 つだけです。この時点で、Bob にできることはこれだけです。彼の公開鍵が Alice の公開鍵ではない場合、Bob が偽の公開鍵を使用しようとしているため、ソフトウェア アプリケーションは基本的に、Bob が死んだ状態で先に進むのを阻止する必要があります。アリスと通信しようとしています。これは課せられた関係であり、公開鍵の重要性が強調されています。署名により、公開鍵の所有者を確認できます。

ここでなぜ?::

Bob が Alice の公開鍵を持っている場合、同じアルゴリズムを再度使用して、.VerifyHash または VerifyData メソッドを使用して暗号化されたデータを復号化できます。このコンテキストを考えると、彼らが何をするかは簡単です。これはすべてアリスの公開鍵を使用して行われます。SignHash メソッドと SignData メソッドは Alice の秘密鍵を必要とするため、Alice だけが使用できます。

上記でわかるように、特定のレベルの機能は、DSA および RSA CryptoServiceProvider クラス内に既にカプセル化されています。DSA アルゴリズムを使用すると、生成された出力を照合することで送信者を認証できるため、Alice を送信者として毎回検証するためにそれらをどれだけうまく実装するかにかかっています。特定の署名とハッシュが一致する必要があります。一致する場合、本質的に、DSA は Bob と Alice の間で特定のレベルの機密性を付与しています。

于 2010-04-20T01:13:04.057 に答える
-1

秘密鍵は本当に「秘密」であると想定しているため、つまり、アリスとボブは、仕事を辞めるときにUSBキーをマシンに接続したままにしないでください。

于 2010-03-02T16:14:09.973 に答える