1

私は暗号化されたデータ転送の問題に取り組んでいます。この問題では、200回に1回の復号化で「破損したパッドブロック」エラーが発生します。このスキームは、暗号化された電子メールと非常によく似ています(そして、かなり大量のデータ用に設計されています:ユニットあたり最大1GB)。

  1. セッションキーとして使用するランダムな256バイトを生成します。
  2. 受信者の公開鍵を使用してセッション鍵を暗号化します
  3. AESのキーパラメータとしてセッションキーを使用して、CBC AES PKCS#7パディングでデータを暗号化します。

その後、受信機は

  1. 彼の秘密鍵を使用してセッション鍵を復号化します。
  2. セッションキーを使用してデータを復号化します。

現在、平均して200回に1回、ランダムなバイトによってデータが復号化できなくなります。復号化の最後に「パッドブロックが破損」します。同じバイトシーケンスは常に機能するか、常に失敗を引き起こします。暗号化するデータの内容に違いはないようです(ただし、この領域にはまだいくつかのテストが残っています)。

失敗を回避する方法について何か提案はありますか?

4

1 に答える 1

1

はい、ビクター・ソロキンは正しいです。セッションキーの先行ゼロは、転送で削除されました。

RSA暗号化は純粋に数学的な関数であり、先行ゼロを削除します。セッションキーが復号化されると、キーが元の長さと値を取り戻すために、先行ゼロを埋め戻す必要があります。利用可能なパディングスキームがありますが、それらは両側で採用する必要があります。

Bouncycastle FAQは、いくつかの詳細を追加します。ここで質問番号4を参照してください: http ://www.bouncycastle.org/wiki/display/JA1/Frequently+Asked+Questions

于 2012-08-15T13:12:19.553 に答える