3 HIP 개요2 Diffie-Hellman 교환

junpkim·2024년 5월 8일
0

Host Identity Protocol

목록 보기
4/11

R1, I2, R2 패킷은 표준 인증된 D-H 교환을 구현합니다. 응답자는 R1에 자신의 공개 D-H 키와 공개 인증 키(즉, HI)를 보냅니다. R1 패킷의 서명은 개시자가 R1이 응답자에 의해 생성되었음을 확인할 수 있습니다. 그러나 R1은 사전에 생성되므로 I1 패킷의 연결 관련 정보를 포함하지 않으므로 Replay attacks으로부터 보호되지 않습니다.

I1 패킷

실제 D-H 교환 이전에 개시자는 I1 패킷에서 D-H 그룹 선택에 대한 기본 선호도를 그룹 ID로 정렬 된 목록으로 표시합니다.
응답자가 I1 패킷을 처리하는데 비용을 쓰지 않기 위해 I1 패킷은 인증되지 않은 방식으로 전송합니다. (응답자가 I1 패킷을 받았을 때 바로 서명 검증을 하는 것이 아니라, R1 패킷에서 서명된 정보를 제공하고, I2 패킷에서 개시자가 퍼즐을 해결하는 과정을 거쳐 검증함으로 불필요한 연산을 줄임).

R1 패킷

개시자가 I1 패킷으로 알린 기본 선호도에 따라 응답자는 가장 적합한 공용 D-H 값과 자신의 D-H 그룹을 첨부하여 공용 D-H 값 선택의 근거를 서명된 R1 패킷에 포함하여 개시자에게 전달합니다. 응답자가 I1 패킷의 D-H 그룹 ID를 지원하지 않는 경우, 응답자는 개시자의 기본 설정에 관계 없이 가장 적합한 D-H 그룹을 선택합니다.

R1에서 개시자 및 응답자의 기본 설정과 일치하지 않는 경우 개시자는 I1가 조작되었음을 탐지할 수 있습니다.

** R1 패킷이 미리 생성되지만, I1 패킷에서 얻은 개시자의 선호도를 바탕으로 적합한 D-H 값을 포함할 수 있는 이유는, 응답자가 미리 여러 종류의 R1 패킷을 준비해두기 때문입니다.
구체적인 작동방식은,
1. 응답자는 다양한 D-H 그룹에 대한 여러가지 R1 패킷을 미리 생성해둡니다.
2. I1 패킷을 분석하여 미리 준비 된 R1 패킷 중 가장 적절한 D-H 그룹의 공개 키 값을 가진 것을 선택합니다.
3. 선택된 R1 패킷을 개시자에게 전송해, 해당 D-H 그룹을 사용한 D-H 키 교환을 시작합니다.

*** R1 패킷을 미리 생성하는 이유는 DDoS 공격으로부터 보호하기 위함입니다.

I2 패킷

개시자는 R1 패킷을 통해 응답자와의 공용 D-H 값 중 하나와 응답자가 지원하는 D-H 그룹 목록을 수신합니다. 개시자는 가장 적절한 공용 D-H 값과 응답자의 D-H 그룹, 개시자의 D-H 그룹과 비교합니다. 개시자는 가장 적절한 공용 D-H 값이 본인이 판단하기에 가장 선호되는 공용 D-H 값이 일치하는 경우에만 BEX를 계속합니다. 그렇지 않으면 통신이 다운그레이드 공격을 받을 수 있습니다. 개시자는 새 I1 패킷으로 BEX를 다시 시작하거나 중단하여야 합니다.
그러나 BEX를 다시 시작하거나 중단하기 전에, 개시자는 R1 패킷의 서명이 유효한지 확인해야 합니다. 유효하지 않은 경우에는 해당 패킷을 무시해야 합니다 (MUST).
D-H 그룹 ID에 대한 기본 설정이 일치하면 개시자는 D-H session key (Kij)를 계산합니다. 개시자는 이 세션 키로부터 HIP 연결(키 재료, KEYMAT)을 생성하고 자신의 공개 인증 키를 암호화하여 전송할 수 있습니다.

결과적으로, I2 패킷은 개시자의 D-H 키와 공개 인증 키(선택적으로 암호화 된)를 포함할 수 있습니다.
I2의 서명은 R1에서와 같이 패킷의 서명해야 하는 매개변수 범위의 모든 매개변수를 포함합니다.

R2 패킷

응답자는 I2 패킷에서 개시자의 D-H 공개 키를 추출하고, D-H 세션 키를 계산하고, 해당 HIP 연결을 만들고, 개시자의 공개 인증 키를 복호화 합니다. 그런 다음 인증 키를 사용하여 서명을 확인할 수 있습니다.
R2는 D-H 교환의 공유 키를 사용하여 HMAC(해시된 메시지 인증 코드. Hashed Message Authentication Code)를 생성하고 HI의 개인 키를 사용하여 패킷 내용에 서명합니다.
이렇게 함으로써, R2는 BEX를 완료하고 replay attacks으로부터 개시자를 보호합니다.

0개의 댓글