Wstępna analiza prywatności Google Privacy Sandbox - Federated Learning of Cohorts ujawnia informacje o przeglądaniu w trybie incognito

Ekosystem reklamy w internecie przechodzi strategiczne zmiany. Projekt Privacy Sandbox od Google obiecuje przeprojektowanie technologii reklam internetowych w sposób, który będzie szanował prywatność użytkownika. W tym w oparciu o pewne wcześniejsze projekty analizowane w ramach badań akademickich w USA i w Europie. Ze szczegółową analiza techniczną warto poczekać do momentu gdy propozycje te będą bardziej dojrzałe.

W tym wpisie skupiam się na konkretnym problemie prywatności związanym z Federated Learning of Cohorts (FloC). Mechanizm FloC udostępnia każdej stronie “odpowiednio unikalne” identyfikatort przypisane do „kohort” w których znajdują się użytkownicy. Podobne (lub identyczne) identyfikatory nadawany są użytkownikom o podobnych zainteresowaniach, na podstawie historii przeglądanych stron. Dane są SimHaszowane w celu uzyskania takiego odcisku palca na podstawie historii przeglądanych stron internetowych. Działa to w stosunkowo prosty sposób. Każde wywołanie funkcji FloC document.interestCohorts() zwraca w wyniku dane opisujące identyfikator kohorty, przykładowo taki: {id: "498413426628", version: "chrome.1.0"}, gdzie identyfikator „498413426628” jest “luźnooparty na historii przeglądania sieci przez użytkownika. Czyli odnosi się do ilości i rodzaju przeglądanych stron. Istnieją oczywiście pytania dotyczące projektowania rozwiązań prywatności w takim systemie. Na przykład, które strony powinny zostać uwzględnione w takich obliczeniach (miejmy nadzieję, że wrażliwe strony nie będą brane pod uwagę)? Trzeba wziąć pod uwagę także wiele innych kwestii związanych z projektowaniem prywatności. Takich jak minimalna / maksymalna liczba stron internetowych branych pod uwagę przy obliczaniu identyfikatora, charakter stron internetowych, czy pod uwagę w obliczeniach brane są podstrony, jak często identyfikator jest aktualizowany (obecne założenie: 7 dni ) itd. Takie decyzje projektowe mogą mieć znaczący wpływ na faktyczny stopień prywatności końcowego “produktu”. Analiza nie jest prosta. Ostateczną techniczną analizę prywatności odkładamy do czasu, gdy zespół Google Chrome ujawni finalne rozwiązania ochrony prywatności.

Spojrzenie na FloC

FloC jest obecnie w fazie testów (nie jest włączone dla wszystkich użytkowników), więc aby to przetestować, trzeba włączyć tę funkcję, uruchamiając przeglądarkę internetową z wiersza poleceń z argumentami --enable-features=InterestCohortAPI.

Błąd prywatności - wykrywanie incognito

Jest jedna rzecz, którą najwyraźniej już widać jako problem z prywatnością. Niestety wygląda na to, że FloC zawiera błąd projektu prywatności, wyciek informacji o tym, czy użytkownik przegląda stronę w trybie prywatnym (incognito). Wykrywanie tego jest proste. Demonstrację wstawiłem tutaj.

Ten wyciek danych działa, ponieważ podczas przeglądania w trybie incognito wywołanie document.interestCohort() powoduje powstanie wyjątku (“Uncaught DOMException: Failed to get the interest cohort: either it is unavailable, or the preferences or content settings has denined the access”). Umożliwia to rozróżnienie między trybami incognito i zwykłymi trybami przeglądania sieci.

Jak rozwiązać takie problemy projektowe?

Ciekawym pytaniem jest, jak rozwiązać taki wyciek danych. Oczywiście, jeśli FloC miałoby być z założenia niedostępne w trybie incognito, umożliwia to wykrycie użytkowników przeglądających w trybie przeglądania prywatnego.

Alternatywnym rozwiązaniem mogłoby być zwracanie losowych wartości, gdy wywoływana jest funkcja interestCohort(). Ale takie podejście pozwoliłoby na wykrycie fałszywych danych poprzez porównanie wyników kilku kolejnych wywołań funkcji.

Być może jedną z alternatyw mogłoby być obliczenie losowego identyfikatora po uruchomieniu przeglądarki internetowej? Jednak wtedy takie losowe dane identyfikacyjne stanowiłyby krótkoterminowy odcisk palca.

Ostatecznie trzeba podjąć pewne decyzje, ale to ciekawe ćwiczenie umysłowe pokazuje, że tego rodzaju decyzje projektowe nie są takie proste i niosą konsekwencje. Taka jest natura inżynierii i projektowania prywatności. Projektowanie i komunikowanie decyzji wiążących si≤ę z konsekwencjami dla bezpieczeństwa lub prywatności nie jest proste.

Podsumowanie

W tym wpisie przyjrzałem się jednemu składnikowi “piaskownicy prywatności” od Google. Skupiam się na konkretnym błędzie prywatnośc (we FloC)i, wycieku informacji o przeglądaniu w trybie prywatnym. To prosta demonstracja, ale projektowanie wrażliwych funkcji to ostatecznie kwestia strategii i zaufania.


Podobał Ci się ten wpis/analiza? Jakieś pytania, uwagi lub oferty? Zapraszam do kontaktu: me@lukaszolejnik.com