Yubikey - ciekawy gadżet do uwierzytelniania

Kluczyk o którym mowa nawet nie do końca wygląda jak urządzenie USB, bo jest to płaski, czarny kawałek plastiku z czterema złoconymi stykami i guziczkiem. Ale wtyka się to do portu USB, klucz jest po prostu pozbawiony typowego dla wtyczek USB ochronnego kołnierza z blachy.

Kluczyk o którym mowa nawet nie do końca wygląda jak urządzenie USB, bo jest to płaski, czarny kawałek plastiku z czterema złoconymi stykami i guziczkiem. Ale wtyka się to do portu USB, klucz jest po prostu pozbawiony typowego dla wtyczek USB ochronnego kołnierza z blachy.

Koncepcja jest ciekawa o tyle, że Yubikey nie wymaga żadnych dodatkowych sterowników ani aplikacji. Jest bowiem widziany przez system jako zwykły HID czyli klawiatura USB (Human Interface Device). Po wciśnięciu guziczka Yubikey generuje długi ciąg liter (np. "cccccccctkclrukcutbzcuiykdlmrhtcehfjwegurgjj"). Jako że dla systemu jest to "klawiatura", więc ciąg trafia wprost np. do okna samodzielnej aplikacji, pola w formularzu aplikacji webowej czy wręcz pytania o hasło wyświetlonego na poziomie BIOS czy aplikacji szyfrującej dysk takiej jak TrueCrypt. A dlaczegóżby nie? Jeśli tylko BIOS widzi klawiatury USB to efekt jest identyczny, jakby wpisano hasło z klawiatury ręcznie.

Yubikey może działać w dwóch trybach, przełączanym za pomocą dodatkowej aplikacji. Tryb pełnej funkcjonalności to generator haseł jednorazowych zmieniających się z upływem czasu i za każdym wciśnięciem guzika wyrzucany jest nowy ciąg znaków. Hasło jednorazowe musi być jakoś weryfikowane po stronie aplikacji - jest to realizowane za pomocą API opartego o web services. Innymi słowy, każde uwierzytelnienie musi odwołać się do serwera w celu weryfikacji hasła.

Serwer dla kluczy zakupionych przez osoby prywatne jest obsługiwany przez YubiCo. Instytucje mogą uruchomić własny serwer korzystając z dostępnego oprogramowania SDK a następnie importując do serwera klucze prywatne udostępnione na życzenie przez YubiCo. Ewentualnie można przeprogramować kluczyki instalując własne klucze prywatne.

Alternatywnie, Yubikey można przeprogramować tak by za każdym razem wyrzucał długie, statyczne hasło - wtedy można go używać np. z TrueCryptem.

W każdym z trybów Yubikey może stanowić element uwierzytelnienia dwuskładnikowego ("two factor authentication"). Nieco podobnie jak w przypadku tokenów SecurID bez pin-padu wpisuje się wtedy hasło (z głowy) plus hasło jednorazowe z tokenu rozdzielone dwukropkiem.

Pojedynczy kluczyk kosztuje ok. 100 zł włącznie z kosztami przesyłki do Polski (ze Szwecji). Przy większych ilościach cena spada do ok. 10 USD. W praktyce najbardziej użyteczne wydaje się to być w aplikacjach webowych ze względu na łatwość integracji - zainstalowanie odpowiedniego modułu dla Drupala zajęło mi kilka minut. YubiCo udostępnia również darmowy serwer OpenID uwierzytelniany kluczykiem Yubikey.

Szczegółową analizę algorytmu generowania haseł i uwierzytelnienia przez Yubikey można znaleźć tutaj:

http://www.yubico.com/files/YubiKey_Security_Review.pdf