SHA-2
SHA-2 ( fin. Secure Hash Algorithm Version 2 - suojattu hajautusalgoritmi, versio 2) - salausalgoritmien perhe - yksisuuntaiset hajautusfunktiot , mukaan lukien algoritmit SHA -224, SHA-256, SHA-384, SHA-512 , SHA -512/256 ja SHA-512/224 .
Hash-funktiot on suunniteltu luomaan "sormenjälkiä" tai "koosteita" mielivaltaisen pituisista viesteistä. Niitä käytetään erilaisissa tietoturvaan liittyvissä sovelluksissa tai komponenteissa .
Historia
SHA-2- hajautusfunktiot on kehittänyt Yhdysvaltain kansallinen turvallisuusvirasto , ja National Institute of Standards and Technology julkaisi ne liittovaltion tietojenkäsittelystandardissa FIPS PUB 180-2 elokuussa 2002 [1] . Tämä standardi sisälsi myös vuonna 1995 kehitetyn SHA-1- hajautustoiminnon. Helmikuussa 2004 SHA-224 [2] lisättiin FIPS PUB 180-2 :een . Lokakuussa 2008 standardista julkaistiin uusi painos - FIPS PUB 180-3 [3] . Maaliskuussa 2012 julkaistiin FIPS PUB 180-4 :n uusin versio , johon lisättiin SHA-512-pohjaiset SHA-512/256- ja SHA-512/224- toiminnot (koska SHA-512 on nopeampi 64-bittisissä arkkitehtuureissa kuin SHA- 256) [4] .
Heinäkuussa 2006 ilmestyi RFC 4634 "U.S. Secure Hash Algorithms ( SHA ja HMAC-SHA )", joka kuvaa SHA-1 :tä ja SHA-2- perhettä .
National Security Agency julkaisi valtion puolesta patentin SHA-2 :lle [5] rojaltivapaalla lisenssillä [6] .
Algoritmi
Yleinen kuvaus
SHA-2-perheen hash-funktiot on rakennettu Merkle-Damgor-rakenteen pohjalta .
Alkuperäinen viesti lisäyksen jälkeen on jaettu lohkoihin, jokainen lohko 16 sanaan. Algoritmi siirtää jokaisen viestilohkon silmukan läpi, jossa on 64 tai 80 iteraatiota (kierrosta). Jokaisella iteraatiolla muunnetaan 2 sanaa, muut sanat asettavat muunnosfunktion. Kunkin lohkon käsittelyn tulokset lasketaan yhteen, summa on hash-funktion arvo. Sisäisen tilan alustus on kuitenkin tulosta edellisen lohkon käsittelystä. Siksi et voi itsenäisesti käsitellä lohkoja ja lisätä tuloksia. Katso pseudokoodi lisätietoja varten .
Hash-funktioiden vertailu
Seuraavassa taulukossa on esitetty joitakin eri SHA-2-versioiden teknisiä ominaisuuksia. "Sisäinen tila" tarkoittaa välissä olevaa hash-summaa seuraavan tietolohkon käsittelyn jälkeen:
hash-toiminto
|
Viestin tiivistelmän pituus (bittiä)
|
Sisäisen tilan pituus (bittiä)
|
Lohkon pituus (bittiä)
|
Viestin enimmäispituus (bittiä
) |
Sanan pituus (bittiä)
|
Iteraatioiden määrä silmukassa
|
Nopeus (MiB/s) [7]
|
SHA-256 , SHA-224 |
256/224 |
256 (8×32) |
512 |
2 64 - 1 |
32 |
64
|
139
|
SHA-512 , SHA-384 , SHA-512/256 , SHA-512/224 |
512/384/256/224 |
512 (8×64) |
1024 |
2 128 - 1 |
64 |
80
|
154
|
Pseudokoodi
Pseudokoodi käyttää seuraavia bittikohtaisia operaatioita:
SHA-256
Selitykset: Kaikki
muuttujat ovat etumerkittömiä, kooltaan 32
bittiä
ja lasketaan yhteen modulo 2 laskelmien aikana 32 viesti — alkuperäinen binäärisanoma
m — muunnettu viesti
h0 := 0x6A09E667
h1 := 0xBB67AE85
h2 := 0x3C6EF372
h3 := 0xA54FF53A
h4 := 0x510E527F
h5 := 0x9B05688C
h6 := 0x1F83D9AB
h7 := 0x5BE0CD19
Vakiotaulukko
(ensimmäiset 32 bittiä murtolukujen kuutiojuurista ensimmäisistä 64 alkuluvusta [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
Esikäsittely:
m := viesti ǁ [ yksi bitti ]
m := m ǁ [k nolla bittiä ],
missä k on pienin ei-negatiivinen luku,
(L + 1 + K) mod 512 = 448, jossa L on viestin bittien määrä ( modulo 512 on verrattavissa 448:aan)
m := m ǁ Pituus (viesti)
on alkuperäisen viestin pituus bitteinä 64-bittinen numerotavujärjestys
isosta pieneen
Seuraavaksi viesti käsitellään peräkkäisissä 512 bitin osissa:
jakaa viestin 512-bittisiksi paloiksi
jokaiselle palalle
jaa pala 16 sanaan, joiden pituus on 32 bittiä (
tavujärjestys sanan yläpäästä alapäähän): w[0..15]
Luo lisää 48 sanaa:
i : lle 16 - 63
s0 := (w[i-15] rotr 7) xor (w[i-15] rotr 18) xor (w[i-15] shr 3)
s1 := (w[i-2] rotr 17) xor (w[i-2] rotr 19) xor (w[i-2] shr 10)
w[i] := w[i-16] + s0 + w[i-7] + s1
Apumuuttujien alustus:
a := h0
b := h1
c := h2
d := h3
e := h4
f := h5
g := h6
h := h7
Pääsilmukka:
i : lle 0 - 63
Σ0 := (a rotr 2) xor (a rotr 13) xor (a rotr 22)
Ma := (a ja b) xor (a ja c) xor (b ja c)
t2 := Σ0 + Ma
Σ1 := (e rotr 6) xor (e rotr 11) xor (e rotr 25)
Ch := (e ja f) xor (( ei e) ja g)
t1 := h + Σ1 + Ch + k[i] + w[i]
h := g
g := f
f := e
e := d + t1
d := c
c := b
b := a
a := t1 + t2
Lisää saadut arvot aiemmin laskettuun tulokseen:
h0 := h0 + a
h1 := h1 + b
h2 := h2 + c
h3 := h3 + d
h4 := h4 + e
h5 := h5 + f
h6 := h6 + g
h7 := h7 + h
Hanki lopullinen hash-arvo:
digest = hash = h0 ǁ h1 ǁ h2 ǁ h3 ǁ h4 ǁ h5 ǁ h6 ǁ h7
SHA-224 on identtinen SHA-256 :n kanssa paitsi:
- muuttujien alustamiseen h0- h7käytetään muita alkuarvoja,
- arvo jätetään pois lopullisesta hashista h7.
Muuttujien alkuarvot h0ovat h7SHA-224:ssä:
h0 := 0xC1059ED8
h1 := 0x367CD507
h2 := 0x3070DD17
h3 := 0xF70E5939
h4 := 0xFFC00B31
h5 := 0x68581511
h6 := 0x64F98FA7
h7 := 0xBEFA4FA4
SHA-512 :lla on identtinen rakenne, mutta:
- sanat ovat 64 bittiä pitkiä,
- Käytetään 80 patruunaa 64:n sijaan,
- viesti on jaettu 1024 bitin osiin,
- muuttujien ja vakioiden alkuarvot laajennetaan 64 bittiin,
- jokaisen 80 kierroksen vakiot ovat 80 ensimmäistä alkulukua,
- toimintojen vaihto rotrja shrse suoritetaan eri paikoissa.
Muuttujien alkuarvot h0ovat h7SHA-512:ssa:
h0 := 0x6a09e667f3bcc908,
h1 := 0xbb67ae8584caa73b,
h2 := 0x3c6ef372fe94f82b,
h3 := 0xa54ff53a5f1d36f1,
h4 := 0x510e527fade682d1,
h5 := 0x9b05688c2b3e6c1f,
h6 := 0x1f83d9abfb41bd6b,
h7 := 0x5be0cd19137e2179
SHA-384 on identtinen SHA-512:n kanssa paitsi:
- muuttujat h0- h7niillä on erilaiset alkuarvot,
- h6ja jätetään pois viimeisestä hashista h7.
Muuttujien alkuarvot h0ovat h7SHA-384
:ssä (alkulukujen neliöjuurten murto-osien ensimmäiset 64 bittiä yhdeksännestä 16:een [23 - 53]):
h0 := CBBB9D5DC1059ED8
h1 := 629A292A367CD507
h2 := 9159015A3070DD17
h3 := 152FECD8F70E5939
h4 := 67332667FFC00B31
h5 := 8EB44A8768581511
h6 := DB0C2E0D64F98FA7
h7 := 47B5481DBEFA4FA4
SHA-512/256 on identtinen SHA-512:n kanssa paitsi:
- muuttujat h0- h7niillä on erilaiset alkuarvot,
- viimeinen hash katkaistaan vasemmalle 256 bittiä.
Muuttujien alkuarvot h0ovat h7SHA-512/256 :ssa:
h0 := 22312194FC2BF72C
h1 := 9F555FA3C84C64C2
h2 := 2393B86B6F53B151
h3 := 963877195940EABD
h4 := 96283EE2A88EFFE3
h5 := BE5E1E2553863992
h6 := 2B0199FC2C85B8AA
h7 := 0EB72DDC81C52CA2
SHA-512/224 on identtinen SHA-512:n kanssa paitsi:
- muuttujat h0- h7niillä on erilaiset alkuarvot,
- viimeinen hash katkaistaan vasemmalle 224 bittiä.
Muuttujien alkuarvot h0ovat h7SHA-512/224 :ssä:
h0 := 8C3D37C819544DA2
h1 := 73E1996689DCD4D6
h2 := 1DFAB7AE32FF9C82
h3 := 679DD514582F9FCF
h4 := 0F6D2B697BD44DA8
h5 := 77E36F7304C48942
h6 := 3F9D85A86A1D36C8
h7 := 1112E6AD91D692A1
Esimerkkejä
Alla on esimerkkejä saman tekstin hajautusarvoista SHA-2- protokollan eri versioissa . Kaikissa esimerkeissä oletetaan ASCII -koodauksen käyttöä .
SHA-224 ("
Nopea ruskea kettu hyppää laiskan koiran yli ")
= 730E109B D7A8A32B 1CB9D9A0 9AA2325D 2430587D DBC0C38B AD911525
SHA-256 ("Nopea ruskea kettu hyppää laiskan koiran yli")
= D7A8FBB3 07D78094 69CA9ABC B0082E4F 8D5651E4 6D3CDB76 2D02D0BF 37C9E592
SHA-384 ("Nopea ruskea kettu hyppää laiskan koiran yli")
= CA737F10 14A48F4C 0B6DD43C B177B0AF D9E51693 67544C49 4011E331 7DBF9A50
9CB1E5DC 1E85A941 BBEE3D7F 2AFBC9B1
SHA-512 ("Nopea ruskea kettu hyppää laiskan koiran yli")
= 07E547D9 586F6A73 F73FBAC0 435ED769 51218FB7 D0C8D788 A309D785 436BBB64
2E93A252 A954F239 12547D1E 8A3B5ED6 E1BFD709 7821233F A0538F3D B854FEE6
SHA-512/256 ("Nopea ruskea kettu hyppää laiskan koiran yli")
= DD9D67B3 71519C33 9ED8DBD2 5AF90E97 6A1EEEFD 4AD3D889 005E532F C5BEF04D
SHA-512/224 ("Nopea ruskea kettu hyppää laiskan koiran yli")
= 944CD284 7FB54558 D4775DB0 485A5000 3111C8E5 DAA63FE7 22C6AA37
Pieninkin muutos viestissä johtaa suurimmassa osassa tapauksista täydelliseen tiivisteen muutokseen lumivyöryefektin vuoksi . Esimerkiksi, kun vaihdat dogarvoon cog(muutos vaikuttaa vain yhteen bitistä koodatun lauseen 344:stä), hash muuttuu dramaattisesti:
SHA-256 ("Nopea ruskea kettu hyppää laiskan hampaan yli")
= E4C4D8F3 BF76B692 DE791A17 3E053211 50F7A345 B46484FE 427F6ACC 7ECC81BE
Cryptanalysis
Hajautusfunktion krypta -analyysi sisältää algoritmin vakauden tutkimuksen ainakin seuraavan tyyppisiä hyökkäyksiä vastaan:
- törmäysten löytäminen eli eri viestit, joilla on sama hash - sähköisen digitaalisen allekirjoituksen turvallisuus tätä hash-algoritmia käyttämällä riippuu tästä;
- prototyypin eli tuntemattoman viestin löytäminen sen tiivisteen perusteella - salasanan tiivisteiden tallentamisen turvallisuus todennustarkoituksiin riippuu tästä .
Vuonna 2003 Gilbert ja Handschuh suorittivat tutkimuksen SHA-2 :sta , mutta eivät löytäneet haavoittuvuuksia [8] . Maaliskuussa 2008 intialaiset tutkijat Somitra Kumar Sanadiya ja Palash Sarkar julkaisivat kuitenkin törmäykset, jotka he löysivät SHA-256:n ja SHA-512 :n 22 iteraatiossa [9] . Saman vuoden syyskuussa he esittelivät menetelmän törmäysten muodostamiseksi SHA-2 :n katkaistuille versioille (21 iteraatiota) [10] [11] . Myöhemmin löydettiin menetelmiä törmäysten rakentamiseksi 31 SHA-256:n [12] iteraatiolle ja 27 SHA-512 :n iteraatiolle [13] .
SHA-2 :n ja SHA-1 :n algoritmisen samankaltaisuuden ja jälkimmäisen mahdollisten haavoittuvuuksien vuoksi päätettiin, että SHA-3 tulee perustumaan täysin erilaiseen algoritmiin [14] [15] . 2. lokakuuta 2012 NIST hyväksyi Keccak -algoritmin SHA-3: ksi .
Hakemus ja sertifiointi
Katso myös Hajautuksen käyttäminen
SHA-224 , SHA-256 , SHA-384 , SHA-512 , SHA-512/256 ja SHA-512/224 ovat Yhdysvaltain lain mukaan sallittuja käytettäväksi tietyissä viranomaissovelluksissa, mukaan lukien käyttö muissa salausalgoritmeissa ja protokollissa suojaamiseksi. tiedot, joilla ei ole salassapitoleimaa. Standardi sallii myös yksityisten ja kaupallisten organisaatioiden SHA-2 :n käytön [16] .
SHA-2- tiivistefunktioita käytetään tietojen eheyden tarkistukseen ja erilaisissa salausmenetelmissä. Vuodesta 2008 lähtien SHA-2- hajautusfunktioiden perhe ei ole niin laajalle levinnyt kuin MD5 ja SHA-1 [17] , vaikka viimeksi mainitussa havaittiin puutteita.
Taulukossa on
joitain esimerkkejä SHA-2 :n käytöstä:
Sovellusalue
|
Yksityiskohdat
|
S/MIME
|
SHA-224 , SHA-256 , SHA-384 tai SHA-512 viestitiivistelmät [18]
|
OpenLDAP
|
SHA-256 , SHA-384 tai SHA -512 salasanahajautus [19]
|
DNSSEC
|
SHA-256 DNSKEY tiivistää DNSSEC - protokollassa [20]
|
X.509
|
SHA-224 , SHA-256 , SHA-384 ja SHA-512 käytetään sertifikaatin sähköisen digitaalisen allekirjoituksen luomiseen [21]
|
PGP
|
SHA-256 , SHA-384 , SHA-512 käytetään sähköisen digitaalisen allekirjoituksen luomiseen [22]
|
IPSec
|
Jotkut toteutukset tukevat SHA-256 :ta ESP- ja IKE-protokollassa [23]
|
DSA
|
SHA-2- perhettä käytetään sähköisen digitaalisen allekirjoituksen luomiseen [24]
|
SHACAL-2
|
SHACAL-2- lohkon salausalgoritmi perustuu SHA-256- hajautustoimintoon
|
bitcoin
|
Tietojen yhdistelmän löytäminen, jonka SHA-256- hajautus täyttää määritetyn ehdon, on todiste kryptovaluutan liikkeeseenlaskussa tehdystä
työstä |
Tutkimukset ovat osoittaneet [25] , että SHA-2- algoritmit ovat 2-3 kertaa hitaampia kuin muut suositut hash-algoritmit MD5 , SHA-1 , Tiger ja RIPEMD-160 .
Sertifiointi
SHA-2 :n toteutukset , kuten kaikki liittovaltion tietojenkäsittelystandardit, voidaan sertifioida käytettäväksi tietyissä sovelluksissa Yhdysvalloissa. Sertifiointi tapahtuu osana Cryptographic Module Validation Program , jonka toteuttaa Yhdysvaltain kansallinen standardi- ja teknologiainstituutti yhdessä Kanadan viestintäturvallisuusviraston kanssa.
5. marraskuuta 2008 mennessä yli 250 SHA-2- toteutusta on sertifioitu , joista neljä pystyy käsittelemään viestejä, joiden bittipituus ei ole kahdeksankertainen [26] .
Sertifioi FIPS PUB 180-4, CRYPTREC ja NESSIE .
Katso myös
Muistiinpanot
- ↑ FIPS PUB 180-2 . - SHA-2-standardin alkuperäinen versio. Haettu 19. marraskuuta 2008. Arkistoitu alkuperäisestä 18. maaliskuuta 2012.
- ↑ FIPS PUB 180-2 muutosilmoituksella . - standardin muunnos SHA-224:llä. Haettu 19. marraskuuta 2008. Arkistoitu alkuperäisestä 18. maaliskuuta 2012.
- ↑ FIPS PUB 180-3 . - Secure Hash Standardin lokakuun 2008 painos. Haettu 19. marraskuuta 2008. Arkistoitu alkuperäisestä 18. maaliskuuta 2012.
- ↑ FIPS PUB 180-4 (englanniksi) (linkki ei saatavilla) . — Secure Hash Standard -julkaisu elokuussa 2015. Haettu 28. elokuuta 2015. Arkistoitu alkuperäisestä 26. marraskuuta 2016.
- ↑ US -patentti 6829355 . — Yksisuuntaisen kryptografisen tiivistyksen laite ja menetelmä. Haettu 14. toukokuuta 2017. Arkistoitu alkuperäisestä 27. heinäkuuta 2016.
- ↑ Lisenssiilmoitus US-patentille 6829355. (uus.) . (Englanti)
- ↑ "Crypto++ 5.6.0 Benchmarks". Haettu 13.6.2013. . Haettu 25. syyskuuta 2016. Arkistoitu alkuperäisestä 14. lokakuuta 2016. (määrätön)
- ↑ Gilbert H. , Handschuh H. SHA-256:n ja sisarusten turvallisuusanalyysi // Selected Areas in Cryptography : 10th Annual International Workshop , SAC 2003, Ottawa, Kanada, 14.-15.8.2003. Revised Papers / M Matsui Zucchera , R. J. - Berliini , Heidelberg , New York, NY , Lontoo [jne.] : Springer Berlin Heidelberg , 2004. - S. 175-193. - ( Lecture Notes in Computer Science ; Vol. 3006) - ISBN 978-3-540-21370-3 - ISSN 0302-9743 ; 1611-3349 - doi:10.1007/978-3-540-24654-1_13
- ↑ Somitra Kumar Sanadhya, Palash Sarkar. 22-Step Collisions for SHA-2 Arkistoitu 30. maaliskuuta 2010 Wayback Machinessa
- ↑ Somitra Kumar Sanadhya, Palash Sarkar. 21-vaiheisten törmäysten deterministiset rakenteet SHA-2 Hash -perheelle
- ↑ Esitys "21-vaiheisten törmäysten deterministiset rakenteet SHA-2 Hash Familylle" Arkistoitu 3. heinäkuuta 2010 Wayback Machinessa
- ↑ Mendel F. , Nad T. , Schläffer M. Paikallisten törmäysten parantaminen: uudet hyökkäykset vähentyneeseen SHA-256 :een // Advances in Cryptology – EUROCRYPT 2013 : 32. vuosittainen kansainvälinen konferenssi salaustekniikoiden teoriasta ja sovelluksista, toukokuu Ateena, Kreikka, 26-30, 2013. Proceedings / T. Johansson , P. Q. Nguyen - Springer Berlin Heidelberg , 2013. - P. 262-278. — 736 s. - ISBN 978-3-642-38347-2 - doi: 10.1007/978-3-642-38348-9_16
- ↑ Christoph Dobraunig, Maria Eichlseder ja Florian Mendel. SHA-512/224- ja SHA-512/256-analyysi (määrittämätön) . – 2016.
- ↑ Schneier turvallisuudesta: NIST Hash Workshop Liveblogging (5) Arkistoitu 7. lokakuuta 2008 Wayback Machinessa
- ↑ Hash cracked - heise Security Arkistoitu 6. joulukuuta 2008 Wayback Machinessa
- ↑ FIPS 180-2: Secure Hash Standard (SHS): 6. Soveltuvuus Arkistoitu alkuperäisestä 18. maaliskuuta 2012. (Englanti)
- ↑ SHA-1 , SHA-256 Googlen hakukonetuloksissa
- ↑ draft-ietf-smime-sha2-08 Arkistoitu 22. kesäkuuta 2009 Wayback Machinessa : SHA2-algoritmien käyttäminen kryptografisen viestisyntaksin kanssa
- ↑ SHA-2 hash-tuki OpenLDAP:ssa Arkistoitu 27. heinäkuuta 2010 Wayback Machinessa
- ↑ RFC 4509 : SHA-256 :n käyttö DNSSEC Delegation Signer (DS) -resurssitietueissa (RRs)
- ↑ RFC 4055 : RSA-salauksen lisäalgoritmit ja tunnisteet käytettäväksi Internetin X.509 julkisen avaimen infrastruktuurin sertifikaatti- ja varmenteiden peruutuslista (CRL) -profiilissa
- ↑ RFC 4880 : OpenPGP -viestimuoto
- ↑ Yleiskatsaus Windows Vista Service Pack 1:stä: uudet standardit arkistoitu 12. maaliskuuta 2016 Wayback Machinessa
- ↑ FIPS-186-2 Arkistoitu 18. toukokuuta 2009. : Digital Signature Standard (DSS)]
- ↑ Suosittujen salausalgoritmien nopeusvertailu [1] Arkistoitu 15. lokakuuta 2008 Wayback Machinessa
- ↑ SHS-validointilista arkistoitu 23. elokuuta 2011 Wayback Machinessa
Kirjallisuus
Linkit
- FIPS 180-3 Arkistoitu alkuperäisestä 18. maaliskuuta 2012. : Secure Hash Standard (SHS)
- RFC 3874 : 224-bittinen yksisuuntainen hajautustoiminto: SHA-224
- RFC 4634 : Yhdysvaltain suojatut hajautusalgoritmit (SHA ja HMAC-SHA)