DSA & RSA
どちらが強いという話ではありません。
私はインターネットでこの件について調査してきましたが、以下は私が得た情報の要約です。それが正しいかどうか、また、ここで言及していない重要な問題が他にあるかどうかを教えてください。
ここでは、Java への適用における DSA と RSA についてのみ説明します。私の主な目標は、公開鍵アルゴリズムを使用してクライアントからサーバーにセッション キー (AES) を送信し、クライアントの認証を確認することです。
DSA。
1. Java では、ファイルを秘密鍵で暗号化することになっています。
2. これは署名であることを意味します。公開鍵を持っている人は誰でもそれを読み取ることができますが、署名できるのは所有者だけです。
3. 公開鍵を秘密として、またはその逆を使用しようとすると、問題が発生します。なぜなら、秘密から公開鍵を推測することはそれほど難しくないからです。
4. DSA を使用してセッション キーを送信することは事実上できません。
RSA。
1. Java では、公開鍵でファイルを暗号化することになっています。
2.これは、特定の受信者に秘密のメッセージを配信するための最良の方法であることを意味します. 署名された後は、所有者以外は誰も読むことができません。
3. 互いに鍵を交換しようとすると問題が発生します (上記と同じ)
4. クライアントに RSA を効果的に使用して、サーバーの公開鍵で暗号化されたセッション鍵を送信し、クライアントの公開鍵で署名されたサーバーから確認を受け取ることができます.
これに基づいて、目的に RSA を使用することにしました。
AES256 対 AES128
別の無関係な質問 - 非常に機密性の高いデータのないセッション暗号化では、AES256 を使用するのが理にかなっていると思いますか?
したいのですが、エンドユーザーに問題が生じます。256 ビット キーを許可する Java の更新プログラムをインストールするのは非常に簡単であることはわかっていますが、悲しいことに、そのような単純なことでも、潜在的なユーザーベースを半分に減らすことができます。
一方、機密情報 (クレジット カード番号など) を送信せず、各キーが数日以内に使用される場合は、AES128 で十分でしょうか?
明らかに、アップデートをインストールする必要がないユーザーのために、AES256 を使用するオプションを含める予定です。
コメントありがとうございます!