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
|