Biometria – bezpieczeństwo i prywatność

W dobie popularności i powszechności stosowania uwierzytelniania (autentykacji) biometrycznego, rodzą się pytania o bezpieczeństwo naszych danych i dbałość o naszą prywatność. A wraz z tymi pytaniami masa wątpliwości i mniej lub bardziej uzasadnionych oskarżeń w stronę dużych korporacji czy organów rządowych.

Biometria to problem bardzo złożony, ale pomijając technikalia, trzeba skoncentrować się na trzech rzeczach:

  1. Gdzie są przechowywane nasze dane biometryczne?
  2. Czy po wykradzeniu naszych danych biometrycznych można odtworzyć np. odcisk palca czy wygląd tęczówki?
  3. Czy mając sztuczną postać danych biometrycznych (sztuczny palec, zdjęcie twarzy, itd…), uda się oszukać zabezpieczenia oparte na autentykacji biometrycznej?

touchid

Gdzie to przechowywać?

Implementacja zabezpieczeń biometrycznych czy całych systemów biometrycznych leży po stronie dostawcy usługi i sposób, w jaki została ona zaprojektowana w 90% decyduje o bezpieczeństwie samego systemu. Mogę się wypowiadać tylko o tych mechanizmach, które znam, czyli Microsoft Windows Hello, Google Android Fingerprint Authentication i Apple Touch ID. W przypadku tych trzech, dane biometryczne są przechowywane WYŁĄCZNIE na urządzeniu, na którym zostały wprowadzone. Nie ma mowy tutaj o przesyłaniu ich do chmury czy ponownym auto-wykorzystaniu w innych urządzeniach, gdy połączymy je z naszym istniejącym kontem. To jest jeden z podstawowych elementów zabezpieczenia współczesnych systemów biometrycznych – brak „transferu” tych wrażliwych danych na serwer/chmurę.

Cała autentykacja odbywa się LOKALNIE na urządzeniu przez system operacyjny – i to przez jego niskie warstwy w „okolicach” jądra – często przy ścisłej współpracy z wbudowanymi funkcjami bezpieczeństwa samego procesora. Co to znaczy? To znaczy, że algorytmy biometryczne nie są uruchamiane w standardowym, wysokopoziomowym środowisku uruchomieniowym, co by pociągało za sobą dodatkowe ryzyko przechwytywania danych czy nieautoryzowanego dostępu. Systemy biometryczne korzystają z Trusted Execution Environment (TEE), czyli bezpiecznego środowiska niskopoziomowego, gdzie uruchamiane są algorytmy autentykacji biometrycznej – bez możliwości ingerencji w nie wysokopoziomowych programów czy aplikacji.

W10_Laptop_Hello_Device_small-1024x604

Jak to przechowywać?

Kolejnym krokiem bezpieczeństwa jest sposób przechowywania danych biometrycznych. Żaden szanujący się system biometryczny nie będzie przechowywał ich w postaci jawnej. Oczywiście formatem wejściowym dla systemu jest zdjęcie tęczówki czy „zdjęcie” odcisku naszego palca, ale docelowo, przekształcane jest ono (w telegraficznym skrócie) na binarny ciąg opisujący zbiór cech danego obrazu bitmapowego. W przypadku tęczówki, czarno-biały wejściowy obraz bitmapowy (po odpowiednim skalowaniu/dopasowaniu), gdzie każdy piksel ma przyporządkowaną wartość od 0 do 255 (natężenie szarości, gdzie 0 = czarny, 255 = biały) poddawany jest przekształceniu na zespół cech charakterystycznych, będący ciągiem bitów (najczęściej metodą transformaty Zaka-Gabora). Taki ciąg bitów (wektor) o zadanej długości odpowiada cechom charakterystycznym naszej tęczówki czy odcisku palca, ale co najważniejsze NIE UMOŻLIWIA on odtworzenia obrazu tęczówki czy odcisku palca. Innymi słowy – transformata działa tylko w jedną stronę – z obrazu tęczówki/palca utworzymy wektor cech charakterystycznych, ale z samego wektora nie odtworzymy obrazu tęczówki/odcisku.

Autentykacja biometryczna następuje w wyniku porównania wzorców (tego pierwotnie zarejestrowanego przy konfiguracji zabezpieczenia biometrycznego, z tym który w danej chwili podajemy przykładając palec do sensora czy oko do kamery). Porównanie wzorców najczęściej polega na zmierzeniu „odległości Hamminga”, czyli miary pokazującej jak podobne do siebie („jak blisko siebie”) są dwa porównywane wzorce. System ma ustawiony odpowiedni próg akceptacji – jeśli odległość jest mniejsza od progu – autentykacja przebiega pomyślnie. Jeśli nie – uwierzytelnianie zostaje odrzucone. Podsumowując – dane są przechowywane w postaci „nieodwracalnych” wektorów bitów, na których podstawie nie da się odtworzyć oryginalnego wzorca biometrycznego (odcisku palca, obrazu tęczówki, itp.).

Działa to na podobnej zasadzie, jak jednokierunkowe funkcje skrótu (hashe) przy hasłach podawanych przy logowaniu na strony w internecie. W bazie danych Facebooka nasze hasło nie jest przechowywane w postaci otwartego tekstu, a jedynie hasha, wygenerowanego po stronie użytkownika (przeglądarki) przez wbudowaną funkcję skrótu. Dzięki temu nawet włamanie do baz danych Facebooka nie wpłynie na bezpieczeństwo logowania na nasze konto, bo mając sam hash włamywacz nie wie jakie jest hasło i nie zaloguje się samym hashem do systemu.

Ostatni krok bezpieczeństwa przechowywania danych biometrycznych na urządzeniach to ich szyfrowanie. System operacyjny dba o to, żeby niezalogowany użytkownik (lub w przypadku dostępu do pamięci z zewnątrz) nie widział tych danych w otwartej formie. Zaszyfrowanie sprawi, że dane takie dla włamywacza będą bezwartościowe.

android-m-fingerprint-support-2

Sztuczny palec

Kolejna, ostatnia kwestia, jest związana bezpośrednio ze sprzętem do pobierania danych biometrycznych i algorytmami za tym sprzętem stojącymi. Często pobranie „gołych” danych (statyczny obraz tęczówki, czy statyczny obraz odcisku palca) nie byłoby wystarczające. Gdyby systemy biometryczne bazowały tylko na takich obrazach, można by je oszukać sztucznym palcem czy zdjęciem twarzy albo tęczówki. W zależności od metody, systemy takie mają zaimplementowane najróżniejsze testy żywotności – na przykład sensory badające odciski palców sprawdzają również układ żył (czy nawet przepływu krwi!), widoczny bezpośrednio pod skórą, a biometria twarzy zamiast statycznego obrazu rejestruje ciąg obrazów i minimalne zmiany mimiki, etc, sprawdzając czy obiekt jest „żywy”. Testów żywotności jest mnóstwo (w tym wiele pozostaje tajemnicą firm projektujących systemy biometryczne), tak samo jak wiele jest sposobów na ich oszukanie. Wystarczy powiedzieć, że mając pobrany odciska palca właściciela iPhone’a (a pobrać go można z samego urządzenia), wystarczy odrobina Wikolu, aparat/skaner, folia A4 do drukowania i drukarka laserowa, żeby „złamać” Touch ID. Ale to temat na osobny artykuł.

Nie tak różowo

O ile od strony formalnej (specyfikacji systemów) wygląda to jasno i bezpiecznie, rzeczywistość nie musi być tak różowa. Po pierwsze, zaufanie do systemów biometrycznych bazuje na zaufaniu do firm dostarczających te usługi (zaufaniu, że trzymają się one deklarowanej specyfikacji i nie przetwarzają tych danych w inny, niejawny dla użytkownika sposób) – a z tym bywa różnie. Trzeba jednak pamiętać, że takie same wątpliwości dotyczą innych sposobów uwierzytelniania – w tym przechowywania naszych haseł.

Kolejna sprawa to samo „hasło”, którym jest nasza twarz, tęczówka czy odcisk palca. O ile w przypadku haseł tekstowych, w sytuacji ich wykradzenia, możemy w każdej chwili takie hasło zmienić. Jednak w sytuacji, gdy włamywaczom uda się oszukać testy żywotności i logować się do systemów naszą „sztuczną twarzą” czy „sztucznym palcem”, naszej prawdziwej twarzy czy palca nie zmienimy.

Następna sprawa to powszechność naszych danych biometrycznych i łatwość ich pozyskania. Nasze otoczenie i nasze urządzenia roją się od NASZYCH odcisków palców, które mogą posłużyć… do ich odblokowania. Tak samo obraz wideo 4K być może będzie mógł być wykorzystany do łamania zabezpieczeń biometrycznych opartych na wyglądzie naszej twarzy czy tęczówki.

Ostatnia sprawa to jednokierunkowe funkcje transformujące nasze dane biometryczne na wektory cech charakterystycznych. Tak jak już powiedzieliśmy, na podstawie wektora (naszych) cech nie można odtworzyć wyglądu naszego odcisku palca czy tęczówki. MOŻNA natomiast stworzyć INNY odciska palca czy wygląd tęczówki, który poddany transformacie będzie generował identyczny wektor cech. To subtelna różnica uspokajająca obawy co do prywatności, ale absolutnie nie rozwiązująca kwestii bezpieczeństwa systemów. W skrócie – dwa różne odciski palca mogą generować taki sam wektor cech, który służy do uwierzytelniania w systemie. I taki sztuczny odcisk można wygenerować, jeśli się wykradnie i odszyfruje nasz wektor cech na danym urządzeniu.

Nie można traktować biometrii jako świętego Graala bezpieczeństwa uwierzytelniania. Przeciwnie – służy to raczej naszej wygodzie niż podniesieniu poziomu bezpieczeństwa. Dwuetapowe uwierzytelnianie (również to, gdzie jednym z etapów jest autentykacja biometryczna) dalej jest najlepszym rozwiązaniem, jeśli chodzi o zapewnienie bezpieczeństwa logowań do systemów, na których naprawdę nam zależy.