블로그로 돌아가기

핑거프린트 브라우저 탐지의 실험적 방법: 버전 선언에서 동작 검증까지

IMC 2024에 발표된 한 연구는 탐지를 재현 가능한 온라인 실험으로 만들었다. 브라우저가 스스로 어떤 버전이라고 주장하는지 믿는 대신, 내부 객체의 속성 수를 세어 선언된 버전과 비교했다. 결론보다 방법론이 더 참고할 만하다.

브라우저 핑거프린트를 탐지할 수 있는지에 대해서는 여러 주장이 있지만, 대부분은 결론에만 머뭅니다. 누가 이기고 지는지를 논하기보다 연구자들이 이 문제를 어떻게 재현 가능한 실험으로 만들었는지, 그리고 어떤 지표로 판단했는지를 보는 편이 더 유용합니다.

ACM Internet Measurement Conference(IMC) 2024에 발표된 Browser Polygraph 연구는 Arizona State University, Boston University, Amazon 연구진이 공동으로 수행했으며 DOI는 10.1145/3646547.3688455입니다. 실험실에서 시뮬레이션 데이터를 사용한 것이 아니라 대형 금융사의 실제 운영 환경에 4.5개월 동안 배포해 205,000건의 실제 사용자 세션을 관찰했습니다. 일반적인 환경 위장 솔루션 10종을 테스트했고, 정상 사용자 트래픽을 대조군으로 사용했습니다.

실험은 어떻게 구성했는가

업무에 영향을 주지 않으면서 전체 트래픽에 탐지를 적용할 수 있었던 데에는 세 가지 설계가 있었습니다.

특징은 수집 비용이 낮아야 했습니다. 탐지 시스템은 고정된 속성 집합만 읽고, 한 번 실행할 때의 부담은 밀리초와 KB 단위입니다. 따라서 샘플링 없이 전체 트래픽에 적용할 수 있고 사용자도 거의 영향을 느끼지 않습니다.

특징은 안정적이어야 했습니다. 사용자가 바꿀 수 있는 매개변수가 아니라 브라우저 자체가 정하는 내부 구조를 선택했습니다. 브라우저 버전마다 JavaScript 엔진이 다르고, API 수와 각 객체에 붙는 속성 수에도 버전별로 미세한 차이가 있습니다. 연구에서는 Chrome 110부터 Chrome 114까지를 비교 구간으로 사용했습니다. 탐지 시스템이 핵심 객체 28개의 속성 수를 세고 브라우저가 주장하는 버전 번호와 비교했습니다. 일치하지 않으면 선언과 실제 동작이 같은 기술 기반에서 나온 것이 아니라는 뜻입니다.

라벨은 신뢰할 수 있어야 했습니다. 각 테스트 환경을 동일한 운영 트래픽에 순차적으로 연결하고 동일한 규칙으로 판단했으며, 대조군은 실제 사용자의 정상 동작이었습니다. 따라서 결과는 주관적으로 “진짜처럼 보이는가”를 재는 것이 아니라 같은 규칙에서 해당 트래픽을 구분할 수 있는지를 보여줍니다.

실제로 시뮬레이션되었는지 판단하는 지표

연구에서 사용한 측정 방식은 네 가지로 나눌 수 있습니다.

  • 일관성: 브라우저가 주장하는 버전과 내부 객체 구조가 일치하는가? 가장 핵심적인 지표이면서 위조하기도 가장 어렵습니다. 문자열 하나를 바꾼다고 엔진 내부의 객체 수와 속성 수가 함께 바뀌지는 않기 때문입니다.
  • 탐지율: 연구는 그중 4개 솔루션에 대해 상세 실험을 진행했고, 탐지율은 67%에서 84% 사이였습니다.
  • 실제 기기와의 편차: 같은 판정 규칙에서 정상 브라우저의 위험 점수는 0이었고, 테스트 대상 솔루션의 평균은 8.85에서 11.66 사이였습니다. 이 점수는 주관적인 유사도가 아니라 실제 분포에서 얼마나 떨어져 있는지를 의미합니다.
  • 구분 가능성: 테스트 트래픽을 정상 트래픽에서 분리할 수 있는가? 분리할 수 없는 유형은 이 방법에서는 실제 브라우저와 동작상 틈이 보이지 않는다는 뜻입니다.

네 지표 가운데 첫 번째가 원인이고, 나머지 세 가지는 그 결과입니다.

네 가지 결과 유형은 어디에서 갈리는가

연구는 기반 구현 방식에 따라 테스트 대상을 네 가지 유형으로 나눴습니다.

첫 번째 유형은 저수준 특징이 알려진 어떤 실제 브라우저 버전과도 맞지 않는 경우입니다. 대응하는 실제 엔진이 없기 때문에 간단히 확인해도 불일치가 드러납니다.

두 번째 유형은 실제 핑거프린트 특징을 가지고 있지만, 신원을 전환할 때 표면적인 선언만 바뀌고 내부 엔진은 그대로인 경우입니다. 연구에서 가장 흔한 패턴이었습니다. 비유하면 명함에는 새 버전이라고 적혀 있지만 말투는 여전히 예전 버전인 셈입니다. 문제는 개별 매개변수를 얼마나 잘 조정했느냐가 아니라 선언과 동작 사이에 틈이 있다는 점이며, 탐지의 상당 부분이 여기서 발생합니다.

세 번째 유형은 신원을 바꿀 때 내부 엔진도 함께 바뀝니다. 어떤 버전이라고 선언하면 그 버전에 해당하는 엔진이 실제로 동작하므로 일관성이 유지되고, 이 탐지 방식에서는 트래픽이 구분되지 않았습니다. 논문은 이 유형을 식별하려면 더 복잡한 탐지 방법이 필요하다고도 설명합니다.

네 번째 유형은 브라우저 자체를 바꾸지 않고 가상 머신 안에서 실제 브라우저를 실행한 뒤 목표 설정을 불러옵니다. 브라우저가 실제로 진짜이기 때문에 탐지 시스템이 구분하지 못하지만, 운영 비용이 높고 규모를 키우기 어렵습니다.

네 유형의 차이는 매개변수의 수가 아니라 선언과 동작이 같은 기술 기반에서 나온 것인지에 있습니다.

환경 솔루션을 선택할 때의 실질적인 시사점

탐지의 중심은 선언을 읽는 것에서 동작을 검증하는 것으로 이동했습니다. 따라서 바꿀 수 있는 표면 매개변수는 점점 덜 중요한 장점이 됩니다. 실제 평가에서는 다음을 볼 수 있습니다.

  • 매개변수 목록보다 내부 계층을 확인합니다. 선언 버전을 바꿀 때 내부 계층도 함께 바뀌는가? 핑거프린트가 실제 조합으로 자동 생성되는가, 아니면 여러 값을 수동으로 조합하는가?
  • 환경끼리 비교합니다. 여러 환경이 매우 비슷한 저수준 특징을 반환한다면 격리가 완전하지 않은 것입니다.
  • 차별화보다 일관성을 먼저 봅니다. 내부에서 서로 모순되는 특징을 많이 조정할수록 탐지에 노출되는 면이 커집니다.
  • 일반적인 탐지 페이지를 통과했다고 해서 플랫폼이 그 환경을 받아들인다는 뜻은 아닙니다. 최종적으로는 소량의 실제 트래픽을 사용해 직접 검증할 필요가 있습니다.

환경 격리 계층의 핵심 과제는 각 환경을 독립된 하나의 구성으로 만들고 내부 모순이 없도록 하는 것입니다. PurpleMark가 다루는 것도 바로 이 문제입니다. 탐지와 안티디텍션은 모두 적용되는 컴플라이언스 범위 안에서 사용해야 하며, 이 연구의 진정한 가치는 어떤 제품이 좋고 나쁜지 순위를 매기는 것이 아니라 평가를 근거에 기반해 수행할 수 있게 한다는 데 있습니다.