카페 네트워크를 VPN 사용자와 공유하고 있고, 당신이 볼 수 있는 것이 패킷 크기와 타이밍뿐이라고 상상해 보자. 커버 트래픽은 그 그림을 흐리게 만들기 위한 것이다. 패딩을 노트북에서 게이트웨이까지 따라가 보면 흐림은 국지적이다. 게이트웨이가 끝나는 곳에서 흐림도 끝난다. 그 지점 이후는 모두 같은 실제 트래픽에 대한 새로운 관찰 문제다.

따라서 첫 질문은 얼마나 많은 채우기를 보낼 것인가가 아니다. 어떤 관찰자로부터 숨는지, 그 관찰자가 어디에 있는지가 첫 질문이다.

노트북에서 시작하자

로컬 링크에서 관찰자는 암호화된 패킷이 나가고 들어오는 것을 본다. 패딩이 없으면 큰 업로드는 전 크기 패킷의 연속이고, 통화는 중간 크기 패킷의 꾸준한 흐름이며, 유휴 클라이언트는 keepalive를 내보낸다. 내용을 읽을 수 없어도 이런 형태는 사용자가 무엇을 하는지와 상관관계가 있다. 채우기는 형태를 매끄럽게 만들 수 있지만, 아무도 요청하지 않은 바이트를 보내는 대가를 치른다.

그 관찰자가 아니라면 무엇을 알아차렸을지 적어 보자. 전송 시작의 폭발, 통화가 끝날 때의 공백, 유휴 기간의 리듬이다. 그 특징에 이름을 붙일 수 없다면, 채우기가 그것을 숨긴다고 주장할 수 없다.

채우기를 게이트웨이까지 따라가자

노트북은 협력하는 게이트웨이로 패딩을 보내고, 게이트웨이는 그것을 버리고 실제 트래픽을 앞으로 전달한다. 그 협력이 바로 메커니즘이다. 채우기를 제거하는 종단점이 없으면, 커버를 만드는 것이 아니라 다른 사람의 경로에 부하를 더한 것이다.Tor 패딩 명세는 같은 구분을 명시한다. 인접 릴레이 사이의 링크 패딩과 프로토콜 상태에 묶인 회로 패딩이다.

이제 게이트웨이가 무엇을 보는지 생각하자. 게이트웨이는 실제 트래픽과 채우기를 함께 본다. 즉 신뢰하는 당사자가 아니라면 더 많이 알게 된다. 커버 트래픽은 신뢰를 옮길 뿐, 신뢰의 필요성을 없애지 않는다.

그다음 두 번째 구간을 보자

게이트웨이 너머 실제 목적지로 가는 연결은 평범한 형태의 평범한 트래픽이다. 그곳의 관찰자, 호스팅 제공자든 목적지 네트워크든, 패딩이 숨기려 했던 바로 그 폭발을 본다. 걱정했던 관찰자가 그곳에 있다면 패딩은 당신을 위해 아무것도 하지 않았다. 이 경계가 경로를 따라 걷는 일의 핵심이다.

커버 트래픽은 한 구간에 국한되며, 범위를 넓히는 것은 협력을 넓히는 것을 뜻한다.

방향과 형태

바깥으로만 보내는 패딩은 보내는 것의 타이밍을 숨긴다. 돌아오는 것의 타이밍에 대해서는 아무 말도 하지 않는다. 응답은 각자의 일정대로 도착하기 때문이다. 비대칭적 은폐는 정상이며 소리 내어 말할 가치가 있다. 다운로드가 많은 세션도 수신 측에서는 형태가 드러난다.

패킷 길이, 폭발 구조, 시작과 정지 시각, 도착 간격은 모두 정보를 담는다. 평평하게 유지되는 바이트 카운터는 매우 알아보기 쉬운 패킷 크기 분포와 공존할 수 있다. 총량이 평평하다고 해서 행동이 평평한 것은 아니다.

예산이 사는 것

채우기는 누군가 비용을 치르는 용량을 소비한다. 종량제 데이터, 업링크 경쟁, 같은 연결을 쓰는 다른 사용자의 대기 지연이다. 가용 최대 속도를 따르는 것도 자기 모순이다. 그 최대치는 링크와 함께 움직이고 채우기도 그에 맞춰 움직이기 때문이다. 예산을 밝히고, 예산이 소진될 때의 동작도 밝히는 것이 메커니즘과 사고의 차이다.

결과는 처음에 명명한 관찰에 비추어 평가하자. 정의된 관찰자 아래에서 인식률이 낮아졌음을 보이는 시험은 결과다. 더 많은 트래픽이 더 적은 정보를 뜻한다는 약속은 결과가 아니다.

애초에 할지 말지 결정하기

대부분의 사람에게 답은 아니오이며, 솔직한 이유는 전속력 백그라운드 스트림이 무엇을 보호하는지 문서화한 소프트웨어를 대신하지 못한다는 것이다. 패딩은 정당한 공학이며, 관찰자와 협력 종단점, 비용과 한계를 명시하는 설계에 속한다. VPN을 익명성 시스템으로 바꾸는 체크박스가 아니다.

정말 구현한다면 먼저 관찰자 모델을 적어 두자. 패킷 크기부터 종료 동작까지 이후의 모든 결정은 그 한 문단에서 나온다.

관련 글