암호화만으로는 재전송된 패킷을 막을 수 없는 이유
오래된 패킷도 유효한 인증 태그를 유지하므로 무결성은 결코 신선도를 증명하지 않습니다. 순서 상태와 수신측 윈도우가 그 일을 합니다.
보호된 패킷은 암호학적으로 만료되지 않으므로, 암호화와 무결성 보호가 바이트 생성 시점에 대해 아무것도 말하지 않기 때문에 오분 전에 유효했던 패킷은 지금도 유효합니다. 트래픽을 가로채 다시 보낼 수 있는 공격자는 암호를 깰 필요가 없습니다. 그래서 모든 진지한 터널 프로토콜은 키와 함께 순서 상태를 지닙니다.
메커니즘은 작고, 그 실패 방식은 패킷 손실과 혼동하기 쉽습니다.
유효한 암호문은 신선한 암호문이 아니다
인증은 한 가지 질문에 답합니다: 이 바이트가 키 소유자로부터 변조 없이 왔는가. 수신자가 처음 보는 것인지는 답하지 않습니다. 재전송된 패킷은 첫 번째 검사를 완벽히 통과하며, 그래서 무결성 검사만으로는 재전송을 막을 수 없고 프로토콜에 수락에 관한 두 번째 규칙이 필요한 것입니다. 인증만 하는 수신자에게는 녹음본을 가진 공격자에 대한 방어가 없습니다.
그 규칙은 구현하기도 서술하기도 쉽습니다. 바로 주어진 보호 패킷을 주어진 키 아래에서 한 번만 받아들이는 것이며, 이 분야의 나머지 모든 것은 구현이 그 한 번을 어떻게 추적하는지에서 나옵니다.
재전송 폐기를 복호화 실패로 읽으면 완전히 잘못된 하위 시스템으로 가게 됩니다.
순서 번호와 윈도우
IPsec ESP는 순서 번호를 지니고 수신자는 최근 수락한 값들의 슬라이딩 윈도우를 유지하며, ESP 명세는 기본 윈도우 크기와 이를 확장하는 옵션을 설명합니다. WireGuard는 키마다 카운터를 두고 그에 대한 명시적 검사를 하는 다른 길을 갑니다. 어느 설계도 실제 네트워크가 순서를 바꾸기 때문에 패킷이 순서대로 도착한다고 가정하지 않습니다. 둘 다 재정렬은 허용하지만 반복은 허용하지 않습니다.
그 허용을 가능하게 하는 것이 윈도우입니다. 본 가장 높은 값보다 조금 뒤처진 패킷은 이전에 수락되지 않았다면 여전히 수락될 수 있지만, 훨씬 뒤처진 패킷이나 이미 표시된 자리를 가진 패킷은 버려집니다. 윈도우를 늘리면 연관당 더 많은 상태를 대가로 더 많은 재정렬을 허용합니다.
진단 카운터는 어떤 경우에 있는지 보여줍니다. 재전송 폐기는 일반 오류가 아니라 특정 카운터를 증가시키며, 그 카운터를 읽는 것이 첫 번째 유용한 관찰입니다.
nstat -az | grep -i XfrmIn
ip -s xfrm state | head -n 30
wg show wg0 transfer
상태는 호스트가 아니라 키에 속한다
카운터 상태는 보안 연관이나 키 에폭에 묶이므로 키를 갱신하면 새로운 컨텍스트와 고유한 순서 공간이 생깁니다. 키를 교체하지 않고 카운터를 지우거나 수동 재설정 후 연관을 재사용하면 수신측 윈도우가 의존하는 가정이 깨집니다. 그래서 운영자가 볼 수 있는 재설정 버튼 대신 프로토콜 주도 키 갱신이 존재합니다.
수동 개입 후 터널이 잘못 동작하면 그 개입이 순서 상태를 건드렸는지 물으십시오. 똑같이 보이는 구성도 상속된 상태가 기대하는 상태가 아니기 때문에 다르게 동작할 수 있습니다.
무엇이든 비활성화하기 전에 원인을 진단하라
손실, 재정렬, 중복 트래픽, 구현 결함은 모두 재전송으로 나타나며 그중 하나만 재전송 문제입니다. 소음을 잠재우려고 검사를 끄면 의존하던 속성이 사라지고, 이제 재전송에는 설명이 전혀 없으므로 원래 원인을 찾기 어려워집니다.
범위가 제한된 증거란 연관 식별자, 순서 번호, 카운터를 페이로드는 제외하고 기록한 것입니다. 그것으로 중복과 재정렬된 도착을 구분할 수 있고, 진단 파일이 사용자 트래픽의 사본이 되지도 않습니다.
검사가 약속하지 않는 것
재전송 방지는 한 프로토콜 안에서의 패킷 처리 속성입니다. 운영자가 로그를 남기지 않는다거나, 웹사이트가 계정을 인식할 수 없다거나, 세션이 익명이라는 뜻이 아닙니다. 그것들은 별개의 시스템에 대한 별개의 질문이며, 강력한 재전송 방지 설계는 그중 어느 것에도 답하지 않습니다.
지원되는 설정과 함께 유지 관리되는 소프트웨어가 사용자가 가진 실질적 통제입니다. 패킷은 프로토콜이 처리하며, 나머지는 운영상의 결정으로 남습니다.