Tokeny Kryptograficzne

Tokeny kryptograficzne są urządzeniami, które umożliwiają zdalne uwierzytelnienie użytkownika, przy użyciu jedynie sprzętów elektronicznych lub programów komputerowych. Są zwykle używane jako dodatkowe sposoby autoryzacji, zwykle razem z normalnymi hasłami.

Tokeny mogą być zarówno urządzeniami elektronicznymi jak i programami działającymi na komputerach lub urządzeniach mobilnych. W zależności od implementacji, tokeny kryptograficzne są również nazywane tokenami uwierzytelniającymi, tokenami sprzętowymi lub programowymi, ewentualnie tokenami USB.

Niezależnie od typu, wszystkie tokeny kryptograficzne służą realizowaniu jednego zadania: dostarczania kodu uwierzytelniającego użytkownika, który umożliwi im dostęp do jakiejś usługi (na przykład, do konta bankowego).

Innym przykładem typowego zastosowania tokenów są tak zwane hardware dongles. Są one wymagane przez niektóre aplikacje, w celu udowodnienia posiadania właściwych licencji. Podczas uruchamiania aplikacji, odpytuje ona token podłączony do portu USB komputera i sprawdza kod autoryzacyjny.

Zazwyczaj token kryptograficzny wymaga podania hasła, które umożliwia odczytanie wewnętrznego kodu autoryzacyjnego. Hasło przyjmuje zwykle formę krótkiego numeru pin. Czasami wymagane są bardziej złożone sposoby uwierzytelnienia użytkownika, które wykorzystują na przykład czytniki linii papilarnych.

Sposób dostarczania kodu autoryzacyjnego może również różnić dla różnych tokenów. Najprostszą metodą (i najbardziej popularną) jest wyświetlanie kodu na wyświetlaczu urządzenia, tak aby użytkownik mógł przedstawić go na żądanie we właściwym momencie. Innymi metody dostarczania tokenów obejmują wykorzystanie technologii bezprzewodowych NFC lub bluetooth do przesyłania kodu, ewentualnie wymagają innego typu połączenia, na przykład do portu USB lub do czytnika smart card.

Tokeny wykorzystują różne metody do generowania kodów autoryzacyjnych.

Tokeny ze statycznymi hasłami

Tokeny ze statycznymi hasłami są najprostszą odmianą tokenów kryptograficznych. Sekretny kod jest przechowywany wewnątrz tokena i jest wysyłany bezpośrednio użytkownikowi, kiedy on tego zażąda.

Jest dość oczywiste, że takie tokeny nie zapewniają satysfakcjonującego bezpieczeństwa.

Tokeny synchroniczne

Tokeny synchroniczne generują hasło na podstawie aktualnego czasu. Posiadają one wewnętrzny zegar, który musi być zsynchronizowany z podobnym zegarem, działającym po stronie serwera uwierzytelniającego. Hasła generowane przez tokeny synchroniczne zmieniają się cykliczne, na przykład co minutę.

Tokeny synchroniczne mogą, wraz z upływem czasu, rozsynchronizować się z odpowiadającymi im serwerami. W takim przypadku, hasła generowane przez nie przestaną być akceptowane przez chronione przez nie usługi. Konieczna jest ponowna synchronizacja obu współpracujących zegarów.

Tokeny asynchroniczne

Hasła generowane przez tokeny asynchroniczne zmieniają się za każdym razem, kiedy są tworzone. Algorytmy zwykle bazują na funkcjach haszujących, które generują ciągi jednorazowych haseł, bazując na współdzielonym sekretnym kluczu szyfrującym.

Każde wygenerowane hasło musi być nieprzewidywalne dla obserwatora, nawet jeśli wszystkie wcześniejsze hasła są mu znane. Jednym z popularnych algorytmów wykorzystywanych w tokenach asynchronicznych jest algorytm OATH.

Tokeny z kluczami publicznym i prywatnym

Jeśli token zawiera klucz prywatny, serwer może uwierzytelnić go za pomocą odpowiadającego mu klucza publicznego, bez potrzeby przesyłania klucza prywatnego poza sam token.

W celu uwierzytelnienia serwer zwykle przesyła tokenowi pewne dane, zaszyfrowane za pomocą klucza publicznego. Po odszyfrowaniu ich, token odsyła je z powrotem do serwera, umożliwiając mu potwierdzenie wiarygodności posiadacza tokena. W celu przeprowadzenia całej operacji, bezpośrednie połączenie pomiędzy tokenem, a serwerem musi zostać nawiązane.