Kasutaja:Sinigu/liivakast
Secure Hash Algorithm 1 ehk SHA-1 on Ameerika Ühendriikide Riikliku julgeolekuagentuuri (NSA) poolt välja töötatud krüptograafiline räsifunktsioon, mile tulemuseks on 160-bitine räsikood. SHA-1 on osa USA Riikliku Standardite ja Tehnoloogia Instituudi (National Institute of Standards and Technology, lühend NIST) Föderaalsetest informatsioonitöötlus standarditest, (Federal Information Processing Standard, lühend FIPS), kuid NIST soovitas aastal 2011 lõpetada SHA-1 algoritmi kasutamine ja aastal 2013 keelas SHA-1 algoritmi kasutamise digialkirjades ning kuulutas, et 2030 aastaks peaks olema SHA-1 algoritmi kasutamine lõpetatud.[1][2][3][4]
Aastal 2017 lõpetasid kõik suured Brauserid SHA-1 põhjal SSL sertifikaatide toetamise ning 2017 veebruaris avalikustati esimene SHA-1 kokkupõrge Google ja CWI Amsterdami poolt.[5][6][7][8]
Loomine
[muuda | muuda lähteteksti]SHA-1 loodi USA valitsuse projekti Capstone raames, et seda kasutada uues digiallkirja standardis.[9] Esimene versioon SHA algoritmist, mida tuntakse kui SHA-0 avaldati aastal 1993 standardiga FIPS PUB 180, kuid tagandati peatselt NSA poolt.[10] 1995 avaldati SHA-0 täiendatud versioon SHA-1 standardiga FIPS PUB 180-1 mille erinevus seisnes vaid ühes lisatud ringnihkes Davies-Meyeri kompressiooni funktsiooni sõnumiplokkis.[1]
Kasutus
[muuda | muuda lähteteksti]SHA-1 on üks räsialgoritmidest, mis on seadusega kohustatud kasutamiseks USA valitsuse kasutusalades, et kaitsta tundlikku informatsiooni.[3] Samuti soovitas FIPS PUB 180-1 standard et SHA-1 algoritmi kasutataks erasektori organisatsioonides.[11] SHA-1 on praegu järgus, kus see on eemaldamisel USA valitsuses kasutamisest.[3]
SHA-1 oli ka algselt, aastal 2004, osa Eesti vabariigi krüpteeritud failide ja digitaalsignatuuride failivormingust DigiDoc, kus SHA-1 oli ainuke toetatud räsialgoritmi formaat.[12] Pärast Digidoc allkirja formaadi muutmist BDOC formaadiks lisati digiallkirjadele ka SHA-2 räsialgoritmide perekonna toetus, kuid SHA-1 kasutamine lõpetati täielikult 01.02.2016 ID-tarkvara versiooniga 3.12 kus lõppes DDOC allkirjade loomise võimalus.[13] [14]2017 aastal Loodi rakendus TeRa (ehk Tembeldamise Rakendus), et ümber tembeldada vanad, SHA-1 algoritmil põhinevad DDOC digiallkirjad.[15]
Versioonihaldustarkvara Git kasutas aastani 2020 versioonini 2.29 ainult SHA-1 räsialgoritmi, et räsida repositooriume.[16] SHA-256 toetus lahkus eksperimentaalsest seisust versiooniga 2.42, kuid hetkeseisuga (versioon 2.45) kautatakse veel vaikimisi SHA-1 algoritmi.[17] Kuigi kasutatav SHA-1 algoritmi implemetatsioon on tugevdatud, et vähendada kollisiooni võimalusi siis SHA-1 on siiski oma olemuselt ebaturvaline.[17]
Ehitus[18]
[muuda | muuda lähteteksti]SHA-1 ülessehitus põhineb Merkle–Damgård konstriktsioonil ja Davies-Meyeri ühesuunalisel kompressiooni funktsioonil, kus räsialgoritmi sisend pikendatakse nii, et ta jaguks kindla suurusega plokkideks, ning plokke hakatakse järjest kompressiooni algoritmiga töötlema. Plokki suurus SHA-1 algoritmis on 512 bitti ja väljund on 160 bitti. Igat plokki töödeldakse kompressiooni funktsiooniga 80 korda, ehk SHA-1 algoritmil on 80 ringi.
Laviini effekti tõttu on näha SHA-1 räsis suurt muutus vaid vähese sisendi muutusega. Näiteks, asendades massiindeks
ja kassiindeks
saame
SHA1("massiindeks")= c175e7cb9b77ee3d7b8e27bd90fd8c465443434b
SHA1("kassiindeks")= 5cb53f04796d12c927aa447e71183ef7f72cb971
Kus kahe räsi erinevus on 86 bitti.
Sisendi eeltöötlus
[muuda | muuda lähteteksti]Sisend (m) jagatakse 512 bittisteks plokkideks. Kui sisendi pikkus ei jagu täpselt 512 bittisteks tükkideks siis täiendatakse sisendit järgmisel viisil:
- Sisendi loppu lisatakse 1 bitt '1' kui sisendi pikkus jagub 8-ga;
- Lisatakse '0' bitte kuni
length(m) Mod 512 == 448
ehk 64 bitti enne plokki lõppu; - Sisendi lõppu lisatakse algse sisendi pikkus 64-bittises esituses.
Plokki laiendamine
[muuda | muuda lähteteksti]Iga 512 bittine plokk lüüakse laiali 32 bittisteks sõnadeks järjendisse w[0-15] ja laiendatakse 80-neks sõnaks järgneva algoritmiga:
w[i] = (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) lrotate 1
Kus 15 < i < 80
Algväärtused
[muuda | muuda lähteteksti]SHA-1 algoritmis on 5 registrit mille algsed väärtused on:
- h0 = 0x67452301
- h1 = 0xEFCDAB89
- h2 = 0x98BADCFE
- h3 = 0x10325476
- h4 = 0xC3D2E1F0
Põhitsükkel
[muuda | muuda lähteteksti]Kui tegemist on esimese plokkiga, siis initseeritakse registrid eelnevalt määratud algväärtustega, muidu võetakse plokki registrite algväärtusteks eelneva plokki tulemus:
- a = h0
- b = h1
- c = h2
- d = h3
- e = h4
SHA-1 põhitsükklis tehakse 80 ringi mis jaotatakse neljaks:
- 0 ≤ i ≤ 19:
f = (b and c) or ((not b) and d)
jak = 0x5A827999
- 20 ≤ i ≤ 39:
f = b xor c xor d
jak = 0x6ED9EBA1
- 40 ≤ i ≤ 59:
f = (b and c) or (b and d) or (c and d)
jak = 0x8F1BBCDC
- 60 ≤ i ≤ 79:
f = b xor c xor d
jak = 0xCA62C1D6
Iga ringi lõpus tehakse järgnevad operatsioonid:
temp = (a lrotate 5) + f + e + k + w[i]
e = d
d = c
c = b lrotate 30
b = a
a = temp
Kui kõik 80 ringi on tehtud siis uuendatakse algregistreid ja minnakse järgmise plokki juurde:
h0 = h0 + a
h1 = h1 + b
h2 = h2 + c
h3 = h3 + d
h4 = h4 + e
Räsi
[muuda | muuda lähteteksti]Lõpptulemus algoritmile saadakse, kasutades viimase ploki registreid, järgneva tehtega:
(h0 leftshift 128) or (h1 leftshift 96) or (h2 leftshift 64) or (h3 leftshift 32) or h4:
Turvalisus
[muuda | muuda lähteteksti]2005 aasta veebruaris avaldati Xiaoyun Wang, Yiqun Lisa Yin, ja Hongbo Yu poolt viis, kuidas leida SHA-1 algoritmis kokkupõrkeid vähem kui 269 operatsiooniga, mis on 2048 korda kiirem kui jõuründeks vajalikud 280 operatsiooni.[19] Samas paberis toodi välja üks kollisioon 53-le ringile redutseeritud SHA-1 algoritmist, mis leiti 233 operatsiooniga.[20] Autorid tõid välja, et SHA-1 faili eeltöötlus etappis ja esimeses 20 ringis oli turvaauke.[21]
2005 aasta augustis arendati sama meetodit edasi Xiaoyun Wang, Andrew Yao ja Frances Yao poolt, mis vähendas vajalike operatsioonide arvu 262-ni mis on 262144 korda kiirem kui jõuründeks vajalikud 280 operatsiooni.[22]
2015 avaldas Marc Stevens koos Pierre Karpmani ja Thomas Peryn-iga SHA-1 algoritmil töötava vaba algväärtusega kollisiooniründe, mis vajas vaid 257 operatsiooni. Selle meetodiga hindasid autorid SHA-1 murdmise maksumuseks 75000 kuni 120000 dollarit, ning soovitasid viivitamatult SHA-1 algoritmi kasutamise lõpetamist.[23]
23 veebruar 2017 avaldasid Google ja CWI (Centrum Wiskunde & Informatica) ründe nimega SHAttered, kus loodi 2 erinevat PDF faili(fail1, fail2) millel oli sama räsi. See rünnak õnnestus neil umbes 263.1 operatsiooniga.[24]
2019 aastal töötasid Gaëtan Leurent ja Thomas Peyrin välja uue mooduse, kuidas leida Merkle–Damgård konstruktsioonil põhinevatele räsialgoritmidele valikprefiksiga kollisiooniründeid. See uus meetod leiab valikprefiksiga kollisioone SHA-1 algoritmil vaid 268 operatsiooniga ning muutis SHA-1 turvaaukude kasutamise küberrünnete jaoks praktiliseks.[25]
2020 aastal arendasid Leurent ja Peyrin oma rünnaku tasemele 263.4 operatsiooni mis runde avalikustamise ajal maksis 45000 dollarit iga kollisiooni kohta.[26][27]
- ↑ 1,0 1,1 "Secure Hash Standard(SHS)" (PDF). NIST. 17. aprill 1995. Lk 6. Vaadatud 7. jaanuaril 2025.
- ↑ "NIST Retires SHA-1 Cryptographic Algorithm". NIST (inglise). 15. detsember 2022.
- ↑ 3,0 3,1 3,2 Computer Security Division, Information Technology Laboratory (4. jaanuar 2017). "NIST Policy on Hash Functions - Hash Functions | CSRC | CSRC". CSRC | NIST (Ameerika inglise). Vaadatud 8. jaanuaril 2025.
- ↑ Barker, Elaine; Roginsky, Allen (13. jaanuar 2011). "Transitions: Recommendation for Transitioning the Use of Cryptographic Algorithms and Key Lengths" (inglise).
{{ajakirjaviide}}
: viitemall journal nõuab parameetrit|journal=
(juhend) - ↑ Jones, J. C. (23. veebruar 2017). "The end of SHA-1 on the Public Web". Mozilla Security Blog (Ameerika inglise). Vaadatud 8. jaanuaril 2025.
- ↑ Protalinski, Emil (18. detsember 2015). "Google will drop SHA-1 encryption from Chrome by January 1, 2017". VentureBeat (Ameerika inglise). Vaadatud 8. jaanuaril 2025.
- ↑ Goodin, Dan (4. mai 2016). "Microsoft to retire support for SHA1 certificates in the next 4 months". Ars Technica (Ameerika inglise). Vaadatud 8. jaanuaril 2025.
- ↑ "CWI, Google announce first collision for Industry Security Standard SHA-1". phys.org (inglise). Centrum Wiskunde & Informatica. 23. veebruar 2017. Vaadatud 8. jaanuaril 2025.
- ↑ "RSA Security - 6.2.3 What is Capstone?". web.archive.org. 14. märts 2006. Vaadatud 8. jaanuaril 2025.
- ↑ "Wayback Machine" (PDF). nvlpubs.nist.gov. Originaali (PDF) arhiivikoopia seisuga 17. detsember 2024. Vaadatud 8. jaanuaril 2025.
- ↑ Technology, National Institute of Standards and (17. aprill 1995). "Secure Hash Standard" (inglise).
{{ajakirjaviide}}
: viitemall journal nõuab parameetrit|journal=
(juhend) - ↑ "DigiDoc Format Specification" (PDF). id.ee. 12. mai 2004. Lk 5. Vaadatud 7. jaanuar 2025.
- ↑ "BDOC - digitaalallkikrja vorming" (PDF). id.ee. 2012. Lk 8. Vaadatud 7. jaanuar 2025.
- ↑ "ID-software release notes ver. 3.11 - 17.12" (PDF). id.ee. Lk 8. Vaadatud 7. jaanuar 2025.
- ↑ "Küülikukasvatusest e-riigis | Riigi Infosüsteemi Ameti blogi" (Ameerika inglise). 6. märts 2017. Vaadatud 8. jaanuaril 2025.
- ↑ Wallen, Jack (7. veebruar 2020). "Git Transitioning Away from the Aging SHA-1 Hash". The New Stack (Ameerika inglise). Vaadatud 8. jaanuaril 2025.
- ↑ 17,0 17,1 Blau, Taylor (29. aprill 2024). "Highlights from Git 2.45". The GitHub Blog (Ameerika inglise). Vaadatud 8. jaanuaril 2025.
- ↑ "Secure Hash Standard (SHS)". National Institute of Standards and Technology (inglise): 18-20. 4. august 2015.
- ↑ "SHA-1 Broken". Schneier on Security (Ameerika inglise). 15. veebruar 2005. Vaadatud 8. jaanuaril 2025.
- ↑ "Collision Search Attacks on SHA-1" (PDF).
- ↑ "Fixing a hole in security". ZDNET (inglise). Vaadatud 8. jaanuaril 2025.
- ↑ "New Cryptanalytic Results Against SHA-1". Schneier on Security (Ameerika inglise). 17. august 2005. Vaadatud 8. jaanuaril 2025.
- ↑ "The Shappening". web.archive.org. 11. veebruar 2016. Vaadatud 8. jaanuaril 2025.
- ↑ "SHAttered". shattered.io. Vaadatud 8. jaanuaril 2025.
- ↑ Leurent, Gaëtan; Peyrin, Thomas (2019). "From Collisions to Chosen-Prefix Collisions Application to Full SHA-1" (PDF). Yuval Ishai; Vincent Rijmen (toim-d). Advances in Cryptology – EUROCRYPT 2019 (PDF). 38th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Darmstadt, Germany, mai 19–23, 2019. Lecture Notes in Computer Science. Kd 11478. Springer. Lk 527–555. DOI:10.1007/978-3-030-17659-4_18. ISBN 978-3-030-17658-7. S2CID 153311244.
- ↑ Leurent, Gaëtan; Peyrin, Thomas (1. mai 2020). "SHA-1 is a Shambles First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust" (PDF). Cryptology ePrint Archive, Report 2020/014. Vaadatud 7. jaanuar 2025.
- ↑ "SHA-1 is a Shambles". SHA-1 is a Shambles (Ameerika inglise). Vaadatud 8. jaanuaril 2025.