Aš noriu skaitmeninio parašo!

Lyrinis nukrypimas
Kas tas skaitmeninis parašas?
Rašymas
Vieną saulėtą vasaros rytą pas mane į darbo kabinetą įgriuvo amžių amžius nematytas buvęs klasės draugas Aurimas. „Žmogau, man reikia tavo pagalbos! – sušuko jis. – Aš noriu skaitmeninio parašo“. Aš suklusau. „Nenoriu atsilikti nuo gyvenimo, – porina vyrukas. – Gal gali padėti? Tu juk informacinių technologijų versle sukiesi. Žinai kas ir kaip. Aš apie skaitmeninį parašą šiek tiek girdėjau. Sako, kad ir versle labai praverčia. Padėk.“ Teks padėti. Nepaliksi juk draugo nelaimėje. „Čia mano parašas ant firminio firmos blanko, – tęsia Aurimas. – Nuskanuok, ir aš turėsiu skaitmeninį parašą. Galėsiu jį į sekretorės surinktus dokumentus dėti. Nereikės ranka pasirašinėti, ir dokumentai bus patvirtinti. Galima bus ir el. paštu siųsti. Ar pagelbėsi?“. Kelioms minutėms įsivyravo tyla – ne taip jau buvo paprasta į šį paskutinį Aurimo klausimą atsakyti. Ar Aurimas tikrai supranta, ko jis nori? Situacija pusiau juokinga, pusiau rimta. Ir iš tikrųjų, tokius žodžius kaip skaitmeninis parašas, sertifikatas, sertifikatų centras, X.509 standartas girdime dažnai. Su jais vis susiduriame skaitant laikraščius, žurnalus. Girdime iš kolegų. Galima, aišku, šių sąvokų išsamiau nesiaiškinti. Tačiau kartais juk smalsumas nugali! O ir protingi žmonės sako, kad, girdi, jei nesupranti apie skaitai (kalbi), tai geriau jau neskaityk (nekalbėk). Čia, turbūt, privalėčiau pasakyti, kad tie skaitytojai, kuriems Aurimo elgesys pasirodė daugiau negu juokingas, o šio straipsnelio autoriaus – nesuprantamas, turėtų straipsnelį praleisti. Ne todėl, kad tai jiems bus nesuprantama. Atvirkščiai! Jiems tai bus trivialu, neįdomu, seniai žinoma. Laikas mums grįžti prie Aurimo istorijos. Galų gale, Aurimas skaitmeninį parašą „gavo“. Nors dar ilgai kraipė galvą ir nepatikliai žvelgė į mane. Tai kaip, pagaliau, atrodo tas skaitmeninis parašas?! Atsakau. Skaitmeninio parašo supratimo pagrindai Sakykime, Aurimas siunčia el. žinutę, pvz., prekių užsakymą, savo verslo partneriui Jonui. Aurimo ir Jono noras – patikimas bendravimas. Paslapčiai išsaugoti partneriai naudoja šifravimą, t. y., žinutė neįskaitoma be specialaus rakto. Tai padaroma šifravimo algoritmais. Pavadinkime atvirkščią šifravimui veiksmą dešifravimu. Ir tik specialaus rakto turėtojas gali dešifruoti ir perskaityti užšifruotą žinutę. Naudojamas asimetrinis šifravimas. Jis šifravimo ir dešifravimo veiksmus atlieka naudodamas ne vieną, bet du šifravimo raktus: vienu raktu šifruojama, kitu – dešifruojama. Užšifruotą žinutę galima dešifruoti tik kitu poros raktu. Vienas iš poros raktų vadinamas privačiu (slaptu), o kitas – viešu. Beje, algoritmas veikia abejomis kryptimis, t. y., užšifravus žinutę viešu raktu, ji dešifruojama privačiu raktu, o užšifravus žinutę privačiu raktu, ji dešifruojama viešu raktu. Privatų raktą reikia laikyti saugioje, tik rakto savininkui prieinamoje vietoje. Viešas raktas, kaip rodo ir jo pavadinimas, yra viešai skelbiamas. Mažų mažiausiai, Aurimas, siųsdamas žinutę Jonui, privalo žinoti Jono viešą raktą. Priešingu atveju, Jonas, gavęs Aurimo užšifruotą žinutę, nesugebės jos dešifruoti. Taigi, ir perskaityti. Šifravimo raktų pora – viešas ir privatus raktai – sukuriami tam tikromis kompiuterių programomis. Savo šifravimo raktų poras turi susikurti ir Aurimas su Jonu. Aurimas, naudodamas saugų duomenų santraukos algoritmą, sukuria žinutės santrauką, tarkime 128 bitų ilgio. Tarp visų galimų žinučių ir jų santraukų egzistuoja abipus vienareikšmė atitinkamybė. Kitaip tariant, žinutę atitinka viena ir tik viena santrauka, o santrauką atitinka viena ir tik viena žinutė. Aurimas užšifruoja žinutės santrauką savo privačiu raktu. Užšifruota santrauka ir atlieka Aurimo parašo funkcijas. Atkreipsime dėmesį, kad skaitmeninis parašas yra tampriai susijęs su siunčiama žinute, ir vienas savaime yra beprasmis. Norėdamas, kad šifravimas ir dešifravimas ilgai neužtruktų, bet bendravimas išliktų patikimas, Aurimas užšifruoja skaitmeninį parašą ir siunčiamą žinutę kitu, dažniausiai daug kartų greitesniu simetriniu šifravimo algoritmu, naudodamas laikiną, tik šios žinutės siuntimo metu galiojantį, raktą (sesijos raktą). Primenu, kad simetrinio šifravimo sistemos šifravimui ir dešifravimui naudoja vieną ir tą patį raktą. Paskutinis veiksmas, kurį atlieka Aurimas – siuntimo metu galiojančio simetrinio šifravimo karto užšifravimas Jono viešu raktu. Atlikęs šiuos veiksmus Aurimas siunčia „apdorotą“ žinutę Jonui, pvz., internetu. Jonas, gavęs užšifruotą Aurimo žinutę, su savo privačiu raktu dešifruoja siuntimo metu galiojantį simetrinį šifravimo raktą, ir juo dešifruoja žinutę. Dešifravęs žinutę Jonas ją gali be kliūčių perskaityti. Bet ar tikrai šią žinutę parašė Aurimas?! Ir ar tikrai ši žinutė nebuvo pakeista?! Norėdamas atsakyti į šiuos klausimus, Jonas turi turėti viešą, taigi, neslepiamą, Aurimo šifravimo raktą. Tarkime Jonas jį turi. Jonas, naudodamas viešą Aurimo raktą, dešifruoja Aurimo privačiu raktu užšifruotą žinutės santrauką, ir naudodamas saugų duomenų santraukos algoritmą, sukuria atsiųstos ir jau dešifruotos žinutės santrauką. Jonas palygina paties gautą ir Aurimo atsiųstą žinutės santraukas. Jei jos visiškai sutampa, Jonas gali būti tikras, kad žinutę tikrai atsiuntė Jonas, ir kad žinutė po Aurimo pasirašymo nebuvo pakeista. Skaitmeninis parašas įrodo informacijos autorystę, nes skaitmeninio parašo kūrime naudojamas Aurimo privatus (slaptas!) raktas. Taigi, tik Aurimas ir tik jis galėjo pasirašyti šiuo skaitmeniniu parašu. Dar daugiau! Jei žinutė, pavyzdžiui, buvo prekių užsakymas, tai Aurimui nėra jokių vilčių išsiginti savo autorystės. Kodėl? O todėl, kad taip užšifruoti šio užsakymo santrauką galėjo tik Aurimas. Patikslinu – tik Aurimo privatų raktą turintis asmuo. Sertifikatų centrai O kodėl Jonas įsitikinęs, kad jo turimas Aurimo viešas raktas tikrai yra Aurimo?! Pasitikėjimą Aurimo raktu suteikia tam tikros įstaigos – sertifikatų centrai (angl. Certification Authorities). Taigi, norėdamas išsklaidyti Jono abejones, Aurimas privalo kreiptis į kokį nors patikimą sertifikatų centrą, pateikti jam savo tapatybę patvirtinančius dokumentus ir savo viešą raktą. Sertifikatų centras patikrina Aurimo tapatybę, ir, jeigu Aurimo pateikti identifikaciniai duomenys teisingi, išduoda sertifikatą. Sertifikate nurodomi Aurimo identifikaciniai duomenys ir jo viešas raktas. Aišku, sertifikatas nešifruojamas! O sertifikato tikrumas patvirtinamas sertifikatų centro skaitmeniniu parašu. Be to, sertifikato struktūra yra aprašyta tarptautiniame X.509 standarte. Taigi, suprantama toms programoms, kurios laikosi šio standarto. Jonui lieka tik pasirūpinti Aurimo sertifikato gavimu. Jį jis gali gauti arba iš sertifikatų centro, arba iš paties Aurimo, arba iš bet kokio kito šaltinio. Suprantamas Jono noras – įsitikinti, kad Aurimo sertifikatas yra nepadirbtas, o išduotas sertifikatų centro. Šiam veiksmui atlikti jis turi turėti sertifikatų centro pagrindinį sertifikatą (angl. Root Certificate). Juos galima susirasti, pavyzdžiui, ir naujesnių versijų Internet Explorer (Tools -> Internet Options -> Content -> Certificates -> Trusted Certification Authorities) ar Netscape Communicator (Edit -> Preferences -> Privacy&Security -> Certificates) naršyklėse. Pagrindiniu centro sertifikatu (tiksliau, pagrindiniu sertifikatų centro viešu raktu) patikrinamas Aurimo sertifikato tikrumas. Tikrinimo žingsniai yra identiški tiems žingsniams, kuriuos atliko Jonas, tikrindamas Aurimo skaitmeninį parašą. Jonas įsigyja Aurimo sertifikatą. Įsitikina jo tikrumu. O sertifikatu – ir Aurimo žinutės autoryste. Bet yra vienas neatsakytas klausimas: sertifikatas, dažniausiai, galioja tik metus, nes šifravimo raktų ilgis yra nepakankamas ilgesniam galiojimui (taip padaryta taupant šifravimo ir dešifravimo laiką). Kaip reikėtų elgtis, jei Aurimo prekių užsakymas turi juridinę galią ar vertę ilgiau negu metus?! Jonas kreipiasi pagalbos į sertifikatų centrą. Jis siunčia jiems Aurimo žinutės santrauką. Centras grąžina santrauką, santraukos gavimo datą ir laiką, centro skaitmeninį parašą. Šis trejetas vadinamas laiko žyma. Bet šį sykį pasirašymui naudojamas labai ilgas centro privatus šifravimo raktas. Jo ilgis parenkamas taip, kad laiko žyma liktų nesuklastojama pora dešimtmečių ir ilgiau. Baigiamasis žodis Aprašytu ar panašiu principu dirba SSL (Secure Sockets Layer), SET (Secure Electronic Transactions), S/MIME (Secure Multipurpose Internet mail Extensions) ir pan. protokolai. SSL, TLS (Transport Layer Security) protokolus ir kriptografines priemones realizuoja programinis įrankis OpenSSL. Sudėję HTTP ir SSL protokolus, turėsime viršutinio lygio saugų internetinį protokolą HTTPS. Susipažinimui su protokolais žr. http://httpd.apache.org/docs-2.0/ssl/ssl_intro.html. Vienas iš garsiausių pasaulyje sertifikatų centrų yra „VeriSign“. Jame galima įsigyti ir nemokamų demonstracinių sertifikatų. Turime ir savų lietuviškų sertifikatų centrų, pvz., „Elpasas“. Bėda tik ta, kad kol kas Lietuvoje nėra teisinės bazės, kurios pagrindu saugiai galėtume naudotis sertifikatų centrų teikiamomis paslaugomis. Antrame skyrelyje aprašytiems veiksmams atlikti rekomenduočiau nuostabią programą PGP (Pretty Good Privacy). Jos kūrėjas yra vienas vienintelis asmuo – Philas Zimmermannas. Bet nuo to programa tikrai nenukentėjo! Ji paprasta naudoti. Ir, svarbiausia – realizuoja išsamų patikimo bendradarbiavimo priemonių komplektą, kuris užtikrina paslapties išsaugojimą, autentifikavimą, nepripažinimą ir integralumą. Programą galite rasti „PGP Corporation“. Jau pasirodė 8.0 programos versija, skirta „Windows XP“. Labai patrauklu, kad programa yra nemokama nekomerciniam naudojimui. Na, o komerciniam naudojimui rekomenduočiau atitinkamą „Gnu“ programą – Gnu PG. Gilesniam šios ir ne ką mažiau viliojančių kitų temų supratimui rekomenduoju pavartyti biblinę Andrew S. Tanenbaumo knygą „Computer Networks“.