기본 콘텐츠로 건너뛰기

BEAST Attack

BEAST Attack 이 TLS 1.0에서 TLS 1.1로 업그레이드되는 과정 중 중요한 변화로 초기화 벡터(IV)가 CBC 모드에서 계산되는 방식을 꼽을 수 있다. 초기화 벡터(IV)는 무엇일까. TLS는 공개 채널을 통한 암호화 키의 안전한 교환을 위한 사양으로 키 교환이 끝나면(대칭 암호화를 대신하여) 전송된 데이터의 보안을 유지한다. 대칭 암호화 알고리즘은 이제 한물간 방식이라고 평가되지만, 초기화 백터(IV)의 중요성을 이해하는 데 좋은 사례이다. 대칭 암호화 알고리즘의 대표적인 DES 알고리즘을 간단히 알아보면 블록 암호화 알고리즘으로 고정된 크기의 데이터 블록에서 동작한다는 특징이 있다. 암호화 키(8 바이트)와 함께 8 바이트의 평문을 입력 받아 8 바이트의 암호문을 출력한다. 이 암호문을 공개적으로 전송하여도 암호화 키를 모른다면 원본 문자열로 복구할 수 없으므로 안심할 수 있다. 이와 같이 모든 블록 암호는 정확하게 블록 크기에서 동작한다. 만약 데이터가 부족한 경우 쓰레기 데이터를 채워 넣어서 블록의 크기를 맞춰준다. 블록 암호의 한 가지 문제점은 결정적이라는 것이다. 예를 들어 8 바이트 문자열 sendhelp 와 8 바이트 키 password 가 주어지면 모든 DES 구현체들은 8 바이트 암호문 df a1 16 88 92 5c ad 78 를 생성한다. 이는 모든 블록 암호화 알고리즘의 자연스러운 특징으로 복호화를 위해서 이러한 예측이 가능해야하며 다른 키를 사용한다면 전혀 다른 암호문을 생성한다는 사실을 확인할 수 있다. 동일한 키를 사용하여 동일한 8 바이트 데이터를 암호화하면 출력된 암호문이 동일하다는 점을 공격자는 어떻게 악용할 수 있을까. 생각보다 컴퓨터 통신은 상당히 반복적인 경향이 있다. HTML 문서를 떠올려보자. 얼마나 많은 반복적인 8 바이트 시퀀스들이 있는지 (Ex. <div><div> ) 하나의 가설을 세워보자. 댄은 밥이 자신의 아내 킴벌리와 바람을 피우고 있다고 의심한다