Informacijska varnost
Z razmahom informacijske tehnologije in prodorom te tehnologije v različne dejavnosti, predvsem tiste, ki so upravnega ali poslovnega značaja, se vedno znova odpirajo številna varnostna vprašanja. Informacije, ujete na papir, izpodrivajo podatki v elektronski obliki. Ti prinašajo številne prednosti, a hkrati povečujejo potencialno nevarnost manipulacije, če jih pravočasno ne zaščitimo.
Odprti sistemi in omrežja so varnostnim vprašanjem v informacijski tehnologiji dali dodatno težo. Prost pretok podatkov v infrastrukturi informacijskih sistemov, ki med seboj komunicirajo, omogoča vedno nove možnosti zlorabe (prestrezanje informacij, kraja podatkov itd.) ali manipulacije (poneverba, lažna identiteta itd.) s podatki. Varnostna tehnologija poizkuša škodljive posege onemogočiti in nam zagotoviti varno uporabo informacijskega okolja. Še posebej kritična področja, na katerih je varnostna tehnologija tudi ključna, so številni poslovni ali upravni procesi in procesi v rokah različnih varnostnih organov, ki sicer za svoje potrebe pogosto uporabljajo nestandardizirano tehnologijo in so ločeni od javnih informacijskih tokov.
Bistvena razlika med simetričnim in asimetričnim šifriranjem je uporaba ključev. Medtem ko pri prvem za proces šifriranja in odšifriranja uporabljamo isti ključ, sta pri slednjem potrebna dva.
Vloga varnostne tehnologije ni zgolj v reševanju problemov zaščite vsebine pred vpogledom s strani nepooblaščenih. Ista tehnologija omogoča preslikati določene formalne postopke v popolno elektronsko obliko. Kriptografski algoritmi so bili med drugim razviti za okoliščine, ko želimo doseči legitimnost določenih podatkov ali zapisov v elektronski obliki (dokument, pogodba, faktura ipd.). S tem namenom tudi zakonodaja prepoznava elektronski podpis kot legitimno sredstvo in ga pod določenimi pogoji enači z lastnoročnim podpisom. Nabor varnostne tehnologije je torej širok in rešuje marsikatere probleme z dematerializacijo postopkov in procesov.
Osnove
Šifriranje je temeljni postopek vseh varnostnih sistemov. Pri šifriranju gre za manipulacijo nad nizom znakov na tak način, da rezultat odseva v navidezno naključnem nizu znakov, torej za proces transformacije podatkov (čistopis) v obliko, ki onemogoča razumevanje teh podatkov (tajnopis). Šifriranje je uspešno, če naključni opazovalec ne more razvozlati izvirnega podatka zgolj na podlagi analize šifriranega niza.
Šifriranje je postopek, pri katerem s simetričnim algoritmom najprej zaščitimo vsebino, nato pa uporabljeni simetrični ključ šifriramo z asimetričnim algoritmom. Zaradi počasnosti asimetričnega šifriranja je kombinacija obeh tehnik še najprimernejša.
Postopek je znan že stoletja, le da se je prej izvajal na papirju (ali drugi podlagi) oziroma prenosu informacij prek poljubnega nosilca (radijski valovi na primer). Šifriranje ima še posebej pomembno vlogo pri vprašanjih nacionalne varnosti, zato pogosto zaide v roke vojaškim organizacijam in drugim varnostnim službam. Med drugo svetovno vojno je zaveznikom povzročal precejšne težave nemški kodirni sistem Enigma, katerega naloga je bila maskirati sporočila, namenjena koordinaciji vojaških enot, predvsem tistih na odprtem morju. Šlo je za sistem valjev, ki so se obračali glede na začetno namestitev. Rezultat mehanskega dela valjev je bil izhodni navidezno naključni niz znakov (tajnopis). Da bi prejemnik (druga nemška enota) razvozlal sporočilo, je bilo treba odkodirno napravo (valje) nastaviti na začetno vrednost (torej ekvivalentno namestitvi za kodiranje) in spustiti celoten niz skozi obdelavo. Rezultat je predstavljal izvirno sporočilo (čistopis).
Pri digitalnem podpisu je osrednji del postopka ustvarjanje prstnega odtisa zapisa in zaščita odtisa z asimetričnim šifriranjem. Pri preverjanju je treba ustvariti prstni odtis z enakim algoritmom in ga primerjati z odšifriranim prvotnim prstnim odtisom. Če se ujemata, je podpis veljaven.
Da bi zavezniki lahko razvozlali šifrirana sporočila nemške vojske, so se najprej morali dokopati do ustroja Enigme in do začetnih namestitev stroja. Pristopa k reševanju problema sta bila dva: ugotoviti delovanje sistema na podlagi prestreženih (šifriranih) sporočil in znane vsebine ali pa se enostavno dokopati do vzorca sistema. Zavezniška vojska se je iz praktičnih razlogov odločila za slednji korak in tudi uspešno razbila nemški šifrirni sistem (postopek ugotavljanja začetne namestitve so tudi naknadno razvozlali). Seveda je bilo treba za tak poseg zagotoviti popolno tajnost in prepričati nasprotnika, da sistema nimajo in ne razumejo, kako nemški šifrirni sistem deluje. To se je tudi v resnici zgodilo in pomembno vplivalo na tok zgodovine. Nasprotno so Američani vse do konca vojne uspešno skrivali svoj sistem šifriranja, ki je temeljil na mešanici besed indijanskega jezika.
Danes delovanje sistema Enigma nadomeščajo matematični algoritmi, ki operirajo nad nizi bitov. V zgodovini varnostne tehnologije se je zvrstilo več različnih specifikacij algoritmov in tudi danes se za različne potrebe uveljavljajo različni šifrirni algoritmi. Vsi seveda niso enako učinkoviti in novi vedno znova izpodrivajo zastarele in odslužene algoritme. Vlogo začetnih nastavitev kriptografskih sistemov so prevzeli šifrirni ključi, ki so pomemben element v procesu šifriranja podatkov. Je pa prišlo do bistvene spremembe v primerjavi s sistemi iz časa druge svetovne vojne. V nasprotju s temi so današnji kriptografski algoritmi javno znani (razen specializiranih algoritmov, razvitih za posebne namene), kar pomeni, da vemo natančno, kako delujejo. Breme je tako prestavljeno na začetne nastavitve oziroma šifrirne ključe in nastavitvene (inicializacijske) vektorje.
Simetrija in asimetrija
Za šifriranje podatkov torej potrebujemo dva ključna elementa: algoritem, ki poljuben niz znakov obdela, in začetno nastavitveno vrednost za obdelavo (ključ in po potrebi inicializacijski vektor). Medtem ko za šifrirnimi algoritmi stoji nabor matematičnih ali logičnih operacij, predstavlja ključ določeno vhodno (številčno ali vektorsko) vrednost. Niz znakov skupaj s ključem vstopi v proces obdelave, rezultat pa je za opazovalca navidezno naključni niz znakov.
Digitalno potrdilo povezuje imetnika z javnim ključem. Iz potrdila, ki ga izda overitelj, lahko razberemo ime, namen, javni ključ in druge podatke.
Pri odšifriranju gre za nasprotni proces, pri katerem šifrirani niz skupaj s ključem vstopa v matematični algoritem, katerega rezultat je prvotno sporočilo. Ker je sam proces (algoritem) navadno znan, temelji varnost na šifrirnem ključu oziroma nastavitveni vrednosti. Šifrirni ključ mora poznati tako tisti, ki podatke šifrira, kot tisti, ki podatke prejme (odšifrira). Postopek, v katerem je uporabljen enak ključ, imenujemo simetrično šifriranje.
Pri simetričnem šifriranju sta torej nastavitveni vrednosti za šifriranje in odšifriranje enaki. To pomeni, da se morata subjekta najprej dogovoriti, kakšen ključ bosta za zaščito podatkov uporabila. Če gre za zaključeno ali zaprto skupino oziroma bilateralni odnos, dogovor ne predstavlja posebnega problema. Nasprotno se stvar lahko precej zaplete, ko je v postopek vpletenih več individualnih subjektov. Posledično bi simetrična kriptografija zahtevala distribucijo vseh možnih bilateralnih ključev med vpletene strani, a to je s samega organizacijskega vidika zapletena reč, saj pomeni, da bi za varno izmenjavo podatkov z vsemi vpletenimi potrebovali enako količino šifrirnih ključev.
Problem elegantno rešuje asimetrična kriptografija, ki temelji na uporabi različnih ključev, oziroma različne začetne nastavitvene vrednosti. Če smo podatke šifrirali z enim ključem, jih je mogoče odšifrirati samo s pripadajočim komplementarnim ključem. Taka ključa označujemo kot par asimetričnih ključev.
Infrastruktura javnih ključev zajema različne elemente. Osrednjo vlogo igra izdajatelj potrdil ali overitelj, ki med drugim skrbi za register izdanih potrdil in osveževanje podatkov o izdanih potrdilih.
Problema asimetričnega šifriranja sta se prva lotila advokat W. Diffie in inženir M. Hellman, ki sta leta 1976 objavila koncept javne kriptografije. Eden izmed rezultatov njunih raziskav danes poznamo kot algoritem Diffie-Hellman. Čez približno leto dni jima je sledila trojica Ron Rivest, Adi Shamir in Leonard Adleman in predstavila algoritem RSA (kratica je povzeta po začetnicah priimkov), temelj današnjih kriptografskih aplikacij.
Asimetrična kriptografija temelji na kompleksnih asimetričnih algoritmih, ki operirajo z velikimi praštevili (glej okvirček). Par ključev je vedno ustvarjen tako, da ni mogoče enega izpeljati iz drugega. V praksi označimo par ključev kot zasebni in javni ključ. Gre za koncept, pri katerem uporabnik operira z obema ključema, s tem da zasebnega varno hrani pri sebi, medtem ko je komplementarni javni ključ objavljen v vsem dostopnem imeniku ključev.
Seveda ima vsaka prednost tudi slabo stran. Asimetrično kriptografijo je zaradi kompleksnih algoritmov nekoliko nerodno uporabljati. Šifriranje na podlagi dveh različnih ključev je matematično nadvse zahteven proces in zato tudi dolgotrajen. Če bi želeli asimetrično šifrirati celotno sporočilo, bi trajalo preveč časa, zato so se uveljavili koncepti t. i. kombinirane kriptografije, kjer so izrabljene prednosti simetričnih in asimetričnih algoritmov.
V času razvoja javne kriptografije so bili predstavljeni številni algoritmi. Vsi seveda niso bili vedno enako učinkoviti, tako da so odslužene nadomestili novi. V simetrični kriptografiji še danes prevladujejo predvsem IDEA (International Data Encryption Algorithm), DES (Data Encryption Standard) in njegova močnejša izpeljanka 3DES (Tripple DES) oziroma med novejšimi AES (Advanced Encryption Standard). Kot bomo videli v nadaljevanju, sam postopek šifriranja in digitalnega podpisovanja določata uporabo specifičnih algoritmov, torej okvir, v katerega so vpeti postopki šifriranja, katerih zamenjavo narekuje razvoj informacijskih sistemov in ugotovljene pomanjkljivosti. Če se s časom izkaže, da kateri izmed algoritmov ni več zanesljiv, ga je treba zamenjati z novim, močnejšim algoritmom. Med uveljavljene asimetrične algoritme danes štejemo DH (Diffie-Hellman), RSA in DSA. Tu velja omeniti še algoritme na podlagi eliptičnih krivulj, katerih dobrodošla lastnost je neprimerno hitrejše izvajanje. Danes jih v praksi bolj redko srečamo (za kar so med drugim krive tudi patentne zaščite).
Šifriranje
Zaščita podatkov poteka na podlagi dveh temeljnih korakov. Niz znakov je treba sprva obdelati tako, da je rezultat navidezno naključen niz. Ker gre lahko tudi za daljše nize oziroma večje količine podatkov, je asimetrična kriptografija neprimerna, saj bi se proces vlekel v neskončnost.
Pri preverjanju digitalnega podpisa si moramo priskrbeti vse kritične informacije o podpisu oziroma potrdilu, sicer rezultatu postopka ne moremo zaupati.
Problem rešimo s kombinirano uporabo simetričnega in asimetričnega postopka, tako da najprej ustvarimo simetrični ključ za enkratno uporabo (dejansko lahko isti ključ uporabimo tudi večkrat). Niz nato na podlagi ustvarjenega ključa simetrično šifriramo z ustreznim algoritmom. Prejemnik šifriranih podatkov torej potrebuje identifikacijo uporabljenega algoritma in simetrični ključ. Slednjega pred prenosom zaščitimo z asimetričnim postopkom, torej s prejemnikovim javnim ključem. Ta bo lahko dešifriral simetrični ključ samo z zasebnim ključem.
Pri šifriranju podatkov lahko nastane nevarnost razbijanja zaščite na podlagi ponavljajočih se vzorcev. Če pošiljatelj uporablja vedno iste nize čistopisa (primer polj "from" in "to"v elektronskih sporočilih), lahko nekdo tretji na podlagi znanega dela čistopisa in prestreženega tajnopisa ugotovi vrednost uporabljenega ključa. Zato je smotrno pred samim šifriranjem vključiti spremenljivo nastavitveno vrednost ali t. i. inicializacijski vektor.
Za varno izmenjavo podatkov se moramo torej dogovoriti o uporabljenih algoritmih in zaščititi šifrirne parametre (ključe, inicializacijske vektorje). Kombiniran postopek je neprimerno hitrejši od postopka, pri katerem bi uporabili zgolj asimetrično kriptografijo, saj je simetrični ključ navadno dolg 128 bitov (ali več, odvisno od stopnje varnosti). Seveda se je mogoče razbijanja šifriranega sporočila vedno lotiti, in sicer na dva načina: z razbijanjem asimetrične zaščite, s čimer se dokopljemo do simetričnega ključa, ali pa z neposrednim razbijanjem simetrične zaščite. Da bi se ognili takim napadom, je smotrno uporabljati primerno dolge nastavitve vrednosti, ki bi poizkus zloma zaščite zavlekle v časovno prezahtevno in neracionalno operacijo.
Digitalni podpis
Digitalni podpis je podoben postopek, ki temelji na kombinaciji asimetričnih algoritmov in funkcije zgoščevanja. Ker pri podpisovanju ne gre primarno za zaščito vsebine pred vpogledom, temveč predvsem za povezavo podpisnika z vsebino in zaščito vsebine pred spreminjanjem, sam proces temelji na izdelavi prstnega odtisa podatkov.
Prstni odtis je nekakšen izvleček podatkov, ki je vedno enoličen (vsakemu dokumentu pripada unikaten prstni odtis). Prstni odtis je tudi neprimerno manjši od samih podatkov, navadno dolg 160 bitov (ali več, odvisno od zahtevane stopnje varnosti). Tak enoličen in skrajšan niz znakov pridobimo s pomočjo zgoščevalne funkcije. Ker gre za enosmerni proces, ni mogoče na podlagi izhodnega niza izluščiti izvirnih podatkov, saj se v procesu izgubi večina informacij. Ker je prstni odtis za vsak niz edinstven, vsaka najmanjša sprememba v nizu odseva v drugačnem (napačnem) prstnem odtisu.
Pri digitalnem podpisovanju gre torej za dva temeljna koraka. Najprej je treba vhodni niz spustiti skozi zgoščevalno funkcijo, ki nam kot rezultat predloži enoličen prstni odtis. Ta prstni odtis je treba pred pošiljanjem zaščititi z asimetričnim šifriranjem. Prstni odtis torej šifriramo z zasebnim ključem, saj je sam digitalni podpis predmet preverjanja poljubnega prejemnika. To opravimo z uporabo pošiljateljevega javnega ključa. Prejemniku tako pošljemo poleg informacije o uporabljenem algoritmu čistopis (dokument) in šifriran prstni odtis.
Na prejemnikovi strani je treba iz prejetega čistopisa (dokumenta) najprej ustvariti prstni odtis s pomočjo enake zgoščevalne funkcije. Dobljeni prstni odtis nato primerjamo s prejetim in s pošiljateljevim javnim ključem odšifriranim prstnim odtisom. Če se oba ujemata, je podpis veljaven.
Poleg povezovanja podpisnika z vsebino ima digitalni podpis še eno dobrodošlo lastnost. Če se med pošiljanjem spremeni vsebina dokumenta, bo prstni odtis, ustvarjen na prejemnikovi strani, drugačen. S tem zagotovimo zaščito celovitosti podatkov oziroma zaščito vsebine pred spreminjanjem.
Enako kot velja za proces šifriranja, mora prejemnik pridobiti informacije o uporabljenih algoritmih in javnem ključu, da bi sploh lahko preveril podpis. Digitalni podpis zato spremlja tudi informacija o samem podpisu. Ta je lahko ujeta v formatu ASN.1 oziroma novejšem standardu XML. Prvega poznamo kot standard PKCS#7 (Public Key Cryptographic Standard 7), drugi pa sliši na ime XMLDSig (XML Digital Signature) ali, v razširjeni izvedenki, XAdES (XML Advanced Electronic Signature). Poleg surove informacije lahko podpisu priložimo tudi komplementarno informacijo za preverjanje, politiko podpisovanja, časovne žige ipd.
Pri preverjanju digitalnega podpisa je namreč pomembno, da so vsi elementi na mestu. Ker je lastništvo javnih ključev vezano prek digitalnih potrdil, se je treba pred preverjanjem prepričati o veljavnosti uporabljenega javnega ključa. Ta je namreč lahko prav tako predmet manipulacije, če nekdo pridobi pripadajoči zasebni ključ; s tem postane veljavnost podpisa vprašljiva. Postopek preverjanja podpisa je zato silno občutljiv, saj zahteva brezkompromisno verodostojnost vseh elementov (digitalno potrdilo, veriga potrdil, avtoriziran čas preverjanja itd.), sicer podpisu ne moremo zaupati.
Digitalno potrdilo
Temeljni podatek pri uporabi kriptografskih funkcij je lastništvo zasebnega in javnega ključa. Če bi želeli vzpostaviti transparentno infrastrukturo, katere uporabniki ne bodo imeli težav z izmenjavo kriptografskih elementov, je treba določiti univerzalni sistem povezovanja identitet z varnostnimi parametri.
Digitalno potrdilo predstavlja enolično povezavo med imetnikom in javnim ključem. Zajema vse osnovne podatke o imetniku (ime ali naziv, uporabljene algoritme, namen uporabe ključev itd.) in hkrati tudi sam javni ključ. Digitalna potrdila so navadno javno objavljena (če ne gre za zaprt krog uporabnikov) in omogočajo uporabnikom, da se prepričajo o identiteti podpisnika ter dokopljejo do javnega ključa za potrebe šifriranja ali podpisovanja.
Seveda mora za podatke v potrdilu in povezavo imetnika z javnim ključem jamčiti določena avtoriteta. Taka avtoriteta izdaja potrdila na podlagi zahtev uporabnikov in jih tudi digitalno podpiše, S tem zagotovi verodostojnost samega potrdila. Digitalno potrdilo lahko torej razumemo kot nekakšno osebno izkaznico, ki nas povezuje z osnovnimi kriptografskimi elementi in posledično z našo navidezno identiteto (pri postopkih preverjanja subjektov).
Digitalna potrdila so na voljo v različnih oblikah in formatih. Splošno uveljavljeni standard je X.509v3 (različica 3). Poleg klasičnih potrdil so nam na voljo tudi atributna potrdila, katerih vloga ni več hranjenje javnega ključa, temveč povezovanje imetnika z njegovimi pravicami. Čemu to služi? Gre predvsem za okoliščine, ko je, recimo, posamezniku dodeljena določena funkcija, katere veljavnost s časom preneha. Če bi namreč hoteli uporabniku časovno omejiti določeno vlogo, je nespametno časovno omejiti samo digitalno potrdilo. Problem elegantno rešuje atributno potrdilo, ki je lahko omejeno na točno določen čas ali za določeno funkcijo. Seveda je postopek verifikacije nato vezan na pravo potrdilo, iz katerega vloga uporabnika in časovna omejitev nista razvidni.
Nadalje lahko delimo potrdila na taka z enim in taka z dvema paroma ključev. Dva para ključev sta pomembna predvsem v okoljih, kjer je treba zaradi redundance hraniti tudi uporabnikov zasebni ključ. Ker gre za element, ki je sicer v celoti v lasti posameznika, zasebnega ključa za potrebe podpisovanja pod nobenim pogojem ne bi smeli hraniti drugje kakor pri uporabniku. Ne nazadnje potrebujemo za preverjanje podpisa le uporabnikov javni ključ. Pri šifriranju je drugače, ko so v procesu odšifriranja ključni uporabniški zasebni ključi. Ker se ti lahko tudi izgubijo (izguba pametne kartice, pokvarjen disk in podobno), so lahko šifrirani podatki za vedno izgubljeni (le če se lotimo razbijanja zaščite, a to je navsezadnje preveč zahtevno in dolgotrajno opravilo). Take zagate rešujejo postopki rekonstrukcije zasebnega ključa (key escrow). Potrdila z dvema paroma ključev zato ločijo uporabo ključev glede na namen. Pri paru ključev za podpisovanje je uporabnik edini, ki poseduje zasebni ključ, medtem ko pri paru ključev za šifriranje overitelj hrani tudi rezervno kopijo ali podatke za rekonstrukcijo. Slovenski javni overitelj Sigen-CA, recimo, loči spletna potrdila, taka z enim parom, in osebna potrdila, taka z dvema paroma. Slednja so seveda dražja in zahtevajo uporabo posebne opreme za podpisovanje in šifriranje.
Infrastruktura
Omenili smo, da je izdaja digitalnih potrdil postopek v rokah verodostojne avtoritete. Agencija za izdajo potrdil (Certification Authority, CA) oziroma overitelj prejema zahtevke za ustvarjanje potrdil in skrbi za infrastrukturo javno dostopnih podatkov. Vloga agencij CA je lahko javnega ali popolnoma zasebnega značaja. To pomeni, da poznamo tudi zaprte kroge uporabe infrastrukture PKI, kjer je uporaba namenjena omejenem številu uporabnikov in so pravila določena onkraj zakonodaje (sistemi elektronskega bančništva na primer).
Overitelji prek spletnih ali drugih vmesnikov prejemajo zahteve uporabnikov za izdajo digitalnega potrdila. Formalno se celoten proces začne z oddajo zahtevka (v pisni obliki) za izdajo digitalnega potrdila. Ta na primer vključuje ime uporabnika oziroma splošni naziv, naslov in druge podatke (odvisno od namembnosti digitalnega potrdila in zahtev overitelja). Na podlagi vložene zahteve je pripravljen elektronski zahtevek, s katerim lahko uporabnik prek spletnega vmesnika prevzame potrdilo. Pri slednjem koraku uporabniški spletni vmesnik ali varnostni modul (pametna kartica) ustvari par ključev in posreduje javni ključ overitelju, ki nato izda potrdilo.
Politika overitelja natančno določa celoten proces. Navadno je treba (pisni) zahtevek oddati lastnoročno, da lahko overitelj dejansko identificira uporabnika. S tem namenom je overitelj vpet v infrastrukturo geografsko razpršenih registracijskih izpostav. Te opravljajo postopek preverjanja uporabnikov in njihovih zahtevkov. Javni overitelj Sigen-CA v ta namen uporablja upravne enote po Sloveniji.
Informacije o izdanih potrdilih so javnega značaja (razen v zaprtih krogih), saj med drugim vključujejo kritični element - javni ključ. Dostop do registra potrdil je tako omogočen prek spletnega omrežja, do katerega se lahko dokoplje uporabnik sam ali mu pomaga aplikacija za šifriranje podatkov in digitalno podpisovanje.
Potrdila in pripadajoči zasebni ključi so seveda predmet različnih manipulacij. V najslabšem primeru lahko pride do kraje zasebnega ključa, s tem pa je neposredno ogrožena varnost. Če pride do česa takega (izguba zasebnega ključa), je treba potrdilo nemudoma preklicati. Informacijo o preklicanih potrdilih overitelj osvežuje v registru preklicanih potrdil (Certificate Revocation List, CRL). Frekvenca osveževanja je seveda zelo pomembna in praksa veleva osveževanje vsakih nekaj ur. Pri preverjanju varnostnih funkcij je vsekakor treba upoštevati podatek o preklicanih potrdilih, kar je običajno naloga varnostnih aplikacij. Da bi postopek čim bolj poenostavili, je bil razvit protokol za preverjanje veljavnosti potrdil (On-line Certificate Status Protocol, OCSP). Prek tega lahko aplikacija (uporabnik) samodejno preveri, ali je potrdilo še veljavno ali ne.
Da bi se ognili nevšečnostim, hranimo zasebne ključe na varnih nosilcih in ne na disku ali disketi. Pametne kartice (Smartcard) so zasnovane na kriptografskih vezjih, katerih naloga je izvajati temeljne varnostne funkcije. To pomeni, da je zasebni ključ varno shranjen in kartice nikoli ne zapusti, tudi ko podpisujemo ali dešifriramo podatke. Naprednejši sistemi obsegajo še dodatne varnostne funkcije, katerih naloga je kar največja zaščita pred dostopom do zasebnega ključa (tudi fizično). Strojni varnostni moduli (Hardware Security Module, HSM) igrajo pomembno vlogo v kompleksnih sistemih, kjer gre za določen avtomatiziran postopek, na primer izdajo elektronskih računov. Nemogoče je namreč pričakovati, da bo izdajatelj podpis vsakega računa ročno posebej odobril. Sistem za izdajo elektronskih računov je tako samostojna enota, ki s pomočjo modula HSM izvaja namenske operacije.
Celotno varnostno infrastrukturo danes označujemo kot infrastrukturo javnih ključev (Public Key Infrastructure, PKI). Gre za pomembno vlogo več igralcev, ki so lahko javnega ali zaprtega značaja. Pravila igre v javnih sistemih določa zakonodaja (Zakon o elektronskem poslovanju in elektronskem podpisu, ZEPEP) in različni podzakonski akti. V zaprtih sistemih je sicer podobno, a se tja zakon ne vtika in vzdrževalec infrastrukture določa svoja pravila igre. Značilen zgled so, recimo, sistemi za elektronsko bančništvo (kot ga je še do nedavna vzdrževala Nova Ljubljanska banka), kjer izbor ustrezne tehnologije, opreme in fizične zaščite dostopa do opreme stvar vzdrževalca.
Zanesljivost
Žal absolutne varnosti ni niti na papirju, kaj šele v praksi. Vedno se ji lahko zgolj približamo in prav to je tudi namen infrastrukture PKI in njenih elementov. Poizkuse zloma zaščite lahko na splošno razdelimo v dve skupini: teoretične in praktične. Teoretični napadi se ukvarjajo z iskanjem nekaterih šibkih točk algoritmov, torej prodiranja v samo jedro algoritma in programske opreme (lep zgled za to je hiba spletnega odjemalca Netscape, ki je v zgodnjih različicah operiral z zelo ozkim naborom naključno generiranih števil) ali iskanjem vrednosti uporabljenih nastavitvenih vrednosti (ključi, inicializacijski vektorji itd.). Princip s preizkušanjem vseh mogočih vrednosti označujemo kot napad s silo (brute force attack). Drugače velja za praktične napade, kjer se poizkuša napadalec tako ali drugače dokopati do zasebnih ključev, oziroma povzroči zmedo med uporabniki z razpošiljanjem ponarejenih ključev.
Težava pri teoretičnih napadih je kompleksnost algoritma in velikost uporabljenih ključev. Simetrični algoritmi operirajo danes s 128 bitnimi ključi. Teh ključev je:
2128 = 340 282 366 920 938 463 463 374 607 431 768 211 456.
Napad s silo je torej praktično težko izvedljiv, saj bi preverjanje vzelo neskončno veliko časa. In četudi bi se izkazalo, da je mogoče v realnem času razbiti simetrično zaščito, lahko uporabimo vedno daljše ključe, kjer časovna spremenljivka eksponentno narašča.
Asimetrični ključi
Ustvarjanje asimetričnega para ključev si najlaže ponazorimo z danes najpogosteje uporabljenim asimetričnim algoritmom. Delovanje algoritma RSA temelji na paru zelo velikih praštevilih p in q. Izbrani praštevili zmnožimo tako, da dobimo produkt n=pq. Sledi iskanje naravnega števila e, ki je manjše od n in nima s produktom (p-1)(q-1) nobenega skupnega delitelja razen 1 (produkt (p-1)(q-1) uporabljamo namesto produkta pq zaradi večje zanesljivost).
Ko smo našli ustrezno število e, je treba poiskati še tako število d, da bo izraz (ed-1) deljiv z izrazom (p-1)(q-1). Vrednosti e in d predstavljata javni in zasebni komponenti. Šele par n in e tvorita pravi javni ključ, par n in d pa zasebnega. Števili p in q lahko nato preprosto zbrišemo ali ju shranimo skupaj z zasebnim ključem, a nikakor z javnim (sicer se lahko prek javnega dokopljemo do zasebnega ključa). Velika praštevila in kompleksen postopek onemogoča razvozlati vrednost števila d samo iz javnega ključa oziroma para števil n in e ali, povedno drugače, ugotoviti zasebni ključ na podlagi javnega.
Druga možnost je razbijanje asimetričnega ključa. V tem primeru je vse skupaj še bolj nerodno, saj delamo z neprimerno daljšimi ključi, od katerih pa enega (javnega) kljub vsemu poznamo. Postopek onemogoča praktični poseg izračunavanja zasebnega ključa iz javnega, saj gre pri ključih, dolgih 1024 bitov, za produkte velikostnega reda 300 in več decimalnih mest. Podobno kakor simetrične ključe lahko tudi asimetrične poljubno podaljšamo. Toda vsak dodatni bit občutno obremenjuje proces šifriranja in odšifriranja, to pa seveda ni zaželeno. Ustrezna izbira dolžine ključa se torej pozna na razmerju med razpoložljivo zmogljivostjo in stopnjo želene varnosti.
Zaradi nezadržnega tehnološkega razvoja je uporaba asimetričnih ključev časovno omejena. Vsa digitalna potrdila imajo omejen čas veljavnosti, ki je v praksi pet let ali več (odvisno od namena uporabe in dolžine ključev). Časovna omejitev ni zgolj posledica ranljivosti algoritmov, temveč tudi statističnega dejstva, da verjetnost izgube ali zlorabe zasebnega ključa s časom raste. Omejitev časovne veljavnosti potrdil seveda zelo vpliva na samo uporabo. S prenehanjem veljavnosti potrdila nehajo veljati tudi vsi podpisi, ustvarjeni na podlagi tistega potrdila.
Varni kanal
Varen kanal oziroma sloj varnih vtičnic (Secure Sockets Layer, SSL) je danes najpogosteje uporabljen koncept javne kriptografije. Komunicirajoči stranki vzpostavita varen kanal na podlagi simetričnega šifriranja, pri čemer se morata predhodno dogovoriti o uporabi ustreznega šifrirnega ključa. Sam postopek lahko vključuje overjanje uporabnika ali pa ne.
Ko odjemalec vzpostavi prvi stik s strežnikom, mu ta v odgovor povrne javni ključ (ali digitalno potrdilo). Odjemalec nato ustvari ključ za enkratno rabo ali t. i. sejni simetrični ključ. Ta ključ šifrira z javnim ključem, pridobljenim v prvem koraku, in ga pošlje strežniku, ki poseduje ustrezen zasebni ključ za odšifriranje. Ko je (simetrični) ključ enkrat odšifriran, lahko steče varna komunikacija na podlagi simetričnega ključa, ustvarjenega za določeno sejo. V primeru overjanja uporabnika ta na začetku postopka s svojim zasebnim ključem podpiše niz znakov, na podlagi katerega se strežnik lahko prepriča o verodostojnosti identitete uporabnika.
Ta težava resno omejuje uporabo infrastrukture PKI. Zakon in tehnološke direktive zato predvidevajo vnovično apliciranje podpisov pred iztekom veljavnosti potrdila ali pa uporabo časovnega žiga. Slednje dejansko rešuje problem in je tesno povezano z elektronskimi arhivi, a to je že druga zgodba.
Reševanje problemov
Bralcu se verjetno dozdeva, da je celoten koncept PKI precej kompleksen in se zapleta v lastne zanke (omejena časovna veljavnost potrdil, razpršena infrastruktura itd.). V tem je del resnice, ki je tudi delno vplivala na vpeljavo varnostnih mehanizmov. Seveda naj bi bilo vpeljevanje varnosti naloga aplikacij v rokah uporabnikov, toda kompleksno zastavljeni koncepti (ki rešujejo kompleksne varnostne probleme) so vplivali na omejen razvoj in izvedbo le teh. V praksi so se funkcionalnosti PKI zato prijele zgolj v namenskih konceptih, kot so varen kanal (glej okvirček), zaprte skupine uporabnikov in elektronsko bančništvo.
Potencialno rešitev iz zagate ponujajo spletne storitve (web services) na podlagi razširjenega označevalnega jezika (eXtensible Markup Language, XML). Sistem za upravljanje s ključi (XML Key Management System, XKMS) prevzema precejšen del bremena infrastrukture PKI, saj olajša razvoj in izvedbo varnostnih aplikacij s prenosom večjega dela izvajanja varnostnih funkcij na samo storitev. Koncept spletnih storitev je bil v osnovi začrtan okoli varnostnih temeljev, zato je XKMS tudi ena izmed prvih specificiranih storitev na sploh.
XKMS rešuje številne probleme PKI in olajša delo uporabnikom oziroma odjemalcem. Gre za storitev, katere naloga je zbirati in upravljati ključne podatke in informacije, tako pri registraciji uporabnikov ali izdaji digitalnih potrdil kot samem preverjanju varnostnih atributov (podpisov). XKMS je centralna dostopna točka funkcionalnosti PKI - centraliziran postopek zbiranja in posredovanja ključnih referenc ter izvajanja nabora funkcij. Eden izmed temeljnih ciljev storitve XKMS je bil prav dostop široke palete naprav in sistemov (ročni računalniki, mobilni telefoni, namizni računalniki ipd.) do infrastrukture PKI, ne glede na njihovo zmogljivost. XKMS s standardiziranimi metodami spletnih storitev tudi poenostavlja ustvarjanje aplikacij in vpeljavo ciljnih varnostnih rešitev.
Časovni žig
Časovni žig (Time Stamp, TS) je posebna izpeljanka digitalnega podpisa. Tak podpis poleg drugih informacij vključuje tudi natančen čas ustvarjanja podpisa. Seveda je treba čas črpati iz natančnega in verodostojnega časovnega vira (atomska ura).
Časovni žig je pomemben predvsem takrat, kadar gre za dokazovanje obstoja določenega dogodka na časovni premici (recimo natančen čas oddaje napovedi za dohodnino). Ker gre za avtoriziran postopek, ostaja časovno žigosanje navadno v domeni ponudnika overiteljskih storitev. Protokol, ki izvaja časovno žigosanje (Time Stamp Protocol, TSP), temelji na posebnih žetonih ali zahtevkih za časovno žigosanje. Tak zahtevek vsebuje prstni odtis zapisa (dokumenta namenjenega časovnem žigosanju), ustvarjen na strani odjemalca, in druge relevantne podatke o uporabniku. Overitelj prstnemu odtisu priloži natančen čas in vse skupaj podpiše.
Časovno žigosanje ne temelji zgolj na principu digitalnega podpisovanja. Alternativni sistemi predvidevajo uporabo kompleksnih shem povezovanja prstnih odtisov (hash linking). Gre za postopke, pri katerih so prstni odtisi med seboj povezani v nekakšno drevo. Korenski prstni odtis lahko ustvari ponudnik časovnega žigosanja v določenem času in vsi nadaljnji odtisi temeljijo na vrednosti predhodnega odtisa dejanskega niza, ki je predmet žigosanja ter dejanskega časa žigosanja. Povezovanje prstnih odtisov je lahko zelo kompleksno in je ponekod tudi zaščiteno s patenti.
Centraliziran pristop spletne varnostne storitve je učinkovita alternativa medtočkovnega (point-to-point) koncepta, pri katerem mora odjemalec vzpostavljati individualne relacije s komunicirajočimi subjekti. Če bi želeli vzpostaviti varno izmenjavo podatkov z drugim uporabnikom, se je treba pretolči čez širok nabor funkcij in elementov (iskanje digitalnega potrdila prejemnika, identifikacija uporabljenih varnostnih algoritmov itd.). Centraliziran sistem nam omogoči identificirati ključne elemente skozi eno samo dostopno točko. Taki sistemi so lahko vpeti v širšo infrastrukturo med seboj povezanih storitev in sestavljajo mrežo zaupanja (network of trust) pri varni izmenjavi podatkov.
Podpis XML
O digitalnem podpisu na podlagi sintakse XML (XMLDsig) smo v Monitorju že pisali. Gre za interpretacijo podpisa z uporabo oznak jezika XML in je nastal kot odgovor na vprašanje o varnosti spletnih storitev. Sporočila v formatu XML tako ni potrebno spreminjati ampak podpis preprosto dodamo kot dodaten nabor oznak in vrednosti. Informacije o uporabljenih algoritmih, javnem ključu, prstni odtis in sam podpis postanejo tako del dokumenta.
Razširjena izpeljanka podpisa XML (XML Advanced Electronic Signature, XAdES), kot ga predpisuje evropsko standardizacijsko telo ETSI, temelji na osnovni sintaksi XMLDsig. Tej je dodan še širok nabor razširitev, ki vključujejo politiko podpisovanja, komplementaren podpis, kraj ustvarjanja podpisa, vlogo podpisnika, reference za preverjanje veljavnosti potrdila in verige potrdil ali pa kar celotno verigo potrdil, časovni žig dokumenta ter časovni žig referenc in podpisa. XAdES tako že rešuje nekatere probleme časovne omejitve veljavnosti podpisa na podlagi časovnega žigosanja. Ta podaljšuje življenjsko dobo digitalnega podpisa in je temelj elektronskega arhiviranja (elektronsko podpisanih) dokumentov.
XKMS je zasnovan okoli dveh ključnih protokolov: storitev za registracijo ključev (XML Key Registration Service Specification, X-KRSS) in storitev informiranja o ključih (XML Key Information Service Specification, X-KISS). V sami osnovi nadomešča X-KISS klasični imenik ključev v infrastrukturi PKI. Uporabnikom omogoča identificirati ključne parametre pri varni komunikaciji s subjekti v omrežju. Seveda je treba pri iskanju preveriti verodostojnost podatkov, to pa je lahko zopet ena izmed funkcij storitve. Funkcijo registracije in upravljanja varnostnih elementov (potrdila, ključi itd.) opravlja X-KRSS. Nabor štirih funkcij - registracija, preklic, vnovična izdaja in povračilo - zaobjemajo osnove vzpostavljanja infrastrukture PKI. Prek vstopne točke X-KRSS si uporabnik priskrbi temeljne elemente (javni in zasebni ključ, digitalno potrdilo itd.) za varno komunikacijo. Kot velja za številne varnostne koncepte, je tudi storitev XKMS neodvisna od uporabljenih tehnoloških standardov in rešitev. Storitev podpira širok nabor varnostnih elementov (X.509, PGP, itd.) in se bo v prihodnje zaradi vse večjih potreb še razvijala.
Storitev XKMS uporabniku poenostavlja marsikateri proces v okolju PKI, saj predstavlja osrednjo točko, prek katere lahko prestrežemo pomembne podatke in izvajamo določene funkcije v infrastrukturi PKI.
Varnostne storitve so že ubrale tudi individualne poti pri reševanju konkretnih problemov. Ena izmed občutljivejših funkcij je preverjanje veljavnosti varnostnih atributov (digitalnih podpisov na primer). Za tako kompleksno operacijo je treba zbrati brezkompromisne podatke in informacije na točki preverjanja (veljavnost potrdila, veljavnost verige potrdil, verodostojen čas itd.). Ideja sistemov za preverjanje (validacijo) je zagotoviti osrednjo točko zbiranja in preverjanja relevantnih podatkov na enem samem mestu. Sistemi lahko na podlagi zbranih podatkov opravijo celoten postopek verifikacije namesto nas in nam o uspešno ali neuspešno opravljenem postopku izdajo (kvalificirano in podpisano) potrdilo. Tak sistem poznamo kot strežnik za validacijo in overjanje podatkov (Data Validation and Certification Server, DVCS). V prihodnosti bo zagotovo igral (ali katera izmed izpeljank) zelo pomembno vlogo, saj bo uporabniku laže zaupati postopek preverjanja avtoriziranemu subjektu oziroma neke vrste elektronskemu notarju.
Kako zanesljiva je kriptografija
Pri 128-bitni dolžini simetričnih ključev gre za števila velikostnega reda 36 decimalnih mest. Če bi se lotili preizkušanja vseh mogočih kombinacij, bi za razbijanje simetrične zaščite potrebovali silno veliko časa. Recimo, da posedujemo računalnik z zmogljivostjo 1012 operacij na sekundo (trenutno najhitrejši superračunalnik zmore malo manj kot 36 × 1012 operacij na sekundo). Če bi neprestano deloval, bi tak sistem v 317 letih izvedel malo več kot 1022 operacij. V idealnem primeru (ko bi za preverjanje enega ključa računalnik izvedel eno samo operacijo, to pa, kot vemo, ni res), bi nam uspelo po 317 letih preveriti pičlih 2,939 × 10-15 odstotkov vseh možnih ključev.
Za konec
Reševanje varnostne problematike informacijskih sistemov je precej kompleksno. Tehnologija in mehanizmi, ki rešujejo probleme, so zato tudi kompleksni. Kako tako infrastrukturo pripeljati do uporabnika na prijazen in učinkovit način, je vprašanje, s katerim se tehnologi in razvijalci ukvarjajo že vsa leta.
Varnostni koncepti, algoritmi in mehanizmi na področju informacijske tehnologije so stari več desetletij Razvojni zagon so dobili z razmahom omrežij, ko je varna izmenjava podatkov postala še posebej pomembna. Nekaj algoritmov se je znašlo tudi na patentnih seznamih, a jih je čas povozil (po 25 letih patenti navadno potečejo) ali pa so se našle ustrezne nezaščitene rešitve.
Sorazmerno pozno so nekateri ključni elementi PKI dobili tudi zakonsko podlago (nacionalno zakonodajo poznamo šele od leta 2000), a temu težko pripišemo krivdo za pozno vpeljavo infrastrukture. Ključna ovira je še vedno zelo zapleten ustroj, ki je za vsakdanjega uporabnika težko dojemljiv in terja zahteven mentalni preskok. Dodaten odpor vzbuja to, da se z uporabo nekaterih funkcij, kot je digitalni podpis, dejansko formalno obvežemo na določen elektronski postopek (podpis elektronske pogodbe).
Kljub temu je varnostna tehnologija omogočila vzpostaviti nabor hvaležno sprejetih in dobro utečenih specializiranih storitev. S tem so zavrnjeni tudi vsi očitki o zrelosti uporabe. Seveda ne smemo pozabiti na to, da se bodo z nadaljnjo vpeljavo varnostne tehnologije odpirala nova (varnostna) vprašanja (arhiviranje digitalno podpisanih dokumentov na primer). Ta poizkušamo rešiti že danes, predvsem pa je vsem v interesu zagotoviti zanesljivo, varno in celovito infrastrukturo, ki bo uporabniku prinesla varnost na najvišji ravni ob nezahtevni nadgradnji trenutnega okolja. Spletne storitve so eden izmed pravih odgovorov.
Pri asimetrični kriptografiji je podobno. Do zasebnega ključa pridemo prek števila e in produkta n. Recimo, da nam nekako uspe prestreči število n (število e je del javnega ključa in ga torej ni težko dobiti). To število je produkt dveh velikih praštevil p in q, ki sta ključnega pomena pri oblikovanju zasebnega ključa oziroma števila d. Potrebujemo torej dve točno določeni praštevili, ki tvorita produkt n. Iskanje deliteljev tako velikega števila zahteva obupno veliko časa, saj potrebuje povprečen računalnik približno nekaj ur za faktorizacijo 70-mestnega števila, oziroma nekaj deset milijonov let za faktorizacijo 200-mestnega števila. Pri uporabi minimalne dolžine ključa (1024 bitov) operira RSA s produkti velikostnega reda 309 decimalnih mest.
Da bi zmanjkalo ustreznih praštevil, se nikakor ni bati, saj je to dokazal že Evklid pred 2000 leti. Teorem o praštevilih zagotavlja sledeče: količina praštevil, manjših ali enakih številu n, je enaka razmerju n/lnn. To pomeni, da nanese pri številih velikostnega reda 512 bitov okoli 10150 praštevil, kar naj bi bilo več, kot je atomov v celotnem vesolju.