암호화는 패킷의 내용을 읽을 수 있는지를 결정하며, 패킷의 존재, 크기, 시점이 기록되는지에 대해서는 아무것도 말하지 않는다. 암호화된 터널을 전달하는 라우터는 전달해야 할 흐름을 보며, 그 흐름을 세고, 시각을 붙이고, 누구의 것인지 귀속시킬 수 있다. 가정용 게이트웨이가 기록하는 것과 상류 네트워크가 기록하는 것을 비교하면, 차이는 각자가 어떤 필드를 남길 이유가 있는지에 관한 것임을 알게 된다.

유용한 비교는 바로 이것이다. 프라이버시 논의에서 두 기록은 끊임없이 혼동되기 때문이며, 두 기록은 서로 다른 질문에 답하고 서로 다른 기간 동안 보관된다.

두 관찰자, 두 가지 기록

경계에 있는 게이트웨이는 그 흐름이 어느 로컬 인터페이스를 썼는지, 그리고 자기가 주소를 나눠 줄 때 그 시점에 어느 기기가 그 주소를 가졌는지 안다. 어떤 리졸버에 질의했고 어느 엔드포인트에 접속했는지도 볼 수 있다. 상류에서는 같은 트래픽이 변환되어 도착하므로, 다른 네트워크는 온 가구가 공유하는 하나의 공인 주소를 보며, 이것이 RFC 3022 에 설명된 기능이다. 어느 관찰자도 페이로드를 읽지 않았고, 어느 기록도 다른 기록을 포함하지 않는다.

바이트 합계도 이 범주에 속한다. 용량 카운터는 트래픽이 지나갔다는 사실을 기록할 뿐 그것이 무엇이었는지는 기록하지 않는다.

실제로 흔적을 남기는 필드

특정 기기가 무엇을 저장하는지는 무엇이 활성화되어 있는지에 달려 있으므로, 어떤 보편적 주장도 의심할 만하다. 표는 실제로 중요한 필드와 각각이 의미하는 바를 나열한다.

FieldHome gatewayUpstream observer
VPN endpoint addressYes, as a destinationYes
Local device mappingOnly where it assigns the addressNo
Byte and packet countsIf statistics are enabledUsually
Flow start and endIf connection logging is onUsually
DNS queriesIf the resolver is localOnly if the resolver is theirs
Payload contentsNoNo

표는 행마다 뒷받침하는 결론이 다르므로 열이 아니라 행으로 읽어야 한다. 엔드포인트 주소는 터널이 존재함을 보여 줄 뿐 무엇을 실었는지는 보여 주지 않는다. 로컬 기기 매핑은 흐름을 사람과 묶는 행이며, 가정용 게이트웨이가 보관하고 상류 관찰자는 보통 보관하지 않는 행이다.

페이로드 행은 두 열에서 같으며, 이것이 암호화가 실제로 보장하는 부분이다. 나머지는 모두 로깅 선택에 달려 있다.

터널을 종료하는 라우터는 더 많이 본다

다른 사람의 암호화된 트래픽을 전달하는 게이트웨이와 터널을 직접 운영하는 라우터는 다른 위치에 있다. 후자는 터널 상태와 그 키를 보관하므로 내부 주소와 터널 안의 목적지를 볼 수 있다. 그 라우터가 내부 네트워크의 주소도 변환한다면, 로그는 한 기록 안에서 기기와 내부 목적지를 연결할 수 있다. 이것은 바깥 흐름과 다른 공개이며, 같은 상자가 만들어 낸다.

이를 평범한 게이트웨이 뒤의 노트북 클라이언트와 비교해 보면, 게이트웨이는 바깥 흐름을 기록하고, 클라이언트 자체 로그는 내부 세부를 보관한다. 그림의 어느 절반을 누가 가졌는지 묻는 것이 네트워크가 암호화를 꿰뚫어 볼 수 있는지 묻는 것보다 생산적이다. 두 번째 질문에 대한 정직한 답은 아니오이며, 그것은 당신의 노출을 결정하는 질문도 아니다.

자신의 기기가 무엇을 기록하는지 확인하라

다른 사람의 장비를 논하기 전에 자신의 장비를 보라. 아래 명령은 카운터가 있는 방화벽 규칙, 아직 살아 있는 연결 항목, 연결을 언급하는 로그 줄을 나열한다. 이는 Linux 기반 라우터에 적용되며, 대부분의 소비자 펌웨어가 여기서 파생되었다.

nft list ruleset | grep -A2 counter
conntrack -L 2>/dev/null | grep 1194
logread | grep -iE 'vpn|1194' | tail -n 20
cat /proc/net/nf_conntrack | wc -l

카운터가 있는 규칙 집합은 기기가 무엇을 세려 하는지 알려 주고, 연결 표는 이력이 아니라 살아 있는 흐름을 보여 준다. 로그 줄은 펌웨어가 연결 이벤트를 아예 쓰는지 확인시켜 주며, 그것이 논쟁의 대부분을 정리한다. 네 명령 모두 출력이 비어 있다면 그 상자는 기록 없이 전달한다는 뜻이고, 그것도 하나의 답이다. 클라이언트에서 점검을 반복하라, 그 로그가 그림의 나머지 절반을 보관하기 때문이다.

활성화된 기능과 보존 설정 을 출력 옆에 적어 두라. 같은 하드웨어라도 오늘은 조용하다가 텔레메트리를 켜는 펌웨어 업데이트 후에는 말이 많아질 수 있다.

관련 글