FIDO U2F – Przyszłość weryfikacji dwuetapowej?

Większość z nas wie, czym jest weryfikacja dwuetapowa. Przy próbie zalogowania się na konto przychodzi SMS z jednorazowym hasłem, a może mamy do tego dedykowaną aplikację jak Google Authenticator lub Facebook na komórki. Niestety to wszystko wymaga przepisywania kodów z urządzenia na urządzenie i przy sporej ilości usług robi się irytujące. Czy da się to zmienić? Tak!
Niedawno świat obeszła wieść o tym, że Google wprowadza obsługę jakiegoś U2F, który będzie pozwalał na weryfikację dwuetapową za pośrednictwem jakiegoś magicznego pendrive. Cóż, zrobili to i działa super!

Głównym założeniem urządzeń wspierających U2F jest to, że mają po prostu działać. Wpinasz i gotowe, zero sterowników guzików, instrukcji. Czy tak się da? Wygląda na to, że firmom stojącym za przymierzem FIDO nie tylko się udało, ale też mają spore szanse na ustanowienie tego ogólnoświatowym standardem.
Kto to właściwie robi? Właściwie to najwięksi gracze na rynku, tacy jak: RSA, Google, Bank of America, ARM, Microsoft, yubico czy operatorzy płatności: PayPal, MasterCard i Visa a to tylko kilka firm, które pracuje w ramach FIDO nad U2F i UAF.

Gdy zaczynałem pisać ten artykuł standard nie był jeszcze opracowany, w międzyczasie ukazała się dokumentacja w wersji 1.0 i to właśnie na niej opiera się poniższy tekst.

U2F dzieli się na dwie warstwy, wyższa odpowiada za rdzeń kryptograficzny, niższa natomiast odpowiada za komunikację. Obecnie jest opracowana wersja kryptograficzna (wyższa) oraz transport USB(jedna z możliwych warstw niższych).

Zaczniemy od warstwy kryptograficznej, ta może być zaimplementowana sprzętowo(yubico yubikey neo/u2f/New Year; plug-up Security Key) lub programowo(Entersekt Transakt U2F), jednak to od dostawcy usług zależy czy będzie obsługiwał klucze softwarowe, które w domyśle są bardziej niebezpieczne.

System opiera się na znanym od dawna systemie klucza prywatnego i publicznego, generowanych indywidualnie dla każdej strony. W idealnej implementacji każda strona będzie posiadała własną parę klucza publicznego i prywatnego.

Ale jest jeszcze kilka innych drobiazgów, na które trzeba zwrócić uwagę. Twórcy standardu U2F starali się nie wynajdywać koła od nowa, zamiast tego oparli się na istniejących standardach dodając trochę od siebie. Producenci mają za zadanie opierać się na najlepszych praktykach jak np. używanie generatorów PRNG do tworzenia kluczy prywatnych. Globalny licznik uwierzytelnień, czy porównywanie twórcy zapytania i główki klucza to tylko niektóre formy ochrony użytkownika w celu wykrycia czy ktoś nie próbuje się dowiedzieć gdzie jeszcze używasz danego klucza.

FIDO w celu zminimalizowania kosztów technologii a zarazem zwiększenia dostępności, dało możliwość nie przechowywania klucza prywatnego na urządzeniu tylko przekazania na serwer tak samo jak klucz publiczny z tym, że zaszyfrowany w najlepszy możliwy sposób na danym urządzeniu. Wprowadza to pewne zagrożenie czy producent klucza zabezpieczył odpowiednio swoje urządzenie, jednak zostało to rozwiązane dość prosto, centralna bazą certyfikowanych kluczy.

Sporo warunków dodatkowych, czy to wszystko nie utrudnia użycia? Właściwie to nie, uwierzytelnienie po stronie użytkownika jest bajecznie prosta. Polega na podłączeniu klucza do portu i ewentualnie wciśnięcia fizycznego przycisku potwierdzającego chęć uwierzytelnienia. W tym czasie komputery same wykonują resztę magii J

Warstwa komunikacyjna zależy od wykorzystanego sposobu komunikacji, chwilowo jesteśmy „skazani” na USB, podobno niedługo możemy spodziewać się nowych warstw, zobaczymy.

Jakie są wady?

Tych niestety jest kilka, mimo że klucze były tworzone w celu zachowania prywatności użytkownika, jeśli używamy jednego klucza na dwóch kontach na jednym serwerze, administrator ma możliwość, aby wykryć takie konta po tzw. „Key Handle”
Ponadto układy klawiatury niekompatybilne z ANSI-ISO(na przykład Francuskie AZERTY) nie chcą działać, jest to spowodowane tym, że znaki są mapowane do konkretnych kodów klawiszy. U2F jest niezależne od układu klawiatury w przeciwieństwie od Yubico OTP(Thanks Henrik).

Co jest potrzebne, aby z tego korzystać?

Potrzebny nam jest klucz wspierający U2F, mój wybór padł na Security Key wyprodukowany przez firmę plug-up international oraz Yubikey NEO od Yubico, chciałem porównać urządzenie z puli tych tańszych (do 10 EUR) oraz takich trochę droższych(do 70EUR). Skoro FIDO twierdzi, że najtańsze mają być równie skuteczne to czeka nas mały test J. Pierwszy z kluczy produkowany jest przez francuzów. Drugi, to firma Szwedzko-Amerykańska, która do nas wysyła swoje produkty z UK. Ale nie obyło się bez problemów, już na etapie zakupów. Żaden z kluczy nie jest możliwy do zamówienia z Amazon.com z wysyłką do naszego kraju, ale zawsze jest więcej niż jedno wyjście. Wystarczyło otworzyć Francuską lub Niemiecką wersję Amazona i tam zamówić.

Oba klucze przyszły w odstępie kilku dni, po rozpakowaniu i złożeniu tego pierwszego,

klucze-1

Po otwarciu przesyłki z Security Key martwiłem się, że uszkodzę go podczas wkładania do portu. W instrukcji jednak okazało się, iż cała elektronika to tylko chip reszta to plastik, który możemy przerobić, jak tylko chcemy, pociąć nawiercić, cokolwiek.

Z Yubikey Neo już tak łatwo nie jest, ale też klucz od początku sprawia wrażenie solidnie zrobionego. Ta blaszka w plastiku jest to właśnie fizyczny mechanizm uwierzytelnienia, który wymaga naciśnięcia w celu potwierdzenia, że znajdujemy się obok i chcemy się zalogować.

Okej, jak z nich korzystać?

Zacząłem od podpięcia klucza pod Gmaila, wystarczyło wejść w ustawienia konta,

google-panel2

Google, ładnie zaczęło od wydzielenia zakładki pokazującej ile kluczy już podłączyliśmy do konta oraz opisująca czym są klucze, a po wciśnięciu czeka nas prosta procedura dodawania nowego klucza jest bajecznie prosta co demonstruje poniższy GIF

google-u2f-v2

Było trudno? Oczywiście, że nie!

No to pora zalogować się na naszą skrzynkę!

Ale to jeszcze nie koniec, bo firma Yubico opracowała wtyczkę do WordPressa, która pozwala nam na zrobienie dokładnie tego samego na naszej stronie, blogu.

Oficjalna procedura instalacji nie jest najłatwiejsza cóż, jako grupa „Early adpoters” godzimy się na to. Przygotowałem dla was paczkę, która pozwala na wgranie wtyczki na serwer bez tykania się ftp, konsoli itp.(Zastrzegam, że nie jestem twórcą tej wtyczki i nie odpowiadam za wyrządzone szkody). Jeśli wtyczka Ci się nie podoba i nie chce się usunąć przez panel administracyjny, musisz klientem FTP otworzyć katalog „wp-content/plugins/” i wykasować stamtąd katalog wordpress-u2f.

Przekonałeś mnie, zaryzykuję i sprawdzę jak to działa.

Po aktywacji wtyczki przechodzimy do zakładki Ustawienia -> U2F gdzie podajemy adres naszej strony z przedrostkiem https:// lub https:// i nie podając końcowego slasha(ukośnika), jest to bardzo ważne gdyż jest to jeden z parametrów na których opiera się całe uwierzytelnienie.

U2F-Application_ID

Po zapisaniu zmian przechodzimy do naszego profilu

W którym pojawiły się nowe pola od naszej wtyczki.

Tutaj również konfiguracja jest bajecznie prosta i sprowadza się do kilku kliknięć.

U2F-Dodawanie klucza do wordpressa

No to jak, logujemy się?

U2F-Logowanie kluczem do WordPressa

Chętnych do bardziej szczegółowego zapoznania się odsyłam do doskonale wykonanej dokumentacji od FIDO, jak i na strony dla developerów firmy Yubico, ponieważ robią dużo dobrego dla zwiększenia naszego bezpieczeństwa w sieci, i mają naprawdę dużo różnych materiałów jak i technologii, o których któregoś dnia wam napiszę (;