Elektroniskais paraksts

**Elektroniskais paraksts** jeb **e-paraksts** ir elektroniski dati, kas viennozīmīgi apliecina elektroniskā dokumenta (parakstāmā dokumenta) autentiskumu, apstiprina parakstītāja identitāti.

Drošs elektroniskais paraksts ir juridisks termins, kas noteikts Latvijas Elektronisko dokumentu likumā ("EDL") kā kvalificēts elektroniskais paraksts Eiropas Parlamenta un Padomes 2014. gada 23. jūlija regulas (ES) Nr.  910/2014 (eIDAS regulas) 3. panta 12. punkta izpratnē. Kvalificēts e-paraksts var būt izsniegts jebkurā ES valstī, ja tā izdevējs ir publicēts Eiropas Komisijas kvalificētu uzticamības pakalpojumu sarakstā. eIDAS regula nosaka noteikumus par elektroniskajiem parakstiem visās ES valstīs, tai skaitā Latvijā.

Latvijas Republikas normatīvos aktos ir noteikts, ka gribas apliecinājums elektroniskā formā ir "Drošs elektronisks paraksts" ar laika zīmogu, tas ir pielīdzināms pašrocīgam parakstam uz papīra dokumenta un ir saistošs trešajām pusēm. ES eIDAS kvalificēta uzticamības pakalpojuma izsniegtais laika zīmogs viennozīmīgi apliecina parakstīšanās laiku, tādējādi nodrošinot tiesisko noteiktību.

## Vēsture
Elektroniskais paraksts vēsturiski tika izveidots 20. gadsimta beigās, bet plašāku attīstību un pielietojumu rada 21. gadsimta pirmajā desmitgadē. 
Vēsturiskā attīstībā var izdalīt šādus būtiskus Elektroniskā paraksta attīstības posmus:

1976. gada jūnijā tika publicēts amerikāņu kriptogrāfu Vitfīlda Difija (*Whitfield Diffie*) un Martina Helmana (*Martin Hellman*) darbs "Vairāklietotāju kriptogrāfijas paņēmieni" (*Multi-user cryptographic techniques*). Autori radīja jēdzienu «elektronisks ciparu paraksts», viņi savā rakstā "Jauni kriptogrāfijas virzieni" paredzēja ka tehnoloģiski varēs realizēt šādus risinājumus, kā arī rakstā formulēja Elektroniskā paraksta algoritmam svarīgākos principus.

1977. gadā trīs zinātnieki Ronalds Rivests (*Ronald Linn Rivest*), Adi Šamirs (*Adi Shamir*) un Leonards Adlemans (*Leonard Max Adleman*) radīja asimetriskās atslēgas metodi, ko, saīsinot viņu uzvārdu pirmos burtus, nodēvēja par ''RSA'' kriptogrāfisko algoritmu, ko bez papildus pilnveidošanas var izmantot kā vienkāršotu risinājumu elektroniskiem parakstiem. Pēc RSA algoritma izstrādes tika izstrādāti arī citi algoritmi, piemēram, Rabina elektroniskais paraksts.
 
1984. gadā pirmo reizi tika strikti noteiktas drošības prasības elektroniko parakstu algoritmiem, identificējot uzbrukumu veidus elektronisko parakstu algoritmiem. Tika piedāvāta ''GMR'' shēma, kas atbilda šīm prasībām. (Shafi Goldwasser, Silvio MicaliRonald Linn Rivest)

1999. gada 13. decembrī pieņemta Eiropas Savienības elektronisko parakstu direktīva 1999/93/EC, kas nosaka galvenos principus elektroniskā paraksta izmantošanā un konceptuāli runā par elektroniskā paraksta izmantošanas uzsākšanu visās Eiropas Savienības valstīs.

2000. gada 30. jūnijā ASV pieņēma likumu par elektroniskajiem parakstiem globālajā un nacionālajā komercijā. Likums ietver sevī vadlīnijas elektroniskā paraksta izmantošanai (nenosaka un neierobežo tehnoloģijas). Galvenā šī likuma būtība - līgums vai paraksts nevar tikt uzskatīts par nederīgu tikai tāpēc, ka tas eksistē tikai elektroniskā formā.

2006. gada 4. oktobrī Latvijā tika oficiāli palaists darbībā www.e-me.lv un izsniegta pirmā darboties spējīgā elektroniskā paraksta viedkarte.

2012. gada 1. aprīlī Latvijā tika ieviestas personu elektroniskās identifikācijas kartes (E-ID), kurās iekļauts elektroniskais paraksts.

2016. gada 1. jūlijā stājās spēkā eIDAS regulā paredzētie uzticamības pakalpojumu noteikumi visās ES valstīs, kas izveido jaunu sistēmu drošai elektroniskai mijiedarbībai ES starp uzņēmumiem, iedzīvotājiem un valsts iestādēm un likvidē esošos šķēršļus e-identifikācijas rīku izmantošanai Eiropas Savienībā.

2018. gada 28. septembrī kļuva obligāta savstarpējā e-identifikācijas rīku atzīšana starp ES valstīm, kas nozīmē, ka vienā valstī izdotam e-identifikācijas rīkam jātiek atzītam visās pārējās valstīs. Piemēram, Igaunijā izdotam e-paraksta rīkam Latvijā juridiskais spēks ir līdzvērtīgs vietējiem e-parakstīšanās rīkiem. Šis nosacījums ir spēkā vienīgi tad, ja e-identifikācijas rīks atbilst regulas prasībām, par to ir paziņots Komisijai un tā ir publicēta attiecīgā sarakstā.

## Risinājumi
Var būt vairāki veidi kā to panākt. Parasti lieto kriptogrāfisku elektronisko parakstu, šis raksts ir par to.
Elektroniskais paraksts ir datu bloks, kas sastāv no ar parakstītāja privāto atslēgu nošifrēta (parakstīta) parakstāmo datu jaucējvērtības (). To datu bloku vai nu pievieno pie parakstītajiem datiem (parasti sākumā vai beigās), vai arī ieliek atsevišķā failā. Atsevišķos gadījumos (DSA), parakstīšanas algoritmam jau ir definēts nepieciešamais jaucējalgoritms. Elektroniskajam parakstam lieto 2 algoritmus:
* jaucējalgoritmu (parasti kriptogrāfisku jaucējfunkciju), kas no mainīga (un potenciāli liela) garuma parakstāmajiem datiem izveido īsu, konstanta garuma bitu virkni, un
* paraksta algoritmu, kas nošifrē iegūto īso bitu virkni ar parakstītāja privāto atslēgu.

Paraksta pārbaude notiek aprēķinot pārbaudāmā datu bloka jaucējvērtību, izmantojot to pašu algoritmu, kā parakstīšanas laikā, paralēli atšifrējot paraksta datu bloku ar parakstītāja publisko atslēgu un beigās salīdzinot vai aprēķinātā jaucējvērtība ir tāda pati kā atšifrētā. Ja jaucējvērtības ir vienādas, tad paraksts ir derīgs, ja nav, tad paraksts nav derīgs. Šāda pārbaude nosaka tikai to, vai paraksts ir izveidots ar doto privāto atslēgu. Vēl ir nepieciešams noskaidrot pašas publiskās atslēgas autentiskumu. Tam lieto dažādas metodes.

Paraksta drošību raksturo tā noturība pret viltošanu. Labas kvalitātes jaucējalgoritmiem ir grūti piemeklēt ieejas datus, kas dotu vienus un tos pašus izejas datus (tādi ieejas dati eksistē visiem jaucējalgoritmiem, jo ieejas datiem var būt vairāk variāciju kā izejas datiem). Ja tādus datus atrod un tie nav bezsakars (mazāk varbūtīgi), tad paraksts, kas bija taisīts vieniem datiem, būs derīgs arī citiem datiem, kas ģenerē to pašu jaucējvērtību. Vēl, asimetriskās šifrēšanas (parakstīšanas) algoritmam ir jābūt pietiekoši drošam, t.i., lai no publiskās atslēgas nevarētu aprēķināt privāto atslēgu. Jebkurš, kam ir pieeja privātajai atslēgai, var izveidot derīgus elektroniskos parakstus. Šī iemesla dēļ privāto atslēgu ir ļoti jāsargā no nozagšanas. Parakstīšanai lietotajām privātajām atslēgām (atšķirībā no šifrēšanai lietotajām), nav nepieciešamas rezerves kopijas, ja atslēga tiek iznīcināta, turpmākajiem parakstiem uzģenerē jaunu. Lai atslēgu būtu grūtāk nozagt (nokopēt), to bieži glabā viedkartē. Viedkartes procesors veic parakstīšanas operāciju izmantojot privāto atslēgu, tādējādi datoram nav nepieciešama piekļuve pie privātās atslēgas. Atkarībā no viedkartes veida atslēgu vai nu ģenerē pašā viedkartē (un tā atslēga nekad neeksistē nekur citur), vai arī ģenerē ārpus viedkartes un pēc tam ielādē iekšā. No viedkartes parasti privāto atslēgu ārā dabūt nevar (Atsevišķos gadījumos ar lielām grūtībām var, tā ir viedkartes uzlaušana).

Lai identificētu parakstītāju, publisko atslēgu parasti lieto kopā ar parakstītāju identificējošiem datiem. Tādu datu bloku saukā par kriptogrāfisko sertifikātu (). Eksistē vairāki sertifikātu formāti, no kuriem populārākie ir PGP un X.509. Paraksta formāti parasti definē lietojamo sertifikāta formātu. Sertifikātā iekļauto informāciju (ieskaitot publisko atslēgu) paraksta ar elektronisko parakstu. X.509 sertifikātiem var būt tikai viens parakstītājs, kas ir vai nu pats sertifikāts (izmantojot iekļautās publiskās atslēgas privāto atslēgu) vai arī kāds cits tā paša formāta sertifikāts (izmantojot savu privāto atslēgu)(tas ir CA (*certificate authority*)). Pirmajā gadījumā ir pašparakstīts sertifikāts (), otrā gadījumā tas ir parasts sertifikāts. PGP sertifikātiem var būt daudzi parakstītāji. Tur arī plašāk lieto pašparakstītus sertifikātus.

Atvērtā pirmkoda programmas bieži paraksta ar PGP formāta elektronisko parakstu. Windows programmas var parakstīt ar *signtool.exe*, kas izmanto X.509 formāta sertifikātus. Valsts izsniegtie elektroniskā paraksta sertifikāti arī ir X.509 formāta (arī Latvijā). E-pasta parakstīšanai var lietot gan PGP formāta parakstus (tie ir 2 veidu: *pgp/mime* un *pgp inline*) vai X.509 bāzētos S/MIME parakstus.

Izplatītākie elektroniskā paraksta algoritmi ir:
* RSA
* DSA
** ECDSA

RSA atslēgas var lietot gan šifrēšanai, gan parakstīšanai. Paraksta izmērs ir salīdzināms ar atslēgas lielumu. Tā kā relatīvi drošas atslēgas sākas no 2048 bit, paraksts sanāk relatīvi liels.

DSA atslēgas var lietot tikai parakstīšanai. Paraksts sanāk īsāks (320-640 biti ar 1024-2048 bitu publiskajām atslēgām). ECDSA paraksts sanāk apmēram tikpat liels kā DSA, bet ECDSA ir mazākas publiskās atslēgas. DSA definētais jaucējalgoritms (vismaz 1024 bitu atslēgām) ir SHA-1. Ģenerējot DSA (un ECDSA) parakstus, ir nepieciešami slepeni, neatkārtojami *random* dati. Ja tie nav pietiekoši slepeni un neatkārtojami, no paraksta (un publiskās atslēgas) var aprēķināt privāto atslēgu.

Dažreiz, parakstot dokumentus, ir nepieciešams pierādīt ne tikai to ka to dokumentu ir parakstījis parakstītājs, bet arī to ka dokuments nav ticis parakstīts vēlāk par kādu noteiktu laiku. Tam lieto laika zīmogu. Šajā gadījumā parakstāmā dokumenta jaucējvērtību vispirms aizsūta parakstīt TSA (*timestamping authority*) serverim, kas pieliek klāt saņemšanas laiku un paraksta ar savu atslēgu (un rezultātu atsūta atpakaļ). Pēc tam paraksta kā parasti.

Parasti ar jēdzienu "elektroniskais paraksts" saprot asimetrisko elektronisko parakstu, kas lieto asimetrisko kriptogrāfiju. Datus var autentificēt arī ar simetriskām metodēm, šajā gadījumā parakstītājam un pārbaudītājam ir viena, simetriska atslēga. Tāpat kā ar asimetrisko parastu, te parakstāmajiem datiem aprēķina *hash* un pēc tam, tajam *hash* galā pieliek simetrisko atslēgu (kas būtībā ir slepens gadījumskaitlis) un tam veidojumam aprēķina *hash* vēlreiz. Eksistē vairākas metodes, kā tieši to dara, populārākā ir HMAC. Tā kā simetriskā parakstīšana prasa mazāk resursu un paraksts ir mazāks, to var lietot plašāk. TLS to lieto katrai pārsūtāmajai paketei.

## Skatīt arī

* Latvijas elektroniskā identifikācijas karte

## Atsauces