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-0 160
SHA-1 160 160 64
SHA-224 224 256 64
SHA-256 256 256 64
SHA-384 384 512 128
SHA-512 512 512 128

SHA-1 сажеци[уреди]

Пример примене SHA-1 алгоритма. Реченицу у ASCII формату „The quick brown fox jumps over the lazy dog“ пустићемо кроз MD5 алгоритам и добићемо 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 алгоритма.

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