Blog

XML Siguria

Sep 21 2010
0 Shpërndarje
XML Siguria

Në kuadër të këtij shkrimi do të trajtohet siguria e XML-it në aspektin e nënshkrimeve digjitale. Do diskutohen sfidat e XML nënshkrimit, sintaksa si dhe realizimi i tij. Gjithashtu do të bëhet edhe krahasimi i XML nënshkrimeve me nënshkrimet e zakonshme binare.

XML dhe ueb shërbimet

Përdorimi gjithnjë e më i madh i XML në botën digjitale ka bërë që XML të marrë shumë jehonë dhe të bëhet temë e diskutimeve të shumta lidhur me atë se çfarë mund të arrihet me të. Prezantimi i të dhënave në atë formë siç e bënë XML duke qenë të lexueshme e thënë kushtimisht nga makina por edhe nga njeriu dhe atë pavarësisht nga platforma, e bëjnë XML-in një teknologji të pazëvendësueshme.

Një prej teknologjive tërësisht të bazuara në XML janë edhe ueb shërbimet. Ata bazohen në shkëmbimin e mesazheve dhe në fakt komunikimin në mes të proceseve të makinave të ndryshme në largësi dhe krejt këtë përmes XML dhe protokolleve të rrjetave. Por e gjithë kjo duket të kihet parasysh se bëhet në rrjetë ku rreziku i ekzistimit të një personi të padëshiruar në mes të burimit dhe destinacionit të të dhënës është mjaft i madh.

Nga ana tjetër siguria e të dhënave është një fushë tjetër e kompjuterikes e cila gjithashtu ka përparuar mjaft shumë. Algoritmet që janë në “qarkullim” sot ofrojnë një siguri gati të thënë absolute. Gërshetimi i këtyre dy pjesëve të cekura gjer më tani do të rezultonte në një perfeksionim mjaft të madh, pra, një XML i enkriptuar dhe i nënshkruar në mënyrë digjitale do e pasuronte botën e teknologjisë shumë. Duke e njohur strukturën e një XML fajlli dimë se në të mund të ketë shumë tags (etiketa) dhe ndër to mund të ketë edhe të tillë që nuk kanë nevojë të nënshkruhen ose të enkriptohen fare. Këtu lind edhe problemi kryesor të cilit XML i jep përgjigje, enkriptimi dhe nënshkrimi i pjesëve të veçanta të një dokumenti. Mbi të gjitha ajo që dëshirohet të arrihet janë dy gjëra:

  • Dokumenti është nënshkruar me një çelës të cilin besojmë se e posedon vetëm një person
  • Dokumenti nuk është modifikuar nga vlera e tij origjinale [DEK02].

Definimi i XML nënshkrimeve

XML nënshkrimi digjital ka plot ngjashmëri dhe përdorë të njëtën logjikë sikurse edhe nënshkrimet digjitale binare por ajo se ku ndryshon ka të bëjë me pamjen e tij. Deri sa tek nënshkrimi binar kemi disa bajta që përfaqësojnë nënshkrimin digjital dhe të cilët mund t’i ruajmë në ndonjë fajll të caktuar për t’i parë se si duken, tek XML nënshkrimet digjitale përsëri kemi disa bajta por tashmë këto bajta janë të enkoduar në format të lexueshëm dhe janë të formatuar si XML. E parë nga ky aspekt shumë shpejt arrijmë tek një definicion edhe pse ndoshta pak i varfër lidhur me atë se çfarë është XML nënshkrimi digjital.

XML nënshkrimi digjital paraqet një XML sintaksë specifike e cila përdoret për të paraqitur nënshkrimin digjital mbi një përmbajtje të caktuar digjitale [DOU02].

Nisur nga ajo se XML nënshkrimet mund të bëhet edhe mbi fajlla tjerë e jo vetëm mbi XML fajlla dhe se për nënshkrim mund të përdoren disa algoritme të HASH-it dhe enkriptimit (duke mos u kufizuar vetëm në një), një definicion më i saktë do ishte si në vijim:

Një XML nënshkrim shoqëron(enkripton) përmbajtjen e një reference të nënshkrimit me një çelës mbi një transformim të fortë njëkahësh [DOU02].

XML nënshkrimet dhe nënshkrimet binare

Padyshim që paraardhësit e XML nënshkrimeve digjitale janë nënshkrimet binare. Në kohën e daljes së tyre ata kanë paraqitur një hap shumë të madh dhe të rëndësishëm në teknologjinë informative. Tek nënshkrimet digjitale binare, nënshkrimi është i kuptueshëm për makinën dhe shprehet në formë të bajtave. Për ta bërë të lexueshëm edhe për njeriun atë duhet ta enkodojmë me ndonjë prej formateve të njohur për enkodim.

Me fillimin e paraqitjes së idesë së XML nënshkrimit digjital, përkrahësit dhe ithtarët e nënshkrimeve binare u shfaqën shumë skeptikë për realizimin e një nënshkrimi të tillë. Madje ata edhe ankoheshin lidhur me atë se si ju duhej tani të mësonin jo vetëm atyre por gjithë botës që përdornin komunikimin elektronik, formatin e ri të nënshkrimit i cili dihej që patjetër do ishte më i komplikuar sesa ai binar [DEK02]. Por XML nënshkrimi nuk ishte thjeshtë vetëm si shkak i tekave apo i dëshirave të dikujt por si nevojë e kohës dhe e shoqërisë digjitale. Përhapja e madhe e XML nuk mund të kalonte vetëm me nënshkrimin binar. Pastaj pamundësia e nënshkrimit binar që të nënshkruhej vetëm pjesë të caktuara të dokumentit e jo i gjithë dokumenti shprehnin nevojën në rritje të diçkaje të re. Krejt këto i përfshinte XML nënshkrimi digjital.

XML nënshkrimi digjital ofron atë të cilën nënshkrimet binare nuk mund ta ofrojnë, mund të nënshkruhen pjesë të ndryshme të fajllit dhe atë nga çelësa të ndryshëm. Kjo e ka bërë që në teknologji të ndihet vërtetë sikurse në një kopje të fortë të letrës ku në tre vende të ndryshëm nënshkruhet dikush. Në vetvete nënshkrimi i përmban të dhënat se si është nënshkruar fajlli, çfarë hashi është përdorur, të dhënat për çelësin etj të dhëna këto të cilat nuk janë të përfshira vetvetiu në nënshkrimet binare. Ajo që e bën nënshkrimin binar të qëndrojë pak më mirë se ai XML është se për të llogaritur nënshkrimin binar dhe për ta lexuar atë kërkohet më pak njohuri. XML nënshkrimet binare kërkojnë që të dihet më shumë lidhur me sintaksën të cilën ata e përdorin

Tipet e XML nënshkrimeve

Varësisht se cila pjesë e një dokumenti të caktuar nënshkruhet dhe varësisht se ku vendoset ai nënshkrim definohen edhe tipet e XML nënshkrimeve digjitale. Tre janë këto tipe:

  • XML nënshkrimi përfshirës (nga anglishtja enveloping) – ku të dhënat të cilat nënshkruhen përfshihen brenda elementit që përfaqëson nënshkrimin
  • XML nënshkrimi i ndërfutur (nga anglishtja enveloped) – ku elementi gjendet brenda dokumentit i cili mbanë të dhënat e nënshkruara dhe
  • XML nënshkrimi i ndarë (nga anglishtja detached) – ku nënshkrimi dhe dokumenti i nënshkruar paraqesin dy fajlla të ndryshëm.


Sintaksa e XML nënshkrimeve

Padyshim që sintaksa përbën pjesën kryesore të XML nënshkrimeve digjitale për shkak se nëse nuk dihet sintaksa atëherë vazhdimi tutje as që ka kuptim dhe as që mund të mendohet. Nga ana tjetër të pasurit njohuri lidhur me sintaksën e XML nënshkrimeve do të thotë që praktikisht kemi njohuri të krijojmë nënshkrime XML si dhe dimë t’i procesojmë gjegjësisht lexojmë XML nënshkrimet. Siç shihet edhe në Figura 2 XML nënshkrimet digjitale e kanë një strukturë të definuar përmes një DTD-je. Elementi rrënjë i asaj strukture është elementi “Signature”.

<Signature> – përbën elementin rrënjë të XML nënshkrimeve digjitale. Në rastin kur kemi të bëjmë me XML enveloping nënshkrimet atëherë përbën elementin rrënjë të të gjithë dokumentit që përmbanë nënshkrimin. Mund të përmbajë disa nënelemente si SignedInfo(obligativ), SignatureValue(obligativ), KeyInfo(opcional) si dhe Object(opcional).

<SignedInfo> – paraqet edhe elementin më të komplikuar dhe ndër më të rëndësishmit për XML nënshkrimet digjitale. Si nënelemente të tij janë elementet CanonicalizationMethod(vetëm një herë), SignatureMethod(vetëm një herë) dhe Reference(më shumë herë).

<CanonicalizationMethod> – përmbanë informata gjegjësisht URI-n për metodën e përdorur për kanonikalizim.

<SignatureMethod> – përshkruan  metodën e përdorur për gjenerimin e nënshkrimit digjital. Edhe ky element në fakt përbën një URI i cili tregon për metodën e përdorur për gjenerimin e nënshkrimit.

<Reference> – përmbanë identifikues për të dhënat të cilat do të nënshkruhen. Këto janë në fakt disa URI të cilët poentojnë tek të dhënat të cilat do të nënshkruhen në mënyrë digjitale. Elementi Reference mund të përmbajë edhe vetëm një identifikator ose URI por mund të përmbajë edhe shumë.

Si elemente fëmijë ky element i ka edhe dy të tjerë që janë dhe . DigestMethod tregon metodën gjegjësisht algoritmin i cili është përdorur për gjenerimin e hash vlerës së të dhënave për nënshkrim ndërsa DigestValue vlerën e hash funksionit.

<SignatureValue> – padyshim që paraqet elementin më të rëndësishëm të XML nënshkrimit digjital. Përmbanë nënshkrimin digjital në formatin Base64.

<KeyInfo> – përbën një element shumë të fuqishëm dhe që e avancon shumë në krahasim me nënshkrimet binare të zakonshme. Në të mund të vendosen informacione mbi çelësin publik në formë binare, për X.509 çertifikatat ose informacione indirekte për të identifikuar burimin e çelësit publik [DOU02].

<Object> – është një element që ka një rëndësi të veçantë sidomos tek nënshkrimet përfshirëse. Tek ky element vendosen të dhënat që nënshkruhen tek këto nënshkrime. Poashtu mund të vendosen edhe informacione si vula kohore, numri serial etj me qëllim të shmangies së sulmeve të ndryshme.
Transformimet e XML nënshkrimeve

Për realizimin e XML nënshkrimeve janë të nevojshme që gjatë procesit të gjenerimit të bëhen disa transformime. Pesë janë transformimet e mundshme prej të cilëve tre janë të domosdoshëm ndërsa dy të tjerë janë opcionalë. Këto transformime janë:

    XML kanonikalizimi – i detyrueshëm
    Dekodimi Base64 – i detyrueshëm
    Filtrimi sipas Xpath – i rekomanduar
    Transformimi i ndërfutur – i detyrueshëm
    Transformimi XSLT – opcional.

XML kanonikalizimi ka të bëjë me një grumbull rregullash që duhet të zbatohen me qëllim të ekuivalentimit logjik të dokumenteve. Procesi i kanonikalizimit shkon në atë mënyrë që së pari fajlli binar konvertohet në bashkësi të nyjeve, zbatohen rregullat për kanonikalizim dhe pastaj përsëri këto nyje kthehen si fajll binar.

Base64 është një skemë enkoduese/dekoduese e cila paraqet të dhënat binare në një ASCII format të lexueshëm për njeriun. Logjika e këtij algoritmi është mjaft e thjeshtë për t’u kuptuar. Ai përdorë shkronjat e mëdha dhe të vogla të alfabetit anglez, numrat 0-9 si dhe simbolet ‘+’ dhe ‘/’. Këto të renditura nga 0 deri 63. Një e dhënë binare që vjen e që në fakt paraqet një të dhënë konkrete, ndahet në grupe me nga gjashtë bita. Mirëfilli dihet se me gjashtë bita numri më i madh që mund të formohet është 2^6 = 64. Kështu numri që formohet në fakt do paraqesë një shkronjë, numër ose simbol nga grupi i cekur më parë.

Transformimi i ndërfutur shërben për një qëllim të thjeshtë por krucial e që është që t’i tregojë programit se XML fajlli që përmban nënshkrimin paraqet në fakt një nënshkrim të ndërfutur.
Përkrahja e .NET Framework për XML nënshkrime

Platforma .NET Framework përkrah në mënyrë absolute XML nënshkrimet digjitale. Pra, nëse dikujt i nevojitet të realizojë një aplikacion i cili kryen nënshkrime digjitale atëherë gjuhët programuese të paketës Visual Studio 2008 janë më se të mjaftueshme dhe ofrojnë gjithcka nevojitet për XML nënshkrime. Në vazhdim do të paraqiten disa nga klasat që mundësojnë realizimin e këtij nënshkrimi [MSD10].
  
    KeyInfo – paraqet elementin me të njëtin emër të XML nënshkrimeve digjitale
    Reference – poshtu paraqet elementin me të njëjtin emër të XML nënshkrimeve
    SignedXML – paraqet një XML dokument të nënshkruar ose object ku vendoset XML-i i nënshkruar
    EncryptionMethod – paraqet algoritmin për enkriptim që pëerdoret tek nënshkrimi i caktuar

(Autori është Bachelor i Inxhinierise Kompjuterike)

Lajmet e fundit>