SHA
SHA (lyhenne sanoista Secure Hash Algorithm) kuuluu kryptograafisiin tiivistefunktioihin. Sen eniten käytetty muoto on SHA-1, jota käytetään muun muassa useissa TLS-, SSL-, PGP-, SSH-, S/MIME- ja IPSec-ohjelmistoissa. MD-SHA-tiivistefunktioiden perhe alkoi vuonna 1990 MD4:llä joka nopeasti korvattiin heikkouksien vuoksi MD5:llä vuonna 1992.[1]
Yhdysvaltojen sähköistä salakuuntelua, vieraiden kielten osaamista ja salakirjoituksen purkua harjoittava tiedusteluelin National Security Agency (NSA) suunnitteli SHA:n, ja se julkaistiin Yhdysvaltojen hallituksen standardina.
Ensimmäinen versio SHA, joka yleisemmin tunnetaan nimellä SHA-0, julkaistiin vuonna 1993. Seuraaja SHA-1 (RFC 3174) julkaistiin vuonna 1995, minkä jälkeen on julkaistu SHA-2 ja SHA-3.
Julkaistuista standardeista kaksi ensimmäistä, SHA-0 ja SHA-1, on jo onnistuttu murtamaan.[2][3][4] Hyökkäysmenetelmien johdosta on kehitetty vahvennus törmäysten havaitsemiseen, jota voidaan käyttää SHA-1:n ja MD5:n kanssa.[5]
Tutkijat pitävät mahdollisena, että lähitulevaisuudessa myös SHA-2 murretaan, sillä se on niin samankaltainen edeltäjiinsä verrattuna. SHA-1-hyökkäystä ei ole vielä onnistuneesti käytetty SHA-2:een. SHA-2:n referenssitoteutus on esitelty IETF:n standardissa RFC 6234. SHA-2 algoritmi on sama SHA-224, SHA-256, SHA-384 ja SHA-512 variaatioissa eroten operandien koossa, alustusvektoreissa sekä lopullisen tiivisteen koossa.[6]
SHA-3-funktion standardointiprosessi aloitettiin vuonna 2005 sen jälkeen, kun SHA-1:n murtaminen osoitettiin mahdolliseksi.[7][8] Standardointiprosessi koostui useista osista, joista merkittävin oli vuosina 2007–2012 käyty kilpailu standardin pohjaksi otettavasta algoritmista. Kilpailun voitti belgialaisten ja italialaisten kryptologien kehittämä Keccak.[9]
NSA:n sijaan prosessista vastasi NIST. Standardin piti alun perin valmistua kokonaisuudessaan jo pian kilpailun päätyttyä, vuoden 2012 loppuun mennessä[2], mutta se vahvistettiin FIPS 202 standardiksi lopulta vasta elokuussa 2015.[10]
SHA:ssa on seuraavat algoritmit:[10][11]
Perhe | Algoritmi | Viestikoko | Lohkokoko | Tiivisteen koko (bittiä) |
---|---|---|---|---|
SHA-1 | SHA-1 | 264 | 512 | 160 |
SHA-2 | SHA-224 | 264 | 512 | 224 |
SHA-2 | SHA-256 | 264 | 512 | 256 |
SHA-2 | SHA-384 | 2128 | 1024 | 384 |
SHA-2 | SHA-512 | 2128 | 1024 | 512 |
SHA-2 | SHA-512/224 | 2128 | 1024 | 224 |
SHA-2 | SHA-512/256 | 2128 | 1024 | 256 |
SHA-3 | SHA3-224 | 224 | ||
SHA-3 | SHA3-256 | 256 | ||
SHA-3 | SHA3-384 | 384 | ||
SHA-3 | SHA3-512 | 512 | ||
SHA-3 | SHAKE128 | |||
SHA-3 | SHAKE256 |
Lähteet
- The first collision for full SHA-1 (PDF) shattered.io. Viitattu 15.1.2020. (englanniksi)
- Tentative Timeline of the Development of New Hash Functions 12.7.2006. NIST. Arkistoitu 10.6.2008. Viitattu 13.6.2008. (englanniksi)
- Stevens, Marc; Bursztein, Elie; Karpman, Pierre; Albertini, Ange; Markov, Yarik; Petit-Bianco, Alex & Baisse, Clement: Announcing the first SHA1 collision Google Security Blog. 23.2.2017. Viitattu 30.10.2017. (englanniksi)
- Goodin, Dan: At death’s door for years, widely used SHA1 function is now dead Ars Technica. 23.2.2017. Viitattu 24.2.2017. (englanniksi)
- Marc Stevens: Counter-cryptanalysis (PDF) marc-stevens.nl. Viitattu 23.9.2022. (englanniksi)
- Improving SHA-2 Hardware Implementations researchgate.net. lokakuu 2006. doi:10.1007/11894063_24. Viitattu 15.1.2020. (englanniksi)
- Cryptographic Hash Algorithm Competition csrc.nist.gov. (englanniksi)
- SHA-3 Standardization 4.1.2017. NIST. Viitattu 30.10.2017. (englanniksi)
- SHA-3 Winner NIST. Viitattu 4.2.2017. (englanniksi)
- SHA-3 Standard: Permutation-Based Hash and Extendable-Output Functions FIPS PUB. NIST. Viitattu 24.2.2017. (englanniksi)
- Secure Hash Standard (SHS) NIST. Viitattu 24.2.2017. (englanniksi)