Digital Signature Algorithm (zkráceně DSA, doslovně přeloženo z angličtiny algoritmus digitálního podpisu) je standard americké vlády pro digitální podpis. DSA byl navržen americkou agenturou NSA,[1] přestože původně byl připisován americkému institutu NIST, který jej v srpnu 1991 určil pro použití v Digital Signature Standard (DSS), specifikovaném ve FIPS 186, jenž byl přijat v roce 1993. Malá úprava standardu byla vydána v roce 1996 jako FIPS 186-1, standard byl dále rozšířen v roce 2000 jako FIPS 186-2, v roce 2009 jako FIPS 186-3[2] a nakonec v roce 2013 jako FIPS 186-4.[3] V roce 2024 projekt OpenSSH podporu slabého DSA implicitně vypnul[4] a definitivně bylo DSA odstraněno z kódu v roce 2025.[5]
DSA je patentováno pod číslem 5231668[6] a připsáno Davidovi W. Kravitzovi, bývalému zaměstnanci Národní bezpečnostní agentury Spojených států amerických. Národní institut standardů a technologie tento patent dal celosvětové veřejnosti k volnému užívaní bez poplatků.[7] Německý matematik Claus P. Schnorr v té době prohlašoval, že jeho patent na Schnorrův podpis pokrývá i DSA.[8]
Algoritmus samotný je založen na problému výpočtu diskrétního logaritmu, je podobný algoritmu ElGamal.
Vytváření klíčů má dvě fáze. Ve fázi první se vyberou parametry algoritmu, které mohou být sdíleny více různými uživateli systému.
Parametry (p,q,g) mohou být sdíleny více uživateli a nejsou tajné. Následuje vytvoření samotných klíčů.
Při označení hašovací funkce písmenem H a zprávy písmenem z probíhá podepisování takto:
Ukázat, že správně vytvořený podpis bude jako takový rozeznán, je možné následovně:
Především z g = h(p–1)/q mod p plyne gq ≡ hp-1 ≡ 1 (mod p) podle Malé Fermatovy věty. Protože platí g>1 a q je prvočíslo, musí mít g řád q.
Z výpočtu
učiněného během podepisování plyne
A protože g má řád q, platí také
Dohromady tedy
Digital Signature algorithm je široce využíván, mimo jiné v OpenSSL, v OpenSSH a v GnuPG.
V tomto článku byl použit překlad textu z článku Digital Signature Algorithm na anglické Wikipedii.
{{Cite web}}