あなたが話していることは、非常に大まかに言えば、.Net フレームワークにある非対称暗号化アルゴリズムの別の実装のように見えます。
.Net は、非対称暗号化に 2 つのブランチを採用しています !!!
- RSA ** すべての非対称 enc の目的で使用される Grand Mac パパ。
- 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 の間で特定のレベルの機密性を付与しています。