Hash funksionet

Nga Wikipedia, enciklopedia e lirë
Jump to navigation Jump to search

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 tekstin burimor]

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 tekstin burimor]


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 tekstin burimor]


Një skemë e thjeshtë e funksionimit të Hash Funksioneve është paraqitur më poshtë:


Hash Algoritmi

Llojet e Hash Funksioneve[redakto | redakto tekstin burimor]


Disa nga llojet e Hash Funksioneve janë SHA-1, MD5, etj.

MD5(Message Digest versioni i 5-të)[redakto | redakto tekstin burimor]

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 tekstin burimor]

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 tekstin burimor]

Secure Hash Algorithm 1 është dizajnuar nga NSA[5].

Si funksionon?[redakto | redakto tekstin burimor]

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 tekstin burimor]


(I)Hash Funksionet nuk kanë çelës.

(II)Parimet kryesore për Hash Funksione janë:

  1. Të jenë njëkahore
  2. 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.

Referencat[redakto | redakto tekstin burimor]

  1. ^ https://en.wikipedia.org/wiki/Digital_signature
  2. ^ https://en.wikipedia.org/wiki/Cryptography
  3. ^ https://en.wikipedia.org/wiki/Checksum
  4. ^ https://en.wikipedia.org/wiki/MD5
  5. ^ https://en.wikipedia.org/wiki/National_Security_Agency
  6. ^ https://en.wikipedia.org/wiki/SHA-1
  7. ^ https://en.wikipedia.org/wiki/Padding_(cryptography)

Lidhje të jashtme[redakto | redakto tekstin burimor]