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, али због сличности са претходним генерацијама, ускоро ће и они бити успешно нападнути.
Оригиналне спецификације алгоритма су публиковане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 алгоритма. Реченицу у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Упоређења 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 |