Ważne

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.

Jeżeli znalazłeś literówkę w tekście, to daj nam o tym znać zaznaczając kursorem problematyczny wyraz, bądź zdanie i przyciśnij Shift + Enter lub kliknij tutaj. Możesz też zgłosić błąd pisząc na powiadomienia@tabletowo.pl.

Komentarze

  • trolollo

    Trollollo komentarz o szpiegującym NSA za 3.. 2.. 1..

  • 高見彩乃

    Świetny artykuł. Dzięki!

    • Pokuszę się o stwierdzenie, że nikt w polskiej sieci lepiej od Piotra by tego nie napisał :)

      • Pawel

        Ja bym jeszcze chciał wiedzieć o Huawei jeśli się da, jak u nich to jest :)

        • Problem zaczyna się wtedy jak firmy (głównie producenci smartfonów z Androidem) działają na własną rękę. Zanim Google udostępniło uniwersalne API do skanerów odcisku palca w Androidzie 6.0, producenci stosowali (nadal stosują?) własne rozwiązania, które nie były w pełni zabezpieczone z poziomu roota i systemu (rozwiązania te były „wysokopoziomowe”).

          Tak było z Samsungiem Galaxy S6, HTC One Max czy Huawei Mate 7 – z tych urządzeń „masowo” (jak donosiły media) wykradano obrazy odcisków palca dzięki nieautoryzowanemu dostępowi do sensora.
          http://www.androidauthority.com/android-vulnerability-stolen-fingerprints-632348/

          • Pawel

            Dzięki za fachową odpowiedź :) No to niestety mojemu Honorowi 7 będę ufał już trochę mniej :( Zastanawiam się tylko dlaczego Google potwierdziło prawo tych marek do „samoróbki” i mogę autoryzować płatności w Google Play – skoro nie jest to należycie zabezpieczone to powinni ostrzegać a nie popierać :(

          • Wszystko jest „należycie zabezpieczone”, dopóki ktoś nie znajdzie luki bezpieczeństwa ;) Myślę, że właśnie z tego powodu Google zdecydowało się na wprowadzenie systemowego, niskopoziomowego rozwiązania wbudowanego głęboko w system.

      • Wincenty Witos

        Pokuszę się o zdanie odrębne. Są dziesiątki osób, które byłyby w stanie napisać to lepiej. Tyle tylko, że mają w nosie pisanie dla Pani.

        • A ja nie mam problemu z tym, że nie każdy chce u mnie pisać.

  • Wojti

    W większości zrozumiałem ;)

  • Barilla

    Jest takie stare powiedzenie że jedynym w pełni skutecznym zabezpieczeniem przed kradziezą danych jest nieposiadanie żadnych danych wartych kradzieży ;)

  • ba

    Panie Piotrze jak zwykle świetny artykuł. Czuję że niedługo znowu czeka mnie przez pana wycieczka po wikipedii w poszukiwaniu ciekawostek ;)

  • VMortens

    Świetny artykuł – dzięki.

  • uru28

    Świetnie i ciekawie opisane Piotrze;) Problemem w moim odczuciu jest jednak to że tego typu zabezpieczenia dosyć często „usypiają” czujność lub też wręcz wyłączają myślenie (w niektórych wypadkach). Cóż z tego że posiadamy zabezpieczenia biometryczne w sprzęcie skoro bezwiednie udostępniamy dane…O tym do czego dostęp ma np. Facebook trąbi się od dawna, ba można nie mieć nawet konta a informacje o nas dzięki znajomym są na serwerach Zuckerberga i obawiam się że samo „tłuczenie” tego samego nie wystarczy.Do momentu w którym nie zmieni się prawo sytuacja będzie coraz gorsza.Można kupić sprzęt z najlepszymi zabezpieczeniami, ale dopóki nie będziemy czytać do czego instalowane aplikacje chcą mieć dostęp i dopóki nie pokusimy się o zastanowienie czy aby takie wymagania są uzasadnione dopóty zabezpieczenia będą bajerem lub zabezpieczeniem w przypadku kradzieży samego sprzętu.

  • Ciach0

    Witam Panie Piotrze,
    Bardzo ciekawy artykuł. Szkoda, że dopiero teraz go przeczytałem, ale dopiero niedawno powróciłem do Androida. Konkretnie do Huawei P9 Lite. I w związku z tym i informacjami w artkule mam pytanie: czy mając fabrycznego Marshmallowa 6.0 mogę się spodziewać, że Huawei zastosował się do zaleceń/wymagań Google Android Fingerprint Authentication i odcisk palca jest przechowywany tylko lokalnie? Z racji tego, że staram się w miarę dbać o nie udostępnianie swoich
    danych/odcisków itp., jest to dla mnie dosyć ważna sprawa. Czy jest
    możliwość, iż odcisk był przesyłany np. na serwery Huawei lub gdzieś
    indziej, do których ktoś za jakiś czas się może włamać?

Tabletowo.pl
Logowani/Rejestracja jest chwilowo wyłączona