# Mis SHA-256 tegelikult on

> Cuadernos Lacre · Kontseptsioon · 19. mai 2026
> https://solo2.net/et/vihikud/articulos/mis-sha-256-tegelikult-on.html

Matemaatiline sõrmejälg, mis mahub kuuekümne nelja märgi sisse ja muutub täielikult, kui algteksti üksainus koma liigub. Miks me kutsume seda digitaalseks pitsatiks.

---

## Lihtne idee tehnilise nime taga

Kujutage ette, et on olemas masin, millel on üks pilu ja üks ekraan. Pilusse sisestate teksti: sõna, lause, terve romaani. Ekraanile ilmub hetk hiljem täpselt kuuekümne nelja märgi pikkune jada. Seda jada kutsume professionaalse lugeja jaoks *hash*-iks või *krüptograafiliseks kokkuvõtteks*; üldlugeja jaoks võime seda praegu nimetada teksti matemaatiliseks sõrmejäljeks, nagu sõrmejälg on inimese jaoks.

Kui sisestate sama teksti kaks korda, näitab masin mõlemal korral sama sõrmejälge. Kui sisestate veidi erineva teksti — üksainus liigutatud koma, suurtäht, mis muutub väiketäheks — näitab masin esimesest täiesti erinevat sõrmejälge. Mitte sarnast: erinevat. Need kaks omadust koos — determinism ja tundlikkus — ongi see lihtne idee. Kõik muu SHA-256 juures on masinavärk, mis paneb need hästi toimima.

Alguses tasub öelda, mida masin ei tee. See ei krüpteeri teksti. See ei peida seda. See ei salvesta seda. Masin vaatab teksti, arvutab sõrmejälje ja unustab teksti. Sõrmejälg ei võimalda taastada teksti, mis selle tekitas; see võimaldab ainult kontrollida, kas kandidaattekst ühtib originaaliga või mitte. Seetõttu ütleme, et see on *ühesuunaline* kokkuvõte: see läheb välja, aga ei tule tagasi.

## Hash ei ole sama mis krüpteerimine

Segadus on sagedane ja seda tasub selgitada: krüpteerimine ja hashimine on erinevad toimingud. Krüpteerimine tähendab teksti teisendamist nii, et ainult võtme valdaja saab selle algkujule tagasi viia. Hashimine tähendab tekstist sõrmejälje loomist, millest algteksti ei saa kunagi taastada, ei võtmega ega ilma. Esimene on disaini poolest pööratav; teine disaini poolest pöördumatu.

Praktiline tagajärg on oluline. Kui rakendus ütleb: „Salvestame teie parooli krüpteeritult“, on kellelgi olemas võti selle lahtikrüpteerimiseks — igal juhul rakendusel endal. Kui rakendus ütleb: „Salvestame teie parooli hashitult“, ei saa rakendus ise algset parooli lugeda isegi siis, kui ta seda tahaks; ta saab ainult kontrollida, kas teie sisestatud parool tekitab uuesti sama sõrmejälje. Teine mudel, kui see on hästi tehtud, on paroolide hoidmiseks esimesest palju eelistatavam. Hiljem näeme, miks „hästi tehtud“ nõuab midagi enamat kui lihtsalt puhast SHA-256.

## Neli omadust, mis teevad krüptograafilise hashi kasulikuks

Hash-funktsioon, mis väärib omadussõna *krüptograafiline*, vastab neljale omadusele:

1. Determinism. Sama sisend annab alati sama sõrmejälje.
2. Laviiniefekt. Väike muutus sisendis tekitab täiesti erineva sõrmejälje, millel pole eelmise sarnasust.
3. Pöördkujutise resistentsus. Antud sõrmejälje põhjal ei ole arvutuslikult teostatav leida teksti, mis selle tekitas.
4. Kollisiooniresistentsus. Ei ole arvutuslikult teostatav leida kahte erinevat teksti, mis annaksid sama sõrmejälje.

„Ei ole arvutuslikult teostatav“ ei tähenda „on matemaatiliselt võimatu“. See tähendab, et selle saavutamise aja-, energia- ja rahaline kulu ületab suurusjärkude võrra kogu mõistlikult kättesaadava arvutusvõimsuse summa. SHA-256 puhul mõõdetakse seda piiri kvadriljonites aastates isegi kõige optimistlikumate stsenaariumide korral spetsiaalse riistvaraga. Mis on lugeja praktilistel eesmärkidel sama mis „ei saa“.

## SHA-256 konkreetsemalt

Nimi ütleb kõik. SHA on lühend sõnadest *Secure Hash Algorithm* (turvaline hash-algoritm). Number 256 tähistab sõrmejälje suurust bittides: kakssada viiskümmend kuus bitti ehk kolmkümmend kaks baiti, mis kuueteistkümnendsüsteemis on need kuuskümmend neli märki, mida lugeja juba tunneb. Standardi avaldas USA NIST (asutus, mis seda tüüpi funktsioone normaliseerib) 2001. aastal osana SHA-2 perekonnast; standardi praegune versioon FIPS 180-4 on aastast 2015.

Mõõtmed väärivad hetke. Kakssada viiskümmend kuus bitti võimaldavad kaks astmel kakssada viiskümmend kuus erinevat väärtust: seitsmekümne kaheksa kümnendkohaga arv, mis on mitu suurusjärku suurem kui hinnanguline aatomite arv vaadeldavas universumis. Iga tekst maailmas — iga raamat, iga e-kiri, iga sõnum — langeb ühele neist väärtustest. Tõenäosus, et kaks erinevat teksti juhuslikult kokku langevad, on praktilistel eesmärkidel eristamatu nullist.

## Kuidas see koodis välja näeb

## Miks me kutsume seda lakipitsatiks

15.–19. sajandi Euroopa kirjavahetuses suleti kiri lakiga (pitsativahaga). Tilk sulatatud vaha, sellele vajutatud pitsat ja kiri jäi märgistatuks kordumatul viisil. See ei kaitsnud sisu kindlameelse piiluja eest — paberit sai lugeda vastu valgust, lakki sai murda —, kuid see tõendas sisu. Igasugune sulgemise muutmine oli saajale nähtav juba enne paberi avamist. Lakk ei hoidnud ära kahju; see deklareeris seda.

Iga Cuaderno sisu SHA-256 täidab oma digitaalses versioonis sama funktsiooni. Kui artikli üksainus sõna muutuks selle avaldamise hetke ja teie lugemise hetke vahel, ei ühtiks teksti allosas olev kuueteistkümnendsüsteemis pitsat enam teie ees oleva teksti SHA-256-ga. Iga lugeja saaks seda viie koodireaga kontrollida. Väljaanne ei saa oma ajalugu ümber kirjutada ilma, et pitsat seda reedaks. See ei kaitse kahju eest; see teeb selle kontrollitavaks.

## Mis hash ei ole

SHA-256-lt oodatakse mõnikord nelja kasutusviisi, mis talle ei kuulu:

1. Krüpteerimine. Hash teeb kokkuvõtte, mitte ei peida. Kui soovite, et tekst poleks loetav, peate selle krüpteerima, mitte hashima.
2. Autori autentimine. Hash ei ütle, kes teksti kirjutas, vaid ainult seda, millist teksti hashiti. Autorsuse seostamiseks on vaja hashi peale krüptograafilist allkirja, mitte ainult hashi.
3. Paroolide salvestamine. Siin on lõks, mida tasub mõista. SHA-256 on loodud olema väga kiire — mis on paljude asjade jaoks hea, kuid selle jaoks halb. Spetsiaalse riistvaraga ründaja saab proovida miljardeid paroole sekundis SHA-256 hashi vastu, kuni leiab teie oma. Paroolide salvestamiseks tuleb kasutada teadlikult aeglaseid võtme tuletamise funktsioone nagu Argon2, scrypt või bcrypt, kombineerituna *soolaga* (unikaalne juhuslik andmetükk kasutaja kohta, mis takistab kahel sama parooliga inimesel sama hashi omamast).
4. Hashi lugemine autori identifikaatorina. See ei ole nii. Hash identifitseerib sisu. Kui kaks inimest hashivad sõna *hola* (tere) SHA-256-ga, saavad mõlemad sama kokkuvõtte — ja see on keskne omadus, mitte viga: kui need oleksid erinevad kokkuvõtted, ei saaks me kontrollida avaldatu ja vastuvõetu kokkulangevust.

## Kus SHA-256 ilmub teie igapäevaelus

Kuigi te seda ei näe, toetab SHA-256 suurt osa sellest, mida te internetis igapäevaselt kasutate. Bitcoini plokiahel on üles ehitatud iga ploki SHA-256 aheldamisel järgmise külge; mineviku ploki muutmine sunnib kogu järgneva ahela ümber arvutama. Git, süsteem, millega versioonitakse poolt maailma koodi, tuvastab iga commiti selle täieliku sisu SHA-256 (hiljutistes versioonides) või selle eelkäija SHA-1 (vanemates versioonides) järgi. HTTPS-sertifikaatidel, mis kontrollivad veebisaidi identiteeti, kui sinna sisenete, on kaasas SHA-256 sõrmejälg. Tarkvara allalaadimistega kaasneb sageli arendaja avaldatud SHA-256, et saaksite kontrollida, kas faili pole teel muudetud. Ja nagu me ütlesime, iga Cuaderno Lacre allosas.

## Professionaalsele lugejale

Neli operatiivset meeldetuletust neile, kas otsustavad süsteemide üle või auditeerivad neid:

1. Hash ei ole krüpteerimine. Kui tarnija ajab need kaks terminit oma tehnilises dokumentatsioonis segamini, tasub küsida, mida ta täpselt mõtleb.
2. Paroolide salvestamiseks ei tohi kunagi kasutada puhast SHA-256. SHA-256 on selle ülesande jaoks liiga kiire (vt punkt 3 jaotisest *Mis hash ei ole*). Praegune standard on Argon2id: disainilt aeglane, konfigureeritav vastavalt serveri võimekusele, kombineeritud unikaalse juhusliku *soolaga* kasutaja kohta.
3. Dokumentide — lepingute, toimikute, failide — tervikluse tagamiseks on SHA-256 šealgi standardne etalon. Seda kasutavad EL-i kvalifitseeritud ajatempli teenuse osutajad.
4. Pikaajaliseks säilitamiseks (aastakümned) tasub lisaks SHA-256-le arvutada ja arhiveerida ka SHA-3 või SHA-512; krüptograafiline ettevaatus soovitab sajanditepikkuste arhiivide puhul mitte toetuda ainult ühele funktsioonile.

Kujuta ette, et oled kokku pannud maailma kõige keerulisema dominoraja: tuhanded kivid, kümned hargnemised, mehaanilised sillad ja kaldteed üle terve toa, hoolikalt tükkhaaval paika pandud.

Kui sa puudutad esimest kivi, kukub ahel täpses ja korratavas järjestuses. Sama asetus, sama algne puudutus → identne lõplik mahakukkunud kivide muster, ikka ja jälle.

Siin is huvitav osa: liiguta **ainult ühte kivi** pool sentimeetrit ühele poole enne alustamist ja puuduta uuesti. Kaldtee, mis pidanuks aktiveeruma, jääb paigale, sild ei kuku, käivitub teine hargnemine. Lõplik muster põrandal on esimesega võrreldes täiesti tundmatu.

SHA-256 on matemaatiliselt seesama rada. Sinu kirjutatud tekst on kivide algpositsioon. Algoritm on puudutus, mis vallandab laviini. Ja lõpptulemus — mida me nimetame *räsiks* (hash) — on seisufoto põrandast, kui kõik on peatunud. Muuda algses tekstis kasvõi ühte koma ja foto on drastiliselt erinev. Nii lihtne ja samas nii drastiline see ongi.

---

*Kui lähete tagasi selle artikli allossa, näete kuuekümne nelja märgi pikkust kuueteistkümnendsüsteemis pitsatit. See on äsja loetud teksti SHA-256 selles keeles. Kui tõlgiksime artikli, oleks pitsat teistsugune; kui eestikeelses versioonis muutuks üks sõna, muutuks eesti pitsat. Pitsat ei kaitse sisu — selleks on teised tööriistad —, vaid identifitseerib selle üheselt. Ja sellest, kui tagasihoidlikult see ka ei kõlaks, piisab, et toimetuse ahela ükski samm ei saaks öeldut muuta ilma, et see välja tuleks. Kõik muu — krüpteerimine, allkirjastamine, identifitseerimine — on ehitatud selle lihtsa idee peale.*

## Allikad ja täiendav lugemine

- NIST — *FIPS PUB 180-4: Secure Hash Standard (SHS)*, august 2015. SHA-2 perekonna, sealhulgas SHA-256, ametlik spetsifikatsioon.
- RFC 6234 — *US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)*, IETF, mai 2011. Normatiivne versioon rakendajatele.
- Ferguson, N.; Schneier, B.; Kohno, T. — *Cryptography Engineering: Design Principles and Practical Applications* (Wiley, 2010). Peatükid 5 ja 6 käsitlevad hash-funktsioone ning nende õiguspäraseid ja väärkasutusi.
- Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktiline näide SHA-256 kasutamisest plokkide aheldamiseks muutumatus struktuuris.
- Määrus (EL) 910/2014 (eIDAS) — kvalifitseeritud ajatemplite raamistik. SHA-256 on EL-is väljastatavate kvalifitseeritud e-allkirjade ja -pitsatite etalonfunktsioon.
- Zig-i viiteimplementatsioon: std.crypto.hash.sha2.Sha256 keele ametlikus hoidlas (*github.com/ziglang/zig* → lib/std/crypto/sha2.zig). See on optimeeritud ja auditeeritud versioon, mida Solo2 tegelikult kasutab. Kasulik lisa didaktilise implementatsiooniga võrdlemiseks.

---

*Cuadernos Lacre · Ettevõtte Menzuri Gestión S.L. väljaanne · kirjutanud R.Eugenio · toimetanud Solo2 meeskond.*
*https://solo2.net/et/vihikud/*
