Generator tokenów i kluczy API
Kryptograficznie bezpieczne tokeny przy użyciu Web Crypto API. UUID, hex, tokeny Base64 na okaziciela lub klucze API z prefiksem.
128-bitowy identyfikator RFC 4122 v4, z czego 122 bity są losowe. Domyślny wybór dla kluczy głównych w bazach danych, identyfikatorów żądań i tokenów korelacyjnych.
122 bitów entropii · wygenerowane w Twojej przeglądarce, nigdy nie wysłane na serwer
Dlaczego nie Math.random()?
Math.random() to generator liczb pseudolosowych — jego wyniki są przewidywalne i nieodpowiednie dla tokenów bezpieczeństwa. To narzędzie używa crypto.getRandomValues(), tego samego API, które napędza generowanie kluczy TLS i SSH.
Rodzaje tokenów — wyjaśnienie
UUID v4 to standard dla identyfikatorów baz danych i tokenów korelacyjnych. Ciągi hex sprawdzają się dobrze jako tokeny sesji i nonce. Base64 jest kompaktowy dla tokenów API. Klucze API z prefiksami (np. sk_ lub vlt_) ułatwiają identyfikację i rotację wyciekłych danych uwierzytelniających.
Jak długi powinien być token?
128 bitów entropii to dolna granica dla wszystkiego, co chroni dostęp, i tego właśnie NIST SP 800-63B oczekuje od losowo wygenerowanego sekretu. To 32 znaki hex, 22 znaki Base64 albo jeden UUID v4. Przekraczanie 256 bitów nic nie daje wobec ataku siłowego - kosztuje tylko objętość logów i rozmiar nagłówków. Długość liczy się bardziej niż alfabet: 32-znakowy token hex i 22-znakowy token Base64 są równie trudne do odgadnięcia.
Tokeny na okaziciela, tokeny dostępu i klucze API
Te nazwy opisują sposób użycia poświadczenia, a nie sposób jego wygenerowania. Token na okaziciela daje dostęp już przez samo okazanie go, dlatego nagłówek HTTP Authorization przenosi go dosłownie. Token dostępu to token na okaziciela o krótkim czasie życia, zwykle wydawany przez przepływ OAuth. Klucz API to długowieczny token na okaziciela wydany usłudze, a nie osobie. W momencie generowania wszystkie trzy to to samo: nieprzejrzysty, losowy ciąg o wysokiej entropii. Do dwóch pierwszych użyj hex lub Base64, a trybu klucza API wtedy, gdy chcesz rozpoznawalny prefiks.
Po co prefiks w kluczach API?
GitHub, Stripe, OpenAI i Slack dodają prefiksy do swoich kluczy (ghp_, sk_live_, xoxb_) z jednego powodu: skanery sekretów rozpoznają wtedy wyciekły klucz po samym ciągu, bez żadnego kontekstu. Wypchnij klucz z prefiksem do publicznego repozytorium, a wystawca unieważni go w ciągu kilku minut. Goły 32-znakowy ciąg hex wygląda jak hash commita, więc nic go nie wychwyci. Prefiksy sprawiają też, że środowisko widać na pierwszy rzut oka - to najtańsza obrona przed wklejeniem klucza produkcyjnego do konfiguracji staging.
Najczęstsze pytania
Czy te tokeny są naprawdę losowe?
Tak. Każdy token pochodzi z crypto.getRandomValues(), kryptograficznie bezpiecznego generatora liczb losowych przeglądarki, zasilanego pulą entropii systemu operacyjnego. To ta sama prymitywa, która generuje klucze sesji TLS. Math.random(), którego wiele generatorów online wciąż używa, jest przewidywalnym generatorem pseudolosowym i nigdy nie powinien tworzyć tokenów bezpieczeństwa.
Czy mój token trafia na wasz serwer?
Nie. Generowanie odbywa się w całości w Twojej przeglądarce przy użyciu Web Crypto API. Otwórz zakładkę sieci i wygeneruj token: nie zostanie wysłane żadne żądanie. Nic nie jest logowane, przechowywane ani przesyłane. Jeśli następnie zdecydujesz się udostępnić token, zostanie zaszyfrowany w Twojej przeglądarce, zanim cokolwiek opuści stronę.
Jakiej długości użyć dla klucza API?
128 bitów entropii, czyli dokładnie tyle, ile daje tryb klucza API w tym narzędziu: Twój prefiks plus 32 znaki szesnastkowe. W praktyce nie da się tego odgadnąć i odpowiada to temu, co wydają Stripe, GitHub i AWS. Idź wyżej tylko wtedy, gdy wymaga tego konkretny wymóg zgodności.
Czym różni się UUID v4 od losowego tokenu hex?
UUID v4 to losowy token o stałym kształcie: 36 znaków, cztery myślniki i sześć bitów zarezerwowanych na wersję i wariant, co pozostawia 122 losowe bity. Użyj go, gdy coś innego oczekuje takiego kształtu, np. kolumna uuid w bazie danych. Zwykłego hex lub Base64 użyj wtedy, gdy potrzebujesz po prostu sekretu, a format zależy od Ciebie - jest krótszy przy tej samej sile.
Czy mogę wygenerować kilka tokenów naraz?
Tak. Ustaw liczbę na 5, 10 lub 25, a każdy token zostanie wygenerowany niezależnie. Kopiuj wszystko kopiuje je po jednym w wierszu - to format, który większość skryptów seed, plików .env i menedżerów haseł przyjmuje przy imporcie zbiorczym.
Jak bezpiecznie wysłać token współpracownikowi?
Nie przez Slack, e-mail ani zgłoszenie - te przechowują kopię bezterminowo, więc każdy, kto później uzyska dostęp do kanału, uzyska dostęp do poświadczenia. Użyj opcji Udostępnij bezpiecznie, aby umieścić token za zaszyfrowanym, samodestrukcyjnym linkiem: jest szyfrowany w Twojej przeglądarce, klucz podróżuje we fragmencie adresu URL i nigdy nie trafia na nasz serwer, a sekret jest niszczony po odczytaniu lub po wygaśnięciu.
Chcesz bezpiecznie udostępnić token?
Nie wklejaj tokenów w Slack ani e-mailach. Wyślij je przez zaszyfrowany, samodestrukcyjny link, który może otworzyć tylko odbiorca.