SHA-2

Из Википедије, слободне енциклопедије
SHA-2 (Сигурносни алогоритам хеширања) је сет криптографских хеш функција дизајниран од стране Националне Безбедносне Агенције (NSA).

SHA-2 (Сигурносни алогоритам хеширања) је сет криптографских хеш функција дизајниран од стране Националне Безбедносне Агенције (NSA). SHA је скраћеница за Сигурносни Алгоритам Хеширања. Криптографске хеш функције су математичке операције које се врше над дигиталним подацима; упоређивањем обрадђеног "хеша" (резултата извршавања алгоритма) са познатом и  очекиваном хеш вредношћу, можемо утврдити интегритет података. На пример, обрађиванјем хеша скинутог фајла и упоредђивањем резултата са претходно објављеном хеш вредношћу можемо утврдити да ли је фајл мењан или компромитован. Кључан аспекат криптографске хеш функције је његова отпорност на сударанје, тј. није могуће наћи два различита уноса који као резултат дају исту хеш вредност.

SHA-2 укључује значајне промене у односо на свог претходника SHA-1. SHA-2 породица се састоји од 6 хеш функција са обрадама (хеш вредностима) од 224, 256, 384 или 512 бита: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA-512/256.

SHA-256 и SHA-512 су новије хеш функције обрађиване 32-битним односно 64-битним речима. Користе резличите помераје и адитивне константе, али су им структуре осим тога скоро идентичне, разликују се само по броју рунди. SHA-224 и SHA-384 су једноставно окрњене верзије прва два, обрађене другим почетним вредностима. SHA-512/224 и SHA-512/256 су такође окрњене верзије SHA-512, али су почетне вредности генерисане методом прописаном Федералним Стандардом за Обраду Података (FIPS) PUB 180-4. SHA-2 је објављен 2001. год. од стране Националног Института за Стандарде и Технологију, америчког федералног стандарда (FIPS). SHA-2 породица алгоритама патентирана је под бројем 6829355. САД су ослободиле патент плаћања лиценце.

2005. год. појавио се алгоритам за проналажење судара SHA-1 алгоритма у око 2000 мање корака него до тада. Иако до данас није објављен ниједан пример судара код SHA-1 алгоритма, отпортност на сударе је мања од очекиване тако да се његово коришћење више не препоручује за послове који се ослањају на отпорност код судара, као на пример дигитални потпис. Иако је SHA-2 сличан SHA-1, напади никад нису успешно изведени.

Хеш стандард[уреди]

One iteration in a SHA-2 family compression function. The blue components perform the following operations:
The bitwise rotation uses different constants for SHA-512. The given numbers are for SHA-256. The red is addition modulo 232.

Објављивањем FIPS PUB 180-2, NIST додаје три додатне 3 хеш функције SHA породици. Ти алгоритми су познати као SHA-2, названих по дужини обрадних речи (у битовима): SHA-256, SHA-384, и SHA-512. Алгоритми су прво објављени 2001. год. у FIPS PUB 180-2 и у то време су прихватане јавне критике и коментари. Августа 2002, FIPS PUB 180-2 постаје нови Стандард Сигурног Хеширања и тиме замењује дотадашњи  FIPS PUB 180-1 објављен 1995. Ажурирани стандард је садржао оригинални  SHA-1 алгоритам, са ажурираном техничком документацијом у којој је детаљно описан начин рада алгоритама SHA-2 породице.

Фебрара 2004., објављена је промена FIPS PUB 180-2 описујући нову варијанту,SHA-224,  који је дефинисан да се поклапа са дужином кључа двокључног  Triple DES-а. Октобра 2008. стандард је ажуриран у објави FIPS PUB 180-3 додајући SHA-224 као стандард, без фундаменталних промена у стандарду. Основна мотивација за ажурирање стандарда, било је премештање безбедносних информација о хеш алгирмима и препорукама за њихово коришћење у  специјалне публикације 800-107 и 800-57. Детаљан тест података и пример обраде порука су уклоњени из стандарда и сада су доступни у засебним документима.

Јануара 2011. NIST објављује SP800-131A, у ком описује прелазак са дотадашње минималне безбедности од 80 битова (SHA-1) које су државне институције користиле до 2013. на 112 битну беубедност (SHA-2) што постаје минимална и препоручена безбедност након тога.[1]

Марта 2012. стандард је ажуриран у објави FIPS PUB 180-4, тада су додате хеш функције SHA-512/224 и SHA-512/256 и опсиан је метод за генерисањљ почетних вредности за окрњене верзије SHA-512. Поред тога скинута је забрана допуњавања улазних података пре хеширања, штп је дозвољавало да је хеш подаци рачунају истовренено када се генерише садржа, налик на преност звука и видеа у реалном времену. Додавање финалног блока података мора да се заврши пре резултата хеширања.[2] Јула 2012 [3]. NIST ревидира SP800-57, што пружа упутство за руковање криптографским кључевима. Ова публикација забрањује прављење дигиталних потписа који имају  хеш безбедност мању  од 112 бита након 2013. Претходна ревизија 2007.  наводи да прелазак буде најкасније до краја 2010. Августа 2012. NIST ревидира SP800-107 на исти начин.

Апликације[уреди]

За више детаља на ову тему погледајте Cryptographic hash function § Applications.

SHA-2 хеш функција се користи у неким широко коришћеним сигурносним апликацијама и протоколима, као што су TLSSSLPGPSSHS/MIME и IPsec.

SHA-256 се користи као део процеса верификације  Debian GNU/Linux софтверских пакета[4],  као и у DKIM стандарду за потписивање порука; SHA-512 је део сустена за верификовање архивског видеа из Медђународног суда правде за геноцид у Руанди.  SHA-256 и SHA-512 су препорчени за корисћење у  DNSSEC.[5] SHA-256 and SHA-512 are proposed for use in DNSSEC.[6] Уникс и Линукс дистрибутери прелазе на коришћење 256битног и 512битног SHA-2 за сигурностно хеширање шифра.[7]


Пар "криптомонета" као на пример Биткоин, користе SHA-256 за верификовање трансакција и рачунање  proof-of-work и proof-of-stake. Напредовањем  ASIC SHA-2 убрзавајућих чипова, довело је до коришчења proof-of-work schemes заснованих на енкрипцији.

SHA-1 и SHA-2  су сигурни хеш алгоритми неопходни у одређеним државним установа САД, укључујући коришћење других криптографских алгоритама и протокола, за заштиту осетљивих информација. FIPS PUB 180-1 такође охрабрује прихватање и коришћење SHA-1 од стране приватних и  комерцијалних организација.  SHA-1  се више не користи у већини државних институција;Национални институт за Стандарде и Технологију у САД, препоручује државним службама да престану коришћење  SHA-1  за послове који захтевају отпортност на судар и да користе неки од SHA-2 породице хеш функција након 2010. год. [8] NISТова директива је требало да убрза престанак коришћења SHA-1.

Упркос бољој сигурности, функционалности SHA-2 нису брзо приваћене. Разлог можда лежи у томе што је недостајала подршка за системе на којима је био Windows XP SP2 или нека старија верзија, [9]  као и у чињеници да идаље није пронађен судар код SHA-1 . Google Chrome тим је најавио да ће њихови прегледачи престати са коришћењем SHA-1-зависних 

TLS  сетификата у периоду од краја 2014 до ране 2015.[10][11][12]

Криптоанализа и валидација[уреди]

За кеш функције где L представља број бита у датој обрађеној поруци, наћи поруку која одговара датој необрађеној,може се одредити коришћењем”насилног“ алгоритма, односно “Brute force” алгоритма претрагому  2Lизраза. Ово се назива “preimage attack” и може, али и не мора бити ефикасно, у зависности од броја бита – L и од самог компјутерског окружења. Други критеријум јесте наћи две различите необрађене поруке које обрадом дају исти сегмент битова. Ово се назива колизија, и коришћењем такозваног “birthday attack” (криптографског напада), њихов број износи у просеку само 2L/2.

На неке апликације које користе криптографски хеш, као што је password storage, колизија представља минималан проблем. Направити пасворд који одговара датом налогу захтева “preimage attack” , као и приступ хешу  оригиналне шифре, обично у shadow фајловима, што може, али опет и не мора бити једноставно. Чак ни безбедни password hash не могу спречити да се, горе поменутим „насилним“ алгоритмом „нападну“ и открију неке не тако сигурне шифре.

У случајевима потписивања докумената, нападач не може просто лажирати потпис постојећег документа – нападач би морао да створи/напише два документа, један безазлен и један штетан и да онда натера или на неки начин учини да посредник приватног кључа потпише штетан документ. Постоје и ситуације у којима је могуће следеће: све до краја 2008. године, било је могуће креирати кривотворен SSL сертификат користећи MD5 колизију која је била прихваћена коришћењем интернет браузера. 

Повећавањем интересовања за аналозом криптографског хеша за време такмичења SHA3 довело је до новог напада на SHA-2 фамилију. Једини практичан проблем јесте кколизија, односно „колизиони напади“: ни један напад не  указује на пуну хеш функцију.

На FSE 2012, истраживачи у Сонију су одржали презентацију указујући на то да псеудо-колизиони напади могу да се повећају чак на 52 рунди на SHA-256 и 57 рунди на SHA-512 користећи "biclique pseudo-preimage" напад.

Објављено у Година Метод напада Напад Врста Рунда Комплексност
Нови напад судара против
SHA-2 до 24 корака
[13]
2008 Детерминистички Судар SHA-256 24/64 228.5
SHA-512 24/80 232.5
Preimages за умањени број корака SHA-2[14] 2009 Човек-у-средини (МИТМ) Preimage SHA-256 42/64 2251.7
43/64 2254.9
SHA-512 42/80 2502.3
46/80 2511.5
Напредни човек-у-средини (МИТМ)
preimage напад
[15]
2010 Човек-у-средини (МИТМ) Preimage SHA-256 42/64 2248.4
SHA-512 42/80 2494.6
Диференцијални напад вишег реда
на редуковани SHA-256
[16]
2011 Диференцијал Псеудо-судар SHA-256 46/64 2178
46/64 246
Bicliques за Preimages: Напад на
Skein-512 и SHA-2 фамилију
[17]
2011 Biclique Preimage SHA-256 45/64 2255.5
SHA-512 50/80 2511.5
Псеудо-preimage SHA-256 52/64 2255
SHA-512 57/80 2511
Побољшање локалног судара: Нови
напад на редуковани SHA-256
[18]
2013 Диференцијал Судар SHA-256 31/64 265.5
Псеудо-судар SHA-256 38/64 237
Хеористика гранања у диференцијалном судару
Претрага апликацијама до SHA-512
[19]
2014 Хеористика диференцијала Псеудо-судар SHA-512 38/80 240.5
Анализа SHA-512/224 и SHA-512/256[20] 2016 Диференцијал Судар SHA-256 28/64 практичан
SHA-512 27/80 practical
Псеудо-судар SHA-512 39/80 practical

Званична валидација[уреди]

Имплементација свих сигурносних функција, одобрених од стране FIPS-а, може бити оверена кроз CMVP програгам, који заједнички воде Национални институт за Стандарде и Технологију (NIST) и Установа за безбедне комуникације (CSE). 

Примери SHA-2 варијанти[уреди]

Хеш вредности празних стрингова.

SHA224("")                                            0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
SHA256("")
0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA384("")
0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA512("")
0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
SHA512/224("")
0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4
SHA512/256("")
0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a


Чак ће и мала промена у поруци највероватније довести до различите хеш вредности. На пример додавање тачке на крај ове реченице мења вредност хеша са 111 на 224 бита:

SHA224("The quick brown fox jumps over the lazy dog")
0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525
SHA224("The quick brown fox jumps over the lazy dog.")
0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c

Псеудокод[уреди]

У наставку следи псеудокод за SHA-256 алгоритам.

Напомена 1: Све променљиве су 32-битни неозначени интиџери и додавање се рачуна по моду 232
Напомена 2: За сваку рунду, постоји једна константа k[i] и један унос у распоред порука, низ
w[i],  0 ≤ i ≤ 63.
Напомена 3: Функција за компресију користи 8 проманљивих, слова од а до х.
Напомена 4: Big-endian нотација је коришћена за константе и када парсирамо блок порука из бајта у речи,
нпр. прва реч уноса поруке "абц" након допуњавања буде 0x61626380.

Иницијализација хеш вредности:
првих 32-бита из факторијелних делова из квадратних корена првих 8 простих бројева 2...19):
h0 := 0x6a09e667
h1 := 0xbb67ae85
h2 := 0x3c6ef372
h3 := 0xa54ff53a
h4 := 0x510e527f
h5 := 0x9b05688c
h6 := 0x1f83d9ab
h7 := 0x5be0cd19

Иницијализација низа округлих константи:
(првих 32 бита су разломљени делови кубих корена првих 64 простих бројева 2...311):
k[0..63] :=
   0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
   0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
   0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
   0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
   0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
   0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
   0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
   0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2

Пред-процесирање:
append the bit '1' to the message
append k bits '0', where k is the minimum number >= 0 such that the resulting message
    length (modulo 512 in bits) is 448.
append length of message (without the '1' bit or padding), in bits, as 64-bit big-endian integer
    (this will make the entire post-processed length a multiple of 512 bits)

Обрађивање поруке у 512-битне гомиле:
break message into 512-bit chunks
for each chunk
    create a 64-entry message schedule array w[0..63] of 32-bit words
    (The initial values in w[0..63] don't matter, so many implementations zero them here)
    copy chunk into first 16 words w[0..15] of the message schedule array

    Проширивање првих 16 речи са осталих 48 речи w[16..63] низа порука:
    for i from 16 to 63
        s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3)
        s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10)
        w[i] := w[i-16] + s0 + w[i-7] + s1

    Иницијализација променљивих за тренутне хеш вредности:
    a := h0
    b := h1
    c := h2
    d := h3
    e := h4
    f := h5
    g := h6
    h := h7

    функција компресије, главна петља:
    for i from 0 to 63
        S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25)
        ch := (e and f) xor ((not e) and g)
        temp1 := h + S1 + ch + k[i] + w[i]
        S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22)
        maj := (a and b) xor (a and c) xor (b and c)
        temp2 := S0 + maj
 
        h := g
        g := f
        f := e
        e := d + temp1
        d := c
        c := b
        b := a
        a := temp1 + temp2

    Додавање компресоване гомиле на тренутну хеш вредност:
    h0 := h0 + a
    h1 := h1 + b
    h2 := h2 + c
    h3 := h3 + d
    h4 := h4 + e
    h5 := h5 + f
    h6 := h6 + g
    h7 := h7 + h

Прављење коначне хеш вредности (big-endian):
digest := hash := h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7


Обрађивање ch and maj вредности се може оптимизовати на исти начин као и код SHA-1.

SHA-224 је иднетичан са SHA-256, осим што:

  • Почетне вредности h0до h7 су различите и
  • Излаз се конструише избегавањем h7

SHA-224 почетне хеш вредности (у big endian):

(Других 32-бита су разломљени доелови квадратних корена простих бројева 23..53)
h[0..7] :=
    0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4

SHA-512 има идентичну структуру као SHA-256, али:

  • порука се цепа у 1024-битне гомиле,
  • има 80 рунди уместо 64,
  • распоред порука, низ w има 80 64-битних речи уместо 64 32-битне речи,
  • како би се проширио низ, петља иде од 16 до 79 уместо од 16 до 63,
  • рундне константе су засноване на првих 80 простих бројева 2..409,
  • реч која се користи за израчунавања је дугачка 64-бита,
  • додата реч на поруку у пред-процесирању је дугачка 128-бита у big-endian нотацији
  • shift и rotate вредности су различите
SHA-512 почетне хеш вредности (у big-endian):                                                                               h h[0..7] := 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 
           0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179

SHA-512 рундне константе:

k[0..79] := [ 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 
              0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 
              0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 
              0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 
              0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 
              0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 
              0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 
              0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 
              0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, 
              0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 
              0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 
              0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 
              0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 
              0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 
              0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 
              0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817]

SHA-512 Sum & Sigma:

S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)
S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)

s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)
s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)

SHA-384 је иднетичан са SHA-512, осим што:

  • Почетне вредности h0до h7 су различите и
  • излаз се конструише избегавањем h6 и h7
SHA-384 почетне хеш вредности (у big-endian):

h[0..7] := 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, 
           0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4

SHA-512/t је идентичан SHA-512 осим што:

  • Почетне вредности h0до h7 су дате функцијом SHA-512/t IV генерације,
  • Излаз се конструише скраћивањем и повезивањем t битова од h0 до h7,
  • t не може бити 384, уместо тога SHA-384 треба да користи како је прописано,
  • t вредности 224 и 256 су посебно препоручене

Поређење SHA функција[уреди]

У табели испод, унутрашње стање је "унутрашња хеш вредност" после сваке компресије блока података.

Поређење SHA функција
Алгоритам и варијанта Величина излаза
(битови)
Величина унутрашњег стања
(битови)
Величина блока
(битови)
Максимална дужина поруке
(битови)
Рунде Операције Заштита
(битови)
Пример извршења[22]
(MiB/s)
MD5 (as reference) 128 128
(4 × 32)
512 Неограничено[23] 64 And, Xor, Rot, Add (mod 232), Or <64
(пронађен судар)
335
SHA-0 160 160
(5 × 32)
512 264 − 1 80 And, Xor, Rot, Add (mod 232), Or <80
(пронађен судар)
-
SHA-1 160 160
(5 × 32)
512 264 − 1 80 <80
(теоретски напад[24])
192
SHA-2 SHA-224
SHA-256
224
256
256
(8 × 32)
512 264 − 1 64 And, Xor, Rot, Add (mod 232), Or, Shr 112
128
139
SHA-384
SHA-512
SHA-512/224
SHA-512/256
384
512
224
256
512
(8 × 64)
1024 2128 − 1 80 And, Xor, Rot, Add (mod 264), Or, Shr 192
256
112
128
154
SHA-3 SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
Неограничено[25] 24[26] And, Xor, Rot, Not 112
128
192
256
-
SHAKE128
SHAKE256
d (arbitrary)
d (arbitrary)
1344
1088
min(d/2, 128)
min(d/2, 256)
-



У колони са битовским операцијама, "rot" заправо значи rotate no carry, а "shr" right logical shift. Сви ови алгоритми користе модуларно сабирање осим SHA-3.

Резултати перформанси изнад одговарају једно-нитнонј импементацији на AMD Opteron 8354 такта 2.2 GHz под Линуксом у 64-битном моду, и служе само као груба основа за општа поређења. Детаљнија мерења перформанси на модерним архитектурама процесора се налазе у табели испод.

CPU архитектура Фреквенција Алгоритам Дужина речи (битови) Циклуси/бајт x86 MiB/s x86 Циклуси/бајт x86-64 MiB/s x86-64
Intel Ivy Bridge 3.5 GHz SHA-256 32-bit 16.80 199 13.05 256
SHA-512 64-bit 43.66 76 8.48 394
AMD Piledriver 3.8 GHz SHA-256 32-bit 22.87 158 18.47 196
SHA-512 64-bit 88.36 41 12.43 292

Перформансе означене са 'x86' покретане су коришћењем 32-битног кода на 64-битним процесорима, док су 'x86-64' природни 64-битни кодови. И ако је SHA-256 дизајниран за 32-битне прорачуне, заправо има користи од кода оптимизованог за 64-битне процесоре на x86 архитектури. 32-битна имплементација SHA-512 је доста спорија од свог 64-битног рођака. Варијанте оба алгоритма са различитим величинама на излазу, ће се понашати слично, док су проширења поруке и функције компресије идентичне, и само иницијалне хеш вредности и величине на излазу су различите. Најбоље импементације MD5 и SHA-1 имају између 4.5 и 6 циклуса по бајту на модерним процесорима.

Тестирање је извршено од стране Универзитет Илиноја у Чикагу на њиховом hydra8 систему, који покреће Inter Xeon E3-1275 V2 са брзином такта од 3,5 GHz, и на њиховом hydra9 систему који покреће AMD A10-5800K са брзином такта од 3.8 GHz.[27] Претходно поменута брзина циклуса у битовима је средња брзна алгоритма који обрађује 4,096-битне поруке користећи SUPERCOP криптографски софтвер за рангирање.[28] MiB/s су изведени из брзине часовника процесора на једом језгру, реалне перформансе могу зависити од разних фактора.

Референце[уреди]

  1. FIPS SP 800-131A Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths
  2. Federal Register Notice 2012-5400, Announcing Approval of FIPS Publication 180-4
  3. „NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition”. Приступљено 24. 2. 2015. 
  4. „Debian codebase in Google Code”. Google. Архивирано из оригинала на датум 7. 11. 2011. Приступљено 8. 11. 2011. 
  5. John Markoff, A Tool to Verify Digital Records, Even as Technology Shifts, New York Times, January 26, 2009
  6. RFC 5702,RFC-Editor.org
  7. Ulrich Drepper, Unix crypt with SHA-256/512
  8. „Secure Hashing”. NIST. Приступљено 25. 11. 2010. 
  9. Microsoft Corporation,Overview of Windows XP Service Pack 3
  10. Chromium Blog, September 5, 2014, Gradually sunsetting SHA-1
  11. Mill, Eric. „SHAAAAAAAAAAAAA”. SHAAAAAAAAAAAAA.com. 
  12. Filippo Valsorda, The Unofficial Chrome SHA1 Deprecation FAQ
  13. Somitra Kumar Sanadhya & Palash Sarkar (2008). „New Collision Attacks Against Up To 24-step SHA-2” (PDF). IACR Cryptology ePrint Archive. 2008:270. 
  14. Aoki, Kazumaro; Jian Guo; Matusiewicz, Krystian; Yu Sasaki & Lei Wang (2009). „Preimages for step-reduced SHA-2”. Advances in Cryptology - ASIACRYPT 2009. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 5912: 578—597. ISBN 978-3-642-10366-7. ISSN 0302-9743. doi:10.1007/978-3-642-10366-7_34. 
  15. Guo, Jian; San Ling; Rechberger, Christian & Huaxiong Wang (2010). „Advanced meet-in-the-middle preimage attacks: First results on full Tiger, and improved results on MD4 and SHA-2” (PDF). Advances in Cryptology - ASIACRYPT 2010. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 6477: 56—75. ISBN 978-3-642-17373-8. ISSN 0302-9743. doi:10.1007/978-3-642-17373-8_4. 
  16. Mario Lamberger & Florian Mendel (2011). „Higher-Order Differential Attack on Reduced SHA-256” (PDF). IACR Cryptology ePrint Archive. 2011:37. 
  17. Dmitry Khovratovich, Christian Rechberger & Alexandra Savelieva (2011). „Bicliques for Preimages: Attacks on Skein-512 and the SHA-2 family” (PDF). IACR Cryptology ePrint Archive. 2011:286. 
  18. Mendel, Florian; Tomislav Nad; Schläffer, Martin (2013). „Improving Local Collisions: New Attacks on Reduced SHA-256”. Advances in Cryptology – EUROCRYPT 2013. Lecture Notes in Computer Science. Springer Berlin Heidelberg. 7881: 262—278. ISBN 978-3-642-38348-9. ISSN 0302-9743. doi:10.1007/978-3-642-38348-9_16. 
  19. Maria Eichlseder and Florian Mendel and Martin Schläffer (2014). „Branching Heuristics in Differential Collision Search with Applications to SHA-512” (PDF). IACR Cryptology ePrint Archive. 2014:302. 
  20. Dobraunig, Christoph; Maria Eichlseder & Florian Mendel (2016). „Analysis of SHA-512/224 and SHA-512/256” (PDF). 
  21. „Crypto++ 5.6.0 Benchmarks”. Приступљено 13. 6. 2013. 
  22. Found on an AMD Opteron 8354 2.2 GHz processor running 64-bit Linux[21]
  23. „The MD5 Message-Digest Algorithm”. Приступљено 18. 4. 2016. 
  24. „The SHAppening: freestart collisions for SHA-1”. Приступљено 5. 11. 2015. 
  25. „The Sponge Functions Corner”. Приступљено 27. 1. 2016. 
  26. „The Keccak sponge function family”. Приступљено 27. 1. 2016. 
  27. SUPERCOP Benchmarks Measurements of hash functions, indexed by machine
  28. „SUPERCOP”. Приступљено 24. 2. 2015.