Digital Signature Algorithm
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
Dla systemu wybierana jest pewna funkcja skrótu ; norma FIPS 180-4 zaleca korzystanie z SHA-1 lub SHA-2[3].
Tworzenie kluczy
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
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
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
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ż
Przypisy
- ↑ Reported Statement from NIST regarding use of DSA. IETF Datatracker, 1993-07-23. [dostęp 2025-07-10]. (ang.).
- ↑ 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.).
- ↑ FIPS PUB 180-4: Secure Hash Standard (SHS), National Institute of Standards and Technology, sierpień 2015, s. 10 [dostęp 2025-07-09] (ang.).
- ↑ 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.).
- ↑ T. Pornin, Deterministic Usage of the Digital Signature Algorithm (DSA) and Elliptic Curve Digital Signature Algorithm (ECDSA), RFC 6979, IETF, sierpień 2013, DOI: 10.17487/RFC6979, ISSN 2070-1721, OCLC 943595667 (ang.).
- ↑ Brunon Hołyst, Jacek Pomykała. Kryminalistyczne metody ujawnialności przekazów kryptograficznych. „Prokuratura i Prawo”. 5, s. 15, 2008. (pol.).
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.