Przejdź do zawartości

Digital Signature Algorithm

Z Wikipedii, wolnej encyklopedii
To jest najnowsza wersja artykułu Digital Signature Algorithm edytowana 13:43, 10 lip 2025 przez Hythonia (dyskusja | edycje).
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

Digital Signature Algorithm (DSA) – algorytm kryptografii asymetrycznej zaproponowany w 1991 przez amerykański instytut NIST do wykorzystania w ramach DSS, standardu dla podpisów cyfrowych. Jego bezpieczeństwo opiera się na trudności znalezienia logarytmu dyskretnego w ciele skończonym. NIST opatentował DSA w 1993, umożliwił jednak korzystanie z algorytmu za darmo na całym świecie[1].

Opublikowana przez NIST w 2023 norma FIPS 186-5 wycofała użycie DSA w podpisach cyfrowych, zalecając w zamian korzystanie z nowszych algorytmów, takich jak ECDSA (opierający się na kryptografii krzywych eliptycznych) lub EdDSA (wykorzystujący krzywe Edwardsa)[2].

Opis algorytmu

[edytuj | edytuj kod]

Dla systemu wybierana jest pewna funkcja skrótu ; norma FIPS 180-4 zaleca korzystanie z SHA-1 lub SHA-2[3].

Tworzenie kluczy

[edytuj | edytuj kod]

Klucze tworzone są w następujący sposób:[4]

  • Wybierana jest liczba pierwsza , taka że .
  • Wybierana jest liczba pierwsza , taka że i że liczba podzielna jest przez .
  • Obliczany jest parametr , gdzie jest losową liczbą spełniającą warunek .
  • Wybierany jest klucz prywatny będący losową liczbą całkowitą spełniającą warunek .
  • Obliczany jest klucz publiczny .

Norma FIPS 186-4 przewiduje dla liczb pary wartości: , , i [4].

Podpis

[edytuj | edytuj kod]

Podpis składa się z pary liczb obliczanych w następujący sposób:[4]

  • Dla podpisywanej wiadomości wybierana jest losowa liczba całkowita spełniająca .
  • Obliczana jest liczba .
  • Wyznaczane jest , czyli co najwyżej najbardziej znaczących bitów skrótu wiadomości .
  • Obliczana jest liczba .

Jeżeli lub , liczby te powinny zostać obliczone ponownie obierając inną wartość , jest to jednak skrajnie rzadki przypadek.

Weryfikacja podpisu

[edytuj | edytuj kod]

Niech będą otrzymanymi przez odbiorcę wartościami . Prawidłowość podpisu można zweryfikować następująco:[4]

  • Obliczane jest .
  • Wyznaczane jest , czyli co najwyżej najbardziej znaczących bitów .
  • Wyznaczane są oraz .
  • Obliczane jest .
  • Jeżeli , to podpis jest prawidłowy.

Jeżeli , to znaczy, że otrzymana wiadomość lub podpis zostały zmodyfikowane, nastąpił błąd w implementacji algorytmu po stronie podpisującego albo doszło do próby podrobienia podpisu przez osobę nieznającą klucza prywatnego domniemanego nadawcy wiadomości.

Bezpieczeństwo

[edytuj | edytuj kod]

Wybór zmiennej dla wiadomości jest krytyczny z punktu widzenia bezpieczeństwa implementacji algorytmu, ponieważ nawet niewielkie odchylenia w procesie wyboru mogą zostać wykorzystane w atakach kleptograficznych. Dokument RFC 6979 określa deterministyczną metodę wyboru zmiennej wykorzystując skrót wiadomości oraz klucz prywatny [5].

DSA umożliwia przesyłanie informacji podprogowej. Jeżeli zamiast liczby losowej w podpisie wiadomości wykorzystana zostanie wiadomość podprogowa, a odbiorcy udostępniony zostanie klucz prywatny nadawcy , odbiorca będzie w stanie odczytać wiadomość podprogową. Publiczna weryfikacja podpisu nie umożliwi w tym przypadku odczytania tej informacji[6].

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. Reported Statement from NIST regarding use of DSA. IETF Datatracker, 1993-07-23. [dostęp 2025-07-10]. (ang.).
  2. FIPS PUB 186-5: Digital Signature Standard (DSS), National Institute of Standards and Technology, 3 lutego 2023, s. 16 [dostęp 2025-07-09] (ang.).
  3. FIPS PUB 180-4: Secure Hash Standard (SHS), National Institute of Standards and Technology, sierpień 2015, s. 10 [dostęp 2025-07-09] (ang.).
  4. a b c d FIPS PUB 186-4: Digital Signature Standard (DSS), National Institute of Standards and Technology, 19 lipca 2013, s. 15-21, 41-42 [dostęp 2025-07-09] (ang.).
  5. T. Pornin, Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA), RFC 6979, IETF, sierpień 2013, DOI10.17487/RFC6979, ISSN 2070-1721, OCLC 943595667 (ang.).
  6. Brunon Hołyst, Jacek Pomykała. Kryminalistyczne metody ujawnialności przekazów kryptograficznych. „Prokuratura i Prawo”. 5, s. 15, 2008. (pol.).