Soluții - PC Magazine Romania, Noiembrie 2004
Lumea lui Morse
Răzvan Sandu
Motto:
"Eternal Father, strong to save,
Whose arm hath bound the restless wave,
Who biddest the mighty ocean deep
Its own appointed limits keep;
Oh, hear us when we cry to Thee,
For those in peril on the sea!"
"Eternal Father, Strong To Save" ("Imnul Marinei")
Din serviciul religios oficiat la bordul Titanicului în dimineața zilei de duminică,
14 aprilie 1912
Deschid pagina web și îmi apăs mai tare căștile pe urechi. Încerc să-mi imaginez
cum trebuie să fi sunat atunci, în acea noapte fatidică din aprilie, semnalele
astea: puncte și linii încărcate de disperare împrăștiidu-se în cercuri iuți
și nevăzute peste fața neagră a Oceanului... Omul care a recreat aceste sunete
codificate - jurnal exact al comunicației radio din orele agoniei Titanicului
- a făcut-o cu o minuțiozitate extraordinară: nu lipsește nici un detaliu, nici
măcar tonul ușor răgușit și neclar al telegrafului Marconi cu eclator folosit
la începutul secolului! Formidabil!
Astăzi, prieteni, vom vorbi despre comunicații criptate. Nu, nu despre submarinele
germane și despre celebra mașină Enigma (http://uboat.net/technical/enigma.htm),
nici despre telegrafiștii americani de la Western Union și codul Vail ("adevăratul
Morse" sau "codul vechi" - http://www.du.edu/~jcalvert/tel/morse/morse.htm
http://www.faradic.net/~gsraven/tools/tools1.html),
ci despre modul cum puteți face ca mesajele voastre electronice să fie mai sigure.
Ai învățat să iscălești?
Sunt convins că fiecare dintre voi și-a pus problema securității mesajelor
sale. Să trimiți sau să primești un mesaj electronic (să zicem, e-mail) a devenit
banal. Dar de unde pot ști că persoana care îmi trimite mesajul este chiar cea
care pretinde că este? În mediul electronic, întrebarea nu este deloc banală
și nici nu are un singur răspuns...
Avem nevoie, deci, de soluții la următoarele probleme:
identitatea autorului - un document electronic trebuie să
poată fi semnat de către autorul lui, astfel încât oricine să poată fi sigur
asupra sursei documentului;
autenticitate și integritate - trebuie să se poată certifica
faptul că un document electronic nu a fost modificat sau trunchiat (deci că
se găsește în forma originală dată de autor);
confidențialitate - la cerere, un document electronic trebuie
să poată fi cifrat, astfel încât să existe certitudinea că numai un anumit grup
de persoane (cele cărora documentul le este destinat) pot avea acces
la conținutul lui.
Există mai multe soluții posibile, dar metoda folosită în practică se bazează
pe algoritmii de criptare asimetrică (cu chei publice).
Fără să repet cele spuse într-o întâlnire de-a noastră anterioară (vezi PC
Magazine România, noiembrie 2002), vă voi reaminti că o schemă de criptare cu
chei publice presupune ca fiecare utilizator să dețină o pereche de chei, generate
în tandem:
cheia privată este, așa cum spune și denumirea, strict secretă.
Ea este cunoscută exclusiv de către utilizatorul în cauză și servește pentru
semnarea mesajelor provenite de la acel utilizator. Secretul cheii private este
protejat cu ajutorul unei parole-frază (passphrase - numită așa pentru că poate
conține și blank-uri), parolă care trebuie să fie cât mai bine aleasă.
cheia publică este derivată din cea privată și este folosită
pentru criptarea mesajelor adresate posesorului cheii. Ea este adusă la cunoștința
unui număr cât mai mare de persoane, fie direct, fie prin publicarea pe un server
de chei specializat (keyserver).
În practică, cheile sunt materializate prin fișiere, fie în format binar, fie
transpuse într-o înșiruire de caractere ASCII cu ajutorul programului standard
Unix uuencode.
Un mesaj criptat folosind o cheie publică nu poate fi decriptat decât cu cheia
privată-pereche. Precizez că, din punct de vedere matematic, este foarte greu
(teoretic, imposibil) să se deducă cheia privată a unui utilizator pornind de
la cheia sa publică (funcția folosită pentru generarea în tandem a cheilor nu
admite funcție inversă).
Să presupunem acum că doi utilizatori, X și Y, doresc să poarte corespondență
pe o cale sigură. Primul avantaj al algoritmilor cu chei publice este acela
că utilizatorii nu au nevoie de un canal sigur cu ajutorul căruia să își comunice
reciproc cheile secrete (clasicul film cu cei doi spioni care, la începutul
colaborării, se întâlneau pe bancă în parc și făceau schimb de bilețele cu parole...
?). X va cifra mesajul său către Y cu cheia publică a lui Y și îl va semna cu
propria sa cheie privată. Primind mesajul, Y va putea fi 100% sigur că el vine
de la X (lucru care se poate verifica folosind cheia publică a lui X) și îl
va putea citi, decriptând-ul cu cheia privată (a lui Y). Schema funcționează
simetric dacă Y dorește să îi răspundă lui X prin aceeași metodă sigură.
Odă către Microsoft
În lumea algoritmilor de criptare cu chei publice funcționează - ce surpriză!
- două standarde paralele. Fiecare dintre ele oferă o metodă proprie de a răspunde
la întrebarea "de unde știu că o cheie publică, declarată ca fiind a utilizatorului
X, aparține într-adevăr persoanei X ?". Microsoft și alte companii ne propun
o soluție comercială, bazată pe așa-numitele "certificate de autenticitate
X.509". Ceea ce are un utilizator de făcut este să se adreseze unui furnizor
de servicii de certificare, cum ar fi Thawte sau VeriSign, care îi vor aloca
un certificat electronic X.509. Cu ajutorul acestuia, utilizatorul va putea
semna toate documentele emise de el, iar furnizorul de servicii garantează asupra
autenticității.
Certificatele se obțin, bineînțeles, contra cost...?
Întrebarea imediat următoare este cât de sigură și de personală este o asemenea
cheie, atâta timp cât ea nu se găsește sub controlul exclusiv al utilizatorului-posesor.
Un duplicat după certificatul meu X.509 este păstrat și de către furnizorul
de servicii de autentificare, pentru a servi ca backup? Ce se întâmplă dacă,
în ciuda măsurilor de securitate, un asemenea certificat cade, fără știrea posesorului,
în mâna unei terțe persoane sau instituții - fie aceasta un cracker, firmă concurentă
sau vreun serviciu secret guvernamental? Vor apărea "pe piață" documente
semnate (valid) de alții, în numele meu? Îmi va putea fi "golit" contul
bancar? Poliția, Fiscul, șeful, soția sau "alte organe abilitate ale statului"?
îmi vor putea citi e-mail-urile cifrate adresate duduiei din biroul vecin?
A doua întrebare ar putea fi dacă este normal ca un număr atât de mare de semnături
electronice private, de la persoane din toată lumea, să se afle sub controlul
aceleeași companii - furnizorul de servicii de certificare - oricât de credibil
ar fi acesta. Ce se întâmplă dacă el dispare, falimentează sau se decide să
vândă ilicit "marfa confidențială" existentă în gestiunea sa? Sau,
pur și simplu, ridică la nivele prohibitive taxele legate de emiterea și prelungirea
certificatelor X.509 ?
O alternativă
Făcând "flotări logice" ca să își poată răspunde la toate aceste
întrebări?, programatorii din lumea Free Software au propus un alt model de
securitate, gestionat în exclusivitate de către utilizatorul final (v. OpenPGP
- RFC 2440). Recunoscând faptul că încrederea între oameni este un lucru subiectiv
și tranzitiv, ei definesc așa-numita "rețea de încredere", în care
persoanele implicate își certifică/garantează reciproc semnăturile, pe baza
unor nivele de încredere. Mai clar, dacă persoana X este cunoscută (direct)
de persoanele A,B, și C, iar X semnează un document, atunci în fața unei terțe
persoane, Y, A, B și C pot garanta că X este cine susține că este (îi pot autentifica
semnătura electronică). Desigur, este posibil ca A, B și C să îl cunoască mai
mult sau mai puțin bine pe X, de aceea ei vor garanta pentru el cu ponderi diferite:
persoana care îl cunoaște cel mai bine îi va acorda încrederea cea mai mare.
În practică, schema prezentată mai sus se reduce la următoarele: fiecare utilizator
din rețea posedă câte o semnătură proprie, în care are încredere 100%. Cu ajutorul
ei, utilizatorul "semnează semnăturile" altor utilizatori cunoscuți,
acordând fiecăruia câte un nivel de încredere (mai mic sau egal cu 100%). Trebuie
remarcat că nivelul de încredere acordat de mine unui alt utilizator nu se bazează
exclusiv pe cât de bine îi cunosc eu identitatea. Luând familia ca exemplu,
pot garanta în ceea ce privește identitatea soției mele, să zicem, dar dacă
știu faptul că ea nu stăpânește foarte bine modul în care se folosește o semnătură
electronică, nu voi acorda semnăturii ei un nivel de încredere de 100%. Asta
fiindcă nu sunt convins că ea și-a folosit corect propria semnătură pentru a
conferi, la rândul ei, nivele de încredere altor persoane (pe care eu nu le
cunosc direct). În acest fel, gradul de încredere pe care eu îl pot acorda,
prin tranzitivitate, altora, poate fi "reglat" destul de precis.
Din păcate, legea română a semnăturii electronice, recent adoptată (vezi http://www.legi-internet.ro/lgsemel.htm)
pare să adere la schema proprietară de securitate descrisă la început. Poate
că și acesta este unul dintre motivele pentru care semnarea electronică a documentelor
este încă atât de puțin răspândită la noi.
Ce rămâne de spus
În rândurile de mai sus nu am abordat deloc o metodă practică de folosire a
semnăturii electronice. Și asta fiindcă utilizarea corectă a unui asemenea program
- atât de important pentru intimitatea fiecăruia - este un subiect mai vast,
pe care îl vom aborda detaliat la întâlnirea noastră viitoare. Nu am dorit decât
să vă ofer câteva elemente introductive, care să vă îndemne să citiți mai departe.
Puteți începe la http://www.fsf.org
sau la http://www.eff.org. Sau,
de ce nu, de la http://www.linuxwill.go.ro
Până la următoarea întâlnire, vă sugerez să vizitați și aceste site-uri, care
sunt sigur că vă vor face mare plăcere:
http://www.du.edu/~jcalvert/tel/telhom.htm
http://www.hf.ro
http://www.qsl.net/g3yrc/Titanic.htm
http://www.faradic.net/~gsraven/index.shtml
http://uboat.net/maps/black_sea.htm
|