私はプログラムB1にメッセージを送信する必要のあるプログラムAを持っています。メッセージは暗号化して署名する必要があります。これは、B1だけが解読できることを意味し、メッセージはAから来ていることを確認する必要があります。Crypto ++ RSA - 同じ鍵ペアで暗号化して署名する
また、B1はメッセージを暗号化できず、同じプログラムの別のインスタンスB2に向かってAの役割を果たすべきではありません。
理論的には、AのキーとB1のキーを持つ単一のRSAキーペアを使用することができます。 Bによって復号された後、回復されたメッセージが(ハッシュ関数などによって)検証された場合、誰かにその鍵を公開しなかったAによって送信されたはずである。その場合、両方の鍵はプライベート(安全なチャネルで交換する必要があることを意味します)
1)独立した鍵ペアを使用して暗号化と署名のステップを分けることを推奨しますか?
2)実際には、Crypto ++ライブラリでは、PrivateKey
クラスにも公開鍵が含まれています。秘密鍵だけをロードする方法はありますか?
ここをクリックしてください:http://security.stackexchange.com/ – dahui
セキュリティスタック交換を試してみることは良い考えです。確かに公開鍵は、RSAが動作するために文字通り公開する必要はありません。私的 - 公開鍵のペアが両方の当事者に知られている場合、 'PrivateKey'クラスにも公開鍵が含まれているとどうして問題になりますか?主要なセキュリティ上の欠陥は私のところに飛び出すことはありませんが、それはやや不本意なようです。安全であっても、RSAを対称鍵暗号として使用することはあまり効率的ではありません。 –
@JohnColeman:Bは、これらのメッセージの作成を許可すべきではありません。彼はそれらを解読し、認証することができなければなりません。私はこれが明らかにassymetryを追加するので、質問にこれを加えました。 – galinette