패딩 오라클 공격 (Padding Oracle Attack)
쉽게 풀면
암호화할 때 데이터를 정해진 블록 크기에 맞추기 위해 끝부분에 채워 넣는 여분의 값을 패딩이라고 합니다. 만약 서버가 "패딩이 잘못됐다"와 "복호화 결과가 이상하다"를 서로 다른 오류 메시지로 알려준다면, 공격자는 이 미묘한 차이를 반복적으로 살펴보면서 암호문을 한 바이트씩 풀어낼 수 있습니다. 마치 자물쇠 다이얼을 하나씩 돌리며 딸깍 소리가 다른지 확인해 비밀번호를 알아내는 것과 비슷한 원리입니다.
왜 중요한가
암호 알고리즘 자체가 안전하더라도 오류 처리 방식이 부적절하면 정보가 새어나갈 수 있다는 것을 보여주는 대표적 사례이기 때문에, 정보보안학 분야에서는 실제 프로토콜(SSL/TLS, 웹 애플리케이션)에서 발생한 패딩 오라클 취약점 사례를 분석하고 이를 방지하는 설계 원칙을 연구합니다.
논문에서는 이렇게 쓰입니다
실제로 알려진 취약점 사례를 분석하는 문맥입니다.
타이밍 정보를 이용한 변형된 공격 형태를 다루는 문맥입니다.
조금 더 깊게 보면
이 공격은 주로 CBC(Cipher Block Chaining) 모드와 PKCS#7 패딩 방식을 함께 사용할 때 발생하며, 공격자는 이전 블록의 특정 바이트를 조작한 뒤 서버의 응답(정상/오류, 또는 응답 시간)을 관찰해 원문을 한 바이트씩 복원합니다. 이를 방지하려면 패딩 오류와 인증 오류를 구분되지 않게 처리하거나, GCM과 같이 애초에 패딩이 필요 없는 인증암호(AEAD) 방식을 사용하는 것이 권장됩니다.
주의할 점
패딩 오라클 취약점은 암호 알고리즘 자체의 결함이 아니라 구현 및 오류 처리 방식의 문제인 경우가 대부분이므로, 알고리즘 강도만으로는 방어할 수 없다는 점에 유의해야 합니다.