지금 Botan 라이브러리를 사용하고 있습니다.Botan AES CBC PKCS7 암호화 및 해독
PKCS7 패딩 모드를 사용하여 AES/CBC 모드를 사용하여 파일을 암호화하고 싶습니다.
Botan에서 제공하는 AES/CBC 해독은 오류가 발생했을 때 예외를 throw하고 패딩 오라클 공격에 취약한 지 여부를 확신하지 못합니다.
그래서 공격을 막기 위해 해독 과정을 어떻게 수행해야합니까?
업데이트 : 나는 패딩 오류를 반환하지 않습니다
경우에도 파일이 변경되지 않습니다, 공격자에 의해 알 수있다. 다음과 같이
내 코드
은 다음과 같습니다 (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