Tiskovß konference spoleΦnosti ICZ ze dne 20. b°ezna 2001 opravdu nez∙stala bez povÜimnutφ. Dva ΦeÜtφ kryptologovΘ (kterΘ dob°e znßte z jejich pravideln²ch p°φsp∞vk∙ v Chipu) na nφ novinß°∙m a odbornΘ ve°ejnosti oficißln∞ oznßmili sv∙j objev t²kajφcφ se bezpeΦnostnφ chyby v PGP. Na rozdφl od v∞tÜiny informacφ v neodborn²ch mΘdiφch mßte nynφ v Chipu mo₧nost dozv∞d∞t se o tΘto zßle₧itosti nezkreslenß fakta, a to p°φmo z prvnφ ruky - od obou autor∙.
Inu, tak se nßm poda°ilo ud∞lat p∞kn² rozruch ve sv∞t∞ i na domßcφ politickΘ scΘn∞. N∞kter²m novinß°∙m se toti₧ zdßlo, ₧e v ohro₧enφ je elektronick² podpis jako takov², ve svΘ obecnosti - a byl z toho dost velk² poprask. Ve skuteΦnosti se poda°ilo n∞co jinΘho, ovÜem velmi zajφmavΘho, a jsme rßdi, ₧e vßm to koneΦn∞ m∙₧eme podrobn∞ji vysv∞tlit, proto₧e "t∞ch prav²ch vykladaΦ∙" mßme, mφrn∞ °eΦeno, u₧ dost.
OΦ vlastn∞ Ülo?
Objevili jsme ·tok na privßtnφ podpisovΘ klφΦe formßtu OpenPGP a program∙ PGP. Proto₧e na sv∞t∞ program PGP ·dajn∞ pou₧φvß asi 10 milion∙ lidφ, neÜlo jen tak o maliΦkost. (PGP je registrovanß obchodnφ znaΦka Network Associates, Inc., vÜechny ostatnφ registrovanΘ a neregistrovanΘ obchodnφ znaΦky v tomto Φlßnku jsou majetkem odpovφdajφcφch vlastnφk∙.)
Formßt OpenPGP byl definovßn v dokumentu RFC2440 z roku 1998 s cφlem poskytnout programßtor∙m vÜechny nezbytnΘ informace, aby na jeho bßzi mohly b²t vytvß°eny dalÜφ kompatibilnφ aplikace s programem PGP, kter² ho sßm pou₧φvß. Poukßzali jsme na zßva₧nou chybu, kterß spoΦφvß v nedostateΦnΘm zajiÜt∞nφ integrity ve°ejn²ch i privßtnφch Φßstφ podpisov²ch klφΦ∙ algoritm∙ DSA a RSA v tomto formßtu, a ukßzali jsme, ₧e m∙₧e b²t vyu₧ita k odhalenφ privßtnφho podpisovΘho klφΦe.
Aby byl privßtnφ klφΦ chrßn∞n, je jeho hodnota ulo₧ena do privßtnφ "klφΦenky" (souboru secring.skr) v zaÜifrovanΘm tvaru (jeÜt∞ jednou zd∙raz≥ujeme, ₧e je tam zaÜifrovßn). K zaÜifrovßnφ je pou₧ita u₧ivatelem zvolenß silnß symetrickß Üifra (AES, CAST5, IDEA) s dostateΦn∞ dlouh²m klφΦem. Ten je odvozen od tajnΘho p°φstupovΘho hesla, kterΘ znß jen u₧ivatel (°φkejme mu password, ale p°esn∞ji je to "passphrase", klφΦovß p°φstupovß v∞ta - ostatn∞ m∙₧e to b²t skuteΦn∞ velmi dlouhß v∞ta). Ukßzali jsme, ₧e pokud ·toΦnφk mß p°φstup k souboru secring.skr (zd∙razn∞me, ₧e p°φstup se po₧aduje pouze v dob∞, kdy je tam privßtnφ klφΦ ulo₧en v zaÜifrovanΘm tvaru), m∙₧e za urΦit²ch podmφnek (jak uvidφme, nejsou nijak p°ehnanΘ) zφskat privßtnφ podpisov² klφΦ u₧ivatele, ani₧ by znal jeho p°φstupovΘ heslo nebo proti n∞mu ·toΦil.
┌tok spoΦφvß ve specißlnφ modifikaci (ve°ejn²ch) parametr∙ podpisovΘho algoritmu (u DSA) nebo ÜifrovΘho obrazu privßtnφho klφΦe (u RSA) a zφskßnφ podpisu libovolnΘho souboru (nebo e-mailovΘ zprßvy) takto modifikovan²m podpisov²m klφΦem. Ukazujeme, ₧e pak je ·toΦnφk schopen vypoΦφtat privßtnφ podepisovacφ klφΦ. Proto₧e soubor secring.skr m∙₧e ·toΦnφk po zßm∞n∞ uvΘst zp∞t do p∙vodnφho stavu, je ·tok velmi nebezpeΦn². Ve stejnΘm ohro₧enφ jsou i privßtnφ klφΦe p°enßÜenΘ v zaÜifrovanΘm tvaru na disketßch nebo po sφti.
┌tok jsme prakticky ov∞°ili na nejnov∞jÜφ verzi programu PGP 7.0.3 s kombinacφ algoritm∙ AES a DH/DSS. V²sledkem bylo zφskßnφ privßtnφho podpisovΘho klφΦe algoritmu DSA. V technickΘ zprßv∞ (najdete ji takΘ v rubrice Chip Plus na Chip CD 5/01) jsme samoz°ejm∞ navrhli krßtkodobß i dlouhodobß kryptografickß opat°enφ pro opravu formßtu OpenPGP a zm∞ny v programu PGP. Podrobnou revizφ ale musφ projφt vÜechny dalÜφ aplikace, kterΘ jsou s formßtem OpenPGP kompatibilnφ. Jednß se nap°φklad o GNU Privacy Guard a dalÜφ, uvedenΘ na seznamu aplikacφ kompatibilnφch s OpenPGP, kterΘ jsou vyjmenovßny na http://www.pgpi.org/products. K tomu takΘ postupn∞ dochßzφ a informace o tom jsou pr∙b∞₧n∞ aktualizovßny na www.i.cz a dalÜφch.
S Φφm jsme Üli "na zteΦ"
ICZ attack, Czech attack, Rosa and Klima attack - takovΘ nßzvy u₧ si nßÜ poΦin vyslou₧il v kryptologickΘm sv∞t∞. NaÜe technickß zprßva popisuje celkem t°i typy ·tok∙ (jeden na DSA, dva na RSA), s jejich₧ podstatou vßs dßle seznßmφme. Ne₧ se na n∞ podφvßme podrobn∞ji, osv∞₧me si v pam∞ti postup vytvß°enφ klφΦovΘho pßru a podpisu pomocφ 1024bitovΘho algoritmu DSA a postup verifikace podpisu.
Vytvß°enφ klφΦovΘho pßru
Ka₧d² u₧ivatel vygeneruje privßtnφ a ve°ejn² klφΦ nßsledujφcφm postupem:
Zvol 1024bitovΘ prvoΦφslo p tak, ₧e q d∞lφ (p-1) a 21023 < p < 21024.
Vyber generßtor g cyklickΘ podgrupy °ßdu q v Zp*
(tj. zvolφ se prvek h ( Zp* tak, ₧e g = h(p-1)/q mod p a g ( 1, jinak se volφ jinΘ h).
Vyber nßhodnΘ Φφslo x tak, ₧e 1 ( x ( q-1.
VypoΦti y = gx mod p.
Ve°ejn² klφΦ je y, ve°ejnΘ parametry jsou (p, q, g), privßtnφ klφΦ je x.
Vytvß°enφ digitßlnφho podpisu
U₧ivatel p°i vytvß°enφ podpisu zprßvy m (resp. jejφ haÜovacφ hodnoty h(m)) pou₧φvß sv∙j privßtnφ klφΦ x a ve°ejnΘ parametry takto:
Vyber nßhodnΘ tajnΘ Φφslo k, 0 < k < q.
VypoΦti r = (gk mod p) mod q.
VypoΦti kInv = k-1 mod q.
VypoΦti s = [kInv * ( h(m) + x*r)] mod q.
Digitßlnφ podpis zprßvy m je dvojice (r, s).
Verifikace digitßlnφho podpisu
P°i verifikaci digitßlnφho podpisu zprßvy m pou₧ijeme ve°ejn² klφΦ spolu s ve°ejn²mi parametry signatß°e (p, q, g, y) takto:
Ov∞°, ₧e 0 < r, s < q. V opaΦnΘm p°φpad∞ je podpis neplatn².
VypoΦti sInv = s-1 mod q a haÜovacφ hodnotu h(m).
VypoΦti u1 = sInv * h(m) mod q, u2 = sInv * r mod q.
VypoΦti v = (gu1 * yu2 mod p) mod q.
Podpis je platn², prßv∞ kdy₧ v = r.
┌tok na podpisov² algoritmus DSA
Po tΘto malΘ teoretickΘ pr∙prav∞ si postup ·toku na 1024bitov² algoritmus DSA popφÜeme konkrΘtn∞ tak, jak jsme ho provedli s vyu₧itφm programu PGP 7.0.3. V dalÜφm textu budeme podvr₧enΘ a na zßklad∞ nich vypoΦφtanΘ hodnoty oznaΦovat v₧dy Φßrkou.
1. krok
Zvolili jsme prvoΦφslo p┤ tak, aby m∞lo 159 bit∙ a byla tak urΦit∞ zaruΦena podmφnka p┤ < q. Je to prvnφ klφΦovß myÜlenka (vyu₧ijeme ji ve ΦtvrtΘm kroku). Dßle jsme volili p┤ ve tvaru p┤ = t*2s +1 tak, aby 2s bylo co nejv∞tÜφ Φφslo a t bylo malΘ prvoΦφslo, konkrΘtn∞ s = 151 a t = 167. Toto je druhß klφΦovß myÜlenka ·toku. Pro takto specißln∞ volenß prvoΦφsla umφme rychle °eÜit problΘm diskrΘtnφho logaritmu, tj. z rovnice r┤ = (g┤)k mod p┤ umφme snadno vypoΦφtat neznßmΘ Φφslo k, zatφmco pro p∙vodnφ sestavenφ ve°ejn²ch parametr∙ by byla tato ·loha v²poΦetn∞ nezvlßdnutelnß. Celß podstata naÜeho ·toku tak spoΦφvß v modifikaci ve°ejn²ch parametr∙ tak, ₧e ·loha vedoucφ k nalezenφ privßtnφho klφΦe se stßvß snadno °eÜitelnou.
Dßle jsme zvolili Φφslo g┤ = 0x31AC8529 1FF814E6 25E4B88C 8C5047A7 DB2F0E45 tak, aby bylo generßtorem multiplikativnφ grupy Zp┤*.
2. krok
Nynφ jsme zφskali soubor secring.skr a v jeho zßznamu (Secret Key Packet) jsme vym∞nili hodnoty (p, g) za hodnoty (p┤, g┤). Upravili jsme takΘ dΘlky t∞chto Φφsel ve formßtu MPI. Tento formßt se sklßdß ze dvou dΘlkov²ch oktet∙ (bajt∙) oznaΦujφcφch poΦet platn²ch bit∙ v nßsledujφcφch oktetech a z vlastnφ hodnoty "velkΘho" Φφsla Multi-Precision Integer, kterß je ve formßtu BIG ENDIAN a je zarovnanß na celΘ oktety. A nakonec jsme zkrßtili celkovou dΘlku Secret Key Packet (dΘlkovΘ oktety na poΦßtku zßznamu) tak, aby odpovφdala kratÜφm faleÜn²m hodnotßm p┤ a g┤. Situaci ilustrujφ obrßzky: na obr. 2 jsou vyznaΦeny p∙vodnφ hodnoty, na obr. 3 hodnoty podvr₧enΘ. Dßle je vid∞t nedotΦenß oblast, kde je silnou Üifrou ochrßn∞n a nßmi zachovßn privßtnφ klφΦ x.
3. krok
S takto podvr₧en²mi hodnotami jsme vyΦkali, a₧ u₧ivatel podepφÜe n∞jak² nßm znßm² soubor (zprßvu m), a zφskali jsme jeho podpis - hodnoty (r┤, s┤). Tu neznßmou nßhodnou hodnotu, kterou u₧ivatel∙v program zvolil p°i tomto podpisu, oznaΦme k (viz popis DSA v²Üe).
4. krok
V tomto kroku jsme vypoΦφtali hodnotu privßtnφho klφΦe x u₧ivatele na zßklad∞ hodnot p┤, g┤, m, r┤ a s┤. Z definice hodnoty podpisu (r┤, s┤) toti₧ vypl²vß, ₧e
(1) r┤ = (g┤)k mod p┤ mod q, co₧ vzhledem k volb∞ p┤ < q dßvß
(1a) r┤ = (g┤)k mod p┤
a
(2) s┤ = {[k-1 mod q] * [ h(m) + x*r┤] } mod q, tedy
(2a) x = { [s┤* k - h(m)] * [(r┤)-1 mod q] }mod q.
KlφΦov²m bodem je, ₧e Φφslo k umφme dφky volb∞ p┤ a g┤ vypoΦφtat z rovnice (1a). Na zßklad∞ toho pak z rovnice (2a) jen dopoΦφtßme privßtnφ klφΦ - hodnotu x. Jeho sprßvnost ov∞°φme proti hodnot∞ ve°ejnΘho klφΦe: y = gx mod p, kde y je ve°ejn² klφΦ a g, p originßlnφ u₧ivatelovy parametry.
5. krok
U₧ivateli jsme vrßtili jeho p∙vodnφ soubor secring.skr.
┌toky na podpisov² algoritmus RSA
Zde vychßzφme ze zm∞ny ÜifrovΘho textu (nebo ve°ejnΘho parametru udßvajφcφho jeho dΘlku) v souboru secring.skr, kde jsou ulo₧eny hodnoty (d, p, q, pInv) ve struktu°e Secret Key Packet. P°ipomeneme si, ₧e modul RSA je souΦin dvou prvoΦφsel n = p*q, ve°ejn² exponent je e, d je privßtnφ exponent a Φφslo pInv = p-1 mod q slou₧φ k rychlejÜφmu v²poΦtu podpisu. Ve°ejn²m klφΦem oznaΦujeme dvojici (n,e), pro pot°eby formßtu OpenPGP se za privßtnφ klφΦ pova₧uje Φtve°ice (d, p, q, pInv). Podpis zprßvy m je vytvo°en jako s = md mod n, p°iΦem₧ se p°edpoklßdß, ₧e zprßva m u₧ je urΦit²m zp∙sobem p°edem zformßtovßna. Podpis je platn², pokud platφ m = se mod n.
P°edesφlßme, ₧e nynφ ·toΦφme na podpisov² klφΦ algoritmu RSA ve formßtu OpenPGP; programy PGP vÜak majφ navφc zabudovßny dalÜφ kontrolnφ mechanismy na integritu tohoto klφΦe p°ed jeho pou₧itφm k podpisu, proto tam tento ·tok selhßvß (pozd∞ji bylo zjiÜt∞no, ₧e v n∞kter²ch starÜφch verzφch PGP 2.6.x je ale ·tok funkΦnφ). I zde je privßtnφ klφΦ ulo₧en ve struktu°e Secret Key Packet, p°iΦem₧ v souΦasnΘ dob∞ se pou₧φvajφ verze 3 a 4 tohoto formßtu, kterΘ se liÜφ ve zp∙sobu Üifrovßnφ privßtnφch dat.
KlφΦovß myÜlenka ·toku na verzi 3 formßtu je zalo₧ena na skuteΦnosti, ₧e m∙₧eme beztrestn∞ zkrßtit dΘlku Φφsla pInv. Auto°i formßtu se domnφvali, ₧e dΘlka pInv nenφ d∙le₧itß informace, tak₧e ji ponechali ve°ejn∞ p°φstupnou, zatφmco hodnota pInv je zaÜifrovanß! Jak vyu₧φt zm∞ny pInv, si °ekneme za okam₧ik.
┌tok na verzi 4 formßtu je slo₧it∞jÜφ. ╚tve°ice tajn²ch Φφsel ve formßtu MPI vΦetn∞ jejich dΘlkov²ch oktet∙ je opat°ena dvoubajtov²m kontrolnφm souΦtem (checksum) a toto celΘ (d, p, q, pInv, checksum) je pak zaÜifrovßno. Kontrolnφ souΦet je poΦφtßn jako checksum = (d1 + d2 + ...+ dn) mod 65536 , kde di jsou chrßn∞nß data, a k Üifrovßnφ je pou₧ita u₧ivatelem zvolenß symetrickß blokovß Üifra v tzv. specifickΘm (PGP) modu CFB, jak ukazuje obrßzek 4.
┌tok na verzi 4 formßtu Secret Key Packet jsme nazvali podlezenφm Üifry (zde AES - Rijndael), proto₧e se jednß o nevhodnou kombinaci modu Üifrovßnφ CFB a v²poΦtu hodnoty checksum. Modifikujeme toti₧ poslednφ zaÜifrovanΘ bajty pInv a checksum tak, aby checksum po odÜifrovßnφ souhlasila. Pokud pou₧ijeme blokovou Üifru s dΘlkou bloku 16 oktet∙ (tj. v p°φpad∞ AES) a modul RSA 1024 bit∙, bude v poslednφm ne·plnΘm bloku ÜifrovΘho textu osm poslednφch oktet∙ Φφsla pInv (oznaΦme je B1, B2, ..., B8) a dva oktety kontrolnφho souΦtu checksum (oznaΦme je HSum, LSum). Tato otev°enß data budou zaÜifrovßna prostou operacφ XOR s urΦit²m klφΦov²m materißlem, jak ukazuje obrßzek 4. Pokud v poslednφm bloku ÜifrovΘho textu provedeme zm∞nu typu "XOR CONST", projevφ se to p°esn∞ jako "XOR CONST" po odÜifrovßnφ v otev°enΘm textu.
P°esn² popis ·toku lze nalΘzt ve zprßv∞, zde si uve∩me alespo≥ mal² p°φklad. V zaÜifrovanΘm souboru secring.skr zkusφme zm∞nit nap°φklad poslednφ bit B8 a poslednφ bit LSum. Po odÜifrovßnφ bude pochopiteln∞ hodnota pInv naruÜena (to chceme), ale jestli₧e byly v otev°enΘm tvaru oba bity stejnΘ, po odÜifrovßnφ se ob∞ hodnoty bu∩ o jedniΦku snφ₧φ, nebo o jedniΦku zv²Üφ, tak₧e checksum naÜe naruÜenφ pInv nepoznß a bude v po°ßdku. Pokud to nevyjde, zkouÜφme to s dalÜφmi bity (i jinak, viz zprßva). NicmΘn∞ v pr∙m∞ru dva pokusy by m∞ly staΦit, abychom byli ·sp∞Ünφ. V²sledkem tΘto zm∞ny je naruÜenφ hodnoty pInv. Ve zprßv∞ je pak ukßzßno, jak lze z podpisu s naruÜenou hodnotou pInv vypoΦφtat privßtnφ klφΦ RSA!
DalÜφ mo₧nosti ·tok∙
Dßle je nutnΘ poznamenat, ₧e krom∞ privßtnφ klφΦenky secring.skr lze stejn²m zp∙sobem ·toΦit i na privßtnφ klφΦ exportovan² do souboru typu ASCII Key File a p°enßÜen² potom prost°ednictvφm sφt∞ nebo na disket∞.
Navr₧enß p°echodnß protiopat°enφ
Odstranit hlavnφ p°φΦinu prezentovan²ch ·tok∙, kterou je nedostateΦnß kontrola integrity ve°ejn²ch i privßtnφch dat v souboru obsahujφcφm privßtnφ klφΦ u₧ivatele, nemusφ b²t jednoduchΘ. Proto jsme do doby, ne₧ dojde k ·prav∞ formßtu OpenPGP, navrhli p°echodnß opat°enφ (bereme je jako "krizovß", nikoli tedy tak, ₧e by hlavnφ p°φΦinu vy°eÜila). Lze je p°echodn∞ pou₧φt v programech PGP a dalÜφch, kterΘ implementujφ formßt OpenPGP. K operaci vlastnφho podpisu p°itom smφ b²t pou₧it jen takov² klφΦ, jeho₧ hodnoty projdou nßsledujφcφm testem.
P°echodn² test pro DSA
p, q, g, x, y > 0
p je lichΘ, q je lichΘ
2159 < q < 2160
1 < g < p
1 < y < p
x < q
q d∞lφ (p-1)
gq mod p = 1
gx mod p = y
P°echodn² test pro RSA
e*d mod (p - 1) = 1
e*d mod (q - 1) = 1
pInv * p (mod q) = 1
n (ze zßznamu ve°ejnΘho klφΦe) = p*q
e ( E, kde E je mno₧ina mo₧n²ch hodnot plßnovan²ch pro e, tj. pro PGP nap°φklad {17, 65537,...}
Poznamenejme, ₧e v programu PGP jsou kontroly 1 a₧ 4 a n∞kterΘ dalÜφ implementovßny. Ve formßtu OpenPGP vÜak tyto kontroly uva₧ovßny nejsou.
DalÜφ nßm∞ty pro formßt OpenPGP
Zde uvßdφme dalÜφ nßm∞ty, kterΘ nßs napadly po prvnφm seznßmenφ s formßtem OpenPGP (zßznam Secret Key Packet) a s programem PGP a kterΘ by rozhodn∞ p°isp∞ly ke zv²Üenφ bezpeΦnosti formßtu i programu. Je vÜak t°eba je chßpat spφÜe jako ideovß doporuΦenφ a podrobit je hlubÜφ anal²ze. Anal²za celΘho formßtu OpenPGP je vÜak mnohem obtφ₧n∞jÜφ a bohu₧el sßm formßt je tak nep°ehledn², ₧e by si zaslou₧il komplexnφ revizi. Nßmi navrhovanß opat°enφ jsou:
Modus Üifrovßnφ CFB nahradit modem CBC.
Kontrolnφ souΦet checksum (suma bajt∙ modulo 65536) nahradit HMAC zalo₧en²m na SHA-1 nebo na jinΘ bezpeΦnΘ haÜovacφ funkci (nap°. SHA-256, 384, 512 apod.).
Nov² kontrolnφ souΦet (HMAC):
a) uklßdat v dΘlce minimßln∞ 160 bit∙;
b) vypoΦφtßvat jej ze vÜech dat zßznamu Secret Key Packet (nejen z privßtnφch, ale i z ve°ejn²ch);
c) klφΦ pou₧it² v HMAC derivovat z passphrase jin²m zp∙sobem ne₧ klφΦ pro symetrickou Üifru;
d) Üifrovat v²sledn² HMAC spoleΦn∞ s privßtnφmi daty symetrickou Üifrou podobn∞, jako je to v p°φpad∞ checksum ve verzi 4 formßtu Secret Key Packet.
Pro podpisovΘ schΘma RSA pou₧φvat formßt typu EMSA-PSS. Toto pravd∞podobnostnφ podpisovΘ schΘma ·Φinn∞ brßnφ ·tok∙m zalo₧en²m na chybovΘ anal²ze, kterΘ jsme vyu₧ili v naÜφ prßci.
D∙sledky pro praxi
Kdokoliv, kdo dokß₧e popsan²m zp∙sobem zm∞nit soubor s privßtnφm klφΦem, je schopen na zßklad∞ jedinΘho chybnΘho podpisu zφskat hodnotu privßtnφho klφΦe u algoritm∙ DSA a RSA. K tΘto zm∞n∞ zdaleka nemusφ dojφt jen na pracovnφ stanici napadenΘho u₧ivatele. Citliv²m mφstem jsou i soubory s exportovan²mi privßtnφmi klφΦi, kterΘ u₧ivatel pou₧φvß k p°enosu mezi r∙zn²mi stanicemi. Dostane-li se k takovΘ disket∞ p°i jejφ p°eprav∞ ·toΦnφk, je bezpeΦnost u₧ivatelova privßtnφho klφΦe vß₧n∞ ohro₧ena.
DalÜφ scΘnß° je mo₧nΘ pou₧φt, jestli₧e je soubor s privßtnφm klφΦem ulo₧en na sdφlenΘm za°φzenφ. Zde m∙₧e b²t ·toΦnφkem nap°φklad sprßvce serveru, kter² na urΦitou dobu u₧ivateli podstrΦφ upravenou verzi souboru secring.skr, poΦkß, a₧ jej u₧ivatel pou₧ije k podpisu (dobu lze pom∞rn∞ p°esn∞ urΦit monitorovßnφm sφ¥ovΘ aktivity u₧ivatelovy stanice), a potΘ vrßtφ zp∞t jeho p∙vodnφ obsah.
Nßmi popsan² ·tok ukazuje, ₧e v okam₧iku, kdy u₧ivatel p°φsluÜnΘho programu zjistφ, ₧e byla vygenerovßna chybnß hodnota podpisu, m∞l by se zaΦφt chovat velmi obez°etn∞. M∙₧e b²t prßvem na rozpacφch, zda se jednß o d∙sledek zßm∞rnΘho ·toku nebo "jen" o technickΘ selhßnφ. Prakticky je ale z°ejmΘ, ₧e ka₧d² soubor s neplatn²m podpisem si zasluhuje stejnou pozornost, jako by se jednalo o soubor obsahujφcφ privßtnφ klφΦ v otev°enΘm tvaru! To ovÜem p°edpoklßdß odpovφdajφcφ pΘΦi v∞novanou jeho neobnovitelnΘmu odstran∞nφ z p°φsluÜnΘ stanice, nebo dokonce serveru, co₧ m∙₧e b²t n∞kdy tvrd² o°φÜek.
Zßv∞r
Poukßzali jsme na zßva₧nΘ nedostatky formßtu OpenPGP a popsali ·toky, kterΘ vedou k zφskßnφ nejcitliv∞jÜφch informacφ systΘmu. Upozor≥ujeme tφm na d∙le₧it² aspekt ochrany privßtnφch klφΦ∙ a ve°ejn²ch parametr∙ asymetrick²ch algoritm∙ v bezpeΦnostnφch systΘmech. Praktick²m p°φkladem je program PGP 7.0.3., na n∞m₧ jsme platnost hypotΘz vyzkouÜeli. Je zraniteln² pomocφ ·toku na algoritmus DSA a z pozd∞jÜφch reakcφ vyplynulo, ₧e n∞kterΘ jeho starÜφ varianty nejsou odolnΘ ani proti ·toku na algoritmus RSA.
Vlastimil Klφma | v.klima@decros.cz
TomᚠRosa | t.rosa@decros.cz
infotipy
Formßt OpenPGP:
RFC 2440: OpenPGP Message Format, IETF, November 1998