Wszystkie historie o hasłach kończą się tak samo: ktoś trzymał gdzieś twój sekret i go zgubił.
Rok nie ma znaczenia. Na początku leżał w zwykłym pliku tekstowym na wspólnym komputerze i wystarczyło poprosić system, żeby go wydrukował. W 1979 Morris i Thompson opisali, jak solić i podrażać obliczanie skrótu, żeby skradziona lista nie zamieniała się od razu w listę haseł — i była to ogromna poprawa. Potem przyszły reguły złożoności, przez które wszyscy dopisujemy symbol na końcu. Ale kształt problemu przez cały ten czas nie drgnął ani o milimetr: istnieje sekret, ty go znasz, serwer potrafi go sprawdzić, a więc serwer ma co zgubić.
Wszystko, co od tamtej pory robiliśmy, sprowadza się do tego, żeby ten sekret był dłuższy, dziwniejszy, bardziej posolony, wolniejszy do złamania. Nikt nie zadał pytania o jeden poziom wcześniej: a gdyby wspólnego sekretu w ogóle nie było?
1976 pomysł, że sekret może mieć dwie połowy
W 1976 Whitfield Diffie i Martin Hellman opublikowali New Directions in Cryptography. Pomysł był tak prosty, że aż obraźliwy: klucz można rozłamać na dwa kawałki, które nie są wymienne. Jeden rozdajesz na prawo i lewo; drugi nie opuszcza domu. To, co podpiszesz prywatnym, weryfikuje się publicznym, ale publicznym nie podpiszesz niczego.
Przeczytaj to jeszcze raz, myśląc o serwerze: serwis nie musi już przechowywać czegoś, czym da się wejść. Tylko tę połowę, która niczego nie otwiera.
To, że pomysł potrzebował prawie pół wieku, żeby trafić na ekran logowania twojego banku, nie świadczy najlepiej o naszej branży. Certyfikaty klienta istniały i działały; nie istniał sposób ich używania, który nie wymagałby dyplomu. Kryptografia była rozwiązana. Użyteczność — nie.
2013 ktoś dla odmiany się dogaduje
W 2013 powstał FIDO Alliance, konsorcjum branżowe z celem zadeklarowanym i mało skromnym: ograniczyć zależność od haseł. Najważniejsza nie była technologia — ta już była — tylko to, że producenci, przeglądarki i serwisy usiedli i uzgodnili jeden protokół. Brzmi jak biurokracja, a było dokładnie tym, czego brakowało: mechanizm uwierzytelniania, który działa w jednej przeglądarce i z jedną usługą, nie jest mechanizmem, tylko ciekawostką.
2019 przeglądarka uczy się kryptografii
W marcu 2019 WebAuthn stał się rekomendacją W3C. Po ludzku: dowolna strona mogła już poprosić przeglądarkę — standardowym API, bez wtyczek i sterowników — żeby wygenerowała parę kluczy i nią podpisała.
Przebieg, bez ozdobników, wygląda tak. Kiedy się rejestrujesz, twoje urządzenie tworzy nową parę kluczy, właściwą tylko dla tego serwisu. Wysyła publiczny. Prywatny zostaje u niego, przechowywany przez samo urządzenie i chroniony twoim odciskiem palca, twarzą albo PIN-em. Kiedy wracasz, serwis przysyła losowe wyzwanie, urządzenie je podpisuje, a serwis sprawdza podpis kluczem publicznym, który już miał.
Zwróć uwagę na to, co nie ma miejsca: żaden sekret nie podróżuje. Serwer nigdy nie miał twojego klucza prywatnego, więc nie może go zgubić. Jeśli jutro wycieknie cała jego baza danych, wyniosą z niej listę kluczy publicznych — mniej więcej tak jak książkę telefoniczną. Nie ma skrótów do przepuszczenia przez GPU ani słownika do przelecenia. Nie chodzi o to, że jest trudno: po prostu nie ma tam nic wartego zachodu.
Skutek uboczny większy niż sam pomysł
Kiedy twoje urządzenie tworzy tę parę kluczy, przywiązuje ją do domeny. Klucz
zapisany dla twojbank.pl jest oferowany wyłącznie twojbank.pl. To nie jest
polityka ani ostrzeżenie, ani czerwony pasek w przeglądarce: klucz dla
twojbank-bezpieczenstwo.com po prostu nie istnieje. Przeglądarka go nie znajduje,
bo nigdy nie powstał.
To zabija phishing. Nie ogranicza go: odbiera mu mechanizm. Cały biznes phishingu polega na tym, że ty możesz wpisać hasło w niewłaściwym miejscu, a my od lat próbujemy to naprawiać szkoleniami i kampaniami uświadamiającymi. To wszystko było leczeniem objawu. Twoje oko da się nabrać na podobny adres; twój telefon — nie. On nie czyta: porównuje ciągi znaków.
Przy okazji ginie recykling haseł, ten drugi grzech główny. Każdy serwis ma własną parę kluczy. Nie ma czego używać powtórnie, nawet gdybyś chciał.
2022 wielka trójka podpisuje pokój
W maju 2022 Apple, Google i Microsoft ogłosiły wspólnie, że rozszerzą wsparcie dla poświadczeń FIDO — passkeys — w swoich platformach i przeglądarkach.
To zamieniło rzecz z notatki technicznej w coś, co da się wytłumaczyć własnej mamie. Do tamtej pory WebAuthn prawie zawsze oznaczał fizyczny klucz USB: znakomity, dla trzech osób. Passkey mieszka tam, gdzie i tak trzymasz telefon w ręku, i odblokowuje się twarzą.
Czego to nie naprawia
Teraz drobny druk, bo branża spędzi najbliższe lata, udając, że go nie ma.
Odzyskiwanie dostępu wciąż jest miękkim podbrzuszem. Dziura nie zniknęła: przesunęła się. Jeśli zgubisz urządzenie, ktoś musi zdecydować, że to ty, a ta decyzja zapada niemal zawsze mailem, SMS-em albo w rozmowie z człowiekiem na infolinii. Ten człowiek jest dokładnie tym samym celem co wcześniej. Opancerzyłeś drzwi frontowe, a tylne stoją, gdzie stały.
Synchronizacja przywiązuje cię do ekosystemu. Passkeys są wygodne, bo twoja platforma powiela je między urządzeniami. Czyli, mówiąc inaczej, twoje klucze mieszkają w pęku kluczy konkretnej firmy. Wyjście stamtąd nie jest niemożliwe, ale też nie jest jednym przyciskiem. Zamieniłeś problem pamiętania na problem przynależności.
I nadal musisz jakoś wejść, gdy zgubisz telefon. Co w praktyce znaczy, że prawie żaden serwis hasła nie usunął: schował je za linkiem „problem z logowaniem?”. Dopóki ten link istnieje, istnieje hasło — i jest tak samo kiepskie jak zawsze. Łańcuch pęka na najsłabszej metodzie, którą akceptujesz, a nie na najbardziej eleganckiej, którą oferujesz.
Co robić w międzyczasie
Włącz passkeys wszędzie tam, gdzie ci je proponują, i zacznij od tego, co boli najbardziej, jeśli padnie: poczta, bank, to konto, którym logujesz się do reszty. To jedno z niewielu usprawnień bezpieczeństwa, które przy okazji zdejmuje ci pracę z głowy.
I nie oszukuj się: hasła będziesz miał jeszcze przez lata, choćby jako plan B. Niech będą długie, inne w każdym serwisie i trzymane w menedżerze. Jeśli chcesz takie, które nie wyjdzie z twojej głowy, użyj generatora; jeśli chcesz wiedzieć, czy to, które masz, cokolwiek wytrzyma, przepuść je przez sprawdzarkę.
Stare pytanie wartownika — czy jesteś swój? — ma wreszcie inną odpowiedź. Przez dekady odpowiadaliśmy słowem, które dało się podsłuchać. Teraz odpowiadamy podpisem, który potrafi złożyć wyłącznie twoje urządzenie, a słowo w ogóle nie powstaje. To pierwszy raz, kiedy zmieniliśmy pytanie zamiast słowa.
Źródła: W. Diffie i M. Hellman, „New Directions in Cryptography”, IEEE Transactions on Information Theory, 1976 · R. Morris i K. Thompson, „Password Security: A Case History”, Communications of the ACM, 1979 · FIDO Alliance, powołany w 2013 · „Web Authentication: An API for accessing Public Key Credentials”, rekomendacja W3C, marzec 2019 · wspólne ogłoszenie Apple, Google i Microsoftu w sprawie wsparcia passkeys, maj 2022.