| Uporaba kriptografije v internetu |
Digitalni podpisKako doseči to, kar pripisujemo običajnemu podpisu na papirnem dokumentu, za datoteke? Saj jih res ni težko kopirati, spreminjati, preimenovati, spremeniti datum nastanka, ... Kaj bi moral zagotoviti postopek, da bi digitalnemu podpisu verjeli kot običajnemu?
Rešitev ponuja kriptografija. Za pojem digitalni podpis (digital signature) je več razlag. Ena možnost je podpisovanje z uporabo simetričnega algoritma s pomočjo notarja. Danes se običajno uporablja asimetrične algoritme - datoteko podpisnik zašifrira s svojim zasebnim ključem. Odšifrira jo lahko vsak, ki pozna njegov javni ključ, in to se šteje kot preverjanje podpisa. Ker pa bi bilo šifriranje dolgih datotek z asimetričnim algoritmom prepočasno, pri digitalnem podpisovanju najprej naredimo povzetek (hash) datoteke z zgoščevalno funkcijo in samo tega zašifriramo z zasebnim ključem. Prednost tega je tudi to, da tak podpis lahko dodamo nezašifrirani datoteki. Naj opozorimo na razliko med pojmoma elektronski in digitalni podpis:
Elektronski podpis pomeni kakršnekoli oznake, narejene z elektronskimi mediji, z namenom, da označijo nek dokument ali datoteko.
Pošiljatelj torej izračuna povzetek dokumenta z zgostitvenim algoritmom. Podpis naredi tako, da ta povzetek zašifrira s svojim zasebnim ključem. Odpošlje dokument, ki mu priloži podpis. Naslovnik z javnim ključem pošiljatelja dešifrira podpis, dobi povzetek. Ponovno izračuna povzetek pisma z istim zgostitvenim algoritmom kot pošiljatelj. Če se ujemata, pomeni, da je dobil tak dokument, kot ga je pošiljatelj podpisal. Poleg tega imamo na izbiro: dokument sam lahko zašifriramo (z naslovnikovim javnim ključem) ali pa tudi ne. Zaenkrat je najbolj pogosto v uporabi kombinacija SHA-1 z RSA, kot je to določeno v standardu PKCS#1. Ko je NIST objavil svoj Digital Signature Standard (DSS), ki uporablja poseben asimetrični algoritem, je dobil precej kritik od proizvajalcev, ki so večinoma že implementirali digitalni podpis z uporabo RSA. Kadar gre za dokumente, ki se ne smejo večkrat uporabiti (npr. čeke - naslovnik bi jih lahko večkrat vnovčil), mora biti del podpisa tudi čas nastanka (timestamp). To omogoča kontrolo kopiranja in lažje razčiščevanje ob morebitnih sporih. Tak podpis lahko nastane samo na računalniku, ki je časovno sinhroniziran z neodvisnim časovnim strežnikom. Ali lahko verjamemo, da je pošiljatelj ali pa prejemnik res tisti, za kogar se izdaja? Kako naj vem, da ni nekdo ponaredil n.pr.javnega ključa trgovčevega strežnika? Ta problem rešujejo digitalna potrdila javnih ključev. Digitalno potrdilo javnega ključa (public-key certificate) je javni ključ in informacija o njegovem lastniku, ki ju digitalno podpiše oseba ali institucija, ki ji zaupamo. V paketu PGP je zamišljeno tako, da si posameznik stvori verigo oseb (introducers), ki ji zaupa (osebno poznam Janeza, ta pozna Petra in mu je podpisal javni ključ, torej tudi jaz lahko zaupam Petru, ...). Drugo rešitev predstavljajo overitelji javnih ključev (certifikatske ustanove -Certification Authorities - CA). Uporabnik lahko uporablja isti par ključev za podpisovanje in za šifriranje podatkov. Vendar pa to ni dobro iz naslednjih razlogov:
Kaj pa pravni del? Ali je digitalni podpis na sodišču enakovreden običajnemu podpisu?
Slovenski zakon o elektronskem poslovanju in elektronskem podpisu v 15. členu pravi:
Varen elektronski podpis pa definira takole:
Digitalen podpis je že zdaj primeren za zaščito pri izmenjavi podatkov - n.pr. za pošiljanje podatkov iz poslovalnice v centralo, kjer jih po preverjanju podpisa shranijo in podpisa ne bodo nikoli več preverjali.
Iz tega sledi, da bo moralo biti poskrbljeno za to, da se bodo dolgoročne pogodbe in pripadajoči digitalni podpisi v nekih časovnih obdobjih prepisali na nov medij in dodal digitalni podpis, narejen po takrat najmočnejšem algoritmu - potrebovali bomo "elektronske" notarje in arhive digitalno podpisanih dokumentov. Ustanove za overjanje javnih ključev zaenkrat nimajo predvidenega takega delovanja - preverijo le, da so podatki o lastniku javnega ključa pravi in izdajo digitalno potrdilo. Kaj pa se dogaja z dokumenti, ki jih lastnik digitalnega potrdila podpisuje, ni v njihovi pristojnosti. Eden od korakov k povečanju verodostojnosti elektronsko podpisanih dokumentov pomeni časovno žigosanje. Pri tem postopku dokumentu dodamo digitalni podpis, ki povezuje čas podpisa s podatki v dokumentu. Če tak "časovni" podpis izvede nek neodvisen strežnik oziroma institucija, ki ni pod kontrolo siceršnjih podpisnikov dokumenta, ob kasnejših preverjanjih ni dvomov o tem, kdaj je bil dokument podpisan in kakšen je bil ob podpisu, če se povzetek dokumenta v žigu ujema s povzetkom, narejenim ob času preverjanja. Tako zdaj nastajajo "časovni overitelji", ki morajo ravno tako kot izdajatelji digitalnih potrdil izpolnjevati stroge varnostne ukrepe. Tak časovni overitelj od novembra 2003 deluje tudi na Ministrstvu za javno upravo (naslednik Centra Vlade RS za informatiko) kot del PKI slovenske vlade: http://www.si-tsa.si. Ni še rešeno vprašanje, kako digitalnemu podpisovanju dodati pooblastila (kdo lahko dokument podpiše in v kakšni vlogi). Lahko bi jih dodali v digitalno potrdilo kot razširitve, vendar bi potem posameznik imel preveč digitalnih potrdil in mislim, da ta rešitev ne bo sprejeta. Verjetno bo treba znotraj posameznih PKI vzpostaviti infrastrukturo pooblastil, podobno kot imamo signirne načrte v organizacijah. Čeprav je za zakon digitalni podpis pod določenimi pogoji enakovreden lastnoročnemu, bo treba še precej postoriti pri dodelavi standardov za tehnične rešitve, preden bo digitalno podpisovanje kot obvezni del elektronskega poslovanja postalo običajna praksa. Veliko obeta delo IETF in W3C na skupni nalogi XML-Signature, ki je del projekta XML - Extended Markup Language. Povezavi na zakone o elektronskem podpisu:
April 1997, dopolnjeno marca 2006 |