Movatterモバイル変換


[0]ホーム

URL:


Přeskočit na obsah
WikipedieWikipedie: Otevřená encyklopedie
Hledání

Digital Signature Algorithm

Z Wikipedie, otevřené encyklopedie

Digital Signature Algorithm (zkráceněDSA, doslovně přeloženo zangličtinyalgoritmus digitálního podpisu) je standardamerické vlády prodigitální podpis. DSA byl navržen americkou agenturouNSA,[1] přestože původně byl připisován americkému institutuNIST, který jej v srpnu1991 určil pro použití vDigital Signature Standard (DSS), specifikovaném veFIPS 186, jenž byl přijat v roce 1993. Malá úprava standardu byla vydána v roce1996 jako FIPS 186-1, standard byl dále rozšířen v roce2000 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 projektOpenSSH podporu slabého DSA implicitně vypnul[4] a definitivně bylo DSA odstraněno z kódu v roce 2025.[5]

Charakteristika

[editovat |editovat zdroj]

DSA jepatentováno pod číslem 5231668[6] a připsánoDavidovi W. Kravitzovi, bývalému zaměstnanciNárodní bezpečnostní agenturySpojený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ý matematikClaus P. Schnorr v té době prohlašoval, že jeho patent naSchnorrův podpis pokrývá i DSA.[8]

Algoritmus samotný je založen na problému výpočtudiskrétního logaritmu, je podobný algoritmuElGamal.

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.

  • Především se provede výběrkryptografické hašovací funkce. V původní DSS byla jako hašovací funkce povinněSHA-1, ale v současných verzích je povolena téžSHA-2.
  • Dále se rozhodne o parametrechL aN, které určují délku klíče. V původní verzi DSS byla volbaL omezena na násobky 64 v rozsahu 512 až 1024 včetně. Doporučení Národního institutu standardů a technologií číslo 800-57[9] doporučuje délku 2048 (respektive 3072) pro klíče, u kterých se předpokládá používání po roce 2010 (respektive 2030), při použití adekvátně velkéhoN.Federální standard pro práci s informacemi číslo 186-3[2] doporučuje dvojiceL aN (1024,160), (2048,224), (2048,256) a (3072,256). Znamená to tedy, že ve standardu NIST je původní grupa (například 1024 bitů) omezena na podgrupu (síly 160 bitů).
  • Dále se vybereN-bitovéprvočísloq. DélkaN musí být alespoň taková, jako délka výstupu použité hašovací funkce.
  • Dále se vybereL-bitové prvočíslop takové, žep-1 je násobekq.
  • Nakonec se vybereg jako takové číslo, jehož multiplikativnířádmodulop je právěq. Toho lze dosáhnout dosazováním do vzorceg=h(p-1)/q modp pro náhodnáh (kde 1<h <p-1), dokud výsledek není různý od jedné. Většina náhodných volebh uspěje, nejčastěji se používáh=2.

Parametry (p,q,g) mohou být sdíleny více uživateli a nejsou tajné. Následuje vytvoření samotných klíčů.

  • Nejdříve se náhodně vybere soukromý klíčx v rozsahu 0<x<q.
  • Pak se spočítá veřejný klíčy - y=gx modp.

Podepisování

[editovat |editovat zdroj]

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

  • pro danou zprávu se vybere náhodná hodnotak v rozsahu 0<k<q
  • spočítá ser=(gk modp) modq
  • spočítá ses=(k−1(H(z)+xr)) modq
  • v nepříliš pravděpodobném případě, že jer=0 nebos=0 se výpočet opakuje od začátku
  • jinak je podpisem dvojice (r,s)

Ověřování podpisu

[editovat |editovat zdroj]
  • pokud neplatí 0<r <q a 0<s <q pak je podpis automaticky zamítnut.
  • jinak se spočítáw = (s)−1 modq
  • dále se spočítáu1 = (H(z)*w) modq
  • dále se spočítáu2 = (r*w) modq
  • nakonec se spočítáv = ((gu1*yu2) modp) modq
  • Podpis platí, pokud platív =r

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 zg =h(p–1)/q modp plynegqhp-1 ≡ 1 (mod p) podleMalé Fermatovy věty. Protože platíg>1 aq je prvočíslo, musí mítg řádq.

Z výpočtu

s=k1(H(z)+xr)modq.{\displaystyle s=k^{-1}(H(z)+xr)\mod {q}.}

učiněného během podepisování plyne

kH(z)s1+xrs1H(z)w+xrw(modq).{\displaystyle {\begin{matrix}k&\equiv &H(z)s^{-1}+xrs^{-1}\\&\equiv &H(z)w+xrw{\pmod {q}}.\\\end{matrix}}}

A protožeg má řádq, platí také

gkgH(z)wgxrwgH(z)wyrwgu1yu2(modp).{\displaystyle {\begin{matrix}g^{k}&\equiv &g^{H(z)w}g^{xrw}\\&\equiv &g^{H(z)w}y^{rw}\\&\equiv &g^{u1}y^{u2}{\pmod {p}}.\\\end{matrix}}}

Dohromady tedy

r=(gkmodp)modq=(gu1yu2modp)modq=v.{\displaystyle r=(g^{k}\mod p)\mod q=(g^{u1}y^{u2}\mod p)\mod q=v.}

Užití

[editovat |editovat zdroj]

Digital Signature algorithm je široce využíván, mimo jiné vOpenSSL, vOpenSSH a vGnuPG.

Reference

[editovat |editovat zdroj]

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

  1. NEUMANN, Peter G.The RISKS Digest Volume 14 Issue 59 [online]. 2020-02-29 [cit. 2023-10-03].Dostupné v archivu pořízeném z originálu dne 2020-02-29. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  2. ab(anglicky)FIPS 186-3
  3. (anglicky)FIPS 186-4
  4. OpenSSH announces DSA-removal timeline [LWN.net] [online]. [cit. 2024-01-11].Dostupné online. Je zde použita šablona{{Cite web}} označená jako k „pouze dočasnému použití“.
  5. KRČMÁŘ, Petr. OpenSSH 10.0 končí s podporou podpisů DSA a zavádí postkvantovou výměnu klíčů.Root.cz [online]. 2025-04-09 [cit. 2025-04-10].Dostupné online. 
  6. (anglicky)patent 5231668 na google.com
  7. (anglicky)zpráva v emailové konferenciGnuPG
  8. (anglicky)patent 4995082 na google.com
  9. (anglicky)NIST Special publication 800-57: Recommendation for Key Management
Citováno z „https://cs.wikipedia.org/w/index.php?title=Digital_Signature_Algorithm&oldid=24815598
Kategorie:
Skryté kategorie:

[8]ページ先頭

©2009-2025 Movatter.jp