Firefox는 2021년 2월에 공개한 'Firefox 86'는 개인정보보호 기능을 강화했고, 새롭게 'State Partitioning'이라는 추적방지 기능을 도입했습니다. 이 State Partitioning이 어떻게 작동하는지를 Mozilla의 엔지니어인 요한 호프만 씨가 해설합니다.

Introducing State Partitioning - Mozilla Hacks - the Web developer blog
https://hacks.mozilla.org/2021/02/introducing-state-partitioning/

Introducing State Partitioning – Mozilla Hacks - the Web developer blog

State Partitioning is the new privacy feature called Total Cookie Protection, which will be available in ETP Strict Mode in Firefox 86.

hacks.mozilla.org


서드파티 Cookie를 포함한 웹사이트는 사용자가 웹사이트를 떠난 후의 활동도 추적하면서 활동분석을 통해 사용자의 관심을 파악하고 효과적인 광고를 게재할 수 있습니다. 한편 이러한 추적(트래킹)은 개인정보를 과도하게 수집하므로, 최근에는 개인정보보호의 관점에서 규제하고 폐지하는 방향으로 향하고 있습니다.

Firefox를 개발하는 Mozilla는 이전부터 사용자 추적을 막기 위한 방법을 고안하고 있었으며, 2021년 1월에 공개된 Firefox 85에서는 슈퍼 Cookie라는 새로운 기법을 이용한 추적을 방지할 기술도 도입했습니다.

'Firefox 86'에서 새롭게 도입된 추적방지책 'State Partitioning'에 대해서, 호프만 씨는 "우선 Stateful한 Web API가 어떻게 작동하는지를 이해할 필요가 있습니다"라며 설명을 시작합니다. 'Stateful'이란 로그인이 발생할 수 있는 통신을 의미하며, Mozilla는 Stateful한 Web API를 'Cookie, 세션, 캐시 등의 데이터를 장치에 저장하는 API'라고 평가하고 있습니다.

원래 Stateful한 Web API는 추적을 위해 만들어진 것이 아니라, 퍼스트파티인지 서드파티인지를 불문하고 어떤 State(상태)를 여러 웹서비스에서 공유하기 위한 것이었습니다.

서드파티 Cookie를 사용한 추적의 경우 'www.tracker.com'이라는 웹사이트 Cookie를 서드파티 Cookie로 'foo.com', 'bar.com'이라는 웹사이트에 포함시켜 'www.tracker. com'이 Cookie를 식별자로 두 사이트에서 이루어지는 사용자 활동에 연결하는 것이 가능합니다.


Firefox의 추적방지 기능 'Enhanced Tracking Protection(ETP)'은 State를 공유하기 위한 액세스를 차단하는 것이지만, ETP는 일반적으로 보급되어 있는 트래커 목록을 기반으로 차단하기 때문에 목록이 최신이고 완전하지 않으면 막을 수 없는 트랙커가 생깁니다. 또한 트랙커는 새로 도메인 이름을 등록하여 ETP를 피할 수 있기 때문에 다람쥐 쳇바퀴 식이 된다는 단점이 있습니다.

이 문제를 해결하기 위해 Mozilla가 개발한 것이 State Partitioning입니다. State Partitioning은 Cookie의 접근을 완전히 차단하지 않고 서드파티에 의한 State 공유를 방지하는 구조로, Cookie와 localStorage 등의 공유 State가 분리되어 각각의 Cookie를 발행한 웹사이트에서만 이용이 가능합니다.

이 중 Firefox는 'Double Keying'라는 구조를 이용하여 Cookie에 '어떤 페이지를 보고 있을 때', '어디에서 부여된 것인가'라는 정보를 추가. 이는 동일한 'www.tracker.com'의 서드파티 Cookie가 포함된 웹사이트를 사용자가 보고 있어도 다른 Cookie라고 판단되어 정보를 추적할 수 없게 됩니다.

Double Keying을 이용한 Firefox에서는 foo.com의 Cookie 키가 'www.tracker.com^www.foo.com', bar.com의 Cookie 키가 'www.tracker.com^bar.com'로 저장되어 개인을 식별하는 트랙커로서의 기능이 서드파티 Cookie에서 손실됩니다.


이 메커니즘은 정상적으로 Cookie와 스토리지를 이용하면서도 광범위한 추적을 방지할 수 있습니다.

한편, State Partitioning을 이용하면 싱글사인온(SSO) 등 서드파티 Cookie를 사용한 서비스는 연결이 중단되는 문제가 발생합니다.


이에 Firefox의 State Partitioning에서는 특정 경우에만 State를 분리하지 않는 것이 가능하며, 비분리가 활성화되면 Double Keying 기능이 정지합니다. Firefox가 비분리를 사용하는 경우는 다음 두 가지가 있습니다.

1. 포함된 iframe이 Storage Access API를 호출할 때
2. 자동화된 휴리스틱에 의한 판단


Storage Access API는 Mozilla가 제안하는 새로운 JavaScript API로, 추적방지 '예외'를 처리하기 위한 것입니다. 또한 Mozilla는 '웹상에서 서드파티 스토리지를 사용하는 가장 일반적인 시나리오'의 경우 스토리지 액세스를 허용하는 휴리스틱을 시행하고 있습니다. 이 두 경우에 해당하는 경우에는 비분리가 활성화됩니다.

Posted by 말총머리
,