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. Byl navržen americkým institutem NIST v srpnu 1991 pro použití v jejich 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, a standard byl dále rozšířen v roce 2000 jako FIPS 186-2, v roce 2009 jako FIPS 186-3.[1] a nakonec v roce 2013 jako FIPS 186-4.[2]

DSA je patentováno pod číslem 5231668[3] 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ů.[4] Německý matematik Claus P. Schnorr v té době prohlašoval, že jeho patent na Schnorrův podpis pokrývá i DSA.[5]

Algoritmus samotný je založen na problému výpočtu diskrétního logaritmu, je podobný algoritmu ElGamal.

Vytváření klíčů

[editovat | editovat zdroj]

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íčů.

Podepisování

[editovat | editovat zdroj]

Při označení hašovací funkce písmenem H a zprávy písmenem z probíhá podepisování takto:

Ověřování podpisu

[editovat | editovat zdroj]

Správnost algoritmu

[editovat | editovat zdroj]

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 gqhp-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

Užití

[editovat | editovat zdroj]

Digital Signature algorithm je široce využíván, mimo jiné v OpenSSL, v OpenSSH a v GnuPG.

Reference

[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Digital Signature Algorithm na anglické Wikipedii.

  1. a b (anglicky) FIPS 186-3
  2. (anglicky) FIPS 186-4
  3. (anglicky) patent 5231668 na google.com
  4. (anglicky) zpráva v emailové konferenci GnuPG
  5. (anglicky) patent 4995082 na google.com
  6. (anglicky) NIST Special publication 800-57: Recommendation for Key Management