Skip to content

Хеш функције/алгоритми

Хеш функција је алгоритам који подацима произвољне дужине додељује податке фиксне дужине. Вредност коју враћа хеш функција зове се хеш вредност или хеш код.
Формализовано, произвољну поруку {0,1}n, где је n произвољан број битова, хеш функција компресује са губицима у облик {0,1}k, где је k одређени број битова. Добијена хеш вредност има особину случајности (мала је вероватноћа да ће хеш вредности две различите поруке бити исте – 1/2k).

Хеш функције се не користе за шифровање већ за проверу интегритета података. Код шифровања величина шифрата сразмерна је величини поруке – код хеш функција, хеш вредност не зависи од дужине поруке. Код шифрата могуће је дешифровање, уколико се познаје алгоритам и кључ дешифровања. Код хеш функција није могућа “декомпресија”, јер су хеш функције једносмерне у врше компресију са губицима.

Ако је х порука, хеш функција h(x) мора да поседује следеће особине:

  • Компресија: за произвољан број битова поруке х, дужина хеш вредности h(x) је одређена и коначна.
  • Ефикасност: h(x) треба да се једноставно израчунава за било које х.
  • Једносмерност: није могуће израчунати х из h(x).
  • Отпорност на колизије: ако порука x1 има хеш вредност h(x1), тешко је пронаћи поруку x2 која има хеш вредност h(x2), где је h(x1)=h(x2).
  • Лава ефекат – промена само једног бита у поруци x, резултује променом бар половине битова добијене хеш вредности.

Хеш функције примењују се и приликом дигиталног потписивања – конкретно функција MAC (Message Authentication Code). Ако је M порука, онда је h(M) хеш вредност или отисак прста (fingerprint) поруке. h(M) је значајно мање од М, али идентификује М. Код симетричних шифарских система дужина хеш вредности мора да буде два пута већа од дужине кључа. За обезбеђивање интегритета поруке користи се функција HMAC (Hash-based MAC).

MD5

MD5 (Message Digest algorithm 5) је брзи криптографски хеш алгоритам који се данас користи за проверу интегритета великих фајлова. Он генерише хеш вредности дужине 128 бита (32 хексадекадне цифре). Развио га је Роналд Ривест 1991. године.

SHA

SHA (Secure Hash Algorithm) је назив за класу криптографских хеш агоритама. Развијена је од стране NSA као званични стандард владе САД. Први алгоритам под називом SHA публикована је 1993. (познат као SHA-0), па је након две године публикован и SHA-1. SHA-1 генерише хеш вредности дужине 160 бита. У наредним годинама публиковане су и друге варијанте овог алгоритма које разликује дужина генерисаних хеш вредности (SHA-2: SHA-224, SHA-256, SHA-384, SHA-512).