암호 기술의 기초와 응용
CBC 모드로 암호화한 데이터를 받는 서버가, 복호화한 후의 패딩이 올바르지 않을 때와 패딩은 올바르지만 내용 검사에 실패했을 때 서로 다른 오류를 돌려주고 있었다. 이 상황에 대한 설명으로 올바른 것은?
- A공격자는 암호문을 바꿔 써서 보내고, 오류의 차이를 단서로 키를 모른 채 평문을 1바이트씩 구할 수 있을 우려가 있다
- B오류의 차이로 알 수 있는 것은 패딩의 길이뿐이므로, 키가 새어 나가지 않는 한 평문의 내용 자체가 새어 나갈 우려는 없다
- C키를 AES-128에서 AES-256으로 바꾸면 오류의 차이로부터 평문을 구할 수 있을 우려는 없어진다
정답과 해설 보기
정답: A. 공격자는 암호문을 바꿔 써서 보내고, 오류의 차이를 단서로 키를 모른 채 평문을 1바이트씩 구할 수 있을 우려가 있다
CBC 모드의 복호화에서는 어떤 암호문 블록의 비트를 반전시키면, 다음 블록의 복호화 결과에서 같은 위치의 비트가 반전됩니다. 공격자는 직전 블록의 마지막 바이트를 바꾸면서 보내고, '패딩이 올바르다'고 판정되는 값을 찾음으로써 평문의 마지막 바이트를 구하며, 이를 반복하여 1바이트씩 평문을 밝혀낼 수 있습니다. 이것이 패딩 오라클 공격으로, 오류의 종류나 응답 시간의 차이가 단서(오라클)가 됩니다. 대책의 기본은 GCM 같은 인증 암호화를 사용하거나, 암호문에 붙인 MAC을 먼저 검증하여 변조된 암호문은 복호화 전에 일률적으로 거부하는 것입니다.