Skip to main content

Padding Oracle: 암호문이 알려주는 비밀

CBC 모드에서 서버가 패딩 오류 메시지를 다르게 응답하면, 암호문만으로 평문을 복구할 수 있다. 이게 padding oracle이다. 실전과 CTF 모두 자주 나온다.

공격 감각 잡기

  • 블록 암호는 블록 단위로 복호화된다
  • 마지막 블록의 패딩이 맞는지 여부가 “오라클” 역할
  • 바이트를 하나씩 조작해 정답 패딩을 맞추며 평문을 역추적

핵심은 “응답 차이”다. 상태 코드, 에러 문구, 응답 시간 차이까지 모두 신호가 된다. 암호가 강해도 오라클이 새면 끝이다.

방어 포인트

  • 패딩 오류와 MAC 오류를 구분하지 말 것
  • 항상 같은 응답과 지연으로 처리
  • 가능하면 AEAD 사용 (GCM, ChaCha20 Poly1305)

암호 알고리즘보다 중요한 건 구현의 균일성이다. 작은 에러 메시지 하나가 전체 평문을 내준다.