1

Bouncy Castleに同梱されているRSA実装では、単一ブロックのデータのみを暗号化できます。RSAアルゴリズムはデータのストリーミングには適していないため、そのように使用しないでください。このような状況では、ランダムに生成されたキーと対称暗号を使用してデータを暗号化し、その後、RSAを使用してランダムに生成されたキーを暗号化し、暗号化されたデータと暗号化されたランダムキーを相手側に送信する必要があります。プロセスを逆にします(つまり、RSA秘密鍵を使用してランダム鍵を復号化してからデータを復号化します)。

対称鍵を使用する回避策を使用できません。では、Bouncy Castle以外にRSAの実装はありますか?

4

4 に答える 4

5

この制限は、Bouncy Castleによってランダムに考案されたものではなく、対称鍵の使用は「回避策」ではありません。これは正しい方法です。

RSAアルゴリズムは、本質的に大量のデータの暗号化には適していません。本当に本当に本当に本当に大量のデータでそれを使用したい場合は、データを十分に小さいブロックに分割し、それぞれを暗号化することができます。しかし、これは標準的な方法ではなく、思いもよらなかったセキュリティの問題に遭遇する可能性がありますが、AESなどのブロック暗号には、遭遇する可能性のある問題に対処するための標準的な手段があります(ブロックモードを見てください-本質的にセキュリティの問題があります)たとえば、同じデータを同じキーで複数回暗号化し、ブロックモードはこれに対処するための組み込みの方法です)。

私は実際には、対称暗号化を使用してストリーミングし、RSAを使用して対称鍵(および本質的に他には何も)を暗号化しないという標準的な方法に固執します。

于 2010-05-24T19:32:53.383 に答える
1

データ「ブロック」ごとにRSAを1回呼び出すことができます。これをしないでください。

  • RSAはブロック暗号ではありません。[0,2 n -1]ではなく、[0、p×q]の範囲の入力を受け入れます。明らかな実装では、各出力ブロックは入力ブロックより少なくとも1ビット大きいため、理想的ではありません。
  • RSAは乗法的です。RSA e()を使用して、キーeを使用したRSA暗号化を意味します。
    • RSA e(0)= 0
    • RSA e(1)= 1
    • RSA e(a * b)= RSA e(a)×RSA e(a)

対称鍵を生成できないのはなぜですか?

于 2010-05-24T19:38:19.897 に答える
1

はい、JDKには1つ付属していますが、効果はありません。通常、これはRSAを使用するときに暗号化が行われる方法です。ランダムな対称鍵を生成し、それを使用してデータを暗号化します。対称鍵をRSAで暗号化して送信します。

RSAのみで暗号化し、対称部分を省略したい場合は(BCありまたはなしで)それを行うことができますが、暗号化または復号化が非常に遅くなり、通常の方法よりもはるかに多くのスペースを占有することに注意してください。

于 2010-05-24T19:30:54.777 に答える
1

すべてのRSA実装には、同様の警告があります。これがRSAアルゴリズムの性質です。

説明されているように対称鍵を使用することは、「回避策」ではありません。あたりです。" より優れた暗号化技術を適用する可能性がある場合は、追求する価値があります。

于 2010-05-24T19:31:52.373 に答える