요약

  • RFC 9897은 하나의 DCCP 연결이 서로 다른 경로에 걸쳐 여러 서브플로를 수립하고 사용할 수 있게 하는 IETF 표준 트랙 확장이다.
  • MP_ADDADDR는 주소를 인증된 소프트 상태로 광고한다. 도달 가능성을 확립하지 않으며, 폐기될 수도 있다.
  • 이후 서브플로는 첫 서브플로가MP_KEY로 수립된 뒤MP_JOIN을 사용한다. 조인은 피어 연결 식별자, 송신자가 생성한 주소 ID(Address ID), 새로운 32비트 nonce를 실어 나르며, 이 교환이 이어서 광고된 주소에서의 도달 가능성을 증명한다.
  • MP_HMAC은MP_JOIN,MP_ADDADDR,MP_REMOVEADDR를 왼쪽 160비트로 잘린 HMAC-SHA256으로 보호한다. 보호되는 각 옵션에는 자신의MP_HMAC이 바로 뒤따라야 한다.

허용 경계

첫 서브플로가MP_KEY로 암호화 컨텍스트를 수립한다. 이후MP_JOIN에 담겨 오는 연결 식별자는 원래 연결과의 연속성을 제공할 뿐, 조인 교환을 대체하지 않는다. 조인하는 피어는 또한 새로운, 일회용 32비트 nonce를 제공한다. nonce 재사용은 재생 방지력을 약화시키므로 난수는 RFC 4086의 보안 지침을 충족해야 한다.

주소 ID는 해당 연결 내에서 송신자의 발신 주소와 고유하게 대응해야 한다. 이를 통해 수신자는MP_JOIN을MP_ADDADDR과 상호 연관시킬 수 있으며, 미들박스의 주소 재기록에도 식별이 유지된다. 어느 쪽 끝점이 아직 사용 중인 동안에는 ID를 재할당할 수 없다. 이는 NAT 상호 연관에 유용하지만, 그 주소가 무해하고 전 세계적으로 도달 가능하며 피어가 소유하고 있음을 증명하지는 않는다.

따라서 수신자는 세 가지 상태를 구분해야 한다. 인증된, 암호적으로 허용 가능한 제어 정보가 광고된 상태, 조인이 시도된 상태, 그리고 도달 가능성 교환이 성공한 뒤 경로가 허용된 상태이다. 유효한 HMAC은 연결의 키잉 컨텍스트 하에서 해당 옵션을 인증할 뿐이다. 애플리케이션 데이터를 암호화하거나 완전한 종단 간 보안을 제공하지는 않는다. 기밀성, 무결성, 인증 또는 접근 제어가 필요한 애플리케이션은 자체 요구 사항에 따라 IPsec이나 DTLS 같은 종단 간 보호가 필요하다.

실패 동작은 의도적으로 비대칭이다.MP_ADDADDR또는MP_REMOVEADDR의 무효한 HMAC은 조용히 무시된다. 무효한MP_JOIN은 시도된 서브플로를 닫는다.MP_ADDADDR는 소프트 상태이다. 브로드캐스트와 멀티캐스트 주소는 반드시 무시해야 하고, 광고가 갱신되지 않는 한 실패한 주소/포트 조합으로 반복적인 연결 시도를 해서는 안 된다. 이 명세는 그 지침을 범용 재시도 타이머나 예산으로 만들지는 않는다.

사설 주소는 별개의 우회 위험을 만든다. 악의적인 참여자는 사설 주소를 광고함으로써 다른 호스트를 향한 핸드셰이크 트래픽을 유도할 수 있다. 송신자 및 수신자 측 휴리스틱이 서비스 거부 영향을 줄일 수 있으나, RFC 9897은 특정 휴리스틱, 텔레메트리 임계값 또는 거부 알고리즘을 규정하지 않는다. 일반 인터넷에서의 동시 멀티패스 사용을 위한 범용 스케줄러, 결합된 혼잡 제어 방식, 재정렬 방식도 정의하지 않는다. 이러한 주제는 그 범위 밖이다.

검증 절차

  1. 첫MP_KEY교환을 캡처하고 연결 식별자를 기록하라. 이후MP_JOIN이 그 식별자를 담고 있는지, 무관한 연관을 새로 만들지 않는지 확인하라.
  2. 광고된 각 주소에 대해 주소 ID, NAT 재기록 전후의 발신 주소, 수명 주기 상태를 기록하라. 어느 쪽 끝점이 아직 사용 중인 동안의 ID 재사용은 거부하라.
  3. 각 조인마다 새로운 32비트 nonce를 생성하고, 같은 nonce를 재생하는 것이 새 도달 가능성 증명으로 계산되지 않는지 시험하라.
  4. 와이어의 바이트를 검사하라. 보호되는 모든 옵션은 반드시 자신의MP_HMAC이 바로 뒤따라야 한다. HMAC-SHA256과 왼쪽 160비트 절단을 검증하라.
  5. 무효한MP_HMAC을MP_ADDADDR,MP_REMOVEADDR,MP_JOIN에 각각 별도로 주입하라. 앞의 두 가지는 조용한 무시, 세 번째는 시도된 서브플로의 닫힘을 확인하라.
  6. 브로드캐스트, 멀티캐스트, 사설 주소 광고를 시험하되, 성공한 인증을 무해한 소유권의 증명으로 취급하지 말라.

운영자 의사 결정 경로

먼저MP_KEY와 연결 식별자를 통해 신원 연속성을 확인하라. 다음으로 주소 ID의 고유성과 NAT 상호 연관을 검증하라. 그다음 nonce 신선도, HMAC의 정확한 인접성, 옵션별 실패 결과를 점검하라. 트래픽은MP_JOIN도달 가능성 교환이 완료된 뒤에만 허용하라. 그 외의 경우 광고된 경로를 소프트 상태로 유지하고, 실패한 주소/포트 조합을 맹목적으로 재시도하기보다 갱신하라. 의심스러운 사설 주소 동작에는 로컬 휴리스틱을 적용하고 그 선택을 문서화하며, 애플리케이션이 더 강한 종단 간 속성을 필요로 하는 경우 IPsec이나 DTLS를 사용하라.

이 RFC는 배포 보급률, 성능 향상, 인시던트 비율을 보고하지 않는다. 범용 재시도 예산, 스케줄러, 텔레메트리 임계값, 의심 주소 휴리스틱도 명세하지 않는다. Key Type 0은 상호운용성 시험에 필요하지만 키 자료를 평문으로 교환하므로, 더 강한 보안을 원하는 배포는 키 유형과 종단 간 보호를 스스로 결정해야 한다.

출처