encyklopedia.run.place

FIPS 186‑2

FIPS 186‑2 – amerykański standard opisujący metodologię i wymagania techniczne dla Cyfrowego Algorytmu Podpisu (ang. Digital Signature Algorithm, DSA) oraz powiązane funkcje skrótu. Został opublikowany przez National Institute of Standards and Technology (NIST) w 1999 roku i stanowił drugą wersję pierwszego standardu FIPS 186. Standard ten był obowiązujący w Stanach Zjednoczonych do momentu jego zastąpienia przez FIPS 186‑3 w 2009 roku.

Historia

Rozwój DSA rozpoczął się w latach 1990–1994, kiedy to NIST rozpoczął prace nad cyfrowymi metodami podpisu zastępującymi algorytm RSA w niektórych zastosowaniach rządowych. Pierwszy wariant standardu, FIPS 186‑1, został opublikowany w 1994 roku. Po kilku latach praktycznych testów i uwag ze strony społeczności kryptograficznej, w 1999 roku wprowadzono zaktualizowaną wersję – FIPS 186‑2, w której doprecyzowano parametry kryptograficzne i wprowadzono dodatkowe wytyczne dotyczące bezpieczeństwa.

Zakres standardu

FIPS 186‑2 definiuje następujące elementy:

  • Parametry algorytmu DSA, w tym zakresy dla liczb pierwszych p i q oraz generatora g.
  • Procedury generowania kluczy prywatnych i publicznych.
  • Opis sposobu tworzenia podpisu cyfrowego (wartoĹ›ci r i s).
  • Wymagania dotyczÄ…ce funkcji skrĂłtu – w wersji 186‑2 dopuszczalne byĹ‚y SHA‑1 oraz SHS‑2 (SHA‑224/256), chociaĹĽ głównym algorytmem zalecanym byĹ‚ SHA‑1.
  • Testy i procedury weryfikacji podpisu.
  • Wytyczne dotyczÄ…ce implementacji w Ĺ›rodowiskach sprzÄ™towych i programowych.

Kluczowe parametry DSA w FIPS 186‑2

Parametr Opis Zakres
p Liczba pierwsza o długości 1024 bitów 1024 bit
q Podprymka p o długości 160 bitów 160 bit
g Generator podgrupy, wyliczany jako g = h^{(p‑1)/q} mod p przy odpowiednim h 0 < g < p
x Klucz prywatny 0 < x < q
y Klucz publiczny (y = g^x mod p) 0 < y < p

Procedura podpisu

  1. Obliczenie skrótu wiadomości H(m) przy użyciu SHA‑1 lub innego dopuszczonego algorytmu.
  2. Wylosowanie pery (liczby jednorazowej) k, spełniającej 0 < k < q.
  3. Obliczenie r = (g^k mod p) mod q. Jeśli r = 0, proces wraca do kroku 2.
  4. Obliczenie s = (k^{-1}(H(m) + x·r)) mod q. Jeśli s = 0, proces wraca do kroku 2.
  5. Podpisem jest para (r, s).

Weryfikacja podpisu

  1. Sprawdzenie, czy 0 < r < q oraz 0 < s < q.
  2. Obliczenie skrĂłtu H(m).
  3. Obliczenie w = s^{-1} mod q.
  4. Obliczenie u1 = (H(m)·w) mod q i u2 = (r·w) mod q.
  5. Obliczenie v = ((g^{u1}·y^{u2}) mod p) mod q.
  6. Podpis jest ważny, jeśli v = r.

Bezpieczeństwo i krytyka

Po opublikowaniu FIPS 186‑2 pojawiły się główne uwagi:

  • UĹĽycie jedynie 1024‑bitowego moduĹ‚u p i 160‑bitowego q uznano z czasem za niewystarczajÄ…ce w kontekĹ›cie postÄ™pujÄ…cej mocy obliczeniowej (kryptografii kwantowej).
  • Dependencja od SHA‑1, ktĂłrego kolizje zostaĹ‚y wykryte w 2005 roku i udokumentowane w 2017 roku, co podwaĹĽyĹ‚o integralność podpisĂłw generowanych zgodnie z FIPS 186‑2.
  • Brak wyraĹşnych wytycznych co do bezpiecznego generowania losowego pery k, co w praktyce doprowadziĹ‚o do atakĂłw typu „nonce reuse” (np. w 2010 r. w ramach skandalu o prywatnych kluczach w niektĂłrych implementacjach DSA).

W odpowiedzi na te problemy NIST wprowadził FIPS 186‑3, podnosząc rozmiary parametrów (2048 bit i 256 bit) oraz rekomendując użycie SHA‑2 i później SHA‑3.

Zastosowania

Standard FIPS 186‑2 był szeroko przyjmowany w następujących obszarach:

  • Podpisywanie certyfikatĂłw X.509 w systemach rzÄ…dowych USA.
  • Systemy autoryzacji w Public Key Infrastructure (PKI) opartych na DSA.
  • Implementacje sprzÄ™towe w moduĹ‚ach bezpieczeĹ„stwa (HSM) i kartach inteligentnych.
  • Oprogramowanie kryptograficzne, m.in. biblioteki OpenSSL (do wersji 1.0.x) oraz Microsoft CryptoAPI.

PowiÄ…zane standardy i dokumenty

Warto zapoznać się z następującymi pozycjami, które uzupełniają lub rozszerzają temat FIPS 186‑2:

Przyszłość

Choć FIPS 186‑2 nie jest już rekomendowany, jego struktura i podejście do podpisów cyfrowych pozostają istotnym elementem historii kryptografii. Dziś większość nowych systemów przechodzi na algorytmy o większej odporności, takie jak ECDSA lub RSA‑PSS, jednak wiedza o FIPS 186‑2 jest niezbędna przy analizie starszych systemów oraz przy archiwizacji i weryfikacji starszych dokumentów podpisanych przy użyciu DSA.

Bibliografia

  1. NIST. Digital Signature Standard (DSS). FIPS 186‑2, 1999.
  2. J. Menezes, P. van Oorschot, S. Vanstone. Handbook of Applied Cryptography. CRC Press, 1996.
  3. R. Krawczyk, M. Bellare, D. Wagner. HMAC: Keyed-Hashing for Message Authentication. RFC 2104, 1997.
  4. U.S. Government. Federal Information Processing Standards (FIPS). FIPS 186‑3, 2009.

Artykuł powstał na podstawie dostępnych źródeł publicznych oraz dokumentacji NIST. Dla pełnego zrozumienia stosowanych algorytmów zaleca się lekturę powyższych norm oraz ich aktualizacji.