FHMQV

2016. 10. 30. 11:58Security ★ Development/Cryptology

반응형

FHMQV는 키교환 프로토콜의 하나입니다.  DH의 약점인 MITM에 대한 대비책으로 SAS, STS 등이 나왔고 MQV -> HMQV -> FHMQV 순으로 발전됐습니다.  정보를 찾아봤는데 논문만 몇개 나오고 제대로 설명이 되어있는 곳이 없더군요.  그래서 혹시 관심있는 분들께 도움이 되도록 정리한 내용입니다.


MQV는 Menezes-Qu-Vanstone의 약자로 만든 사람들의 이름입니다.  DH에 long term key를 결합한 방법인데 여기선 특별한 함수를 사용합니다.

HMQV, FHMQV와의 차이의 핵심은 이 d와 e를 만드는 방식입니다.  

아래가 MQV 프로토콜의 flow입니다.  

Alice와 Bob은 log term key P'를 갖고있습니다.  w는 P'를 이용한 공개키와 개인키입니다.  서로 갖고, 알고 있는 키입니다.  r이 DH에 이용할 키이구요.  sA와 SA, sB와 SB를 만들 때 d와 e를 사용합니다.  결과적으로 KAB, KBA를 만드는데 수식을 보시면 두 키는 같다 라는 것을 알 수 있습니다.  DH 공격자에 대한 대책으로 만들어진 프로토콜이지만 이를 깨는 공격이 존재합니다.


UKS 공격을 통해 가능한데 공격 시나리오는 다음과 같습니다.

공격자 Eve는 중간에서 Alice의 공개키를 가로챕니다.  이를 통해 발견된 공격을 성립시키는 RE와 wE, WE를 만들어내고 자신의 공개키를 Bob에게 넘겨줍니다.  Bob은 RE를 통해서 KBE를 생성하는데 이 키가 KBE=KBA=KAB가 되어 결국 Alice와의 공통키를 생성하게 됩니다.  Eve는 이 공통키를 생성하지 못하지만 Bob이 Alice의 정보가 아닌 Eve의 정보를 가지고 프로토콜을 진행한다는 점에서 취약하다고 할 수 있습니다.


이에 대한 대비책으로 나온것이 HMQV(Hashed MQV)입니다.  

여기서 d와 e는 위와 같이 해쉬와 당사자간의 ID를 이용해 구성됩니다.

UKS 공격을 HMQV에 적용해보면 서로 상쇄되어 사라져야할 uP가 빨갛게 표시한 해시값들에 의해 상쇄되지 못하고 있습니다.  KBE와 KAB가 같아질 수 없다는 것을 나타내죠.  


하지만 HMQV도 impersonation 공격에 취약합니다.

공격자는 HMQV i-point인 RE와 k를 선택하여 RE를 Bob에게 넘겨줍니다.  그럼 Bob에게서 받은 RB를 통해 KBE와 같은 키를 Eve가 생성할 수 있습니다.


여기서 나온게 FHMQV입니다.  

d와 e는 상대방의 공개키도 포함합니다.  impersonation 공격을 보면 sE를 만들기 위해 원래는 자신의 공개키인 RE만 사용했습니다.  하지만 이제는 상대방의 공개키도 알아야합니다.  반면 impersonation 공격이 성공하기 위해서는 이를 SE, 즉 k를 선택하기 전에 그 값을 알아야하죠.  그렇기 때문에 HMQV i-point도 찾을 수 없습니다.


인증도 제공하기 위해 FHMQV의 약간 변형인 FHMQV-C도 있습니다.  KDF와 MAC을 이용합니다.  세션키를 만들 때는 별도의 KDF2를 이용하기도 하구요.  아래 flow가 FHMQV-C입니다.


MQV시리즈에서 long term key는 공격자가 위조할 수 있다는 것을 전제로 합니다.(PKI 기반이 아닙니다.)  아래 flow는 long term key를 PKI키로 놓았을 때의 flow입니다.

Bob은 Alice의 공개키를 사용하고 Eve는 Alice의 개인키를 알지 못해 MITM을 할 수 없습니다.  


어찌됐든 MQV를 쓰기 위해서는 long term key를 사전에 공유해야 한다는 큰 단점이 있습니다.  알아본건 좀 오래전이었지만 결론은 MQV는 제 개인적으로 사용하기 위한 'MITM에 대비할 수 있는 DH 프로토콜'로는 부적절하다는 것이었습니다.  



'Security ★ Development > Cryptology' 카테고리의 다른 글

SP800-108 KDF  (0) 2023.01.16
openssl 암호화(AESGCM256)  (0) 2023.01.08
Cryptology 문제 2  (0) 2015.12.03
Cryptology 문제 1  (0) 2015.12.03