요약

  • RFC 2402는 준비된 패킷 뷰에 대해 인증 헤더 무결성 검사값(ICV)을 계산했습니다. 불변 필드는 그대로 포함하고, 예측 가능한 가변 필드는 예상 도착 값을 사용하며, 예측 불가능한 가변 내용은 계산 시 0으로 대체했습니다.
  • ICV가 일치한다고 해서 관찰된 모든 헤더 비트가 변경되지 않았음이 증명되는 것은 아닙니다. 단편화는 송신 측 AH 처리 이후에, 재조립은 수신 측 AH 처리 이전에 일어나며, 리플레이 검사는 연결(association)별로 비활성화될 수 있고 이후의 정책 또는 애플리케이션 결과는 여전히 별개입니다.

송신자가 TTL(Time to Live)이 64인 IPv4 데이터그램을 인증했다고 가정해 보겠습니다. 라우터가 이를 전달하며 해당 필드를 감소시킵니다. 수신자가 관찰한 헤더 그대로를 인증한다면, 정당한 변경이 검증을 깨뜨릴 것입니다. 반대로 필드를 단순히 제외하면, 인증 구조에서 그 필드의 위치와 길이가 사라져 버립니다. RFC 2402는 세 번째 답을 택했습니다. 필드의 옥텟은 제자리에 두되, ICV 계산 입력에서는 0으로 채우는 것입니다.

이 선택은 1998년 IP 인증 헤더에서 '패킷 인증'이 무엇을 의미했는지를 보여줍니다. AH는 비연결형 무결성과 데이터 출발지 인증을 제공하고, 보안 연결(Security Association)에 대해 수신자가 선택하는 선택적 리플레이 방지 기능도 제공했습니다. 다만 암호화는 하지 않았습니다. 상위 계층 데이터와 가능한 한 많은 IP 헤더를 보호했지만, 일부 필드는 전송 중 필연적으로 변경되기 때문에 헤더 보호가 '부분적(piecemeal)'이라고 RFC 자체가 명시했습니다.

AH 헤더는 다음 헤더 값, 길이, 예약 비트, 보안 매개변수 색인(SPI), 시퀀스 번호, 가변 길이의 인증 데이터를 실었습니다. SPI, 목적지 주소, AH 프로토콜이 단일 방향 연결을 선택하고, 알고리즘과 키는 그 연결에서 나옵니다. 시퀀스 번호는 수신자가 리플레이 검사를 하지 않기로 하더라도 항상 전송되고 증가했습니다.

ICV 입력 자료는 세 종류였습니다. 불변 IP 필드와 상위 계층 데이터는 그대로 포함됩니다. 도착 시 값을 송신자가 예측할 수 있는 가변 필드는 수신자에게 도착할 모습대로 배치됩니다. 예측 불가능하게 바뀔 수 있는 필드는 0으로 채워집니다. 인증 데이터 필드 자체도 계산 중에는 0으로 두는데, 결과가 존재하기 전에 그 결과를 담을 수는 없기 때문입니다.

0 채움은 삭제가 아니었습니다. RFC 2402는 옥텟을 제자리에 두면 정렬(alignment)이 유지되고, 필드의 내용이 검사 대상 밖에 있더라도 필드의 길이는 인증된다고 설명했습니다. 이렇게 만들어진 준비된 뷰는 패킷과 동일한 구조적 자리 표시자를 갖지만, 모든 위치의 값이 같지는 않습니다. '정규화된 뷰(canonicalized view)'는 이후에 쓸모 있게 된 표현이며, RFC 자체는 불변, 가변이지만 예측 가능, 가변의 세 범주로 말했습니다.

IPv4는 이 구분을 구체적으로 만들었습니다. 버전, 헤더 길이, 총 길이, 식별자, AH 프로토콜 값, 출발지 주소, 일반적인 목적지 주소는 변경 없이 ICV에 들어갑니다. 느슨하거나 엄격한 소스 라우팅의 영향을 받는 목적지 주소는 가변이지만 예측 가능합니다. 서비스 유형(TOS), 플래그, 단편 오프셋, TTL, 헤더 체크섬은 0으로 채워집니다. 문서는 라우터가 TOS를 바꾸는 것으로 알려져 있고, Don't Fragment 비트를 설정할 수 있으며, 정상 전달에서 항상 TTL을 감소시키고 그 결과 체크섬이 바뀐다고 명시했습니다.

요점은 그 필드들이 중요하지 않다는 것이 아닙니다. AH는 수신자에서 그 필드들의 원래 내용을 정직하게 보장할 수 없다는 것입니다. 따라서 유효한 ICV는 감소된 TTL이나 다른 허용된 가변 값과 공존할 수 있습니다. ICV가 증명하는 것은 준비된 입력에 대한 일치이지, 와이어 이미지 전체의 불변성이 아닙니다.

IPv6는 다른 필드로 같은 원리를 적용했습니다. 1998년 모델에서 클래스, 플로우 라벨, 홉 한계는 0으로 채워집니다. 라우팅 헤더 아래의 목적지 주소는 도착 형태를 예측할 수 있습니다. 홉 바이 홉 및 목적지 옵션은 옵션 데이터가 전송 중 바뀔 수 있는지를 나타내는 비트를 실었습니다. 가변 옵션 데이터는 ICV 계산에서 0 값 옥텟이 되고, 옵션 유형과 길이는 계속 포함됩니다. 이 메커니즘은 이후 옵션 사양이 새 자료의 처리 방식을 올바르게 선언하는 것에 의존했습니다.

패딩은 계산과 전송 사이에 또 하나의 경계를 그었습니다. 인증 데이터 안의 명시적 패딩은 전송되고 인증됩니다. 일부 알고리즘은 계산 입력이 블록 경계에 도달하도록 암시적 0 패딩을 추가로 요구합니다. 그 암시적 바이트는 ICV에 포함되지만 와이어에는 절대 나타나지 않습니다. 따라서 인증 입력에는 준비된 값과 전송된 데이터그램에는 없는 바이트가 함께 들어갈 수 있습니다.

단편화는 검증 단위가 모든 전송 아티팩트가 아니라 재구성된 데이터그램임을 다시 확인시켜 줍니다. 전송 모드에서 AH는 단편화 이전에 IP 데이터그램 전체에 적용됩니다. 라우터가 이후 보호된 패킷을 분할할 수 있습니다. 수신자는 AH 처리 전에 그 단편들을 재조립해야 하며, 여전히 단편 상태로 AH에 제시되는 패킷은 폐기하고 감사 대상으로 삼아야 합니다. 터널 모드에서는 별도로, 내부 페이로드가 이미 단편화된 외부 패킷을 보호할 수 있습니다.

수신 측 검증은 같은 뷰를 재구성합니다. 수신자는 연결을 선택하고, 수신한 ICV를 저장하고, 인증 데이터와 예측 불가능한 가변 필드를 0으로 만들고, 필요한 암시적 패딩을 더하고, 알고리즘의 규칙에 따라 재계산하여 비교합니다. 리플레이 검사가 활성화되어 있다면 후보 시퀀스 번호를 먼저 선별할 수 있지만, 수신 창은 ICV 성공 이후에만 진전됩니다. 리플레이 검사가 비활성화되어 있다면, 표시된 시퀀스 번호는 어떤 리플레이 결정도 증명하지 못합니다.

RFC 2402는 일치하는 데이터그램을 이 AH 단계에서 유효하다고 불렀습니다. 주변의 RFC 2401 아키텍처는 여전히 전달이나 배달 이전에 수신 측 정책 검증을 요구했습니다. 애플리케이션의 수용은 그보다 더 뒤에 있습니다. 따라서 증거의 사다리는 연결과 알고리즘에서 시작해, 송신자의 준비된 뷰, ICV 삽입, 가능한 단편화, 재조립, 수신자의 재구성과 비교, 선택적 리플레이, 정책, 애플리케이션의 수용으로 이어집니다.

이 사양은 역사적입니다. RFC 1826을 대체했고, 스스로는 RFC 4302와 RFC 4305로 대체되었습니다. 그 필수 HMAC-MD5 및 HMAC-SHA-1 요구 사항은 현재의 권고가 아닙니다. RFC 4302는 부분적 헤더 원리를 유지하면서 연결 조회를 개정하고, 확장 시퀀스 번호를 추가하며, 알고리즘 요구 사항을 다른 곳으로 옮겼습니다.

Lu Heng이 이후에 제시한 상징적 권위와 실제 작동 효과의 구분을 통해 읽어 보면, AH의 교훈은 결핍합니다. 인증 라벨은 오직 송수신자가 만들고 비교하는 정확한 실행 가능한 뷰를 통해서만 힘을 갖습니다. 이 관점은 RFC의 어휘가 아닙니다. 다만 '인증됨'이라는 말이 의도적으로 제외된 필드, 선택적으로 비활성화된 검사, 그리고 아직 하류에서 기다리는 결과들을 삼켜버리는 것을 막는 데 도움이 될 뿐입니다.

출처