Digital Signature Algorithm

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Digitální podpisový algoritmus (DSA) je kryptografický algoritmus, který se používá ke kontrole authenticity a integrity digitálních dokumentů a zpráv. DSA je založeno na matematické problému zvaném "diskrétní logaritmus". Tento algoritmus byl vyvinut v roce 1991 a byl původně určen pro použití v kombinaci s digitálním certifikátem, který umožňuje ověření identity vydavatele digitálního podpisu. DSA se stalo jedním z nejvíce používaných algoritmů pro digitální podpisy, zejména v amerických státních organizacích. V článku jsou popsány základní principy DSA, včetně výpočtu a ověřování digitálního podpisu. Taktéž se zde diskutuje o bezpečnosti algoritmu a jeho aktuálním stavu v kryptografii.

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. a nakonec v roce 2013 jako FIPS 186-4.

DSA je patentováno pod číslem 5231668 a připsáno Davidovi W. +more 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ů. Německý matematik Claus P. Schnorr v té době prohlašoval, že jeho patent na Schnorrův podpis pokrývá i DSA.

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

Vytváření klíčů

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. +more * Především se provede výběr kryptografické 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 parametrech L a N, které určují délku klíče. V původní verzi DSS byla volba L omezena na násobky 64 v rozsahu 512 až 1024 včetně. Doporučení Národního institutu standardů a technologií číslo 800-57 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ého N. Federální standard pro práci s informacemi číslo 186-3 doporučuje dvojice L a N (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 vybere N-bitové prvočíslo q. Délka N musí být alespoň taková, jako délka výstupu použité hašovací funkce. * Dále se vybere L-bitové prvočíslo p takové, že p-1 je násobek q. * Nakonec se vybere g jako takové číslo, jehož multiplikativní řád modulo p je právě q. Toho lze dosáhnout dosazováním do vzorce g=h(p-1)/q mod p pro náhodná h (kde 1< h < p-1), dokud výsledek není různý od jedné. Většina náhodných voleb h 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íčů. +more * Nejdříve se náhodně vybere soukromý klíč x v rozsahu 0<x<q. * Pak se spočítá veřejný klíč y - y=gx mod p.

Podepisování

Při označení hašovací funkce písmenem H a zprávy písmenem z probíhá podepisování takto: * pro danou zprávu se vybere náhodná hodnota k v rozsahu 0<k<q * spočítá se r=(gk mod p) mod q * spočítá se s=(k−1(H(z)+xr)) mod q * v nepříliš pravděpodobném případě, že je r=0 nebo s=0 se výpočet opakuje od začátku * jinak je podpisem dvojice (r,s)

Ověřování podpisu

pokud neplatí 0−1 mod q * dále se spočítá u1 = (H(z)*w) mod q * dále se spočítá u2 = (r*w) mod q * nakonec se spočítá v = ((gu1*yu2) mod p) mod q * Podpis platí, pokud platí v = r

Správnost algoritmu

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

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

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

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

A protože g má řád q, platí také

: \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=(g^k \mod p) \mod q = (g^{u1}y^{u2} \mod p) \mod q = v.

Užití

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

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top