web-dev-qa-db-ja.com

デジタル署名と検証?

私の知る限り、アリスがボブにメッセージを書きたいとき、彼女はボブの公開鍵を使用してメッセージを暗号化し、次にボブ-自分の秘密鍵を使用して-を復号化します。

したがって、公開鍵は復号化に使用され、秘密鍵は暗号化に使用されます。

しかし、私はこの説明を見ました(デジタル署名conextで):

enter image description here

ここでは、ハッシュ値(署名付き)が彼女のprivate keyで暗号化されていると述べていますか?

秘密鍵は復号化(私に送信されたメッセージ)だけでなく、暗号化(私が計算するハッシュ)にも使用されますか?

7
Royi Namir

これは、「署名は秘密鍵による暗号化のようなもの」という通常の混乱です。

それを忘れて。うまくいかない恐ろしい説明です。まさに見た最初のデジタル署名アルゴリズム(非対称暗号に基づく)が最初に記述されたとき(私はRSAについて話していて、それはディスコの時代でした)、昔の数日間で機能します。ただし、RSAの場合でも、セキュリティに重要なパディングを考慮できないため、正しくありません。

PKCS#1 を見て、RSAの使用方法を確認してください。特に、RSAと1024ビットキーを使用したencryptingデータの場合、一度に暗号化できる最大値は117バイトですが、暗号化の結果は常に128バイトであり、これが復号化エンジンが期待することです。 。どれだけ試行しても、128バイトは117バイト未満には収まりません...

覚えておかなければならないのは、秘密鍵は、誰もが実行できないことを行うために使用されるものであることです。つまり、データの復号化(誰でもボブへのメッセージを暗号化できますが、ボブだけがメッセージを読み取ることができます)と署名の生成(誰でも署名を確認できますが、ボブのみです。誰もがボブからのものであると確認できる署名を生成できるはずです)。

デジタル署名アルゴリズムと同じ種類の鍵を使用できる非対称暗号化アルゴリズムがあります(RSA暗号化とRSA署名があり、どちらも「RSA鍵」を使用します)が、両方に同じ鍵を使用すると not良い考え

9
Thomas Pornin

非対称暗号化を使用して、(機密性authenticityの両方を提供できます。

簡単に言えば、メッセージの暗号化ハッシュを計算し、秘密鍵でそれを「暗号化」して、署名を生成することができます。対応する公開鍵を所持している人はだれでも、それを使用して署名が正しいことを確認できます。これにより、メッセージがauthenticであることを証明できます。

逆に、地球上の誰もが公開鍵を知っていても、メッセージを公開鍵で暗号化することは可能であり、秘密鍵だけがそれを復号化できます。これにより、メッセージconfidentialを作成できます。

これらの2つのプロパティを組み合わせると、機密の通信が可能になり、話している相手が実際に想定している相手であることを確認できます。

4
Polynomial