2017-05-12 23 views
1

지금 Botan 라이브러리를 사용하고 있습니다.Botan AES CBC PKCS7 암호화 및 해독

PKCS7 패딩 모드를 사용하여 AES/CBC 모드를 사용하여 파일을 암호화하고 싶습니다.

Botan에서 제공하는 AES/CBC 해독은 오류가 발생했을 때 예외를 throw하고 패딩 오라클 공격에 취약한 지 여부를 확신하지 못합니다.

그래서 공격을 막기 위해 해독 과정을 어떻게 수행해야합니까?

업데이트 : 나는 패딩 오류를 반환하지 않습니다

  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; 
        } 
    } 
    
임의의 IV와
+0

1. 패딩 오라클 공격을 방지하려면 패딩 오류를 반환하지 않습니다. 2. 귀하는 암호화 사용 방법을 제공하지 않았으며 패딩 오라클 공격의 가능 여부에 영향을 미칩니다. – zaph

+0

@zaph 답장을 보내 주셔서 감사합니다. 나는 내 질문을 업데이트했다. –

+0

아니요 1은 명확하지 않으며 키가없는 암호화 된 파일은 안전합니다. – zaph

답변

0

사용 CBC 모드, 단지 사용을위한 IV에서와 암호화 된 데이터를 접두사 암호 해독, 그것은 비밀 일 필요가 없습니다. IV를 전달할 필요가 없으며 암호화 기능이 임의의 IV를 생성하게합니다.

+0

다른 사람이 파일을 변조하지 못하도록 파일을 보호하는 것은 필자의 책임입니다. –

+0

무작위 IV를 제공해야합니다. 침입에 관심이 있다면 인증을 추가해야하며 유스 케이스 및 위협 평가, 즉 보호 대상, 보유 능력, 통화 단위 또는 평판에 가치가있는 항목을 제공해야합니다. 암호화가 없습니다. 100 % 안전하지만 진짜 가까이있을 수 있습니다. – zaph