Jump to content

Nënshkrimi dixhital

Nga Wikipedia, enciklopedia e lirë

Nënshkrimi dixhital ose skema e nënshkrimit dixhital është një skemë matematikore për demonstrimin dhe origjinalitetin e një mesazhi dixhitale apo dokumenti dixhital. Nënshkrimi i vlefshëm dixhital jep një arsye për të besuar se marrësi i mesazhit ishte krijuar nga një dërgues i njohur, dhe se nuk është ndryshuar gjatë transportit.[1][2] Ata janë përdorur zakonisht për shpërndarjen e softuerëve, transaksioneve financiare, si dhe në raste të tjera ku është e rëndësishme për të zbuluar falsifikimin apo ngatërrimet.

Sipas Tanenbaum (2007) shpesh është e nevojshme që në mënyrë dixhitale ndonjë dokument të nënshkruhet. Shembull, kur ndonjë klient e informon bankën se nuk blen aksione, me anë të dërgimit të e-mail porosisë bankës. Një orë më vonë porosia është e dërguar dhe e kryer, mirëpo aksioni shkatërrohet. Klienti mohon se ka çuar porosi deri tek banka. Banka mund të tregon e-mailin, por klienti vazhdon të pohojë se ajo është falsifikuar me qëllim që të fitohet provizioni. Si do të dijë gjyqtari se kush e flet të vërtetën? Nënshkrimet dixhitale mundësojnë të nënshkruhet ndonjë e-mail porosi ose dokument dixhital në mënyrë që të mos mohohet nga ana e dërguesit më vonë.
Një mënyrë është që të kryhet dokumenti nëpërmjet të hashing algoritmit të njëkahshëm (one-way hashing algoritmit) i cili rëndë invertohet.
Sipas Tanenbaum (2007) hashing funkcioni prodhon rezultat me gjatësi fikse pavarësisht nga madhësia e dokumentit origjinal. Hashing funkcionet më të popullarizuara janë: MD5 (Message Digest) i cili prodhon rezultat 16 bajtësh dhe SHA (Secure Hash Algorithm), i cili prodhon rezultat 20 bajtësh.
Hapi tjetër është shfrytëzimi i çelësit publik të kriptografisë. Pronari i dokumentit e përdor çelësin e tij privat që të fiton D (Hash). Kjo vlerë e quajtur nënshkrim bllok i shtohet dokumentit dhe dërgohet deri te marrësi.

Kur dokumenti i hashit arrin, marrësi së pari e kalkulon hashin e dokumentit duke përdorur MD5 ose SHA. Pastaj e përdor çelësin publik të dërguesit në bllok nënshkrimin që të fiton E (D(hash)).

Nëse hashi i kompjuterizuar nuk përputhet me hashin e nënshkrimit bllok, atëherë dokumenti është i ndërruar. Kjo metodë punon nëse për çdo x, E(D(x))=x ku sëpari kërkohet D(E(x))=x, E është funkcioni i enkriptimit, ndërsa D është funkcioni i dekriptimit. Që të përdoret shablloni i nënshkrimit, marrësi duhet të dijë çelësin publik të dërguesit. Disa shfrytëzues e shpallin çelësin e tyre publik në web adresën e tyre, ndërsa disa jo sepse kanë frikë që të mos ndryshohet çelësi.

Tek ato mund të përdoren mekanizma alternativ të distribuimit të çelësit publik.

Një metodë është që dërguesit t’i ngjesin certifikatë porosisë të cilën e dërgojnë e cila e përmban emrin e shfrytëzuesit, çelësin publik dhe nënshkrimin dixhital nga ana e tretë e besuar.

Pasiqë shfrytëzuesi do të merr çelësin publik nga ana e tretë e besuar, mund të pranojë certifikatë nga të gjithë ato të cilët e përdorin këtë anë për t’i gjeneruar çertifikatat e tyre.

  • Vërtetimi se një person i caktuar ka gjeneruar një mesazh të caktuar paraqet një veti me rëndësi. Përderisa në botën analoge kjo arrihet përmes nënshkrimeve në një copë letër, në atë dixhitale ekziston një procedurë tjetër. Për pasojë vetëm personi që ka krijuar mesazhin duhet të jetë në gjendje që ta nënshkruajë atë. Në botën dixhitale kjo arrihet duke enkriptuar mesazhin me një celës privat.

Kërkesat për nënshkrimin dixhital

[Redakto | Redakto nëpërmjet kodit]

Në bazë të disa sulmeve dhe disa veçorive të cilat janë studiuar, këto janë kërkesat që është kërkuar t’i plotësoj një nënshkrim dixhital.

Nënshkrimi duhet të jetë një model i bitit që varet nga mesazhi që po nënshkruhet

  • Nënshkrimi duhet të përdor disa informacione unike të dërguesit për të parandaluar falsifikimin dhe mohueshmërinë
  • Duhet të jetë relativisht e lehtë të prodhohet
  • Duhet të jetë relativisht lehtë për ta njohur dhe verifikuar
  • Duhet të jetë llogaritje matematikisht e parealizueshme për të krijuar një nënshkrim dixhital duke e krijuar një mesazh të ri për nënshkrimin dixhital ekzistues ose duke krijuar një nënshkrim dixhital mashtrues për një mesazh të caktuar
  • Duhet të jetë praktik që të ruaj një kopje të nënshkrimit dixhital në memorie.[3]

Nënshkrimi standard

[Redakto | Redakto nëpërmjet kodit]
  • Formati i nënshkrimeve dixhitale përfshinë një rregull sipas së cilës, verifikuesi dallon mesazhet e vlefshme dhe ato jo të vlefshme. Ky veprim quhet padding.
  • Skema propabilistike e nënshkrimeve është një skemë e nënshkruar e bazuar në kriptosistemin RSA:PSS-RSA. Në praktikë mesazhi nuk është i enkriptuar direkt por, në fakt enkriptohet HASH funksioni i tij. Kjo ndryshe njihet edhe si fingerprint(anglisht). Ky i fundit ka një gjatësi të caktuar prej 160 ose 256 bita.

Enkriptimi i skemës probabilistike të nënshkrimeve

[Redakto | Redakto nëpërmjet kodit]

Le të jetë /n/ madhësia e modulit RSA në bit. Mesazhi i Enkoduar ka gjatësi prej n-1/8 bitash.

  1. Gjenero një vlerë random salt.
  2. Nga një string mesazh M krijoni nje tjetër string mesazh M_ dukelidhur një padding fiks, HASH vlerën mHash =h(M) dhe salt-in
  3. Llogarisni vlerën Hsh të sstringut M_
  4. Lidhni një padding fiks dhe salt vlerën për të krijuar një bllok të shënash.
  5. Aplikoni një maskim funksion tek mesazhi M_ për të krijuar një vlerë maskë dbMasnk. Zakonisht për një veprim të tillë shfrytëzohet funksioni SHA1.
  6. Vlerën e maskuar bëjeni XOR me bllokun e të dhënave.
  7. Mesazhi i enkriptuar fitohet duke lidhur Bllokun e maskuar të të dhënave, vlerën Hash dhe paddingun.

Pas enkodimit, operacioni i nënshkrimit dixhital aplikohet në mesazhin e enkoduar.

  • s = sigkpr (x) ≡ EMd mod n

Operacioni i verifikimit

[Redakto | Redakto nëpërmjet kodit]
  • Operacioni i verifikimit pastaj vazhdon në mënyrë të ngjashme: rigjenerimi i vlerës salt dhe kontrollimi se a është enkriptimi i skemës propabilistike të nënshkrimit në rregull.

Duke shtuar salt vlerën hashit të dytë të mesazhit, vlera e enkoduar bëhet probabilistike.Për pasojë, nëse ne kodojmë dhe shënojmë të njëjtin mesazh dy herë, fitojmë nënshkrime të ndryshme, që është një vecori e dëshiruar.

Gjenerimi i çelësave për nënshkrimet dixhitale

[Redakto | Redakto nëpërmjet kodit]
  1. Zgjedhet një numër prime të madh p.
  2. Zgjedhet një element primitiv te Z∗p ose nëngrupi of Z∗p.
  3. Zgjedhet një integjer të rastësishëm d ∈ {2,3, . . . , p−2}.
  4. Llogaritet R=d mod p .

Celësi publik tani krijohet nga kpub =(p,<,R), dhe ai privat nga kpr =d.

Nënshkrimi dhe verifikimi

[Redakto | Redakto nëpërmjet kodit]
  • Duke përdorur celësin privat dhe parametrat e celësit public, nënshkrimi sigKpr(x,kE)=(r,s) për një mesazh x logaritet gjatë procesit të nënshkrimit. Nënshkrimi përfshinë dy hapa kryesorë: zgjedhja e një vlere të rastësishme kE, i cili paraqet një celës privat, dhe logaritja e një shenje x.

Gjenerimi i nënshkrimeve

[Redakto | Redakto nëpërmjet kodit]
  1. Zgjedhni një celës kalimtar kE ∈ {0,1,2, . . . , p − 2} ashtu që gcd(kE, p-1)=1.
  2. Logaritni parametrat e nënshkrimeve

r ≡kE mod p, s ≡ (x−d ・r)k−1 E mod p−1.

Në anën pranuese, nënshkrimi verifikohet duke përdorur shprehjen kpub(x,(r,s)), nënshkrimin dhe mesazhin. Verifikimi i nënshkrimeve

  1. Logaritni vlerën t ≡R*r*rs mod p
  2. Verifikimi përfshinë t_≡Rx mod p =⇒nënshkrimi valid_≡Rx mod p =⇒nënshkrimi invalid.[1]

DSS përdor një algoritëm që është projektuar për të siguruar vetëm punën e nënshkrimit dixhital. Ky algoritm është DSA dhe për dallim nga RSA nuk mund të përdoret për enkriptim apo shkëmbim të çelësit. DSA është një metodë e çelësit-publik.[3]

Sipas algoritmit RSA që të arrihet nënshkrimi i mesazhit së pari mesazhi futet në hash funksion i cili prodhon një kod të sigurt me gjatësi fikse ( hash kodin). Ky hash kod pastaj enkriptohet me çelësin privat të dërguesit(PRa) për të formuar nënshkrimin dixhital, dhe të dy së bashku mesazhi plus nënshkrimi i formuar dërgohen.[3]

Marrësi pasi ta pranon mesazhin e merr dhe e prodhon një hash kod të tij, ndërsa nënshkrimin dixhital e dekripton me çelësin publik të dërguesit(PUa). Nësë hash kodi i llogaritur përputhet me nënshkrimin e dekriptuar, atëherë ky nënshkrim pranohet si i vlefshëm pra është nënshkrimi i dërguesit të pretenduar.[3] Verifikimi i nënshkrimit përdoret për të përcaktuar nëse mesazhi apo dokumenti është ndryshuar një çelës publik.

Qasja e DSS gjithashtu e bën përdorimin e një hash funksioni.Sipas DSS gjithashtu mesazhi futet në hash funksion për të krijuar hash kodin i cili së bashku me një numër të rastësishëm k do të nënshkruhet me çelësin privat të dërguesit(PRa) mirëpo nënshkrimi varet edhe nga një sërë parametrash tjerë të cilët përbëjnë një çelës publik global (PUg). Rezultati është një nënshkrim i përbërë nga dy komponente të etiketuara(labeled) s dhe r. Në fund e marrim hash kodin e krijuar të mesazhit në hyrje dhe e bashkojmë me nënshkrimin për ti dërguar së bashku. Marrësi këtë mesazh të pranuar e fut në një funksion të verifikimit i cili varet nga çelësi public global(PUg) si dhe nga çelësi publik i dërguesit(PUa), i cili është ciftëzuar me çelësin privat të dërguesit. Rezultati që merret nga funksioni i verifikimit është një vlerë e cila është e barabartë me komponentën r të nënshkrimit nëse ai është valid. Funksioni i nënshkrimit është i tillë që vetëm dërguesi me njohuri të çelësit privat mund ta kishte prodhuar nënshkrimin e vlefshëm.[3]

Algoritmi per nënshkrimin dixhital

[Redakto | Redakto nëpërmjet kodit]

DSA bazohet në vështirësin e llogaritjes së logaritmeve diskrete.

Së pari zgjedhet një numër i thjesht q 160 bit. Pastaj një numër tjetër i thjesht p me gjatësi mes 512 dhe 1024 bit, I till që q pjeston (p - 1). Në fund zgjedhet një numër g që të jetë në formën h(p-1)/qmod p, ku h është një numër i plotë në mes të 1 dhe(p – 1) me një kufizim që g duhet të jetë më i madh së 1.

Me këta numëra çdo perdorues zgjedh një çelës privat dhe krijon një çelës publik. Çelësi privat x duhet të jetë një numër në mes të 1 dhë (q – 1) dhe duhet të zgjedhet në mënyrë të rastësishme. Çelësi publik llogaritet nga çelësi privat në këtë formë y = gx mod p. Kjo llogaritje e çelësit publik duke e ditur çelësin privat është relativisht e leht. Megjithatë duke e ditur çelësin publik y, besohët që është e pamundur që të llogaritet çelësi privat x.

Që të krijohet një nënshkrim, përdoruesi duhet të llogarit dy vlera r dhe s, te cilat janë në funksion të komponenteve të çelësit publik ( p, q, g ), të çelësit privat të përdoruesit (x), të hash kodit të mesazhit H(M), dhe të një numri të plot k i cili duhet të jetë një numër i rastësishëm dhe unik për cdo nënshkrim.

Pranuesi e llogaritë një vlerë v që është funksion i komponenteve të çelësit publik të dërguesit, dhe hash kodit të mesazhit të pranuar. Nëse kjo vlerë është e njejtë me vlerën e komponentes r të nënshkrimit, atëhërë nënshkrimi është valid.[3]

  • Andrew S. Tanenbaum (2007), Modern Operating Systems (3rd ed.), Prentice Hall; 3 edition (December 21, 2007), ISBN 0-13-600663-9
  • William Stallings (2009), Operating Systems: Internals and Design Principles (6th ed.), Prentice Hall, 6 edition (April 19, 2008), ISBN 0-13-600632-9
  • William S. Davis, T.M. Rajkumar (2005), Operating Systems: A Systematic View (6th ed.), Publisher AdisonWesley, Inc.2005 (2005), ASIN: B0047T9K8S
  • Coffman, E.C., Elphick, M.J., and Shoshani, A.: “System Deadlocks,” Computing Surveys, vol. 3, pp. 67–78, June 1971.
  • Comer, D.: Operating System Design. The Xinu Approach, Upper Saddle River, NJ: Prentice Hall, 1984.
  1. ^ a b Cristoph Paar, Jan Pelzl, "Understanding Cryptography"
  2. ^ John Wiley & Sons, "Smart Card Handbook"
  3. ^ a b c d e f CNS - Principles and Practice, "William Stallings"