# Kaj dejansko je SHA-256

> Cuadernos Lacre · Koncept · 19. maj 2026
> https://solo2.net/sl/zvezki/articulos/kaj-sha-256-v-resnici-je.html

Matematični odtis, ki se prilega v štiriinšestdeset znakov in se popolnoma spremeni, če se v izvirnem besedilu premakne ena sama vejica. Zakaj ga imenujemo digitalni voščeni pečat.

---

## Preprosta ideja za tehničnim imenom

Predstavljajte si stroj z eno samo režo in enim zaslonom. Skozi režo vnesete besedilo: besedo, stavek, cel roman. Na zaslonu se trenutek kasneje prikaže zaporedje natanko štiriinšestdesetih znakov. To zaporedje strokovni bralci imenujemo *zgoščevalna vrednost (hash)* ali *kriptografski povzetek*; za splošnega bralca pa ga lahko za zdaj imenujemo matematični odtis besedila, tako kot je prstni odtis človekov odtis.

Če dvakrat vnesete isto besedilo, bo stroj obakrat prikazal enak odtis. Če vnesete nekoliko spremenjeno besedilo — premaknjeno eno vejico, veliko začetnico namesto male — bo stroj prikazal popolnoma drugačen odtis od prvega. Ne podoben: drugačen. Ti dve lastnosti skupaj — determiniranost in občutljivost — sta tista preprosta ideja. Vse ostalo pri SHA-256 so mehanizmi, s katerimi to dvoje dobro deluje.

Na začetku je treba povedati, česa stroj ne počne. Besedila ne šifrira. Ne skriva ga. Ne shranjuje ga. Stroj pogleda besedilo, izračuna odtis in pozabi besedilo. Iz odtisa ni mogoče rekonstruirati besedila, ki ga je ustvarilo; omogoča zgolj preverjanje, ali se besedilo ujema z izvirnikom. Zato pravimo, da je to povzetek v *eni smeri*: gre v eno smer, v drugo ne.

## Zgoščevanje ni isto kot šifriranje

Zmeda je pogosta in jo je treba razjasniti: šifriranje in zgoščevanje sta različni operaciji. Šifriranje pomeni preoblikovanje besedila tako, da ga lahko samo imetnik ključa vrne v prvotno obliko. Zgoščevanje pomeni ustvarjanje odtisa besedila, iz katerega izvirnega besedila ni mogoče nikoli več pridobiti, ne s ključem ne brez njega. Prvo je načrtno reverzibilno; drugo pa namerno ireverzibilno.

Praktična posledica je pomembna. Ko aplikacija reče "vaše geslo shranjujemo šifrirano", obstaja nekdo, ki ima ključ za njegovo dešifriranje — to je v vsakem primeru sama aplikacija. Ko aplikacija reče "vaše geslo shranjujemo zgoščeno", sama aplikacija izvirnega gesla ne more prebrati, tudi če bi želela; lahko samo preveri, ali tisto, ki ga vnesete, ustvari enak odtis. Drugi model, če je narejen pravilno, je za shranjevanje gesel veliko primernejši od prvega. Kasneje bomo videli, zakaj "narejen pravilno" zahteva več kot le sam SHA-256.

## Štiri lastnosti, zaradi katerih je kriptografski odtis koristen

Zgoščevalna funkcija, ki si zasluži pridevnik *kriptografska*, izpolnjuje štiri lastnosti:

1. Determiniranost. Isti vnos vedno ustvari enak odtis.
2. Učinek plazu. Majhna sprememba na vhodu ustvari popolnoma drugačen odtis brez kakršne koli vidne podobnosti s prejšnjim.
3. Odpornost proti inverziji. Če imamo odtis, računsko ni izvedljivo najti besedila, ki ga je ustvarilo.
4. Odpornost proti kolizijam. Računsko ni izvedljivo najti dveh različnih besedil, ki ustvarita enak odtis.

"Računsko ni izvedljivo" ne pomeni "matematično nemogoče". Pomeni, da stroški časa, energije in denarja za dosego tega cilja za več velikostnih razredov presegajo vsoto vseh razumno razpoložljivih računskih zmogljivosti. Pri SHA-256 se ta meja meri v tisočih milijard let, tudi pri najbolj optimističnih pristopih z namensko strojno opremo. Kar pa je za praktične namene bralca isto kot "se ne da".

## Konkretno, SHA-256

Že samo ime pove vse. SHA je kratica za *Secure Hash Algorithm*: varni zgoščevalni algoritem. Število 256 označuje velikost odtisa v bitih: dvesto šestinpetdeset bitov, torej dvaintrideset bajtov, kar v heksadecimalnem zapisu predstavlja tistih štiriinšestdeset znakov, ki jih bralec že prepozna. Standard je leta 2001 izdal ameriški NIST, organ, ki standardizira takšne funkcije, kot del družine SHA-2; trenutna veljavna različica standarda, FIPS 180-4, je iz leta 2015.

Mere si zaslužijo nekaj pozornosti. Dvesto šestinpetdeset bitov omogoča dva na dvesto šestinpetdeset različnih vrednosti: število z oseminsedemdesetimi decimalkami, kar je za več velikostnih razredov več kot je ocenjeno število atomov v vidnem vesolju. Vsako besedilo na svetu — vsaka knjiga, vsako elektronsko sporočilo, vsako sporočilo — pade na eno od teh vrednosti. Verjetnost, da se bosta dve različni besedili po naključju ujemali, je za praktične namene nerazpoznavna od ničle.

## Kako to izgleda v kodi

## Zakaj ga imenujemo voščeni pečat

V evropski korespondenci od petnajstega do devetnajstega stoletja je pečatni vosek zapiral pismo. Kaplja stopljenega voska, pritisnjen pečat in pismo je bilo neponovljivo označeno. Vsebine ni zaščitil pred odločnim vohunom — papir je bilo mogoče brati proti svetlobi, vosek zlomiti — je pa poseg naredil očiten. Vsaka sprememba pečata je bila prejemniku vidna še pred odprtjem papirja. Voščeni pečat ni preprečil poškodbe; razglasil jo je.

SHA-256 jedra vsake izdaje Cuadernos opravlja v digitalni različici povsem enako vlogo. Če bi se spremenila samo ena beseda članka od trenutka, ko je bil objavljen, do trenutka, ko ga preberete, se heksadecimalni pečat na dnu besedila ne bi več ujemal s SHA-256 besedila, ki ga imate pred seboj. To bi lahko preveril vsak bralec s petimi vrsticami kode. Publikacija ne more prepisati svoje zgodovine, ne da bi jo pečat izdal. Ne varuje pred poškodbami; poškodbe naredi preverljive.

## Kaj zgoščevanje ni

Od SHA-256 se včasih zahtevajo štiri uporabe, ki mu ne pripadajo:

1. Šifriranje. Zgoščevanje povzame, ne skrije. Če želite, da je besedilo neberljivo, ga morate šifrirati, ne zgostiti.
2. Preverjanje avtorja. Zgoščevanje ne pove, kdo je besedilo napisal, le katero besedilo je bilo zgoščeno. Za določitev avtorstva je potreben kriptografski podpis nad odtisom, ne pa sam odtis.
3. Shranjevanje gesel. Tu se skriva past, ki jo je dobro razumeti. SHA-256 je zasnovan tako, da je zelo hiter — kar je dobro za mnoge stvari, za to pa slabo. Napadalec z namensko strojno opremo lahko preveri več milijard gesel na sekundo proti zgoščeni vrednosti SHA-256, dokler ne najde vašega. Za shranjevanje gesel je treba uporabiti namerno počasne funkcije izpeljave ključa, kot so Argon2, scrypt ali bcrypt, v kombinaciji s *soljo* (edinstven naključen podatek za vsakega uporabnika, ki preprečuje, da bi dve osebi z istim geslom imeli enak odtis).
4. Branje odtisa kot identifikatorja avtorja. To ne drži. Zgoščevanje identificira vsebino. Če dve osebi z SHA-256 zgostita besedo *živijo*, obe dobita enak povzetek — in to je ključna lastnost, ne napaka: če bi bila povzetka različna, ne bi mogli preveriti ujemanja med objavljenim in prejetim.

## Kje se SHA-256 pojavlja v vašem vsakdanjem življenju

Čeprav ga ne vidite, SHA-256 podpira velik del tistega, kar vsakodnevno uporabljate na internetu. Veriga blokov omrežja Bitcoin se gradi z veriženjem odtisa SHA-256 vsakega bloka z naslednjim; sprememba prejšnjega bloka zahteva ponovni izračun celotne verige. Git, sistem za nadzor različic kode, ki ga uporablja pol sveta, identificira vsako objavo po SHA-256 (v novejših različicah) ali njenem predhodniku SHA-1 (v starejših različicah) njene celotne vsebine. Certifikati HTTPS, ki preverjajo identiteto spletnega mesta ob vstopu, imajo povezan odtis SHA-256. Prenose programske opreme pogosto spremlja SHA-256, ki ga objavi razvijalec, da lahko preverite, ali datoteka ni bila na poti spremenjena. In kot smo rekli, na dnu vsake izdaje Cuadernos Lacre.

## Za strokovnega bralca

Štirje operativni opomniki za tiste, ki odločajo o sistemih ali jih preverjajo:

1. Zgoščevanje ni šifriranje. Če ponudnik v svoji tehnični dokumentaciji zameša oba pojma, je dobro vprašati, kaj natančno misli.
2. Za shranjevanje gesel se nikoli ne sme uporabljati sam SHA-256. SHA-256 je za to nalogo prehiter (glejte 3. točko v *Kaj zgoščevanje ni*). Trenutni standard je Argon2id: po zasnovi počasen, prilagodljiv zmogljivosti strežnika in združen z različno naključno *soljo* za vsakega uporabnika.
3. Za celovitost dokumentov — pogodb, zapisov, datotek — ostaja SHA-256 referenčni standard. Tega uporabljajo kvalificirani elektronski časovni žigi v EU.
4. Za dolgoročno shranjevanje (desetletja) je priporočljivo poleg SHA-256 izračunati in arhivirati tudi SHA-3 ali SHA-512; kriptografska previdnost priporoča, da se pri arhiviranju za celo stoletje ne zanašamo na eno samo funkcijo.

Predstavljajte si, da ste sestavili najbolj dodelano domino vezje na svetu: na tisoče žetonov, na desetine razcepov, mehanskih mostov in klančin čez celo sobo, ki so skrbno postavljeni kos za kosom.

Če se dotaknete prvega žetona, veriga pade v natančnem in ponovljivem zaporedju. Enaka postavitev, enak začetni dotik → enak končni vzorec padlih žetonov, znova in znova.

Tukaj postane zanimivo: premaknite en sam žeton za pol centimetra v stran, preden začnete, in se ga ponovno dotaknite. Klančina, ki bi se morala aktivirati, ostane nepremična, most ne pade, sproži se drugačen razcep. Končni vzorec žetonov na tleh je popolnoma neprepoznaven v primerjavi s prvim.

SHA-256 je matematično to vezje. Besedilo, ki ga napišete, je začetni položaj žetonov. Algoritem je dotik, ki sprosti kaskado. In končni rezultat – tisto, ko imenujemo *hash* – je fotografija tal, ko se je vse ustavilo. Spremenite eno samo vejico v izvornem besedilu in fotografija bo popolnoma drugačna. Tako preprosto in tako drastično.

---

*Če se vrnete na dno tega članka, boste videli heksadecimalni pečat s štiriinšestdesetimi znaki. To je SHA-256 besedila, ki ste ga pravkar prebrali, v tem jeziku. Če bi članek prevedli, bi bil pečat drugačen; če bi se spremenila ena sama beseda v španski različici, bi se španski pečat spremenil. Pečat ne varuje vsebine — za to obstajajo druga orodja — temveč jo nedvoumno identificira. In to, čeprav zveni skromno, zadošča, da noben korak v založniški verigi ne more neopaženo spremeniti povedanega. Vse ostalo — šifriranje, podpisovanje, identifikacija — se gradi na tej preprosti zamisli.*

## Viri in nadaljnje branje

- NIST — *FIPS PUB 180-4: Secure Hash Standard (SHS)*, avgust 2015. Uradna specifikacija družine SHA-2, vključno z SHA-256.
- RFC 6234 — *US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)*, IETF, maj 2011. Normativna različica za implementatorje.
- Ferguson, N.; Schneier, B.; Kohno, T. — *Cryptography Engineering: Design Principles and Practical Applications* (Wiley, 2010). Poglavji 5 in 6 obravnavata zgoščevalne funkcije ter njihovo legitimno in nelegitimno uporabo.
- Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktičen primer uporabe SHA-256 za veriženje blokov v strukturah, ki so po zasnovi nespremenljive.
- Uredba (EU) 910/2014 (eIDAS) — okvir za kvalificirane elektronske časovne žige. SHA-256 je referenčna funkcija za kvalificirane elektronske podpise in pečate, izdane v EU.
- Referenčna implementacija v jeziku Zig: std.crypto.hash.sha2.Sha256 v uradnem repozitoriju jezika (*github.com/ziglang/zig* → lib/std/crypto/sha2.zig). To je optimizirana in revidirana različica, ki jo Solo2 dejansko uporablja. Koristna je za primerjavo z didaktično implementacijo v dodatku.

---

*Cuadernos Lacre · Publikacija podjetja Menzuri Gestión S.L. · napisal R.Eugenio · uredila ekipa Solo2.*
*https://solo2.net/sl/zvezki/*
