DSA

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 12. září 2016; kontroly vyžadují 76 úprav .
DSA, Algoritmus digitálního podpisu
Tvůrce NIST
Vytvořeno 1991
zveřejněno 1998
Velikost klíče zavřeno: 160-256 bitů, otevřeno: 1024-3072 bitů
Velikost podpisu dvě čísla 160-256 bitů

DSA ( Digital Signature Algorithm - digitální podpisový algoritmus ) - kryptografický  algoritmus využívající soukromý klíč ( z páru klíčů: <public; private>) k vytvoření elektronického podpisu , nikoli však k šifrování (na rozdíl od RSA a schématu ElGamal ). Podpis je vytvořen tajně (soukromý klíč), ale může být veřejně ověřen (veřejný klíč). To znamená, že pouze jeden subjekt může vytvořit podpis zprávy, ale kdokoli může ověřit, že je správný. Algoritmus je založen na výpočetní složitosti logaritmů v konečných polích .

Algoritmus byl navržen National Institute of Standards and Technology ( USA ) v srpnu 1991 a je patentován [1] (autor patentu - David W. Kravitz), NIST tento patent zpřístupnil pro použití bez licenčních poplatků . DSA je součástí DSS ( Digital  Signature Standard), poprvé zveřejněného 15. prosince 1998 (dokument FIPS-186 [2] ( Federal Information Processing Standards ) . Standard byl několikrát aktualizován [3] [4] , nejnovější verze je FIPS-186-4 [5] . (Červenec 2013).  

Popis algoritmu

DSA obsahuje dva algoritmy (S, V): pro vytvoření podpisu zprávy (S) a pro jeho ověření (V).

Oba algoritmy nejprve vypočítají hash zprávy pomocí kryptografické hashovací funkce . Algoritmus S používá k vytvoření podpisu hash a tajný klíč, algoritmus V používá k ověření podpisu hash zprávy, podpis a veřejný klíč.

Je třeba zdůraznit, že ve skutečnosti není podepsána zpráva (libovolně dlouhé), ale její hash (160 - 256 bitů), kolize jsou proto nevyhnutelné a jeden podpis obecně platí pro několik zpráv se stejným hashem. . Proto je výběr dostatečně „dobré“ hashovací funkce velmi důležitý pro celý systém jako celek. První verze standardu používala hashovací funkci SHA-1 [6] [2] (  Secure Hash Algorithm - secure hash algorithm) , v nejnovější verzi můžete použít i libovolný algoritmus rodiny SHA-2 [6] [5 ] . V srpnu 2015 byl publikován FIPS-202 [7] popisující novou hashovací funkci SHA-3 . Dnes ale není součástí standardu DSS [5] .

Systém vyžaduje korespondenci mezi skutečnými údaji o autorovi (může to být jednotlivec nebo organizace) a veřejnými klíči a také všechny potřebné parametry schématu digitálního podpisu (hashovací funkce, prvočísla ). Jako takový základ může sloužit například certifikační autorita .

Možnosti schématu digitálního podpisu

Chcete-li vytvořit systém digitálního podpisu, musíte provést následující kroky:

  1. Volba kryptografické hašovací funkce H(x).
  2. Výběr prvočísla q , jehož rozměr N v bitech je stejný jako rozměr v bitech hash hodnot H(x).
  3. Volba prvočísla p takové, že (p-1) je dělitelné q . Bitová délka p je označena L .
  4. Volba čísla g ( ) takové, že jeho multiplikativní řád modulo p se rovná q . K jeho výpočtu můžete použít vzorec , kde h  je nějaké libovolné číslo takové, že . Ve většině případů hodnota h = 2 tento požadavek splňuje. [5]

Jak bylo zmíněno výše, primárním parametrem schématu digitálního podpisu je kryptografická hašovací funkce používaná k převodu textu zprávy na číslo , pro které je podpis vypočítán. Důležitou charakteristikou této funkce je bitová délka výstupní sekvence, níže označená N . V první verzi standardu DSS je doporučena funkce SHA-1 [2] a podle toho je bitová délka podepsaného čísla 160 bitů. Nyní SHA-1 již není dostatečně bezpečný [8] [9] . Norma specifikuje následující možné dvojice hodnot pro čísla L a N :

  1. L=1024, N=160
  2. L=2048, N=224
  3. L=2048, N=256
  4. L=3072, N=256

Podle tohoto standardu jsou doporučeny hašovací funkce rodiny SHA-2 . Vládní organizace USA musí použít jednu z prvních tří možností, CA musí použít pár, který je stejný nebo větší než pár používaný předplatiteli [5] . Návrhář systému si může vybrat jakoukoli platnou hashovací funkci. Další pozornost proto nebude zaměřena na použití konkrétní hashovací funkce.

Síla kryptosystému na bázi DSA nepřesahuje sílu použité hašovací funkce a sílu páru (L,N), jehož síla není větší než síla každého z čísel samostatně. Je také důležité zvážit, jak dlouho musí systém zůstat bezpečný. V současné době se pro systémy, které musí být perzistentní do roku 2010 ( 2030 ), doporučuje délka 2048 (3072) bitů. [5] [10]

Veřejné a soukromé klíče

  1. Tajný klíč je číslo
  2. Veřejný klíč se vypočítá pomocí vzorce

Veřejnými parametry jsou čísla (p, q, g, y) . Existuje pouze jeden soukromý parametr – číslo x . V tomto případě mohou být čísla (p, q, g) společná pro skupinu uživatelů a čísla x a y jsou soukromé a veřejné klíče konkrétního uživatele. Při podepisování zprávy se používají tajná čísla x a k a číslo k musí být zvoleno náhodně (v praxi pseudonáhodně) při výpočtu podpisu každé další zprávy.

Protože (p, q, g) může být použito pro více uživatelů, v praxi jsou uživatelé často rozděleni podle určitých kritérií do skupin se stejným (p, q, g) . Proto se tyto parametry nazývají parametry domény. [5]

Podpis zprávy

Podpis zprávy se provádí podle následujícího algoritmu [5] :

  1. Výběr náhodného čísla
  2. výpočet
  3. Volba jiného k if
  4. výpočet
  5. Volba jiného k if
  6. Podpis je pár celkové délky

Výpočetně složité operace jsou umocňování modulo (výpočet ), pro které existují rychlé algoritmy , výpočet hash , kde složitost závisí na zvoleném hashovacím algoritmu a velikosti vstupní zprávy a nalezení inverzního prvku pomocí např. rozšířeného euklidovského algoritmus nebo Fermatův malý teorém ve formě .

Ověření podpisu

Ověření podpisu se provádí podle algoritmu [5] :

1 Výpočet 2 Výpočet 3 Výpočet 4 Výpočet 5 Podpis je správný, pokud

Při zaškrtnutí jsou výpočetně složité operace dvě umocnění , výpočet hash a nalezení inverzního prvku .

Správnost schématu

Toto schéma digitálního podpisu je správné do té míry, že osoba, která si přeje ověřit pravost podpisu, vždy obdrží kladný výsledek v případě pravosti. Pojďme si to ukázat:

Nejprve, jestliže , pak z Fermatovy Malé věty vyplývá, že . Protože g >1 a q je prvočíslo, pak g musí mít multiplikativní řád q modulo p .

Chcete-li podepsat zprávu, vypočítává

Proto

Protože g je řádu q , dostaneme

Nakonec z toho vyplývá správnost schématu DSA

[5]

Příklad práce

Uveďme příklad, jak funguje algoritmus pro malá čísla. Nechte hash hodnotu naší zprávy .

Generování parametrů

  1. hash length , takže si můžete vybrat
  2. vybrat , protože
  3. Vybrat

Vytváření klíčů

  1. vyberte jako tajný klíč
  2. pak veřejný klíč

Podpis zprávy

  1. Vybrat
  2. pak
  3. , jdi dál
  4. , kde se počítá s tím
  5. , jdi dál
  6. podpis je dvojice čísel

Ověření podpisu

  1. přijato, což znamená, že podpis je správný.

Analogy

Algoritmus DSA je založen na obtížnosti výpočtu diskrétních logaritmů a je modifikací klasického schématu ElGamal [11] , kde je přidán hash zprávy a všechny logaritmy jsou počítány pomocí , což umožňuje, aby byl podpis kratší než u analogů. [12] . Na základě schématu ElGamal byly postaveny i další algoritmy, například ruský GOST 34.10-94 , který je nyní považován za zastaralý. Byla nahrazena normou GOST R 34.10-2012 [13] , která používá skupinu bodů eliptické křivky .

Taková úprava, tzn. přechod od multiplikativní skupiny modulo prvočíslo ke skupině bodů eliptické křivky existuje také pro DSA - ECDSA [14] (  Eliptic Curve Digital Signature Algorithm - algoritmus digitálního podpisu na eliptických křivkách) . Používá se například v kryptoměně bitcoin k potvrzování transakcí. Tento překlad umožňuje zmenšit velikost klíčů bez obětování bezpečnosti – v bitcoinovém systému je velikost soukromého klíče 256 bitů a odpovídajícího veřejného klíče 512 bitů.

Další běžný algoritmus veřejného klíče (používaný pro šifrování i digitální podpis), RSA (pojmenovaný podle autorů: RivestShamir , Adleman ), je založen na obtížnosti faktorizace velkých čísel.

Kryptografická síla

Jakýkoli útok na algoritmus lze popsat následovně: útočník obdrží všechny parametry veřejného podpisu a určitou sadu párů (zpráva, podpis) a pokusí se pomocí této sady vytvořit platný podpis pro novou zprávu, která není v sadě zastoupena. .

Tyto útoky lze podmíněně rozdělit do dvou skupin – za prvé se útočník může pokusit získat tajný klíč a poté okamžitě získá příležitost podepsat libovolnou zprávu a za druhé se může pokusit vytvořit platný podpis pro novou zprávu bez přímo obnovit tajný klíč.

Předvídatelnost náhodného parametru

Rovnoměrné rozložení náhodného parametru je velmi důležité pro bezpečnost systému. Pokud je známo několik po sobě jdoucích parametrových bitů pro sérii podpisů, pak může být tajný klíč s vysokou pravděpodobností obnoven. [patnáct]

Opakování parametru pro dvě zprávy vede k jednoduchému hacknutí systému. To se může stát při použití špatného generátoru pseudonáhodných čísel . Tato chyba zabezpečení v systému PlayStation 3 umožňovala podepisování jakýchkoli programů jménem společnosti Sony . V některých implementacích bitcoinového systému pro Android by útočník mohl získat přístup k peněžence. [16] [17] Oba příklady využívaly systém ECDSA [14] .

Pokud byl stejný parametr použit pro dvě zprávy , jejich podpisy budou mít stejné , ale odlišné , říkejme jim .

Z výrazu pro můžeme vyjádřit celkem :

.

A srovnejte společné pro různé zprávy:

Odtud je snadné vyjádřit tajný klíč :

Existenciální padělek

Některé algoritmy digitálního podpisu mohou být napadeny existujícím padělkem (Existenční padělek) . Spočívá v tom, že pro podpis (ať už vůbec náhodný nebo vytvořený podle nějakého pravidla) je možné vytvořit korektní zprávu (která však většinou nedává smysl) pouze pomocí veřejných parametrů.

U schématu DSA je podpis v každém případě platný pro zprávu s hashem .

To je jeden z důvodů hashování vstupní zprávy. Pokud je hašovací funkce zvolena správně, je algoritmus DSA před tímto útokem chráněn, protože inverze kryptografické hašovací funkce (tj. pro daný nález takový, že ) je výpočetně náročná. [osmnáct]

Obnova klíče

podmínku správnosti podpisu lze přepsat do jiné podoby:

tato rovnice je ekvivalentní (protože multiplikativní řád g   modulo p  se rovná  q)

takže můžeme předpokládat, že pro obnovení klíče útočník potřebuje vyřešit systém rovnic formuláře

ale v tomto systému je neznámá a to je vše , což znamená, že počet neznámých je o jednu větší než rovnic a pro všechny existují ty , které systém splňují. Protože q je velké prvočíslo, bude pro obnovu vyžadován exponenciální počet párů (zpráva, podpis). [jeden]

Padělek podpisu

Můžete se pokusit zfalšovat podpis bez znalosti tajného klíče, to znamená pokusit se vyřešit rovnici

s ohledem na a . Pro každý pevný je rovnice ekvivalentní výpočtu diskrétního logaritmu. [jeden]

Systém ověřování implementace algoritmu

Licenční podmínky vám umožňují implementovat algoritmus v softwaru a hardwaru. NIST vytvořil DSAVS [19] ( Eng.  The Digital Signature Algorithm Validation System - systém pro kontrolu algoritmu digitálního podpisu ). DSAVS se skládá z několika modulů pro testování shody, které testují každou komponentu systému nezávisle na ostatních. Testované implementační komponenty:

  1. Generování parametrů domény
  2. Kontrola nastavení domény
  3. Generování páru veřejného a soukromého klíče
  4. Vytvořte podpis
  5. Ověření podpisu

Pro otestování implementace musí vývojář odeslat žádost o testování její implementace do laboratoře CMT ( Cryptographic Module Testing Laboratory ) .  [5]

Generování prvočísel

Algoritmus DSA vyžaduje dvě prvočísla ( a ), takže je potřeba generátor prvočísel nebo pseudo -prvočísel .

Ke generování prvočísel se používá Shaw-Taylorův algoritmus [20] .

Pseudoprimy se generují pomocí hashovací funkce a k testování primality se používá Miller-Rabinův pravděpodobnostní test . Lze k ní přidat jediný test Lukeovy primality . [5]

Požadovaný počet iterací závisí na délce použitých čísel a na ověřovacím algoritmu [5] :

možnosti pouze M-R test M-R test + Luke test
p: 1024 bitů

q: 160 bitů

pravděpodobnost chyby

40 p: 3

q:19

p: 2048 bitů

q: 224 bitů

pravděpodobnost chyby

56 p: 3

q:24

p: 2048 bitů

q: 256 bitů

pravděpodobnost chyby

56 p: 3

q:27

p: 3072 bitů

q: 256 bitů

pravděpodobnost chyby

64 p: 2

q:27

Generování náhodných čísel

Algoritmus také vyžaduje generátor náhodných nebo pseudonáhodných čísel. Tento generátor je potřebný ke generování soukromého uživatelského klíče x a také ke generování tajného náhodného parametru .

Norma nabízí různé způsoby generování pseudonáhodných čísel pomocí blokových šifer nebo hashovacích funkcí. [5] [21]

Poznámky

  1. 123 Patent US 5231668 A .
  2. 123 FIPS 186-1 . _
  3. FIPS 186-2 .
  4. FIPS 186-3 .
  5. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 FIPS 186-4 .
  6. 12 FIPS 180-4 .
  7. FIPS 202 .
  8. Hledání kolizí v plném SHA-1 .
  9. Kolize volného startu pro plné SHA-1 .
  10. Zvláštní publikace NIST 800-57 .
  11. Elgamal, 1985 .
  12. C. P. Schnorr. Efektivní identifikace a podpisy pro čipové karty  //  Pokroky v kryptologii - CRYPTO' 89 Sborník / Gilles Brassard. — New York, NY: Springer, 1990. — S. 239–252 . - ISBN 978-0-387-34805-6 . - doi : 10.1007/0-387-34805-0_22 . Archivováno z originálu 12. dubna 2022.
  13. GOST R 34.11-2012
  14. 1 2 Algoritmus digitálního podpisu eliptické křivky (ECDSA) .
  15. Nebezpečnost algoritmu digitálního podpisu s částečně známými nonces .
  16. ECDSA – selhání aplikace a implementace .
  17. Kryptografie eliptické křivky v praxi .
  18. Bezpečnostní argumenty pro digitální podpisy a slepé podpisy .
  19. Systém ověřování digitálního podpisu .
  20. Generování silných prvočísel .
  21. Generování náhodných čísel .

Literatura

Normy a patenty

Články