Nënshkrimi digjital

**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. 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.

## Shpjegimi 
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.

## Veçoritë 
### Hyrje 
* 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 
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.
## Nënshkrimi standard 
* 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 
Le të jetë /n/ madhësia e modulit RSA në bit.  Mesazhi i Enkoduar ka gjatësi prej n-1/8 bitash.
# Gjenero një vlerë random salt.
# 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
# Llogarisni vlerën Hsh të sstringut M_
# Lidhni një padding fiks  dhe salt vlerën për të krijuar një bllok të shënash.
# 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.
# Vlerën e maskuar bëjeni XOR me bllokun e të dhënave.
# 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 
* 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 
# Zgjedhet një numër prime të madh p.
# Zgjedhet një element primitiv te Z∗p ose nëngrupi of Z∗p.
# Zgjedhet një integjer të rastësishëm d ∈ {2,3, . . . , p−2}.
# Llogaritet R=d mod p .
Celësi publik tani krijohet nga kpub =(p,(*p*-1)/*q*mod *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.

## Shih edhe 
* RSA algoritmi
* HASH Algoritmi
* Steganografia dixhitale
*Enkriptimi Simetrik

## Bibliografia 
* 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.&nbsp;67–78, June 1971.
* Comer, D.: Operating System Design. The Xinu Approach, Upper Saddle River, NJ: Prentice Hall, 1984.
## Referime