私は現在Botanライブラリを使用しています。Botan AES CBC PKCS7暗号化と復号化
PKCS7パディングモードを使用してAES/CBCモードを使用してファイルを暗号化したいとします。
Botanによって提供されるAES/CBC解読は、エラーが発生したときに例外をスローし、パディング・オラクル攻撃に対して脆弱かどうかわかりません。
攻撃を防ぐために復号化プロセスをどのように実行する必要がありますか?
更新:私はパディングエラーを返さない場合でも
、ファイルが攻撃者によって知られてすることができ、変更されません。次のように
私のコードは次のとおりです(IVとキーが適切に設定されます)
void encrypt(std::istream &in, std::ostream &out) { try { Botan::SymmetricKey key_t(key); Botan::InitializationVector iv_t(iv); Botan::Pipe encryptor(Botan::get_cipher(cipher_mode, key_t, iv_t, Botan::ENCRYPTION), new Botan::DataSink_Stream(out)); encryptor.start_msg(); in >> encryptor; encryptor.end_msg(); // flush buffers, complete computations } catch(...) { throw; } } void decrypt(std::istream &in, std::ostream &out) { try { Botan::SymmetricKey key_t(key); Botan::InitializationVector iv_t(iv); Botan::Pipe decryptor(Botan::get_cipher(cipher_mode, key_t, iv_t, Botan::DECRYPTION), new Botan::DataSink_Stream(out)); decryptor.start_msg(); in >> decryptor; decryptor.end_msg(); // flush buffers, complete computations } catch(...) { throw; } }
1.パディング・オラクル攻撃を避けるために、パディング・エラーは戻されません。 2.あなたはどのように暗号化を使用しているのか、パッディング・オラクル攻撃が可能かどうかに影響します。 – zaph
@zaphご返信ありがとうございます。私は私の質問を更新しました。 –
いいえ1は不明ですが、キーのない暗号化ファイルは安全です。 – zaph