Intro('Digitßlnφ podpisy jsou jednφm z hlavnφch p°φnos∙ asymetrickΘ kryptografie. Jejich funkce byla na strßnkßch tohoto serveru popisovßna ji₧ n∞kolikrßt, nap°φklad <a href=articles.php@ID=171>zde</a>. Z praxe jsou ale znßmy p°φpady, kdy klasickΘ schΘma, kterΘ vφcemΘn∞ kopφruje podpis ruΦnφ, nestaΦφ, a je nutnΘ pou₧φt dalÜφch kryptografick²ch technik. ');
Pro jednoduÜÜφ pochopenφ staΦφ v∞d∞t, ₧e pro digitßlnφ podpisy se pou₧φvß tzv. asymetrickß kryptografie, kterß pracuje s dv∞ma klφΦi û s tajn²m a ve°ejn²m. Ty jsou na sob∞ matematicky zßvislΘ, nicmΘn∞ se jeden z druhΘho nedß ₧ßdn²m zp∙sobem odvodit Φi vypoΦφtat. Tajn² klφΦ peΦliv∞ st°e₧φ jeho majitel, nebo¥ je urΦen k podepisovßnφ dokument∙ a deÜifrovßnφ zprßv. Ve°ejn² je naopak mo₧nΘ libovoln∞ Üφ°it û pomocφ n∞ho vßm n∞kdo zprßvu zaÜifruje nebo vßÜ podpis ov∞°φ.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Jakmile jedou publikujeme elektronick² podpis k n∞jakΘmu dokumentu, dßvßme tφm komukoliv, kdo vlastnφ nßÜ ve°ejn² klφΦ, mo₧nosti si ov∞°it jeho pravost. Nap°φklad vedle nov²ch verzφ program∙ Φi balφk∙ se na internetu Φasto objevujφ soubory s OpenPGP podpisy, kterΘ zaruΦujφ, ₧e software nenφ n∞jak²m zp∙sobem podvrhnut². Specißln∞ u produkt∙, u kter²ch se po₧aduje jakßsi ·rove≥ bezpeΦnosti, jsou digitßlnφ podpisy neocenitelnou pom∙ckou.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
N∞kdy ale m∙₧e b²t kontraproduktivnφ, pokud si podpis m∙₧e ov∞°it skuteΦn∞ ka₧d². P°edstavte si situaci, kdy zam∞stnanec firmy odeÜle d∙kazy o nekal²ch praktikßch spoleΦnosti do tisku. Hodilo by se mu n∞jak dokßzat jejich pravost, ovÜem klasick² elektronick² podpis pou₧φt nem∙₧e - m∙₧e si ho ov∞°it kdokoliv ho dostane do ruky. Okam₧it∞ by ho pak prozradil.
Pro tyto ·Φely bylo vyvinuto n∞kolik protokol∙, kterΘ si kladou za cφl toto vy°eÜit. Jejich p°esnß matematika p°esahuje rßmec tohoto Φlßnku, ovÜem zßkladnφ myÜlenka spoΦφvß v dalÜφ interakci obou stran po obdr₧enφ podpisu. Alice, kterß dokument podepsala, obdr₧φ od Boba nßhodnΘ Φφslo, provede s nφm a se sv²m tajn²m klφΦem n∞kolik operacφ a v²sledek odeÜle Bobovi. Hodnotu, kterou Bob oΦekßvß, m∙₧e Alice spoΦφtat jen v p°φpad∞, ₧e je podpis na ov∞°ovanΘm dokumentu prav².
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Princip nep°enositelnosti tedy je, ₧e Bob, sßm prßv∞ ujiÜt∞n o pravosti podpisu, nem∙₧e tuto skuteΦnost dokßzat nikomu t°etφmu. Jemn∞ji bychom tyto protokoly mohli rozd∞lit na tzv. Undeniable signatures (nepopiratelnΘ podpisy) a Entrusted undeniable signatures (d∙v∞rn∞ nepopiratelnΘ). LiÜφ se ve skuteΦnosti, ₧e v prvnφm z nich nem∙₧e Alice faleÜn∞ odep°φt autorstvφ podpisu. Pokud je donucena (nap°φklad soudem), musφ ho jednoznaΦn∞ potvrdit nebo vyvrßtit. To je v tomto p°φpad∞ ale paradoxn∞ Ükoda - dßvß to n∞jakΘ vyÜÜφ autorit∞ mo₧nost dohledßnφ se pravdy. Druh² typ protokol∙ toto °eÜφ p°es t°etφ d∙v∞ryhodnou stranu a Alice tak mß na v²b∞r, zda dokß₧e platnost svΘho podpisu nebo ho zap°e a nikdo nic nepoznß.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
PokroΦilΘ protokoly umo₧≥ujφ Alici pov∞°it jakoukoliv dalÜφ osobu ("Designated confirmer") potvrzovßnφm pravosti svΘho podpisu, ani₧ jφ dßvß mo₧nost podepisovat jmΘnem Alice cokoliv dalÜφho. V tomto p°φpad∞ tak matematika v druhΘm kole "ov∞°ovßnφ" nepoΦφtß pochopiteln∞ s Alicin²m tajn²m klφΦem.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
JeÜt∞ dßle posouvß celou situaci problΘm tzv. mezipodpis∙ ("proxy signatures"), kdy jeden Φlov∞k m∙₧e dßt oprßvn∞nφ jinΘmu podepisovat jeho jmΘnem bez p°edßnφ tajnΘho klφΦe. Nap°φklad ÜΘf firmy v p°φpad∞ dlouhodobΘ nep°φtomnosti, nemoci apod. m∙₧e pov∞°it svΘho prvnφho nßm∞stka, kter² pak m∙₧e podepsat i takovΘ firemnφ dokumenty, kterΘ vy₧adujφ podpis ÜΘfa. TakovΘto mezipodpisy majφ n∞kolik vlastnostφ. P°edn∞ jsou rozliÜitelnΘ od podpis∙ normßlnφch, dßle vytvo°it platn² mezipodpis m∙₧e jen pov∞°enß osoba, mezi-status jejφho podpisu je nepopirateln² (tj. skuteΦn² ÜΘf∙v vytvo°it podpis nem∙₧e), pouze pov∞°ovatel si m∙₧e z mezipodpis∙ zjistit identitu "mezipodpisovatele" a dalÜφ.
MyÜlenku skupinov²ch podpis∙ poprvΘ nastφnil kryptograf David Chaum. Popisuje takov²to problΘm : " Mßme jistΘ odd∞lenφ firmy, kterΘ sdφlφ jednu tiskßrnu. P°i ka₧dΘm tisku je pot°eba ov∞°it, ₧e osoba, kterß tisk zadala, skuteΦn∞ pat°φ do danΘho odd∞lenφ. Na druhou stranu ale po₧adujeme soukromφ a tak nechceme, aby ostatnφ m∞li p°ehled o tom, co kdo tiskne. OvÜem v p°φpad∞ nadm∞rnΘho pou₧φvßnφ je t°eba identitu zjistit.".
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
ProblΘm je tedy jasn². Jednotlivφ ΦlenovΘ svoje ₧ßdosti podepisujφ jmΘnem skupiny. P°φjemce tak ov∞°φ jejich p°φsluÜnost, ovÜem nedohledß se jejich identity. Vedle toho existuje dalÜφ strana, kterß, v p°φpad∞ podez°enφ na neoprßvn∞nΘ jednßnφ, mß mo₧nost podpis "otev°φt" a na skuteΦnΘho odesφlatele ukßzat.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Jak na to? P°edevÜφm d∙v∞ryhodnß strana, kterß bude v p°φpad∞ podez°enφ "udßvat" nepoctivΘho Φlena skupiny, vygeneruje pro ka₧dΘho z nich seznam n∞kolika (desφtek a vφce) pßr∙ ve°ejn²ch a tajn²ch klφΦ∙, p°iΦem₧ peΦliv∞ uschovß zßznamy o tom, kter² byl p°id∞len komu. Pokud vygeneruje <SPAN Class=CODE>X</SPAN> dvojic pro ka₧dΘho z <SPAN Class=CODE>Y</SPAN> Φlen∙, rozdß celkem <SPAN Class=CODE>X*Y</SPAN> pßr∙. Pak vezme vÜechny seznamy dohromady, p°ehßzφ po°adφ dvojic (vlastnφ pßry budou vedle sebe zachovßny) a v²sledn² seznam dvojic p°edß tomu, kdo bude kontrolovat p°φsluÜnost jedinc∙ ke skupin∞.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Nynφ jeden z Φlen∙ podepφÜe dokument jednφm ze sv²ch (!) tajn²ch klφΦ∙. P°φjemce si vyhledß korespondujφcφ klφΦ ve°ejn² a ov∞°φ pravost. jeliko₧ je jeho seznam (vÜech klφΦ∙) v nßhodnΘm po°adφ, nem∙₧e zjistit p°esnou identitu, vφ jen ₧e ₧adatel pat°φ do oprßvn∞nΘ skupiny. To toti₧ m∙₧e jen d∙v∞ryhodnß strana - jejφ seznam je jeÜt∞ p∙vodn∞ rozd∞len podle jednotliv²ch Φlen∙. A v p°φpad∞ podez°enφ na neoprßvn∞nΘ aktivity prost∞ vyhledß komu tento klφΦ pat°φ.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Obdobn∞ funguje vφce protokol∙ pro skupinovΘ podpisy. Tento mß op∞t nev²hodu v nutnosti t°etφ strany, ta mß navφc jeÜt∞ neomezenou moc - znß tajnΘ klφΦe vÜech ·Φastnφk∙ a tφm pßdem m∙₧e podvrhnout jak²koliv podpis.
Zajφmavou zm∞nu ve standardnφm pojetφ asymetrickΘ kryptografie navrhli kryptografovΘ Pfitzman a Waidner. Jejich cφlem bylo maximßlnφm mo₧n²m zp∙sobem znemo₧nit p°φpadn² brute-force, pokud by ho byl v²poΦetnφ v²kon jednΘ ze stran schopen.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Princip je jednoduch². Jeden ve°ejn² klφΦ bude odpovφdat vφce klφΦ∙m privßtnφm. D∙sledek je z°ejm² û i kdy₧ prost²m zkouÜenφm vÜech mo₧nostφ z ve°ejnΘho klφΦe dopoΦφtßme jeho tajn² prot∞jÜek, tak nßm nikdo nezaruΦφ, ₧e jsme se strefili do toho, kter² nßÜ protivnφk skuteΦn∞ vlastnφ. ╚φm mßme k dispozicφ vφce (podepsan²ch) zprßv, tφm m∙₧eme hledanou mno₧inu zp°es≥ovat a svoje nad∞je na ·sp∞ch zv∞tÜovat, ovÜem matematika se postarß o to, ₧e pravd∞podobnost nßhodnΘ trefy se bude stßle blφ₧it nule.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Na druhou stranu mß tento algoritmus za nßsledek dalÜφ d∙kaz nepopiratelnosti podpisu û ze stejnΘho d∙vodu nem∙₧e Alice sv∙j vlastnφ zap°φt. Pad∞latel toti₧ nemß Üanci Alicin skuteΦn² privßtnφ klφΦ nalΘzt.
Bruce Schneier ve svΘ knize "Applied Cryptography" °φkß : "Jednou ze zßkladnφch vlastnostφ podpis∙ je fakt, ₧e ka₧d² vidφ, co podepisuje. To je v²bornΘ, pokud ovÜem nechceme prav² opak.".
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
SkuteΦn∞, jak zßhy uvidφme, mohou nastat situace, kdy je ne₧ßdoucφ, aby jedinec, kter² dokument podepisuje, v∞d∞l co v n∞m stojφ. Napadajφ m∞ ihned nap°φklad n∞jakΘ notß°skΘ slu₧by.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
N∞kterΘ matematickΘ algoritmy, kterΘ se pou₧φvajφ pro digitßlnφ podpisy, majφ zajφmavΘ vlastnosti. Tak nap°φklad m∙₧eme na otev°enΘm textu M provΘst n∞jakou funkci <SPAN Class=CODE>f(M,k)</SPAN>, kde <SPAN Class=CODE>k</SPAN> je tajn² parametr, nechat k tΘto novΘ hodnot∞ vygenerovat podpis P a nynφ hodnota <SPAN Class=CODE> f<SUP>-1</SUP>(P)</SPAN> p°edstavuje platn² podpis pro <SPAN Class=CODE>M</SPAN>. Funkce <SPAN Class=CODE>f()</SPAN> m∙₧e b²t typicky nßsobenφ (resp. d∞lenφ). Cel² proces tak bude probφhat tak, ₧e text vynßsobφme parametrem k (tzv. "blinding factor"), v²sledek si nechßme podepsat a nynφ ob∞ Φßsti vyd∞lφme k a podpis platφ. Pokud se divφte a myslφte si, ₧e toto nenφ mo₧nΘ tak znova upozor≥uji, ₧e to mo₧nΘ je proto, proto₧e jsme tuto mo₧nost na zaΦßtku odstavce definovali. SkuteΦn∞, n∞kterΘ algoritmy takovΘ vlastnosti majφ ale pravda, samoz°ejm∞ ne pro jakoukoliv <SPAN Class=CODE>f()</SPAN>.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
To jsou tzv. kompletn∞ slepΘ podpisy, kterΘ, jak asi tuÜφte, velkΘ u₧iteΦnΘ hodnoty nenab²vajφ. Daleko zajφmav∞jÜφ je ale situace, kdy pot°ebujeme jednak zakr²t jen Φßst dokumentu, a jednak podpisujφcφ musφ mφt jistotu, ₧e skrytΘ mφsto nab²vß jen n∞kter²ch hodnot. Op∞t ze Schneiera cituji p°φklad : " InformaΦnφ slu₧ba chce vyslat svΘho agenta do cizφ zem∞ a pot°ebuje k tomu souhlas n∞jakΘho velφcφho d∙stojnφka, kter² ovÜem o jmΘnu konkrΘtnφ osoby nesmφ b²t informovßn.". Jak na to? Je to a₧ p°ekvapiv∞ jednoduchΘ. Pou₧ijeme pravd∞podobnost. Nap°φklad na celnici takΘ nekontrolujφ zavazadla ka₧dΘmu cestujφcφmu, ale, °ekn∞me, ka₧dΘmu dvacßtΘmu. Pochytajφ tφm pochopiteln∞ mΘn∞ paÜerßk∙. Pokud jich cht∞jφ zatknout vφc, zv²Üφ Φetnost kontrol. Pokud mΘn∞ tak naopak.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
Obdobn∞ to ud∞lajφ v naÜφ imaginßrnφ zpravodajskΘ slu₧b∞. Ze vÜech agent∙ vyberou °ekn∞me polovinu kandidßt∙, a vytvo°φ pro ka₧dΘho "pov∞°ovacφ" dokument. Tyto se budou liÜit akorßt ve jmΘnu agenta, kter² bude do akce poslßn. VÜechny je zaÜifrujφ r∙zn²mi (tajn²mi) klφΦi (kolik dokument∙ tolik klφΦ∙) a seznam ukß₧φ veliteli. Ten nßhodn∞ vybere jeden a vÜechny ostatnφ na°φdφ deÜifrovat. Zbyl² podepφÜe a je to.
</DIV></FONT></b></i>
<FONT Size=2><DIV Align=Justify Class=Paragraph>
PoΦet vybran²ch agent∙ z celkovΘho mno₧stvφ a poΦet vybran²ch dokument∙ jasn∞ urΦuje pravd∞podobnost ·sp∞ÜnΘho podvodu, kdy by velitel byl podepsal cokoliv jinΘho ne₧ pov∞°ovacφ rozkaz agentovi. V Φφm vφce dokumentech se jednotka o podvod pokusφ, tφm spφΦe bude odhalena, naopak p°i menÜφm poΦtu se podvod spφÜe nepovede. Riziko tak lze nasazenφm techniky snφ₧it na minimum.