SHA

SHA (Secure Hash Algorithm) је класа криптографских функција за сажимање. У овој фамилији криптографских функција најчешће коришћена функција је SHA-1, која је нашла примену у великом броју криптографских протокла као што су TLS, SSL, PGP, SSH, S/MIME и IPSec. SHA-1 се може сматрати наследником чувеног MD5 алгоритма. SHA алгоритми су креирани од америчке агенције за сигурност (НСА) и публикован као званичан стандард владе САД.

Први члан ове фамилије, публикован је 1993, и званично назван SHA, али се он често у литератури назива SHA-0, да би се спречила забуна са његовим каснијим наследницима. Две године касније настаје SHA-1, први наследник SHA. Још четири варијанте овог алгоритма су публиковане и то SHA-224, SHA-256, SHA-384 и SHA-512 и они се једним именом називају SHA-2, а разликује их само дужина сажетка који произилази из њих.

SHA-0 и SHA-1 алгоритми се данас не могу сматрати безбедним, јер постоје криптографски напади који су способни да пронађу колизију за релативно кратко време. За сада нигде није објављено да је извршен успешан криптографски напад на неки од алгоритама из класе SHA-2, али због сличности са претходним генерацијама, ускоро ће и они бити успешно нападнути.

SHA-0 и SHA-1

Оригиналне спецификације алгоритма су публиковане 1993. под називом Hash Standard, FIPS PUB 180, од стране америчке владине агенције Националног института за стандарде и технологију (НИСТ), и овај алгоритам је познат као SHA-0. Врло брзо после публикације SHA-0, НСА га је повукла због пронађених сигурносних пропуста и уместо њега је у примену ушао његов унапређени наследник SHA-1, 1995. године. НСА никада није објавила о каквим се пропустима ради и који су исправљени у наредној верзији. На оба ова алгоритма уочено је више недостатака, мада SHA-1 пружа далеко већу сигурност.

SHA-0 и SHA-1 прави сажетке дужине 160 бита, при чему максимална дужина текста може бити 264, и у својој основи ови алгоритми су базирани на идејама професора Роналда Ривеста и његових MD4 и MD5 алгоритама.

Дуже варијанте

Варијанте са дужим сажетком настатле су нешто касније и познате су под именом SHA-2. У ову групу спадају алгоритми SHA-224, SHA-256, SHA-384 и SHA-512 и ознаке бројева представљају дужину сажетка. Алгоритми SHA-256, SHA-384 и SHA-512 објављени су 2002. док је варијанта SHA-224 објављена 2004. године. Ове дуже варијанте су знатно сигурније у односу на SHA-0 и SHA-1, првенствено због дужине сажетка и одређених промена у алгоритму. Ове нове верзије користе друге вредности помераја као и додатне константе, али у суштини нема значајних промена у односу на претходнике. И поред веће сигурности они се и данас мање користе у односу на SHA-1, који представља индустријски стандард у криптографији.

Упоређење

АлгоритамВеличина сажетка
у битима
Иницијална величина
у битима
Величина блока
у бајтима
SHA-0160
SHA-116016064
SHA-22422425664
SHA-25625625664
SHA-384384512128
SHA-512512512128

SHA-1 сажеци

Пример примене SHA-1 алгоритма. Реченицу у ASCII формату „The quick brown fox jumps over the lazy dog“ пустићемо кроз SHA-1 алгоритам и добићемо 160-битни излаз у хексадецималном облику

SHA1("The quick brown fox jumps over the lazy dog") = 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12

Чак и најмања промена само једног слова у реченици имаће као резултат промену целокупног хексадецималног излаза. На пример променићемо d у c:

SHA1("The quick brown fox jumps over the lazy cog") = de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3

Излаз SHA-1 функције у случају празне ниске биће:

SHA1("") = da39a3ee5e6b4b0d3255bfef95601890afd80709

Упоређење MD5, SHA-1 и RIPEMD-160 алгоритма

Упоређења SHA-1 алгоритма са MD5 алгоритмом показују да је SHA-1 алгоритам сигурнији од MD5 алгоритма.

MD5SHA-1RIPEMD-160
Дужина дигеста128 битова160 битова160 битова
Дужина блока512 битова512 битова512 битова
Број корака64 (4 x 16)80 (4 x 20)160
Највећа дужина поруке-2^64-1 битова2^64-1 битова
Примитивних логичких функција445
Број константи6449
Запис битоваLittle endianBig endianLittle endian

Види још