브라우저 프로필과 격리: 계정을 분리한다는 것의 진짜 의미

“격리”는 브라우저 신원을 서로 분리해 두는 일을 가리킬 때 모두가 쓰는 단어인데, 실제로는 여러 가지 서로 다른 것을 포괄합니다. 이 글은 그것들을 나누어 살펴봅니다. 쉬운 것이 중요한 것은 아니기 때문입니다.
스토리지 격리
브라우저 프로필에는 자체 쿠키, 로컬 스토리지, 캐시, 방문 기록, 저장된 비밀번호, 확장 프로그램이 있습니다. 두 프로필은 서로의 쿠키를 볼 수 없으므로, 사이트는 스토리지를 통해 둘을 연결할 수 없습니다. 주요 브라우저는 모두 여러 프로필을 지원하며, 이 수준의 격리는 이미 해결된 문제입니다. 사이트가 볼 수 있는 것이 이것뿐이라면, 계정을 분리해 두는 일은 “새 프로필” 버튼을 누르는 것으로 끝날 것입니다.
네트워크 격리
같은 주소를 쓰는 두 프로필은 같은 곳에서 도착합니다. 하나의 가정용 주소에서 동시에 두 계정이 접속하는 것을 본 사이트는 무언가를 알게 된 것이며, 시간대와 언어까지 일치한다면 더 많은 것을 알게 됩니다. 네트워크 격리란 각 프로필이 자신만의 경로, 보통 프록시를 갖고, 그 경로가 HTTP, WebRTC, 가능하다면 DNS까지 모든 것을 실어 나른다는 뜻입니다. 프록시가 HTTP만 다루는 프로필은 서류상으로는 격리되어 있지만 실제로는 연결되어 있습니다.
핑거프린트 격리
이것이 어려운 부분입니다. 같은 기기에서 같은 브라우저 빌드를 쓰는 두 프로필은 같은 canvas 해시, 같은 오디오 해시, 같은 렌더러 문자열, 같은 스레드 수, 같은 화면 구성, 같은 글꼴 목록을 만들어 냅니다. 사이트의 관점에서는 쿠키 보관함이 둘인 한 대의 기기일 뿐입니다. 두 대의 기기처럼 보이게 하려면, 브라우저가 이 속성들에 대해 프로필마다 일관되게 서로 다른 값을 보고해야 합니다.
대개 실패하는 곳은 일관성입니다. 값들은 실제로 존재하는 기기를 설명해야 합니다. 운영 체제, 그 운영 체제에 탑재되는 GPU, 서로 어울리는 화면 크기와 픽셀 비율, 일치하는 사용자 에이전트, Client Hints, navigator.platform, 그리고 해당 운영 체제에 속한 글꼴이어야 합니다. 방문할 때마다 같은 값이 유지되어야 합니다. 매일 바뀌는 핑거프린트는 그 자체로 신호이기 때문입니다. 그리고 사이트가 출처 간에 하는 비교를 견뎌야 합니다. 사용자 에이전트와 렌더러, 시간대와 주소, WebRTC 후보와 요청의 비교가 그것입니다.
“숨기기”가 잘못되는 지점
모든 것을 차단하는 것은 격리가 아니라 또 다른 핑거프린트입니다. canvas, 오디오, WebGL, WebRTC에 대해 “사용 불가”를 반환하는 브라우저는 프라이버시 도구처럼 보이는데, 그런 브라우저는 작고 눈에 띄는 집단입니다. 제대로 작동하는 프로필의 목표는 그 반대입니다. 모든 신호가 완전히 읽히고 서로 일치하는, 평범하고 따분한 한 대의 기기처럼 보이는 것입니다. 성공 조건은 진단 결과에 아무것도 나타나지 않는 것이 아니라, 그럴듯한 기기가 나타나고 불일치가 없는 것입니다.
프로필 점검 방법
프로필 안에서 진단을 열고 사이트가 읽는 방식으로 읽어 보십시오. 렌더러가 운영 체제와 일치합니까? 시간대가 주소와 일치합니까? WebRTC가 프록시의 주소만 노출합니까, 아니면 아무것도 노출하지 않습니까? 새로고침해 보십시오. 해시가 그대로입니까? 그다음 두 번째 프로필을 열어 값이 첫 번째와 다른지 확인하십시오. PowerScan 같은 페이지는 이 값들을 나란히 보여 주고, 서로 다른 비교 항목을 표시하며, 아무것도 저장하지 않으므로 이 점검은 반복할 수 있고 흔적을 남기지 않습니다.
이 사이트가 주장하지 않는 것
PowerScan은 진위 점수를 매기거나, 프록시를 탐지하거나, 브라우저가 봇인지 판정하지 않습니다. 그런 판단에는 페이지 스크립트가 가지고 있지 않은 데이터가 필요하며, 그에 대해 숫자를 보여 주는 것은 추측에 불과합니다. PowerScan이 하는 일은 사이트가 읽는 것과 같은 신호를 읽고, 서로 어긋나는 곳을 짚어 주는 것입니다. 여러분이 실제로 조치를 취할 수 있는 부분이 바로 그것입니다.

