web-dev-qa-db-ja.com

RSA暗号化の問題[ペイロードデータのサイズ]

rSA暗号化は限られたデータペイロードしか処理できないというのは本当ですか? ...理論と混同されています...理論的にはこれに関する注記はありません...

20
Sudantha

あまり安全ではない基本的なRSAアルゴリズム(パディングなし)では、メッセージのサイズはモジュラスよりも小さくなるように制限されています。

RSAのセキュリティを強化するには、PKCS1で定義されているパディングスキームを使用する必要があります。選択したスキームによっては、メッセージのサイズをモジュラスよりも大幅に小さくすることができます。 http://en.wikipedia.org/wiki/PKCS1

12
mrks

RSAは、モジュラスよりもいくらか短い長さの単一のメッセージを暗号化します。具体的には、メッセージは最初に「パディング」され、バイトのシーケンスが生成され、0からn-1までの大きな整数として解釈されます。 nはモジュラス(公開鍵の一部)です-したがって、パディングされたメッセージはモジュラスより長くすることはできません。これは、の厳密な最大長を意味します。生のメッセージ。

具体的には、最も一般的なパディングスキーム( PKCS#1 "old-style"、別名 "v1.5")では、パディングによってメッセージに少なくとも11バイトが追加され、パディングされたメッセージの合計の長さが追加されます。モジュラスの長さと等しくなければなりません。 1024ビットRSAキーの場合は128バイト。したがって、メッセージの最大長は117バイトです。結果として得られる暗号化されたメッセージの長さはモジュラスと同じサイズであるため、暗号化によってメッセージサイズが少なくとも11バイト拡張されることに注意してください。

暗号化された大きなメッセージ(たとえば、電子メール)にRSAを使用する通常の方法は、ハイブリッドスキームを使用することです。

  • ランダム対称鍵[〜#〜] k [〜#〜]が選択されます(たとえば、128〜256のランダムビットの生のシーケンス)。
  • 大きなメッセージは、AESなどの適切で効率的な対称暗号化スキームを使用して、[〜#〜] k [〜#〜]で対称的に暗号化されます。
  • [〜#〜] k [〜#〜]はRSAで非対称的に暗号化されます。

大きなメッセージを非常に多くの117バイトのブロックに「分割」し、それぞれをRSAで暗号化することは、さまざまな理由から通常は実行されません。追加の弱点を追加せずに正しく実行することは困難です。各ブロックは11バイト拡張され、無視できない合計メッセージサイズの増加を意味します(ネットワーク帯域幅はリソースが不足している可能性があります)。対称暗号化ははるかに高速です。

76
Thomas Pornin