IT/기초 지식

Google Chrome이 추천하는 프라이버시 샌드 박스 기술의 하나인, Privacy Budget이란 무엇인가?

개발자 두더지 2022. 5. 8. 22:50
728x90

  일본의 한 블로그 글을 번역한 포스팅입니다. 의역 및 직역, 오역이 있을 수 있으면 내용 오류 알려 주시면 수정하도록 하겠습니다. 

 

 Google은 프라이버시 샌드 박스(*)의 일환으로 Privacy Budget을 제안했다. 간단히 말하자면, 얻어진 정보에 대해서는 상한을 두자는 아이디어이다. 사용할 수 있는 예산(buget)을 예를 들어 100점이라고 정해두고, 유저 에이전트를 취득하면 10점, IP 어드레스를 취득하면 30점과 같이 점수를 쌓아가 상한으로 설정한 100점을 넘으면 식별 정도를 취득할 수 없는 느낌이다. 즉 이것으로 얻을 수 있는 정보를 제한하여, 핑거 프린트의 위험성을 줄이는 것이다.

(*) 프라이버시 샌드 박스 : 서드 파티 Cookie나 그 외에 추적 매커니즘을 사용하지 않고 크로스 사이트의 유스 케이스에 대응하기 위한 일환으로 제안되고 있을 것을 일컫는다.

 

 

Combating Fingerprinting with a Privacy Budget


Current state of affairs

 브라우저에 의해 Cookie를 다루는 방법은 크게 변하고 있다. Cookie를 블록하기 위한 움직임이 나타나고 있고 그러한 현상에 대해서 유저를 추적하고 싶은 쪽은 보다 지하에서 보다 검출되기 힘든 방법을 고안해내고 있다.

 어떤 유저의 브라우저로부터 유니크한 정보를 얻어내기 위해서 이용하는 다양한 기술을 블라우저 핑커 프린트로 알려져 있으며, 이 브라우저 핑거 프린트는 투명성이 없으며, 유저의 컨트롤 아래에 있는 것도 아니므로 결과로써 유저의 의도를 무시하고 트래킹한다. 

 

 

End state to aim for


 개개인의 유저에 대한 정보를 어느정도 공개할 것인가를 제한하는 것으로 개인을 특정하고 추적할 수 없도록 집단의 일환으로 입자 정도의 정보만 전달하도록 한다.

 서드 파티에 공유할 정보양에서 유저를 특정할 수 있는 정도로 정량화하는 몇 가지 방법이 있다.

  • k-anonymity k는 동일한 정보를 가진 유저의 수
  • entropy 정보이론에 따른 부확실성의 정도
  • differential privacy 집계 결과로 부터 개인을 추출할 수 없도록하는 기술

 각 유저의 정보를 공개하는 경우의 최대 허용량을 여기에서는 privacy buget이라고 부른다.

 

What is a fingerprinting surface?

 핑거 프린팅이란 유저 혹은 디바이스 마다 안정, 준 안정된 어떠한 기준을 만드는 것이다. 예를 들자면, 이 디바이스의 모델이나 하드 웨어 등이다. 이것들은 JavaScript의 API, 헤더나 IP어드레스등의 네트워트 식별자, 언어, 처리에 걸리는 기산등을 취득할 수 있다. 

 반대로 말하면, 유저에 관한 모든 정보가 핑거 프린트로써 이용할 수 있다. 그러나, 대부분의 경우 하나 하나를 의미하지 않고, 여러 개의 정보원과 합쳐진 경우에만 이 의미가 유효하다.

 

 

How to get there


Measure information exposed by each fingerprinting surface

 핑거 프린트로 얻어진 정보를 모은다. 각 브라우저는 핑거 프린트로 밝혀진 정보를 수집해, 딜게토리에 전달한다. 이 데이터는 다음 페이스에 사용된다.

 

Mearsure total information exposed to each site

 얻어진 정보의 총량을 계산한다. 디렉토리에 전달된 데이터를 이용하여 각 사이트에 어느정도의 핑거 프린트가 공개되었는가의 정보량을 집계한다. 이것은 대부분의 사이트가 보이지 않는 등의 장애를 발생시키지 않기 위해 어느 정도의 제한을 걸면 좋을지 결정하기 위해 사용된다.

 이 측정은 유저와 도메인와의 정보의 주고받음을 모두 포함할 필요가 있다. 또한, 각각의 도메인에 대해서 데이터의 정보가 허가되면, 제한을 넘긴 사이트에 대해서 제한된 양을 넘지 않도록 요구하는 것도 가능하다.

 

Enforce the privacy buget

 Privacy buget의 제한을 넘은 후에는 대상 API 호출은 에러가 발생할 것인가 부정확한 노이즈가 많은 결과가 반환되거나 실제 정보와 관계 없는 정수값이 반환되게 된다.

 

Exceptions

 3D 게임이나 비디오 회의 등, Privacy Buget의 적용 범위내는 어떻게 해도 실행되지 않는 어플리케이션이 존재한다. 이 경우는 별도로 액세스를 허가하는 사이트를 유저가 지정할 수 있도록 할 수 밖에 없다. 적당한 언어로 유저에 허가를 구하는 프롬트가 필요하다. 

 또한, 어떤 종류의 허가 프론트를 요청하는 API 호출(getUserMedia등)은 그 자체가 예산을 넘는 API 호출이 될 경우가 있다. 이러한 프롬트에는 예산 획득의 예외를 주지만 프롬트에서는 그러한 내용을 제공해야한다.

 

Passive surfaces

 유저 에이전트, IP 어드레스, Accept-Language 헤더 등 몇 가지의 핑거 프린트가 요구 되거나 말거나 항상 모든 웹 사이트에 공개 되어 이용 가능한 수동적인 요소이다. 

 많은 개발자는 유저의 OS를 아는 정도만으로는 예산을 사용하는 것보다, 더욱 유익한 것을 예산으로 사용하고 싶다고 생각하고 있다. 이로 인해, 수동적인 핑거 프린트를 될 수 있는 만큼 취득하지 않고, 개발자가 필요한 정보를 능동적으로 취득할 방법으로 바꿔야만 한다. 

 OS 버전을 예로 들자면, 다운로드 사이트이므로 OS를 알고 싶은 경우는 유저 에이전트 문자열을 사용해 OS 이외의 정보까지 끌고 오기 보다는 Client Hints를 통해 OS 정보만을 취득해야할 것이다.

 동일하게 언어에 따라 내야할 정보를 나눌 필요가 있는 웹 사이트만 Client Hints를 사용해 유저의 언어를 조회할 수 있도록 하자.


참고자료

https://developer.chrome.com/ja/docs/privacy-sandbox/overview/

https://qiita.com/rana_kualu/items/93759dfb098e1a3478a1

728x90