본문 바로가기

Server Infra/Security

보안 스터디 - 메시지 인증 코드 (3/?)

728x90

리얼월드 암호학의 3장은 메시지 인증코드(Message Authentication Code, MAC)에 대한 이야기 이다. 앞서 1장 2장의 요약에서 말한 해시 함수나 대칭/비대칭 키에서닌 비밀 키라는 공통의 요소를 기반으로 만들어진 개념들이다. 이런 키가 없다면 기밀성, 인증 무엇도 있을 수 없다.

 

3장은 이러한 비밀키를 활용한 인증을 어떻게 구현할 수 있는지에 대한 주요 내용을 전당한다.

 

그래서 MAC을 어떻게 활용할까? 대표적으로 우리가 웹 브라우저에서 무지성으로 동의하는 쿠키(Cookie)가 있다. 고객의 보다 나은 경험을 위해 인증을 매번 실행 하는 것이 아니라 각 요청에 필요한 정보들을 저장하고 관리 할 수 있다. 예를 들어 보면, 우리가 어떠한 사이트를 들어갔다고 하자. 계정과 암호를 입력하여 자격증명을 받아온 뒤에 해야할 행위를 끝내고 브라우저를 종료했다. 다시 켰을때 로그인을 다시 해야 할까? 간혼 어떤 서비스들은 이러한 기능을 지원하지 않거나 쿠키내에 저장한 인증의 TTL이 낮아 만료되는 경우가 있다.

 

하지만, 대부분의 서비스들은(아마도?) 로그인이 유지되어있다. 자 그렇다면 이렇게 생각할수 있다. 브라우져의 쿠키는 얼마든지 export할 수 있다.

네이버의 저장되는 쿠키 리스트

그렇다면 보안이 매우 취약하지 않을까 하는 의문이 생긴다. 물론 이전 장의 해시 함수를 사용했다면 변조를 못하게 막을 수 있으며 사용자의 다이제스트도 쿠키에 저장할 수 있다. 물론 이게 100% 방어한다고 볼 수 없다. 그래서 MAC을 사용하여 키와 메시지를 통해 인증 태그를 구성한다. 비밀키 k와 메시지 m을 MAC을 통해 태그 t로 만들어 함께 전달하는 형태이다.(t=MAC(k,m))

https://ko.wikipedia.org/wiki/%EB%A9%94%EC%8B%9C%EC%A7%80_%EC%9D%B8%EC%A6%9D_%EC%BD%94%EB%93%9C

위의 그림처럼 Message와 비밀키 그리고 MAC을 함께 보내서 양쪽에서 교차로 검증한다. 따라서 비밀키를 알지 못한다면 원본 메시지를 변조하지 못한다. 따라서, MAC은 인증 태그 위조에 대한 내성이 있으며 단순하게 인증하면서 메시지를 리플레이 할 수 있다. 물론, 보안을 위한 최소 길이를 지켜야 할 필요도 있고 인증 태그 검증에서 버그가 생길 여지가 많을 수도 있다.

MAC 취약점공격 방식

자 그렇다면 이 인증 방식은 완벽할까? 이 세상에 완벽한 보안이란 없다. 이 책에서는 대표적으로 2가지 공격에 대해 설명해준다.

  1. 리플레이 공격
  2. 주기적 인증 태그 검증(타이밍 공격)

리플레이 공격은 A와 B가 서로 메시지를 주고 받을때 변조로 부터 메시지를 보호하려고 MAC을 사용할 것이다. 이때 C라는 악의적 관찰자가 해단 패턴을 파악하고 중간에 동일한 패턴으로 메시지를 보내는 것이다. 이 부분은 tls 프로토콜을 사용하면 중간에 전달되는 메시지를 볼 수 없기 때문에 충분히 방어가 가능할것으로 보인다.

 

두번째 방식은 이 책의 저자가 실제로 감사과정에 여러번 발견했던 취약점이라고 한다. 이 부분을 읽을때 Sleep 알고리즘이 많이 생각났다. 간단하게 말하면 메시지 테스가 만약 0A 1B 3C 8F 라면 공격자가 00 00 00 00 부터 하나씩 보내는것이다. 수신한 인증 태가와 계산한 인증 태그의 비교가 상수시간 내로 수행 되야 하기 때문에 이게 다르게 응답되는 것을 파악하여 바이트 하나하나 변경해가며 보낸다. 

 

이 책 공부중입니다. https://product.kyobobook.co.kr/detail/S000200629765

 

리얼월드 암호학 | 데이비드 웡 - 교보문고

리얼월드 암호학 |

product.kyobobook.co.kr

 

728x90