어떤 사업자도 터널을 멈추기 위해 세션 키가 필요하지 않다. 경로에서 패킷을 버리면 터널은 실패하고, 암호학은 설계가 약속한 만큼 그대로 강하게 남는다. 암호화는 대화가 운반하는 것을 보호하지, 어떤 네트워크가 그것을 운반하려는 의지를 보호하지 않는다. 이 두 속성을 분리하면 차단 불가능성에 대한 논쟁은 어떤 정책이 시행 중이고 얼마나 멀리 미치는가라는 질문으로 바뀐다. 아래 비교가 가용성과 기밀성을 분리해 두는 이유는, VPN 차단에 관한 대부분의 자신 있는 주장이 조용히 둘을 합치기 때문이다.

도달 가능성은 경로가 내리는 결정이다

모든 전송은 패킷을 전달하는 경로에 의존하고, 여기서의 모든 정책 질문은 그 전달 결정으로 수렴한다. 패킷을 버리는 규칙은 기밀성을 건드리지 않고 가용성을 바꾸며, 그래서 한 터널이 완벽하게 암호화되었으면서 동시에 전혀 쓸 수 없는 상태가 될 수 있다. 그 결과 어디에도 암호를 깨거나 키를 복구할 필요는 없다. 오직 경로에 대한 통제만 필요하다.

혼동은 대개 두 속성이 한 단어를 공유하면서 시작된다. 강한 암호학은 누가 흐름을 읽을 수 있는지를 말하지만, 중간 장비가 그것을 통과시킬지는 말하지 않는다. 그래서 VPN은 차단될 수 없다는 주장에는 그 아래 두 번째 주장, 즉 경로 위의 누구도 패킷을 버리려 하지 않는다는 주장이 필요하다.

집행 방식과 각각의 대가

세 가지 방식이 대부분의 실제 정책을 포괄하며, 무엇을 알아야 하는지, 운영 비용이 얼마인지, 또 누가 피해를 보는지에서 다르다. 각각은 아무것도 복호화하지 않고 터널을 거부할 수 있다. 차이가 중요한 이유는 차단이라는 같은 단어가 셋 모두에 쓰이기 때문이다.

StyleDefaultWhat it must knowWho else is affected
BlocklistAllow, minus listed destinationsAddresses and ports of known endpointsUnrelated tenants on a listed address
AllowlistDeny, plus approved destinationsA maintained definition of permitted trafficAnything outside the approved set
ShutdownDeny broadly for a periodNothing about the protocolOrdinary services along the same path

그 표는 비용 지도이지 순위가 아니다. 차단 목록은 시작하기 싸고 정확하게 유지하기 비싸다. 허용 목록은 발견을 허용된 집합의 유지보수와 맞바꾸고, 전면 차단은 분류가 전혀 필요 없다. 이들을 가르는 것은 기술적 정교함이 아니라 각각이 지속적인 수고를 어디에 두는가이다. 종이 위에서 단순해 보이는 정책에는 대개 다른 곳에 숨은 유지보수 항목이 있다.

차단 목록은 주소가 서비스를 얼마나 잘 지목하는지에 한계가 있다

차단 목록은 이미 식별된 목적지를 거부하고 나머지는 대체로 이용 가능하게 둔다. 이를 집행하려면 평문이 아니라 주소와 포트가 필요하고, 그것이 처음에 운영을 싸게 만든다. 비용은 나중에 온다. 한때 한 사업자를 가리키던 범위가 나중에는 서로 무관한 열두 임차인을 수용할 수 있기 때문이다. 주소가 바뀔 때마다 목록 편집이 강제되고, 낡은 항목은 무고한 트래픽을 함께 데려간다.

이 모델에서 정밀도는 목적지가 서비스를 얼마나 잘 식별하는지에 의해 제한되며, 붐비는 공유 엔드포인트는 나쁜 식별자이다. 이는 구현 결함이 아니라 구조적 한계이므로 더 좋은 도구가 없애지 못한다. 차단 목록이 커지는 경향도 이로 설명된다. 새 엔드포인트마다 작은 추가처럼 보이고, 부수적 피해는 목록과 함께 커진다.

허용 목록은 유지보수 부담을 옮긴다

허용 목록은 기본값을 뒤집어 미리 고른 목적지나 트래픽 유형만 통과시킨다. 금지된 엔드포인트를 모두 나열할 필요가 없어, 금지 집합이 크거나 빠르게 변할 때 도움이 된다. 대신 필요한 것은 허용되는 것에 대한 유지된 정의와 그 정의에 맞는 집행이다.

포트 번호는 그런 정의에서 흔한 약점이다. 포트를 허용하는 것은 그것을 쓸 수 있는 모든 애플리케이션을 식별하는 것과 같지 않아, 포트 기반 허용 목록은 작성자의 의도보다 더 많이 받아들이는 일이 잦다. 프로토콜 지문도 다른 각도에서 같은 문제를 갖는다. 지문이 식별하는 것은 트래픽의 형태이지 의도가 아니다. 따라서 허용 목록이 자동으로 차단 목록보다 정밀한 것은 아니며, 다른 무엇에 대해 정밀할 뿐이다.

한 번의 관측이 뒷받침할 수 있는 것과 없는 것

차단에 관한 어떤 주장이든 손에 네 가지 질문을 들고 읽어야 한다. 어떤 접속망에서, 어떤 목적지로, 어떤 프로토콜로, 어떤 관측 기간 동안인가. 오늘 한 이동통신망에서 본 실패는 내일 다른 망에서 같은 엔드포인트에 대해 아무것도 말하지 않는다. 한 번 작동한 터널도 지속적인 가용성에 대해 아무것도 말하지 않는다.

실패의 형태는 그 원인을 이론화하기 전에 관찰할 수 있다. 조용한 멈춤, 즉각적인 거부, 연결 후의 재설정은 서로 다른 집행 방식을 가리키며, 두 명령이 그것을 구분한다:

curl -sS -m 8 https://vpn.example.com/ -o /dev/null -w "%{http_code}\n"
traceroute -n -m 8 vpn.example.com

시간 초과로 끝나는 멈춤은 조용한 폐기를, 빠른 거부는 경로 위의 거부 장치를, 연결 후의 재설정은 경로 부재가 아니라 상태를 지닌 간섭을 시사한다. 검열 기법에 관한 RFC 9505 조사 는 그런 형태 뒤에 있는 통제 지점과 간섭 패턴을 설명한다. 그러나 어느 것도 그 정책이 얼마나 널리 적용되는지는 말하지 않는다. 지속성은 도달 가능성보다 강한 주장이다. 엔드포인트, 소프트웨어, 정책, 허용된 서비스가 모두 변하므로, 무기한의 효력은 한 순간에 본 주소 목록이 아니라 집행이 계속된다는 가정을 필요로 한다.

관련 글