Uporaba kriptografije v internetu
Kazalo   
 

Digitalni podpis

Kako 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?

  • avtentičnost (verjamemo, da je podpisnik res tisti, za kogar se proglaša);
  • podpisa se ne da ponarediti;
  • podpisa se ne da kopirati;
  • podpisanega dokumenta se ne da spremeniti;
  • podpisa se ne da zanikati (podpisnik ne more reči, da ni on podpisal dokumenta).

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.
Digitalni podpis pa je elektronski podpis, narejen z uporabo kriptografije tako, kot smo to ravnokar opisali.

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:

  • Zasebni ključ, ki ga uporablja za podpisovanje, sme poznati samo lastnik, saj bi sicer lahko tajil, da je podpisal nek dokument. Torej v nobenem primeru ne sme nihče razen lastnika imeti varnostnih kopij tega ključa. Nasprotno pa je za zasebni ključ, ki ga uporablja za šifriranje, včasih nujno, da ga pozna še kdo drug in da imamo varnostne kopije, saj bi sicer lahko izgubili pomembne podatke.
  • Javni ključ, ki pripada zasebnemu ključu za podpisovanje, se mora hraniti tudi po tem, ko ni več veljaven, da lahko preverimo podpise na starih dokumentih. Za javni ključ, ki ga uporabljajo njegovi dopisovalci za šifriranje podatkov, pa to ni potrebno. Ko preneha veljati ali se izgubi, tvori in objavi novega.
  • Ni nujno, da imamo za oba para ključev isto obdobje veljavnosti - za par za podpisovanje je to obdobje običajno daljše.
  • Ni nujno , da za oba para uporabimo isti algoritem (za podpis lahko uporabimo algoritem, ki ni primeren za šifriranje).
  • Ameriške izvozne omejitve ne veljajo za softver in opremo za podpisovanje. Izvozne omejitve za opremo za šifriranje so bile januarja 2000 zelo omiljene, vendar ne povsem odpravljene.

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, overjen s kvalificiranim potrdilom, je glede podatkov v elektronski obliki enakovreden lastnoročnemu podpisu ter ima zato enako veljavnost in dokazno vrednost.

Varen elektronski podpis pa definira takole:
Varen elektronski podpis je elektronski podpis, ki izpolnjuje naslednje zahteve:

  • da je povezan izključno s podpisnikom;
  • da je iz njega mogoče zanesljivo ugotoviti podpisnika;
  • da je ustvarjen s sredstvi za varno elektronsko podpisovanje, ki so izključno pod podpisnikovim nadzorom;
  • da je povezan s podatki, na katere se nanaša, tako da je opazna vsaka kasnejša sprememba teh podatkov ali povezave z njimi.

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.
Zamislimo pa si, da bo pri neki dolgoročni pogodbi prišlo do spora in bo sodišče 20 let po nastanku preverjalo digitalni podpis. Tu je več vprašanj:

  • Ali je imel podpisnik ob podpisovanju res tako opremo, da je izključno sam lahko uporabil zasebni ključ?
    Vdorov na delovne postaje in trojanskih konjev še dolgo ne bomo mogli zanemariti. Zato mislim, da bo resna uporaba digitalnega podpisovanja možna šele takrat, ko bo osveščenost uporabnikov višja in ko bomo imeli standardizirane čitalnike pametnih kartic v vsaki delovni postaji in bomo hranili zasebne ključe na pametnih karticah.
  • Ali je imel podpisnik ob podpisovanju res tako opremo, da je vedel, kaj je podpisal?
  • Kdo hrani javne ključe in digitalna potrdila po tem, ko niso več veljavni?
    Zdaj kaže, da bo to dolžnost overiteljev.
  • Ali je dolžina ključa zadostna, da napredek v računalništvu ni omogočil razbitja ključa?
  • Ali je uporabljeni algoritem varen?
    Lahko, da bo odkrita metoda, ki bo skrajšala sedaj veljavne postopke za iskanje zasebnega ključa. Vsi asimetrični algoritmi so le pogojno varni - pri sedanjem matematičnem znanju in zmožnostih računalnikov.
    Za SHA-1 se od leta 2005 išče bolj zanesljivega naslednika, ni pa še jasno, ali bo iz skupine SHA (SHA-256, SHA-512) ali kaj drugega.
  • Mediji za hranjenje podatkov se prehitro spreminjajo.
    Tračnih enot, ki smo jih uporabljali pred nekaj leti, skoraj ni več. Pa tudi, če se tehnologija ne bi spreminjala, zapisi na magnetnih medijih po nekem času postanejo neberljivi.

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