私にメッセージを送信する場合は、次のことができます。
a)秘密鍵を使用してメッセージを暗号化します。公開鍵を使用して復号化できます。
b)メッセージのデジタル署名を作成し、暗号化されていないメッセージと共に署名を送信できます。
私の2つの質問は次のとおりです。
1)(a)シナリオで、暗号化されたメッセージが途中で改ざんされた場合、公開鍵を使用してメッセージを復号化できないことをどこかで読みました。これは事実ですか?改ざんの有無にかかわらず、あらゆるメッセージに公開鍵を適用できると思いました。改ざんされていると、メッセージは意味不明なものになっている可能性があります。
2)(a)に対する(b)の利点は何ですか? (a)の暗号化されたメッセージと(b)のデジタル署名が両方とも同じ秘密鍵を使用して暗号化されているとすると、(b)によって提供されるセキュリティはどのように優れていますか?
これらの誤解は、一般の人にデジタル署名を説明しようとする人々から来ています。誰かが非対称暗号化の概念を理解したら、署名を説明する一般的な方法は「秘密鍵による暗号化」ですが、実際にはそのようなことはありません(非常に技術的な説明については こちらを参照 )。非対称暗号化とデジタル署名を2つのまったく別のものとして考える方がはるかによいでしょう。
この説明で多くの問題のいくつかに遭遇しました。誰かが自分の秘密鍵で「暗号化」されたメッセージを送信しようとし、それが改ざんされた場合、あなたはそれを「復号化」できるはずですが、意味不明です。
しかし実際には、メッセージは長すぎて、非対称暗号で直接暗号化または署名することはできません。暗号化する場合、通常、対称鍵が生成され、データの暗号化に使用されます。その後、その鍵は受信者の公開鍵と非対称に暗号化されます。
同様に、署名時には、メッセージはまずダイジェストアルゴリズム(暗号化ハッシュ)を通過してデータの構造を削除し、秘密鍵で署名された小さなダイジェストを出力します。署名するメッセージが非常に短い場合でも、ハッシュを介してメッセージを渡す必要があります。そうしないと、攻撃者が代数的にあなたに関連するランダムなメッセージに対して 署名を偽造 できる可能性があります。
正しい署名を使用する必要があるある種のハッシュが必要なため、署名を元のメッセージに戻すことはできません。そのため、メッセージも受信者に個別に送信されます(その結果、(a)シナリオは不可能です)。多くの場合、メッセージは送信者の秘密鍵で署名され、ランダム対称鍵で暗号化されます。その後、それ自体が受信者の公開鍵で暗号化されます。
あなたが尋ねる質問は、実際に一方が他方よりも全体的に良くも悪くも問題ではありません。これらは、異なるタスクを実行する2つのツールです。
暗号化-誰かの公開鍵で暗号化されたメッセージは、一致する秘密鍵を所持している誰かしか復号化できません。誰からのメッセージでしたか?約束はありません!
署名-署名されたメッセージが表示された場合、一致する秘密鍵を所持している人が手にしたため、メッセージが変更されていないことを確認できます。
これら二つの行為は非常に異なる用途を持っています。一緒に使用することもよくあります。署名付きメッセージの暗号化は非常に一般的です。一部の人々は、署名されたメッセージの暗号化されたエンベロープにさえ署名します。それぞれ独自に。
a)公開鍵/秘密鍵でメッセージを暗号化しない。公開鍵暗号を使用する場合は、鍵を生成し、その鍵を使用して対称暗号でメッセージを暗号化し、非対称鍵でのみ鍵を暗号化します。
b)ここでの署名は、秘密鍵で暗号化されたメッセージのハッシュです。
どちらの場合も、受信者はあなたの公開鍵があれば、マッサージが変更されたかどうかを検出できます。 2)b)必要な手順が少なく、受信者は公開鍵なしでメッセージをリードできます。そして、a)からb)に勝る利点はありません