home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 October / Chip_2000-10_cd1.bin / obsahy / Chip_txt / TXT / 50-53.TXT < prev    next >
Text File  |  2000-08-30  |  12KB  |  55 lines

  1. Modernφ kryptografickΘ metody
  2. Bude nßs podepisovat RSA?
  3. Na naÜem trhu se brzo objevφ zahraniΦnφ i domßcφ prost°edky a slu₧by pro realizaci elektronickΘho podpisu v praxi. Lze oΦekßvat, ₧e °ada z nich bude zalo₧ena na algoritmu RSA, a proto se nynφ v∞nujeme popisu standardu PKCS#1 pro jeho pou₧itφ. Ukß₧eme si konkrΘtnφ realizaci RSA na elektronickΘm podpisu a na Üifrovßnφ klφΦ∙ a seznßmφme se takΘ s n∞kter²mi triky a pojmy, se kter²mi se budeme u RSA setkßvat v Φipov²ch kartßch nebo jin²ch prost°edcφch pro elektronick² podpis.
  4.  
  5. V²m∞na klφΦ∙ a podpis dat
  6. Pokud si zvolφte algoritmus RSA pro elektronick² podpis (dßle jen podpis) podle p°ijatΘho zßkona o elektronickΘm podpisu, budete se nutn∞ muset seznßmit se standardem PKCS#1 û ten toti₧ definuje operaci zaÜifrovßnφ a odÜifrovßnφ bloku dat algoritmem RSA. Proto je PKCS#1 zßkladnφm kamenem ostatnφch norem PKCS takΘ z bezpeΦnostnφho hlediska. Jak jsme uvedli minule, asymetrickΘ Üifry se vyu₧φvajφ v zßsad∞ ke dv∞ma ·Φel∙m, a to k v²m∞n∞ symetrick²ch Üifrovacφch klφΦ∙ (Üifrovßnφ) a k podepisovßnφ dat (podpis). Dßle se podφvßme, jak se tyto Φinnosti d∞lajφ pomocφ algoritmu RSA.
  7. ZaΦneme p°φkladem. Dejme tomu, ₧e u₧ mßme k dispozici sv∙j podpisov² klφΦ i certifikßt a v naÜem programu pro prßci s elektronickou poÜtou (poÜtovnφ klient) chceme podepsat nebo zaÜifrovat odesφlan² e-mail (nebo obojφ souΦasn∞). Ve v∞tÜin∞ p°φpad∙ jen zaÜkrtneme polφΦko oznaΦenΘ v∞tÜinou "ZaÜifrovat" nebo "Podepsat" (viz obr. 1) nebo klepneme na n∞jakou ikonu. PoÜtovnφ klient pak naÜe p°ßnφ splnφ, k Φemu₧ volß r∙znΘ pomocnΘ funkce, vΦetn∞ kryptografick²ch. PoÜtovnφ klienty Microsoftu a Netscape p°edlo₧enou zprßvu zpracujφ pomocφ formßtu S/MIME (Secure Multipart Internet Mail Extensions). S/MIME pou₧ije k podpisu i Üifrovßnφ zprßvy formßt standardu PKCS#7 a ten se °φdφ standardem PKCS#1. PKCS#1 obstarß p°φpravu a formßt vstupnφch i v²stupnφch dat pro algoritmus RSA.
  8.  
  9. èifrovßnφ s SSL
  10. Budeme-li mφt svΘ bankovnφ konto p°φstupnΘ prost°ednictvφm internetu, budeme asi chtφt, abychom s nφm mohli manipulovat jen my. V tomto p°φpad∞ uvφtßme spojenφ zabezpeΦenΘ prost°ednictvφm protokolu SSL (Secure Sockets Layer), kter² je nejpou₧φvan∞jÜφm aplikaΦnφm protokolem pro Üifrovßnφ dat na internetu. Äe se jednß prßv∞ o toto spojenφ, poznßme z adresy p°φsluÜnΘho serveru û zaΦφnß nikoli http://..., ale https://... , viz obr. 3. Pφsmeno "s" na konci znamenß, ₧e mezi vrstvu TCP/IP a aplikaΦnφ protokol HTTP je vlo₧en prßv∞ bezpeΦnostnφ protokol SSL, kter² umφ (pokud je sprßvn∞ nakonfigurovßn) zajistit:
  11. vzßjemnou autentizaci obou komunikujφcφch stran, tj. nßs (jako klienta) a serveru: server vφ, ₧e se na n∞j dob²vßme prßv∞ my, a my vφme, ₧e je to server prßv∞ naÜφ banky;
  12. integritu dat (to, co vidφme v prohlφ₧eΦi, je skuteΦn∞ stav naÜeho konta, a nikdo tuto informaci nemohl zm∞nit p°i jejφm putovßnφ internetem); 
  13. Üifrovßnφ dat zajiÜ¥ujφcφ soukromφ, tak₧e uskuteΦn∞nou komunikaci nelze na internetu "odposlouchßvat" v otev°enΘ podob∞ (neusp∞je ani poskytovatel p°ipojenφ, ani ·toΦnφk).
  14. Je-li spojenφ zabezpeΦeno protokolem SSL ·sp∞Ün∞ navßzßno, poznßme podle ikonky zßmeΦku, kterß se objevφ v liÜt∞ program∙ (obr. 3). Pokud se b∞hem ·vodnφ fßze protokolu SSL ob∞ komunikujφcφ strany dohodnou na pou₧itφ algoritmu RSA pro v²m∞nu klφΦ∙, pak k v²m∞n∞ Üifrovacφho klφΦe pro Üifrovßnφ dalÜφ komunikace je pou₧it prßv∞ standard PKCS#1.
  15. Vidφme tedy, ₧e jak p°i podpisu, tak i p°i Üifrovßnφ klφΦ∙ se v obou p°φpadech (e-mail, SSL) nakonec pou₧ije RSA podle PKCS#1. Nynφ se tedy tΘto operaci v∞nujeme podrobn∞ji (a zatφm ponechßme stranou dalÜφ bezpeΦnostnφ a aplikaΦnφ aspekty, jako nap°φklad kde je ulo₧en a jak je chrßn∞n privßtnφ klφΦ, jak je zajiÜt∞na infrastruktura ve°ejn²ch klφΦ∙ apod.).
  16.  
  17. RSA prakticky
  18. Popis RSA i s p°φklady jsme v Chipu u₧ vysv∞tlili (p°φsluÜn² Φlßnek z Chipu 4/95 je k dispozici takΘ na internetu, viz infotipy); zopakujme jen, ₧e zßkladnφ operace RSA je c = me mod n pro Üifrovßnφ a m = cd mod n pro odÜifrovßnφ. Nynφ se soust°edφme na n∞kterΘ pojmy, s kter²mi se m∙₧ete u RSA setkat. 
  19. V prvnφ °ad∞ je to dΘlka modulu. Nejpou₧φvan∞jÜφ dΘlka modulu RSA je a bude 1024 bit∙. V ╚esku je to sice zatφm 512 bit∙, proto₧e v∞tÜina u₧ivatel∙ jeÜt∞ nepou₧φvß software se silnou kryptografiφ (od uvoln∞nφ v²vozu uplynula p°φliÜ krßtkß doba), od kratÜφch modul∙ (512 a 768) se ale ustupuje z bezpeΦnostnφch p°φΦin. Modul 512 bit∙ byl u₧ faktorizovßn a 768 bit∙ je "na dost°el". Naproti tomu moduly delÜφ (2048, 4096), poskytujφcφ nadstandardnφ bezpeΦnost, se zase nerozÜφ°ily, proto₧e v²poΦty s nimi jsou v souΦasnΘ dob∞ jeÜt∞ stßle pomalΘ. 
  20. DalÜφm pojmem, na kter² m∙₧eme narazit zejmΘna u Φipov²ch karet, je zkratka CRT (Chinese Remainder Theorem). Je to matematickß v∞ta (tzv. Φφnskß v∞ta o zbytku), pomocφ nφ₧ se (v Φipov²ch kartßch i v softwaru) dosahuje kvalitativn∞ lepÜφch Φas∙ na provedenφ operace RSA s tajn²m klφΦem, co₧ je prßv∞ p°φpad, kdy n∞co elektronicky podepisujeme. Podobn∞ tzv. Montgomeryho metoda (nebo redukce) je postup urychlujφcφ zßkladnφ operace modulßrnφho nßsobenφ, kterΘ RSA pou₧φvß mnohokrßt za sebou. 
  21.  
  22. Obsah standardu PKCS#1
  23. U algoritmu RSA nejde jen o funkci modulßrnφho mocn∞nφ, ale pro praktickΘ vyu₧itφ se musφ definovat jeÜt∞ formßt dat a jejich dopl≥ovßnφ a dodr₧et urΦitß pravidla pro generovßnφ klφΦ∙. PKCS#1 z velkΘ Φßsti hovo°φ vlastn∞ o tom, jak se zpracovßvanß data doplnφ do plnΘho bloku RSA. KlφΦe, kterΘ se Üifrujφ, i haÜe, kterΘ figurujφ u elektronickΘho podpisu, v praxi toti₧ vypl≥ujφ jen malou Φßst bloku RSA. Je takΘ pot°eba bitovΘ °et∞zce p°evΘst na Φφsla, aby se s nimi mohla provΘst operace xy mod z, a po jejφm provedenφ zase v²slednΘ Φφslo p°evΘst zp∞t na bitov² °et∞zec (je to typ BITSTRING podle normy ASN.1 û k nφ se jeÜt∞ vrßtφme v n∞kterΘm dalÜφm dφlu). 
  24. PKCS#1 proto definuje tyto datovΘ konverze, dßle uvßdφ formßty pro uklßdßnφ ve°ejn²ch a tajn²ch klφΦ∙ a jeÜt∞ zavßdφ tzv. objektovΘ identifikßtory podle normy ASN.1 apod. Verze 1.5 standardu PKCS#1  byla prvnφ pou₧itelnou verzφ a byla publikovßna 1. 11. 1993. P°esto₧e ji od 1. 10. 1998 nahradila verze 2.0, je umo₧n∞na zp∞tnß kompatibilita. Verze 1.5 je proto stßle naprosto p°evlßdajφcφ v poÜtovnφch klientech i v internetov²ch prohlφ₧eΦφch. Pozd∞ji uvidφme, ₧e pro podpis dat je tento standard z bezpeΦnostnφho hlediska zatφm v po°ßdku, ale pro Üifrovßnφ u₧ ne. Byla toti₧ nalezena skulina, jak formßt dat pro Üifrovßnφ klφΦ∙ vyu₧φt k ·sp∞ÜnΘ kryptoanal²ze.
  25.  
  26. OznaΦenφ, symboly a konverze
  27. V p°ipojenΘ tabulce uvßdφme zßkladnφ oznaΦenφ, kterß dßle pou₧φvßme. P°ipome≥me, ₧e oktety jsou osmice bit∙, tedy vlastn∞ bajty, ale proto₧e toto oznaΦenφ se pou₧φvß i v souvisejφcφch normßch (ASN.1), budeme se ho dr₧et. Pro oznaΦovßnφ °et∞zc∙ bit∙ nebo °et∞zc∙ oktet∙ budeme pou₧φvat velkß pφsmena, pro Φφsla pφsmena malß. 
  28. Konverzi mezi Φφsly a oktety musφme nadefinovat z p°φΦin, kterΘ jsme uvedli v²Üe, ale je to jednoduchΘ. ╚φslo se p°i konverzi na °et∞zec oktet∙ jen eventußln∞ zleva doplnφ nulov²mi bity tak, aby m∞lo binßrnφ vyjßd°enφ zarovnanΘ na osmice bit∙ (oktety), a naopak °et∞zec oktet∙ se obvykl²m zp∙sobem p°evede na Φφslo tφm, ₧e jeho oktety nejvφce vlevo se budou chßpat jako bajty s nejvyÜÜφ vahou. Formßln∞ se tyto procedury naz²vajφ I2OSP (Integer-to-Octet-String Primitive) a OS2IP (Octet-String-to-Integer Primitive).
  29.  
  30. Prßce s daty podle PKCS#1, ver. 1.5
  31. Data D, kterß vstupujφ do algoritmu RSA, majφ obvykle dΘlku do 40 oktet∙ (320 bit∙, jsou to klφΦe nebo haÜe), tak₧e je nutnΘ je doplnit do zvolenΘ dΘlky bloku (modulu) RSA; tuto dΘlku oznaΦme k (oktet∙). Dopln∞n² blok oznaΦφme EB; v PKCS#1, ver. 1.5, je definovßn jako °et∞zec k oktet∙ podle vztahu EB = 00 || BT || PS || 00 || D.
  32. Typy blok∙ 01 a 02
  33. Krom∞ vlastnφch dat D vystupuje v zßpisu pro EB jeÜt∞ separßtor (oktet 00), dopl≥ujφcφ °et∞zec n∞kolika oktet∙ PS (padding string), dßle jeden oktet BT a vedoucφ oktet 00. PoΦet oktet∙ dopl≥ujφcφho °et∞zce PS se volφ tak, aby celkovß dΘlka EB byla po₧adovan²ch k oktet∙; z bezpeΦnostnφch p°φΦin se po₧aduje dΘlka PS alespo≥ 8 oktet∙. Vedoucφ oktet 00 (v EB nejvφce vlevo) je povinn∞ zaveden proto, aby p°i p°evodu EB na Φφslo (OS2IP ) byl nejv²znamn∞jÜφ bajt tohoto Φφsla v₧dy nulov². ZpracovßvanΘ Φφslo je tak v₧dy menÜφ ne₧ modul RSA, co₧ je nutnΘ pro sprßvnost odÜifrovßnφ. 
  34. D∙le₧itou roli hraje v zßpisu pro EB oktet BT (block type), kter² urΦuje typ p°φsluÜnΘho bloku. M∙₧e nab²vat hodnot 00 (nepou₧φvß se) nebo 01 a 02 (kompatibilita s formßtem PEM podle RFC 1423, d∙le₧itΘ d°φve). Typ bloku 01 je urΦen pro podpis dat a typ 02 pro Üifrovßnφ klφΦ∙. 
  35. Dopl≥ovßnφ bloku typu 01
  36. V bloku typu 01 (podpis) je PS tvo°en pouze stejn²mi oktety s hodnotou FF. Vlastnφ data D, co₧ je zde haÜovacφ k≤d MD podepisovanΘ zprßvy M, se zde ale navφc dopl≥ujφ jeÜt∞ konstantnφm identifikaΦnφm °et∞zcem. V notaci ASN.1 je to tzv. DigestAlgorithmIdentifier a jeho hodnota je odvozena od toho, jakß haÜovacφ funkce se pou₧ije k haÜovßnφ zprßvy M. Jsou definovßny identifikßtory pro MD2, MD5 a SHA-1. Vφce o uveden²ch haÜovacφch funkcφch viz infotipy.
  37. Dopl≥ovßnφ bloku typu 02
  38. V tomto p°φpad∞ je PS tvo°en jak²mikoliv nßhodn²mi nenulov²mi oktety. Nenulovost mß samoz°ejm∞ umo₧nit jejich jednoznaΦnΘ odliÜenφ od v²znamov²ch dat pomocφ nulovΘho separßtoru. Jen pro zajφmavost si vÜimn∞me, ₧e kv∙li nßhodnosti dopl≥ovan²ch bajt∙ budou v bloku typu 02 (Üifrovacφ klφΦe) stejnß data D mφt poka₧dΘ jin² Üifrov² obraz. P°esto₧e se to zdß jako velmi silnΘ opat°enφ, prßv∞ v realizaci myÜlenky dopln∞nφ zcela nßhodn²mi daty je skryta mo₧nost luÜt∞nφ. Je to o to horÜφ, ₧e se jednß o Üifrovacφ klφΦe, kter²mi se Üifrujφ data p°enßÜenß v kanßlu. 
  39.  
  40. èifrujeme a podepisujeme...
  41. Jakmile je p°ipraven pln² blok EB, pomocφ procedury OS2IP ho p°evedeme na Φφslo, aplikujeme na n∞j algoritmus RSA bu∩ s ve°ejn²m, nebo tajn²m exponentem a obdr₧enΘ Φφslo p°evedeme pomocφ procedury I2OSP zp∞t na oktetov² °et∞zec (ED). Ten pak tvo°φ v²sledek celΘ operace. Na stran∞ p°φjemce se na obdr₧en² oktetov² °et∞zec zavolß algoritmus RSA s odpovφdajφcφm pßrov²m klφΦem a u v²sledku se zjistφ, zda obdr₧en² formßt dat odpovφdß formßtu danΘho typu bloku. Kontroluje se nulov² vedoucφ oktet, oktet BT, vlastnosti dopl≥ku PS, p°φtomnost separßtoru a dΘlka vlastnφch dat. P°i verifikaci podpisu se navφc kontroluje identifikßtor haÜovacφho algoritmu a obdr₧enß MD se takΘ porovnß s haÜovacφ hodnotou vypoΦtenou z p°ijat²ch podepsan²ch dat MD┤. 
  42.  
  43. Jak je to s bezpeΦnostφ
  44. V souΦasnΘ dob∞ je v neamerick²ch verzφch °ady program∙ stßle jeÜt∞ pou₧φvßn modul RSA 512 bit∙. V²voz silnΘ kryptografie z USA, umo₧≥ujφcφ pou₧φvat modul 1024 bit∙, byl ΦßsteΦn∞ uvoln∞n letos v lednu a pro ╚R zcela v Φervenci, ale do praxe se tato zm∞na dosud p°φliÜ nepromφtla. A₧ si nainstalujeme p°φsluÜnΘ programy nebo "service packy", m∙₧eme s komerΦnφmi prohlφ₧eΦi a poÜtovnφmi klienty dφky tomuto uvoln∞nφ u₧ dnes dosßhnout velmi sluÜnΘ "lidovΘ" bezpeΦnosti. 
  45. Abychom mohli komunikovat na vyÜÜφ bezpeΦnostnφ ·rovni, musφ k tomu ovÜem navφc existovat bezpeΦnß infrastruktura ve°ejn²ch klφΦ∙. Velmi d∙le₧itß je takΘ konfigurace p°φsluÜn²ch program∙, d∙v∞ryhodnost a vlastnosti certifikßt∙ a nakonec ochrana tajn²ch klφΦ∙ u₧ivatele v systΘmu. ╪ady t∞chto aspekt∙ se t²kß nedßvno p°ijat² zßkon o elektronickΘm podpisu, a v Chipu se proto brzy chceme v∞novat takΘ hlubÜφmu pohledu na jeho p°φsluÜnß ustanovenφ.
  46.  
  47. Zßv∞r
  48. Minule jsme se seznßmili s °adou standard∙ PKCS, kterß obsahuje nejpou₧φvan∞jÜφ normy v oblasti asymetrick²ch systΘm∙. V tomto dφlu jsme se zab²vali zßkladem tΘto °ady, PKCS#1, a ukßzali jsme, jak se podle verze 1.5 tΘto normy vytvß°φ podpis nebo Üifrujφ klφΦe algoritmem RSA. (Verzφ 1.5 jsme se zab²vali proto, ₧e je stßle dominantnφ a na nov∞jÜφ 2.0 se jeÜt∞ vÜeobecn∞ nep°eÜlo.) V p°φÜtφm dφlu si jeÜt∞ povÜimneme jednΘ jejφ slabiny a ukß₧eme, jak se jφ brßnit. 
  49. Vlastimil Klφma (v.klima@decros.cz)
  50.  9/00: 914-KLIMA (Au.Klφma - 7.77 n.str., 3110.66 KΦ) Strana: 3
  51.  
  52.     Chyba! Neznßm² argument p°epφnaΦe./1
  53.  
  54.  
  55.