Protocol

임정환·2023년 6월 7일
0

프로토콜, 원래의 의미는 외교적인 행사시에 지켜야 할 이른바 의전 즉 나라간 외교시의 '국룰' 이다. 만일 상호 인증, 데이터 교환에 있어서 일련의 절차가 존재하지 않는다면... 어떠한 bit인지, 이 data가 무엇을 의미하는 것인지 알기 힘들 것이다

지금 부터, 데이터의 교환 과정은 공격자에게 공개 되어있고 통신하는 주체는 내가 통신하려는 상대가 맞는지 확신할 수 없는 상황이라고 가정한다.

간단한 인증 프로토콜

단순 비밀번호를 통한 상호인증 과정이다. 얼핏보기엔 문제가 없어 보이지만 공격자가 h(alice password)를 탈취하게 될 경우 계속해서 악용할 수 있는
replay attack이 발생할 수 있다.

위 처럼, 현재의 liveness가 반영된 논스 값을 해쉬 값에 첨가함으로서 replay되지 않은 값임을 증명할 수 있다.

대칭 키를 통한 상호 인증

Alice와 Bob이 대칭 키 k를 가지고 있다고 가정해보자

bob은 alice를 인증할 수 있지만, alice는 bob이 bob이 맞는지 확인할 수 없는 상태이다.

각자 송신한 논스 값을, 대칭키로 암호화하여 자신이 K를 소유한 alice와 bob이 맞음을 상호 인증 가능하다. 과연 문제가 없을까?

  • Reflection Attack

    공격자 Trudy가 alice라 주장한다. Bob은 약속된 프로토콜에 따라 자신의 논스값과 대칭키 K로 암호화된 논스를 송신한다. 이때 , Trudy가 재빨리 세션을 새로 만들어 수신한 논스를 다시 Bob에게 송신할 경우 프로토콜에 따라 K로 암호화된 논스 B를 획득하여 첫 번째 세션에서 Bob에게 제출할 수 있게된다.

그렇다면, 어떻게 해야 완벽한 상호 인증 ( Mutual Authentication )이 가능할까?

비대칭키를 이용한 상호 인증

비대칭키를 계속 사용하는 것은, 여간 피곤한 일이 아닐 수 없다.
우리는 비대칭키를 이용해서 각자 상호 인증을 하게 된다면 이후 부터는
대칭키를 통해서 통신을 암호화 하고 싶다. 어떻게 상호인증과 세션키 교환을 안전하게 할 수 있을까?

두 쌍의 비대칭 키를 통해 K와 논스를 디지털 서명 및 공개키 암호화를 통해 위와 같이 상호 인증과 세션 키 교환을 달성할 수 있다.

완벽한 순 방향성 비밀

위의 예시에서, 만일 K가 교환되고 이후 K로 암호화한 메세지를 주고 받았다고 가정하자. 만일, 공격자가 해당 암호문을 수집하고 있다가 나중에 K를 얻게 된다면 결국 복호화 가능하게 된다. 그렇기에, 우리는 PFS( Perfect Forward Secrecy )가 필요하다. 완벽한 순 방향성 비밀 보장을 통해, 나중에 암호문이 복호화 될 수 있는 가능성을 없애고 싶다.

디피-헬먼 키 교환을 비대칭 암호화를 통해 교환하여 대칭 세션키를 생성하고 이후 a와 b를 폐기한다. 만약에 비밀키가 유출되더라도,공격자는 다시 세션키 K를 유추할 수 없다.

Time Stamp

앞서 말한, freshness를 위한 논스를 대체해서. 현재 상태를 반영할 수 있는, 타임 스탬프를 보낸다면 어떨까 생각해보자

괜찮은 프로토콜로 보인다, 다음을 생각해보자.

서명과 암호화의 순서를 반대로 바꿔보았다. 무슨 문제가 발생할까?
만일 공격자 Trudy가 Alice의 서명을 복호화하고 {T,K}bob을 탈취한 후 재빨리

위와 같이 행동하게 된다면, Trudy는 세션키 K를 탈취 할 수 있다.

프로토콜의 미묘함


이처럼, 논스를 사용할때는 사인과 공개키 암호화의 순서가 중요하지 않았지만.
타임 스탬프를 이용할 때는, 시간 T를 이용한다는 특성상 암호화후 사인을 하게 될 경우 세션키를 탈취당할 수 있다.

Bob이 K를 보내지 않는다면, 위의 문제는 해결할 수 있을 것이다!
결론은, Protocol은 조금만 달라져도 굉장히 큰 결과의 차이를 만들 수 있다.
그렇기에, 안전한 프로토콜을 구상하고 구현하는 것이 제일 중요한 부분이라고 생각할 수 있다.

선택적 프로토콜 공격


Customer가 자신의 사인이 악용되고 있는 사례이다. 이 처럼, 여러 app에서 동일한 비대칭 키 pair를 사용할 경우 자신의 디지털 서명이 위처럼 악용될 수 있다.

profile
CS 박제

0개의 댓글

관련 채용 정보