2017-05-12 20 views
1

私は現在Botanライブラリを使用しています。Botan AES CBC PKCS7暗号化と復号化

PKCS7パディングモードを使用してAES/CBCモードを使用してファイルを暗号化したいとします。

Botanによって提供されるAES/CBC解読は、エラーが発生したときに例外をスローし、パディング・オラクル攻撃に対して脆弱かどうかわかりません。

攻撃を防ぐために復号化プロセスをどのように実行する必要がありますか?

更新:私はパディングエラーを返さない場合でも

  1. 、ファイルが攻撃者によって知られてすることができ、変更されません。次のように

  2. 私のコードは次のとおりです(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; 
        } 
    } 
    
+0

1.パディング・オラクル攻撃を避けるために、パディング・エラーは戻されません。 2.あなたはどのように暗号化を使用しているのか、パッディング・オラクル攻撃が可能かどうかに影響します。 – zaph

+0

@zaphご返信ありがとうございます。私は私の質問を更新しました。 –

+0

いいえ1は不明ですが、キーのない暗号化ファイルは安全です。 – zaph

答えて

0

ランダムIVとのCBCモードを使用するだけで使用するためにIVで暗号化されたデータの前に付けます秘密にする必要はありません。 IVを渡す必要はなく、暗号化関数はランダムIVを作成します。

+0

これは、他人の改ざんからファイルを保護することが自分の責任であることを意味しますか? –

+0

ランダムIVを提供する必要があります。あなたが改ざんを心配する場合は、認証を追加する必要があります。ユースケースと脅威評価を提供する必要があります。誰があなたを守っているのか、どのような能力を持ち、貨幣単位や評判に価値があるのでしょうか? 100%安全ですが、本当に近い可能性があります。 – zaph

関連する問題