지난 글 : [알고리즘/알고리즘 도감] - 디피-헬만 키 교환법
메시지 인증 코드는 '인증'과 '변조 검출'의 두 가지 기능을 갖는 구조다. 암호문이라도 도중에 내용이 복호화돼 변조될 위험이 있다. 이것을 방지하는 것이 메시지 인증 코드다.
1
메시지 인증 코드가 필요한 상황을 생각해보자.
1. A가 B에게서 상품을 사기 위해 상품 번호를 나타내는 'abc'라는 메시지를 보낸다.
2. 여기서 A는 메시지를 암호화한다. 암호화에는 '공통키 암호 방식'을 사용하기로 한다. A는 안전한 방법으로
B에게 키를 보낸다.
3. A는 공유한 키를 사용해 메시지를 암호문으로 만든다.
4. A는 암호문을 B에게 보내고, B는 이것을 복호화한다. B는 메시지인 상품 번호 'abc'를 확인할 수 있다.
이는 문제가 없는 경우지만 아래와 같은 상황이 발생할 수 있다.
2
A가 B에게 전송하려 한 암호문을 악의를 지닌 X가 변조한 상황을 생각해보자.
1. B는 변조된 암호문을 받지만 변조된 것을 눈치채지 못한다.
2. 변조된 암호문을 B가 복호화하면 메시지가 'xyz'로 변경돼 있다.
3. B는 'xyz'가 주문한 상품 번호라 믿고 A에게 잘못된 상품을 보낸다.
메시지 인증 코드는 이와 같은 메시지 변조를 감지할 수 있다.
실제 흐름을 보기 위해 상황을 A가 V에게 암호문을 전달하는 부분으로 되돌린다.
1. A는 메시지 인증 코드 작성을 위한 키를 만들고 안전한 방법으로 B에게 전달한다.
2. A는 암호문과 키를 사용해 특정값을 만든다. 여기서는 '7f05'라는 값이 만들어진다. 이 키와 암호문을 조합해 만든
값을 '메시지 인증 코드'라 한다. 영어로 'MAC(Message Authentication Code)'라 부르기에 지금부터 MAC이라 함
3. A는 B에게 작성한 MAC인 '7f05'와 암호문을 보낸다.
4. A와 마찬가지로 B도 암호문과 키를 사용해 MAC을 작성한다. B는 스스로 계산한 '7f05'가 A가 준 '7f05'와
일치하는지 확인한다.
5. 다음은 암호문용 키를 사용해 복호화하기만 하면 된다. 무사히 A가 주문한 상품 번호 'abc' 메시지를 추출할 수 있다.
여기서 악의를 지닌 X가 통신 도중 암호문을 변경하려는 상황을 생각해보자.
상황을 A가 암호문을 B에게 전달하려는 부분으로 되돌린다.
1. A가 B에게 전달하려 한 암호문과 MAC 중 암호문을 X가 변조한다.
2. B는 암호문으로부터 MAC을 계산해 'b85c'라는 값을 얻는다. A가 준 MAC '7f05'와 일치하지 않는다.
3. 이를 통해 B는 암호문이나 맥, 혹은 둘 다 변조됐을 가능성이 있다 생각한다. 여기서 B는 A에게서 받은
암호문과 MAC을 파기하고 A에게 다시 전송을 요청하면 된다.
참고 서적 :
'알고리즘 > 알고리즘 도감' 카테고리의 다른 글
전자 인증서 (0) | 2022.07.01 |
---|---|
전자 서명 (0) | 2022.06.30 |
디피-헬만 키 교환법 (0) | 2022.06.28 |
하이브리드 암호 방식 (0) | 2022.06.27 |
공개키 암호 방식 (0) | 2022.06.26 |