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“ пустићемо кроз 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 алгоритма.
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 |