Hash funksionet
Hash Funksionet janë funksione matematikore që përdoren për enkodimin e shënimeve në Kompjuterikë. Këto funksione(alogritme) për dallim nga algoritmet për enkriptim, nuk kanë çelës për enkriptim e as për dekriptim. Hash Funksionet mund të themi se janë si rezultat i problemit që ishte me nënshkrimet digjitale[1]. Problemi ishte se për një dokument shumë të gjatë, nënshkrimi duhet të ishte shumë i gjatë. Por me Hash Funksionet ky problem është zgjidhur sepse përmes tyre(Hash Funksioneve), për çfarëdo teksti që merret si hyrje për Hash Algoritmet(sinonim për Hash Funksion), rezultati është fiks. Përveç te nënshkrimet digjitale, Hash Funksionet përdoren shumë edhe në fusha tjera të Kriptografisë[2].
Hash Funksionet në praktikë
[Redakto | Redakto nëpërmjet kodit]Një shembull i përdorimit të Hash Funksioneve është që të veriikohet përmbajtja e një dokumenti i gjindet Hash-i dhe krahasohet me Hash-in e tij. Kjo përdoret te protokolli TCP me Checksum,[3] ku gjindet Hash Vlera e mesazhit që do të dërgohet përmes Hash Funksioneve, dhe pranuesi e verifikon përmbajtjen duke e gjetur Hash Funksionin e mesazhit të pranuar. Nëse nuk janë të njëjtë, kjo nënkupton se ka pasur gabime në transmetim, nëse Hash vlerat janë të njëjta, kjo nënkupton se mesazhi i pranuar është i saktë.
Çka janë Hash Funksionet
[Redakto | Redakto nëpërmjet kodit]
Hash Funksionet mund t'i kuptojmë përmes vetive të tyre. Ato (Hash Funksionet) janë:
- Jo reverzibile
- Kjo nënkupton se nuk ekziston inverzi i tyre, pra janë funksione njëkahore.
- Collision Resistant
- Kjo veti e tyre nënkupton se për dy hyrje të ndryshme, nuk do të duhej që të jetë dalja e njëjtë. Pra, Për M dhe M‘ => H(M) != H(M‘).
- Dalje Fikse
- Për çfarëdo gjatësie të mesazhit, dokumentit, apo në përgjithësi tekstit, si dalje fitohet një tekst me gjatësi 16, 20, … bajt varësisht nga lloji i Hash Funksionit.
Parimi i funksionimit të Hash Funksioneve
[Redakto | Redakto nëpërmjet kodit]
Një skemë e thjeshtë e funksionimit të Hash Funksioneve është paraqitur më poshtë:
Llojet e Hash Funksioneve
[Redakto | Redakto nëpërmjet kodit]
Disa nga llojet e Hash Funksioneve janë SHA-1, MD5, etj.
MD5(Message Digest versioni i 5-të)
[Redakto | Redakto nëpërmjet kodit]Message Digest (MD) versioni 5 është dizajnuar nga Ron Rivest (MIT). Ka si rezultat hash-n 128-bitësh. MD5 i plotëson të 2 kushtet e funksioneve njëkahëshe?!?!
Si funksionon?
[Redakto | Redakto nëpërmjet kodit]MD5[4] i ndan mesazhet në blloqe 512-bitëshe. Pra, dalja është bashkim i 4 blloqeve 32 bitëshe(4*32=128) Si hyrje merr mesazhin me gjatësi që është shumëfish i 512, e nëse nuk është i tillë, e bën mbushjen e tij - padding. Ekzistojnë disa mënyra për të mbushur boshllëkun:
- Bit padding, ku biti i parë që shtohet bëhet 1, ndërsa tjerët që shtohen janë 0
- Zero padding, ku të gjithë bitat e padding bëhen 0. kjo metodë nuk është e standardizuar për enkriptim.
MD5 i ka 4 variabla fillestare: A, B, C, D secila 32-bitëshe. Ka 4 Funksione me hyrje (3 x 32) bitëshe dhe një dalje 32-bitëshe: – F(X, Y, Z) = (X^Y) v ((¬X)^Z) – G(X, Y, Z) = (X^Y) v (Y ^(¬Z)) – H(X, Y, Z) = X xor Y xor Z – I(X, Y, Z) = Y xor (X v (¬Z))
Kryhen gjithsej 4 operacione: FF,GG,HH,II. Këto funksione janë jo-lineare.
Me gjithë këto, MD5 nuk është i sigurtë që nga 2008, kur ka ndodhur një rast që e bën MD5 që ta thejë parimin e Collision Resistant.
SHA-1(Secure Hash Algorithm 1)
[Redakto | Redakto nëpërmjet kodit]Secure Hash Algorithm 1 është dizajnuar nga NSA[5].
Si funksionon?
[Redakto | Redakto nëpërmjet kodit]SHA-1[6] si rezultat jep hash-in 160-bitësh, për dallim nga MD5 që ka hash-in 128-bitësh. Padding[7] e bën në blloqe 512-bitëshe(njëjtë me MD5). Ka 4 runde me 20 operacione(MD5 ka 4 runde me 16 operacione). SHA-1 funksionet jolineare: – F t(X,Y,Z)=(X^Y) v ((¬X)^Z) ; 0<t<19 – F t(X,Y,Z)=X xor Y xor Z ; 20<t<39 – F t(X,Y,Z)=(X^Y)v(X^Z)v(Y^Z) ; 40<t<59 – F t(X,Y,Z)=X xor Y xor Z ; 60<t<79
Pseudokodi për SHA-1
add some extra data to the end of the input
set the initial sha-1 values
for each 64-byte chunk do
- extend the chunk to 320 bytes of data
- perform first set of operations on chunk[i] (x20)
- perform second set of operations on chunk[i] (x20)
- perform third set of operations on chunk[i] (x20)
- perform fourth set of operations on chunk[i] (x20)
end
return sha-1 values as a hash
Përmbledhje
[Redakto | Redakto nëpërmjet kodit]
(I)Hash Funksionet nuk kanë çelës.
(II)Parimet kryesore për Hash Funksione janë:
- Të jenë njëkahore
- Janë Collision Resistant(shiko më lart vetitë e Hash Funksioneve)
(III)Hash funksionet duhet të kenë daljen së paku 160-bit të gjatë në mënyrë që t'i mbijetojnë Sulmeve të Collision. Për siguri afatgjatë preferohet dalje 256-bitëshe.
Referimet
[Redakto | Redakto nëpërmjet kodit]- ^ https://en.wikipedia.org/wiki/Digital_signature
- ^ https://en.wikipedia.org/wiki/Cryptography
- ^ https://en.wikipedia.org/wiki/Checksum
- ^ https://en.wikipedia.org/wiki/MD5
- ^ https://en.wikipedia.org/wiki/National_Security_Agency
- ^ https://en.wikipedia.org/wiki/SHA-1
- ^ https://en.wikipedia.org/wiki/Padding_(cryptography)