이 글을 이해하기 위해서는 블록 암호화 알고리즘에 대해 간단한 지식이 있어야 합니다.
가장 일반적으로 사용되는 블록 암호화 모드는 ECB, CBC, GCM 방식이 있다.
아주 간략하게 각 모드별 특징을 알아 보자면
가장 기본적인타입이다. A 를 암호화 하면 B 가 나온다.
A 를 암호화 하면 항상 B 가 나오기 때문에 역추적이 쉽다. 경우의 수가 많으면 많을수록 역산을 통해 암호화 키를 유추하여 알아낼 수 있는 가능성이 매우 높아진다. 보안에 취약하다.
ECB 의 단점을 보완했다. 암호화 키 에다가 IV (초기화 벡터) 라는 값을 추가하여 A 를 암호화 하면 항상 B 가 나오던 문제를 해결하여 역추적을 불가능하게 만들었다. 하지만 중간자 공격 취약점이 존재한다. 즉 A 를 암호화 하여 B가 나왔는데, 이게 진짜 A 를 암호화 해서 나온 값이 맞는지 검증하는 부분이 없다. 그러므로 HTTP 환경이나, 메모리 해킹등을 통하여 중간에 데이터를 가로챈뒤 가짜 데이터를 전달받을 경우 검증할 수 없다. ECB 보다는 훨씬 진보적인 방법이지만 취약점이 존재한다.
CBC 의 취약점을 보완했다. 데이터 값의 HASH 가 암호문에 포함되어 있어 복호화시 실제 그 데이터가 맞는지 검증하는 역할이 추가 되었다. 즉 중간자 공격을 통하여 데이터가 변조되었을 경우 알아낼 수 있다.