Generator par kluczy RSA

Rozmiar klucza (bity)
Dalej

Para kluczy RSA to dwie matematycznie powiązane liczby: klucz publiczny, który udostępniasz innym, oraz klucz prywatny, który chronisz. Ten generator tworzy oba klucze w standardowym kodowaniu PEM, wykorzystując kryptograficznie bezpieczne źródło losowości. Użyj go, aby uruchomić narzędzie podpisujące JWT, wygenerować certyfikat TLS dla środowiska testowego lub wydać tożsamość SSH bez korzystania z wiersza poleceń.

Jak wygenerować parę kluczy RSA

  1. 1

    Wybierz wielkość klucza

    Wybierz 2048, 3072 lub 4096 bitów. Dłuższe klucze są bardziej bezpieczne, ale wymagają dłuższego czasu na podpisanie i weryfikację.

  2. 2

    Zainicjuj

    Narzędzie generuje nowy moduł oraz prywatny eksponent za pomocą prymitywów WebCrypto.

  3. 3

    Kopiuj lub pobierz

    Pobierz klucz prywatny zapisany w formacie PEM (BEGIN PRIVATE KEY) oraz odpowiadający mu klucz publiczny (BEGIN PUBLIC KEY).

  4. 4

    Przechowuj klucz prywatny w bezpiecznym miejscu.

    Przenieś go do menedżera sekretów lub pęku kluczy; nigdy nie wklejaj go do rozmów, e-maili ani publicznego repozytorium.

Jaki rozmiar klucza powinien być użyty?

Większy rozmiar nie oznacza automatycznie lepszego. Właściwy rozmiar zależy od tego, jak długo klucz ma żyć i ile mocy procesora chcesz przeznaczyć na każdy podpis.

Wskazówki NIST w skrócie

Rozmiar klucza Poziom bezpieczeństwa Typowe zastosowanie Względny koszt podpisu
2048 bitów ~112 bitów Podpisywanie JWT, krótkotrwałe certyfikaty TLS, większość API 1x
3072 bitów ~128 bitów Długotrwałe główne urzędy certyfikacji (CA), zgodność z FIPS > 2030 ~3x
4096 bitów ~140 bitów Główne urzędy o wysokim poziomie zaufania, długoterminowe podpisywanie dokumentów ~7x

Jak pasuje tu PEM

Klucze są opakowane w PKCS#8/SPKI i zakodowane w base64 między znacznikami -----BEGIN----- a -----END-----. To właśnie format wymagany przez wszystkie popularne biblioteki: OpenSSL, crypto w Node.js, cryptography w Pythonie, crypto/rsa w Go oraz KeyFactory w Javie.

Porady operacyjne

  • Rotuj co najmniej raz w roku klucze podpisujące o szerokim zasięgu.
  • Preferuj ECDSA (P-256) lub Ed25519 w nowych systemach; są szybsze, a podpisy znacznie mniejsze.
  • Nigdy nie używaj tej samej pary kluczy w niepowiązanych systemach. Jeśli jeden wycieknie, zagrożone jest wszystko, co od niego zależy.
  • Użyj hasła (passphrase), gdy przechowujesz klucz prywatny na dysku. Standardem jest szyfrowany PEM (BEGIN ENCRYPTED PRIVATE KEY).

Najczęściej zadawane pytania

Tak, w przypadku większości interfejsów API oraz podpisania sesji. NIST i BSI nadal uważają, że algorytm RSA o długości klucza 2048 bitów jest akceptowany przynajmniej do roku 2030, jednak dla zastosowań wymagających dłuższego okresu działania zaleca się algorytm o długości klucza 3072 bitów.

Prywatny klucz PEM działa w połączeniu z ssh-keygen -y -f key.pem, aby wygenerować publiczny klucz ssh-rsa. W codziennym użyciu protokołu SSH zaleca się stosowanie Ed25519 – klucze są mniejsze i szybsze w obliczeniach.

Pierwszy to PKCS#1 (dostępny wyłącznie dla RSA). Drugi to PKCS#8 – obudowa niezależna od algorytmu, którą preferują współczesne biblioteki. Ten narzędzie generuje wyniki w formacie PKCS#8.

Nie jest tak. Generowanie kluczy odbywa się lokalnie za pomocą interfejsu API WebCrypto, a plik PEM jest skompilowany w pamięci przed wyświetleniem na stronie.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach