Pojawiło się zagadnienie weryfikacji wieku przyjaznego dla prywatności czyli anonimowej weryfikacji wieku. Czyli mamy serwis X, który chce potwierdzić, że użytkownik ma 18 lat, ale jednocześnie ma otrzymać możliwie mało danych na temat tego użytkownika. Idealnie: tylko wiek.
Rysiek zaproponował rozwiązanie, które zaintrygowało mnie na tyle, że postanowiłem przeanalizować, czy to ma szansę działać. Wyszło mi, że nie. W tym wpisie skupiam się wyłącznie na proponowanym opisie algorytmu, czyli punktach i akapicie w którym jest zawarty.
Podsumowując założenia, ma tam być tak, że jest serwis X, użytkownik U, oraz serwis potwierdzania identyfikacji EID. X ma nie wiedzieć, kim jest U (dane osobowe). EID jak najbardziej zna dane osobowe użytkownika U, ma potwierdzić wiek, ale ma nie wiedzieć, że potwierdzenie jest na potrzeby serwisu X.
Problemy, które tu widzę, są dwa. Pierwszy jest taki, że użytkownik U w pełni kontroluje komunikację pomiędzy X a EID. Najpierw wysyła dane (które może dowolnie ustalić przed wysłaniem), potem otrzymuje odpowiedź, którą przekazuje. Czyli mamy do czynienia z man in the middle. Nie byłoby tu wielkiego problemu, gdyby EID wiedziało, że rozmawia z X – wystarczyłoby wtedy użyć odpowiednich kluczy prywatnych i publicznych. Ale jest to sprzeczne z założeniami.
Drugi problem jest poważniejszy. Serwis X nie wie, jakiego użytkownika weryfikuje. W tej sytuacji dowolny „dowód osobisty” może posłużyć do weryfikacji użytkownika.
Przekładając to na bardziej tradycyjne okoliczności: osoba w kominiarce przychodzi kupić alkohol i w ramach weryfikacji wieku pokazuje na ekranie telefonu zdjęcie dowodu osobistego. Czy sprzedawca jest w stanie zweryfikować wiek osoby na tej podstawie? Wg mnie – nie bardzo. Zdjęcie na ekranie to tutaj odpowiednik MITM (nie wiemy nawet, czy dowód jest autentyczny). Natomiast kominiarka (ukrycie tożsamości, anonimowość) uniemożliwia sprawdzenie, czy dowód należy do danej osoby.
Czyli dokładanie kolejnych warstw, algorytmów, systemów, stron w komunikacji nie zwiększa nam tu pewności anonimowej weryfikacji wieku. Nie w stosunku do wybrania przez użytkownika na stronie opcji „potwierdzam, że mam 18 lat”.
Być może po prostu mamy problem z akceptacją faktu, że weryfikacja wieku nigdy nie była anonimowa? Bo sprzedawca w sklepie z alkoholem nie tylko sprawdza[1], czy osoba posiada dowód osobisty. Sprawdza też, czy jest on autentyczny. I czy należy do tej osoby. OK, do tego ostatniego nie potrzebuje tu kompletu danych z dowodu, wystarczy zdjęcie. Ale do pozostałych danych ma dostęp w trakcie sprawdzania autentyczności.
Na Mastodonie trwa dyskusja, pewnie warto zapoznać się z całością, a komentować czy sugerować działające rozwiązania można równie dobrze tam.
[1] A przynajmniej powinien to robić.
Na Mastodona nie wejdę, skomentuję tutaj ryzykując, że powtarzam banały albo plotę banialuki.
Problem drugi jest w internecie nie do obejścia. Zawsze ktoś uprawniony może zalogować się za iksa, a potem pozwolić Iksowi na swobodne korzystanie z serwisu. Jest to prosty rezultat braku fizycznego kontaktu między stronami. Okej, można by zmusić Iksa, żeby korzystał z serwisu przy włączonej kamerze skierowanej na swoją twarz. Ale po pierwsze kłóci się to z założeniem dotyczącym prywatności, a po drugie, w erze generatywnej SI… wiadomo.
Pierwszy problem jest ciekawszy. Iks mógłby najpierw poprosić EID o tymczasowy klucz identyfikacyjny. Następnie przesłałby go do Iksa, a Iks do serwisu. Serwis mógłby zweryfikować poprawność klucza u EID nie wiedząc nic o użytkowniku. Oczywiście, w tym układzie EID wiedziałby, gdzie Iks się loguje. Ale po pierwsze, serwis mógłby wysłać zapytanie do EID anonimowo, a po drugie, cóż, jeżeli EID jest nieuczciwy, to zawsze będzie mógł sporo wywęszyć, choćby poprzez analizę metadanych.
W ogóle, z kłopotem potwierdzenia pełnoletniości użytkownika najlepiej poradziła sobie Sierra w „Leisure Suit Larry” (cykl przygodówek point’n’click). Na początku musiałeś odpowiedzieć na kilka pytań popkulturowych, na których nigdy nie znałbyś odpowiedzi, gdybyś był dzieciakiem nie żyjącym w „tamtych” czasach.
Wpisy na Mastodonie (także odpowiedzi) są generalnie dostępne bez logowania, przez WWW, więc poczytać zawsze można. Taka luźna uwaga na przyszłość, bo gdybym nie chciał wpisu na blogu robić, tylko tam rozmawiać, to bym tak zrobił.
Nie zgodzę się, że problem drugi jest nie do obejścia. Mamy profil zaufany https://www.gov.pl/web/profilzaufany i korzystamy z niego do rzeczy mających skutki prawne. Co prawda wymaga on w pierwszym kroku, przy zakładaniu fizycznej obecności (lub jej odpowiednika), ale później daje wystarczającą gwarancję autentyczności użytkownika. Oczywiście, jeśli ktoś udostępni swoje dane logowania do PZ i da dostęp do 2FA, czyli w praktyce umożliwi nieograniczone wykorzystywanie swojego PZ, to pozamiatane. Ale to nieco inny przypadek.
SI o której piszesz to faktycznie ciekawy przypadek i nie był wzięty pod uwagę na Mastodonie. Tak, to wiele psuje, przynajmniej w teorii. W praktyce instytucje finansowe w ramach KYC korzystają z kamerek właśnie. Zresztą jedna z metod przy PZ też jest na to teoretycznie podatna.
Jeśli EID może wiedzieć, do jakiego serwisu user się loguje, to problemu nie ma żadnego.
Pytania popkulturowe (i jakiekolwiek inne) w dobie LLMów chyba nie mają racji bytu. Opisywany sposób sprawdzenia może był zabawny, może nieco trudniejszy niż button „mam 18 lat”, ale w praktyce sprawdzał, czy użytkownik ma wiedzę lub jest wystarczająco sprytny. Co – zgadzam się w zupełności – niekoniecznie jest złe.