기본 HIP 패킷은 8가지가 있습니다.
4개는 HIP 기본 교환용, 1개는 업데이트용, 1개는 알림 전송용, 2개는 HIP 연결 해지용입니다.
NOTIFY 패킷 유형에 대한 지원은 선택사항이지만, 나머지 패킷 유형에 대한 지원은 필수입니다.
패킷은 고정 헤더와 0개 이상의 TLV 형식의 매개변수로 구성됩니다.
Packet Type: 1
SRC HIT: 개시자 HIT
DST HIT: 응답자 HIT or NULL
IP ( HIP ( DH_GROUP_LIST ) )
유효한 제어 비트: None
I1 패킷에는 고정 HIP 헤더와 개시자의 DH_GROUP_LIST가 포함되어 있습니다.
개시자는 응답자의 DNS 조회, 다른 저장소 또는 로컬 테이블을 통해 응답자의 HIT를 받습니다.
개시자의 HIT를 모르는 경우, 모든 비트를 0으로 설정한 NULL 값을 사용하여 시도할 수 있습니다. (HIP 기회주의 모드)
I1 패킷은 위조를 막기 위한 별도의 보안 작업이 이루어지지 않습니다.
I1 패킷은 비교적 쉽게 위조될 수 있어, 네트워크가 이를 잘 처리할 수 있어야 하며, 짧은 시간 내에 같은 내용의 I1 패킷이 도착할 경우 해당 패킷을 버려야 합니다 (MUST).
Packet Type: 2
SRC HIT: 응답자 HIT
DST HIT: 개시자 HIT
IP ( HIP ( <R1_COUNTER>,
PUZZLE,
DIFFIE_HELLMAN,
HIP_CIPHER,
HOST_ID,
HIT_SUITE_LIST,
DH_GROUP_LIST,
<ECHO_REQUEST_SIGNED>,
TRANSPORT_FORMAT_LIST,
HIP_SIGNATURE_2 )
<, ECHO_REQUEST_UNSIGNED >i)
유효한 제어 비트: A
응답자의 HI가 익명인 경우, 제어비트 A를 설정해야 합니다 (MUST).
R1이 I1에 대한 응답인 경우, 개시자의 HIT는 I1 패킷에서 수신한 것과 일치해야 합니다 (MUST).
응답자는 I1 패킷의 DH_GROUP_LIST 매개변수에 명시된 개시자의 기본 설정에 따라 DIFFIE_HELLMAN 그룹 ID와 공개 값을 선택합니다.
응답자가 R1 패킷에 대해 유효한 응답을 받으면 해당 D-H 공개 값은 HIP 연결에서 재사용해서는 안 됩니다 (SHOULD NOT).
응답자가 다른 호스트에 동일한 D-H 값을 보냈을 수도 있으며, 이러한 응답도 수락해야 합니다.
응답자는 I2를 수신할 때 D-H 공개 키를 검증해야 합니다. 검증에 실패하면, 응답자는 D-H 공유키를 생성하지 말고 조용히 HIP 베이스 교환을 중단해야 합니다.
전체 HIP 패킷에 대한 서명은 HIP_SIGNATURE_2 매개변수에 설명되어 있습니다.
개시자는 이 서명을 확인하고, 응답자의 HI가 기대한 것과 일치하는지 확인 해야 합니다 (MUST).
Packet Type: 3
SRC HIT: 개시자 HIT
DST HIT: 응답자 HIT or NULL
IP ( HIP ( <R1_COUNTER>,
SOLUTION,
DIFFIE_HELLMAN,
HIP_CIPHER,
ENCRYPTED { HOST_ID } or HOST_ID,
< ECHO_RESPONSE_SIGNED, >
TRANSPORT_FORMAT_LIST ,
HIP_MAC,
HIP_SIGNATURE
<, ECHO_RESPONSE_UNSIGNED>i ) )
유효한 제어 비트: A
HIT 는 R1 에서의 HIT와 일치해야 합니다 (MUST).
I1 패킷에 R1_COUNTER가 포함되어 있다면, I2 패킷에서도 동일하게 포함해야 합니다 (MUST).
솔루션에는 R1의 #I와 계산된 #J가 포함되며, RHASH의 하위 비트는 0이어야 합니다 (MUST).
개시자의 HI는 HIP_CIPHER 암호화 알고리즘을 사용하여 암호화될 수 있습니다 (MAY).
응답자는 HIP_MAC와 HIP_SIGNATURE의 유효성을 확인해야 합니다 (MUST).
Packet Type: 4
SRC HIT: 응답자 HIT
DST HIT: 개시자 HIT
IP ( HIP ( HIP_MAC_2, HIP_SIGNATURE ) )
유효한 제어 비트: None
HIP_MAC_2는 전체 HIP 패킷과 응답자의 HOST_ID를 결합하여 생성됩니다.
HOST_ID는 HMAC 계산 후 제거됩니다.
HIP_SIGNATURE는 전체 HIP 패킷에 대해 계산됩니다.
개시자는 HIP_MAC과 HIP_SIGNATURE의 유효성을 모두 확인해야 합니다 (MUST).
Packet Type: 16
SRC HIT: 발신자 HIT
DST HIT: 수신자 HIT
IP ( HIP ( <SEQ, ACK, > HIP_MAC, HIP_SIGNATURE ) )
유효한 제어 비트: None
SEQ 매개변수가 포함된 경우 수신자는 ACK 매개변수를 통해 이를 확인해야 합니다 (MUST).
SEQ와 ACK가 둘 다 없는 UPDATE 패킷은 존재하지 않으며, 이 경우에는 NOTIFY 패킷을 사용해야 합니다 (MUST).
ACK 매개변수는 ACK되는 UPDATE 패킷의 시퀀스 번호를 에코합니다.
중복 수신된 ACK 매개변수는 무시됩니다.
수신자는 여러 ACK 매개변수가 있는 UPDATE 패킷에 대한 처리를 구현해야 합니다 (MUST).
여러 SEQ가 포함된 UPDATE 패킷이 있다면, 각 SEQ에 대해 수신자가 오류 없이 처리할 수 있도록 해야 합니다 (MUST).
Packet Type: 17
SRC HIT: 발신자 HIT
DST HIT: 수신자 HIT or NULL (알 수 없는 경우)
IP ( HIP ( < NOTIFICATION >i, <HOST_ID, > HIP_SIGNATURE) )
유효한 제어 비트: None
NOTIFY 패킷은 별도의 확인이나 응답이 이루어지지 않으며, 정보 전달용으로만 사용됩니다.
Packet Type: 18
SRC HIT: 발신자 HIT
DST HIT: 수신자 HIT
IP ( HIP ( ECHO_REQUEST_SIGNED, HIP_MAC, HIP_SIGNATURE ) )
유효한 제어 비트: None
발신자는 CLOSE_ACK 응답을 검증하기 위한 ECHO_REQUEST_SIGNED와 HIP_MAC, HIP_SIGNATURE를 포함해야 합니다 (MUST).
수신자는 CLOSE_ACK으로 응답해야 합니다 (MUST).
Packet Type: 19
SRC HIT: 발신자 HIT
DST HIT: 수신자 HIT
IP ( HIP ( ECHO_REQUEST_SIGNED, HIP_MAC, HIP_SIGNATURE ) )
유효한 제어 비트: None
CLOSE_ACK 패킷은 CLOSE 패킷에 대한 응답으로 사용되는 패킷입니다.
발신자는 HIP_MAC와 HIP_SIGNATURE를 포함해야 합니다 (MUST).
수신자는 HIP 연결 상태를 가지고 있는 경우, ECHO_RESPONSE_SIGNED의 유효성을 검사하고 HIP_MAC과 HIP_SIGNATURE를 검증해야 합니다 (MUST).