Semnatura electronica

Semnatura electronica

Introducere in semnatura electronica si semnatura electronica extinsa. Notiuni de baza

Adresabilitate: non-tehnica

Introducere

Semnatura electronica este un concept deja “vechi” in lumea IT-ului daca tinem cont de evolutiile sectorului si de noile concepte care apar cu o viteza uneori ametitoare in acest domeniu.

In ghidul prezent voi incerca sa prezint intr-un limbaj accesibil, cat mai non tehnic, definitia semnaturii electronice, felul in care ea este obtinuta si folosita , aplicatiile ei practice precum si evolutii si directii tehnice in domeniu.

Va reamintiti ca in domeniul strict legal, semnatura noastra clasica ne individualizeaza si are rolul de a autentifica un document pe care l-am creat sau cu termenii caruia am fost sau nu de acord si aratam acest lucru printr-o semnatura, semnatura care in caz de litigiu se expertizeaza cu privire la falsitatea sau veridicitatea ei.

La prima vedere, multe persoane din domenii care nu au legatura cu IT-ul, isi imagineaza semnatura electronica ca fiind un fisier imagine care contine imaginea scanata a semnaturii clasice pe hartie ( numita semnatura olografa).

Lucrurile nu stau deloc asa, aceasta digitizare prin scanare a semnaturii olografe care se ataseaza uneori unor documente electronice nu are nimic de a face cu conceptul de semnatura electronica.

Deasemenea nici adaugarea la un document electronic a unui header sau a unui footer continand numele nostru/al institutiei nu are nimic de a face cu conceptul de semnatura electronica.

Inainte de a defini semnatura electronica vreau sa va amintesc pe scurt care sunt caracteristicile generale ale unei semnaturi clasice, olografe:
– autentica: este executata doar de mine
– greu de falsificat: doar eu pot semna in acel mod
– provoaca nealterabilitatea documentului semnat: un document semnat nu mai poate fi modificat dupa efectuarea semnaturii
– nereutilizabila: semnatura efectuata de mine nu poate fi mutata de mine sau de altcineva pe un alt document, ci fiecare document are semnatura sa
– nerepudiabila: eu ca semnatar recunosc semnatura mea si nu pot refuza documentul pe motiv ca nu este semnat de mine

De ce a aparut ca necesara semnatura electronica ?

Odata cu dezvoltarea domeniului IT organizatiile si persoanele schimba tot mai mult documente in format electronic prin e-mail, prin download/upload, prin alte mijloace de transfer de fisiere.

Problema care s-a pus la un moment dat a fost aceasta: daca tot schimbam aceste informatii in mod electronic de ce sa nu cautam o solutie tehnica prin care sa putem semna aceste documente ca si cum ele ar fi schimbate pe hartie in mod traditional. Astfel am putea incheia contracte pe cale electronica, am avea posibilitatea sa asiguram destinatarul de autenticitatea documentului, destinatarul ar fi sigur ca acest document este non repudiabil adica nu il vom putea refuza pe motiv ca nu este al nostru. Asadar in general vom obtine pentru un document electronic tot ceea ce avem la un document semnat in mod traditional pe hartie. Evident pentru a pune in practica aceste idei, pe langa solutiile tehnice a trebuit creat si cadrul legal in care astfel de operatii de semnare electronica sa fie recunoscute legal si sa poata fi considerate cu statut egal documentelor pe hartie din punct de vedere legal.

As vrea ca aceasta prezentare sa se bazeze pe un exemplu practic, un contract intre doua firme, si sa urmarim pas cu pas cum vom folosi semantura electronica pentru realizarea acestui contract.

Vom introduce evident cateva notiuni tehnice dar fara a intra in detalii de implementare.

Pentru informatii suplimentare de natura tehnica, gasiti mai jos in lista bibliografica si astfel de materiale care prezinta pe larg detaliile tehnice.

Asadar sa presupunem ca firma A doreste sa semneze un contract cu firma B prin care se obliga sa furnizeze un anumit produs.

Contractul in forma unui document electronic clasic de tip text , transmis firmei B prin e-mail sau alt mijloc electronic, arata in felul urmator:

“Firma A se obliga sa furnizeze pana la data de 10.10.2007 firmei B un numar de 100 de trandafiri la pretul total de 1000 RON, plus TVA”

De ce acest document simplu, nesemnat electronic, nu este bine sa fie acceptat de catre firme :
– in forma de mai sus el nu are nici o valoare legala fiind un simplu document electronic (un fisier)
– poate induce in eroare firma B aceasta nefiind sigura ca documentul provine intradevar de la firma A sau ca chiar provenind de la firma A pe parcursul trimiterii prin email documentul nu a fost alterat si au fost schimbate anumite date, cum ar fi pretul
– firma A poate oricand refuza contractul , putand invoca faptul ca in documentul lor original datele de contract erau altele – samd (chestiuni legate de data contractului, oricare firma putand modifica data sistem la care a fost salvat fisierul , etc)

Ce este semnatura electronica ?

Semnatura electronica este pur si simplu o succesiune de date in format binar care sunt asociate unui document dupa reguli clare si asigura acestuia autenticitatea (stim sigur de unde provine el), integritatea (stim sigur ca nu a fost alterat de altii) si non repudierea (originea documentului nu poate fi negata).

Semnatura electronica nu asigura confidentialitatea documentului, adica in mod normal informatiile din documentul semnat nu sunt criptate, deci nu sunt protejate la citire si pot fi citite de catre oricine.

Semnatura electronica extinsa este un tip special de semnatura electronica echivalenta unei semnaturi olografe (pe hartie) atunci cand se bazeaza pe un certificat digital calificat nesuspendat.

Probabil aceste definitii nu va spun foarte mult, mai mult unii termeni va pot face sa abandonati lectura si sa cautati pe Google niste definitii mai bune.

Va invit totusi sa continuati lectura, voi lamuri mai jos toate aceste chestiuni, iar in exemplul practic de mai jos veti vedea cat de clare vor deveni toate aceste chestiuni.

Cum se realizeaza semnatura electronica ? – background preluat din sistemele criptografice

Semnatura electronica, desi nu asigura criptarea documentului, se bazeaza ca specificatii tehnice pe algoritmi definiti in teoria sistemelor criptografice.

Ce este foarte pe scurt un astfel de algoritm criptografic?

Sa presupunem ca avem textul “Ana are mere” si dorim sa il criptam, pentru ca o alta personana sa nu poata vedea acest continut decat daca este in posesia solutiei de decriptare.

Pentru criptare vom folosi anumite tehnici, de exemplu vom inlocui fiecare litera din textul de mai sus cu urmatoarea litera din alfabet, astfel ca textul de mai sus va arata asa “Bob bsf nfsf”.

Dar o astfel de critare este foarte simpla, si un interpus va putea imediat descifra mesajul.

O alta abordare este aceea de a cripta textul nostru cu o anumita cheie, adica cu o succesiune de simboluri, caractere, cifre care aplicate intr-un anumit mod, dupa un algoritm , textului nostru ii va da o alta forma iar interlocutorul nostru va putea descifra mesajul doar aplicand asupra rezultatului criptat din nou aceasi cheie.

De exemplu aplicand pe textul “Ana are mere” cheia “34564576657567586789” si un anumit algoritm criptografic, textul nostru s-ar putea sa arate asa “dfd£!$23xyfrhgfddslkl”.

O astfel de criptare se numeste criptare simetrica (cu cheie secreta), deoarece atat pentru criptare cat si pentru decriptare se foloseste o aceasi cheie. Asadar daca un tert intra in posesia cheii noastre , el va putea descripta orice mesaj; mai mult, va putea emite mesaje false catre destinatar folosind cheia expeditorului.

Exemple de algoritmi simetrici sunt algoritmii cunoscuti in informatica sub numele de DES sau AES.

O alta metoda de criptare, mult mai sigura si folosita ca standard in semnaturile digitale este criptarea asimetrica (cu chei publice).

In aceasta abordare se folosesc doua chei, una numita privata folosita pentru criptare si alta numita publica pentru descriptare.

Cheia privata este tinuta secreta si folosita de semnatar pentru a cripta documentul, cealalta facuta publica se poate folosi doar pentru descifrare.

Datele cifrate cu cheia privata pot fi descrifrate doar cu cheia publica sau viceversa.

Astfel eu voi putea primi mesaje secrete de la orice persoana care cunoaste cheia mea publica dar le voi putea descifra doar eu pentru ca doar eu am cheia secreta.

Exemple de astfel de algoritmi asimetrici sunt algoritmii RSA sau DSA.

In practica, aceasta metoda nu se foloseste pentru criptarea unor documente mari deoarece necesita un volum de calcul foarte mare, ci utilizarea ei practica o intalnim in distributia (criptarea) unor chei secrete de la sursa la destinatar, deci documentul se cripteaza cu o cheie simetrica si aceasta din urma se trasmite criptata printr-un algoritm asimetric.

Ok, veti spune , poate am inteles aceste lucruri dar nu vedem ce legatura au cu semnatura electronica din moment ce s-a facut afirmatia ca semnatura electronica nici macar nu asigura confidentialitatea datelor, adica criptarea lor .

Raspunsul este urmatorul: semantura electronica foloseste acesti algoritmi pentru a implementa o parte din procesul de semnare electronica a unui document.

Sa vedem cum decurge acest proces de semnare electronica:

1. Continutul din fisierul original pe care dorim sa il semnam este transmis unui algoritm care ii genereaza un asa numit rezumat , adica o combinatie de simboluri alfanumerice de lungime fixa care are proprietatea ca este unica pentru acest continut, adica nici un alt continut oricare ar fi el nu va mai avea acelasi rezumat si de asemenea ca pornind de la rezumat nu se poate obtine textul original .
Exemple de algoritmi pentru calcularea unor astfel de rezumate sunt algoritmul MD5 care produce un rezultat pe 128 de biti sau SHA-1 cu un rezumat pe 160 de biti sau RIPEMD – 160.
2. Rezumatul este criptat cu cheia publica, rezulta un rezumat criptat.
3. Rezumantul criptat este pus impreuna cu documentul original si transmis destinatarului.
Acest rezumat criptat este defapt semantura electronica a documentului.
4. Destinatarul vede documentul si acum il va verifica ca este autentic, non repudiabil si integru.

Cum face asta:
a) folosind cheia publica a expeditorului decripteaza rezumatul criptat, deci ii rezulta un rezumat necriptat
b) calculeaza el insusi un rezumat al documentului in clar primit de la expeditor
c) compara cele doua rezumate si daca ele coincid atunci documentul este integru, adica nu a fost modificat pe parcurs pentru ca daca ar fi fost modificat , rezumatul calculat la punctul b) nu ar mai fi fost egal cu cel de la punctul a)
d) documentul este deasemenea autentic si non repudiabil deoarece a putut fi decriptat rezumatul cu cheia publica si rezumatele sunt egale

Aceasta este in linii mari tehnica semnaturii digitale, adica semnarea documentului prin calcularea unui rezumat criptat al documentului cu ajutorul unei chei private si transmiterea acestui rezumat criptat impreuna cu documentul pe de o parte, iar pe de alta parte verificarea semnaturii prin decriptarea acestui rezumat folosind informatiile publice despre expeditor (cheia sa publica).

Formatul cel mai utilizat al semnaturii electronice este formatul PKCS #7/CMS.

Dupa semnarea digitala este bine sa se aplice si o asa numita marca temporala.
Marca temporala dovedeste existenta unor informatii in document la un moment de timp precizat. 
Prin aplicarea unei astfel de marci, numita time-stamp, se poate demonstra existenta unor informatii la momentul respectiv. 
Serviciile de marcare temporala pot fi furnizate de furnizorul de semnatura digitala al entitatii care semneaza sau de terti.

Acum problema se pune altfel: ok, dar cum ma asigur eu ca totusi nu exista o entitate rau voitoare care se da drept firma X si imi trimite un astfel de document, totul functioneaza bine dar eu nu am nici o garantie ca totusi informatiile sunt cele de la firma X si nu de la o alta firma care se da drept firma X.

Pentru aceasta s-au introdus asa numitele Autoritati de Certificare si Certificatele Digitale , adica institutii care certifica ca firma X este autentica si care stocheaza informatiile publice (cheia publica si alte informatii despre firma X) sub forma unor structuri de date numite Certificate Digitale.

Ce sunt Autoritatile de Certificare si Certificatele Digitale ?

Se poate spune ca intreg conceptul din spatele semnaturii electronice sta in distributia libera a cheilor publice intre entitati, asadar in crearea unei asa numite infrastructurii de chei publice, numita PKI (public key infrastructures).Elementele acestei infractructuri sunt: certificatele digitale, autoritatile de certificare care le elibereaza, depozitele de certificate care stocheaza si distribuie certificatele si listele de certificate revocate precum si mecanimele de management ale acestor certificate (eliberare, reinoire, revocare, verificare).

Practic Autoritatile de Certificare (CA) sunt echivalente cu o structura legala de eliberare a unui act, de tipul cartii de identitate sau pasaportului.

Eu ca firma sau persoana ma voi adresa unei asemnea institutii pentru a mi se elibera un certificat digital. Dupa ce voi fi autentificat mi se va elibera un certificat valabil o perioada de timp, certificat care contine cheia mea publica generata de Autoritate si alte informatii publice despre mine si despre certificat ( numar serial, emitent, data expirarii, etc). Certificatul este disponibil pe internet asa ca oricine il va putea consulta pentru a verifica documentele semnate de mine.

Dar cum voi semna documente cu certificatul? Nu voi semna cu certificatul ,el este folosit doar pentru ca altii sa poata verifica ceea ce semnez eu, iar pentru semnarea electronica tot aceasta Autoritate imi va elibera cheia mea privata, cu care, asa cum ati vazut mai sus, eu voi semna documentele.

Aceasta cheie privata se elibereaza pe un smart-card de tipul unui card de credit cu microprocesor, pe un element de memorie de tip eToken (similar ca aspect unui USB Stick) sau mai nou poate rezida chiar pe un server accesibil in maniera protejata doar pentru posesor.

Accesul la cheia privata stocata pe un dispozitiv se face de obicei printr-un cod PIN, ca si la cartile de credit clasice.

Sa urmarim acum modul in care se face legatura intre diferite certificate eliberate de diferite Autoritati din Romania, din Europa, din America de Nord si asa mai departe, sau cine poate emite astfel de certificate si cum ne asiguram ca un astfel de certificat nu este el insusi in fals, emis de o falsa autoritate de certificare.
Exista la nivel international cateva Root CA, adica Autoritati care sunt considerate de incredere, cum ar fi Verisign, Thawte, etc.
Acestea emit certificate root (emise de AC sie insesi) precum si certificate altor Autoritati pe le semneaza cu semnatura lor digitala (a acestor Root CA), aceste Autoritati emit certificate altor Autoritati si le semneaza cu semnatura lor obtinuta de la Root CA, samd …pana la nivelul cel mai de jos cum ar fi de exemplu filiala unei firma care emite certificate pentru anagajatii sai si le semneaza cu certificatul digital al filialei ,certificat emis de exemplu de o autoritate de certificare cum ar fi sediul central ar firmei, samd … asadar verificarea certificatului se poate face din aproape in aproape, in final este normal sa se ajunga la un certificat semnat de o Autoritate de incredere de tip Root CA.

Cel mai cunoscut format pentru certificatele de chei publice este formatul X.509 , folosit pe scara larga in internet.

Un alt certificat, folosit mai mult la comunicatiile de tip e-amil intre persoane fizice este certificatul de tip PGP (Pretty Good Privacy) dupa numele unui cononscut program de criptare a mesajelor de posta electronica.Formatul PGP este complet diferit de formatul X.509 , modelul sau de incredere fiind de asemenea diferit si bazandu-se pe plase de incredere (web of trust) adica entitatile decid ele in cine au incredere si doar in aceste plase de incredere se poate oferi siguranta semnarii electronice.

Aplicatie practica – Cum se produce semnatura electronica ? – pasii semnarii si verificarii unui document

1. Asadar putem incepe semnarea documentelor odata ce am achizitionat un Certificat Digital, pe un smart card sau in alt mod ne-a fost furnizata cheia privata si de asemenea am achizitionat separat sau ne-ea fost furnizata tot de la Autoritate o aplicatie de semnare si verificare a semnaturii.
In acest moment vom face distinctia intre tipul de certificat digital pe care l-am achizitionat.
Putem achizitiona un certificat de tip simplu si vom avea o semnatura electronica simpla, nevalabila in justitie decat cu contraexpertiza, sau putem achizitiona un certificat de tip calificat; semnatura digitala aplicata pe baza unui astfel ce certificat are valoare legala implicita.

2. Vom elabora documentul text (formatat sau neformatat) si il vom transforma intr-un format de tip nemodificabil de tip PDF. Aceasta cerinta nu este intodeauna obligatorie, se pot semna si documente de tip RTF sau chiar documente Office. Problema este doar de ordin legal, daca legislatia anumitei tari permite semnarea anumitor tipuri de documente (de exemplu documentele Office pot contine macrouri care sa genereze content diferit in functie de anumite conditii , si in acest caz semnatura nu ar mai fi valida)
Ne reamintim documentul pe care lucram:
“Firma A se obliga sa furnizeze pana la data de 10.10.2007 firmei B un numar de 100 de trandafiri la pretul total de 1000 RON, plus TVA”

3. Vom realiza semnarea lui digitala, in urma semnarii in functie de aplicatia de semnare va rezulta un fisier de un anumit tip, fie tot PDF, RTF sau de alt tip dar semnat, fie de un alt tip total diferit, de exemplu un fisier cu extensia .p7m.
Ce face programul de semnare digitala in acest moment:
a) va solicita PIN-ul si daca este corect atunci:
b) calculeaza rezumatul mesajului , sa spunem un sir alfanumeric fix de 160 de biti in cazul SHA-1;
pentru textul nostru acest rezumat in forma SHA-1 ar arata asa: “96d4814104b546c62bef969b3aedfe44f4a97d20”
iar in cazul utilizarii MD5 el ar arata asa: “20e87f01a9d0b22abffab3c222f1359d”
c) extrage cheia privata de pe smart card, un sir care in zecimal ar incepe  sa zicem asa “320592813878957211…”, apoi semneaza rezumatul cu aceasta cheie privata, rezultand un alt sir alfanumeric cum ar fi “WEXD56g58s96…”
d) ataseaza dupa caz fisierului PDF, RTF sau de alt format acest sir sau realizeaza un alt fisier, de exemplu de tipul .p7m cu o structura care contine mesajul original,semnatura digitala, certificatul poate fi de asemnea trimis sau in caz ca se foloseste doar infrastructura PKI poate lipsi.

4. Vom transmite acest fisier destinatarului

5. Destinatarul va verifica in primul rand semnatura acestui fisier folosind o aplicatie corespunzatoare.
Ce face programul de verificare a semnaturii digitala in acest moment:
a) va extrage din fisierul semnat digital partile componente: informatia semnata, semnatura, certificatul daca este transmis sau conectarea la un CA pentru citirea certificatului
b) va verifica validitatea certificatului in lista de CA
c) daca certificatul nu este valid (sau era deja revocat la data semnarii ) va informa despre acest lucru
d) va decripta rezumatul mesajului folosind cheia publica din certificat
e) va realiza un calcul al rezumatului informatiei extras la punctul a)
f) va compara rezumatul de la punctul e) cu cel de la punctul d)
g) daca cele doua rezumate sunt egale atunci documentul este integru, nu a fost alterat

Dupa cum se poate observa, daca pe drumul intre destinarar si expeditor cineva intra in document si il modifica, de exemplu suma 1000 RON o va schimba in 1200 RON, rezultatul comparatiei de la punctul f ) nu va mai fi de egalitate deoarece rezumatul (de exemplu SHA-1) calculat pentru noul document va fi altul , ceea ce face ca documentul sa nu mai poata fi considerat ca integru.

Alte aplicatii

Pe langa semnarea electronica a documentelor, semnatura electronica se mai foloseste in multe alte domenii cum ar fi :
– arhitectura de securitate IPSec din cadrul protocolului TCP/IP
– securitatea sistemelor de e-mail
– retele VPN (retele virtuale private)
– semnarea electronica a aplicatiilor software
– servere web folosite in comertul electronic si sisteme de plati pe internet

Bibliografie

1. Victor Valeriu Patriciu si Colectiv – Semnaturi Electronice si Securitate Informatica, editura Bic All, 2006
2. Victor Valeriu Patriciu si Colectiv – Securitatea informatica in Unix si Internet, editura Tehnica , 1998
3. Normele de aplicare a Legii Semnaturii Electronice in Romania: http://www.legi-internet.ro/normesemel.htm
4. Autoritatea de Reglementare si Supraveghere a Activitatii Furnizorilor de Servicii de Certificare: http://www.ceris.ro
5. http://www.certsign.ro
6. Van Oorschot, Menezes – Handbook of Applied Cryptography, John Wiley & Sons, 2000
7. Registrul furnizorilor de servicii de certificare din Romania: http://ars.mcti.ro/

Multumesc.

6 Comments »

  1. dani said

    DES este destul de slabut azi. Comercial se foloseste 3DES sau alte variatii.
    In rest articol bun.

  2. o firma mica said

    buna ziua !

    suntem o firma mica ( cativa angajati), oferim consultanta financiara si ne-ar interesa cam ce costuri am avea daca am dori sa introducem semnatura electronica in firma, pentru toti angajatii si pentru firma ca institutie, sau se poate doar nominal pentru persoane?

    multumim.

  3. Robert said

    un articol de nota 10-
    Mai lipsea si exemplul practic al unui document semnat electronic
    Este totusi cel mai bun articol romanesc de pe net pe care l-am gasit despre semnatura electronica

  4. merci.

    nu am dat exemple practice pt ca ele s-ar baza pe produse , si nu am vrut sa fac reclama.

    dar merci de idee, o sa incerc fara sa ma axex pe un produs anume.

  5. Mariana said

    Sunteti minunat am inteles in sfarsit cum se foloseste semnatura electronica

  6. Alex said

    am si eu o intrebare cum pot sami fac semnatura electronica la yahoo?merci

RSS feed for comments on this post · TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: