# Kas ir SHA-256 patiesībā

> Cuadernos Lacre · Koncepcija · 2026. gada 19. maijs
> https://solo2.net/lv/piezimju-gramatas/articulos/kas-patiesiba-ir-sha-256.html

Matemātisks nospiedums, kas ietilpst sešdesmit četros simbolos un pilnībā mainās, ja tiek izmainīts pat viens oriģinālā teksta komats. Kāpēc mēs to saucam par digitālo zīmogvasku.

---

## Vienkārša ideja aiz tehniskā nosaukuma

Iedomājieties, ka eksistē mašīna ar vienu atveri un vienu ekrānu. Pa atveri jūs ievadāt tekstu: vārdu, frāzi, veselu romānu. Ekrānā pēc mirkļa parādās secība, kas sastāv tieši no sešdesmit četriem simboliem. Profesionāls lasītājs šo secību sauc par *hash* (jaucējvērtību) jeb kriptogrāfisko kopsavilkumu; parastam lasītājam mēs to pagaidām varam saukt par teksta matemātisko nospiedumu, līdzīgi kā pirkstu nospiedums ir cilvēka identitātes zīme.

Ja ievadīsiet to pašu tekstu divreiz, mašīna abas reizes parādīs vienu un to pašu nospiedumu. Ja ievadīsiet nedaudz atšķirīgu tekstu – pārvietosiet vienu komatu, mainīsiet lielo burtu uz mazo –, mašīna parādīs pilnīgi citu nospiedumu nekā pirmo. Ne līdzīgu, bet pilnīgi atšķirīgu. Šīs divas īpašības kopā – determinisms un jutīgums – ir tā vienkāršā ideja. Viss pārējais SHA-256 sistēmā ir tikai mehānisms, kas nodrošina šo īpašību izpildi.

Svarīgi jau no paša sākuma pateikt, ko mašīna nedara. Tā nešifrē tekstu. Tā to neslēpj. Tā to nesaglabā. Mašīna apskata tekstu, aprēķina nospiedumu un tekstu aizmirst. Pēc nospieduma nav iespējams atjaunot tekstu, kas to radījis; tas ļauj tikai, ņemot vērā kandidātu tekstu, pārbaudīt, vai tas sakrīt ar oriģinālu vai nē. Tāpēc mēs sakām, ka tas ir *vienvirziena* kopsavilkums: var aiziet, bet nevar atgriezties.

## Jaucējfunkcija (hash) nav tas pats, kas šifrēšana

Sajaukšana notiek bieži, tāpēc ir vērts to kliedēt: šifrēšana un „hašēšana” (jaukšana) ir dažādas darbības. Šifrēšana sastāv no teksta transformēšanas tā, lai tikai atslēgas īpašnieks varētu to atgriezt sākotnējā formā. Jaukšana sastāv no teksta nospieduma radīšanas, no kura sākotnējo tekstu nekad nevar atgūt – ne ar atslēgu, ne bez tās. Pirmā darbība pēc konstrukcijas ir atgriezeniska; otrā – neatgriezeniska.

Praktiskajām sekām ir nozīme. Kad lietotne saka „mēs glabājam jūsu paroli šifrētu”, ir kāds, kam ir atslēga tās atšifrēšanai – vismaz pašai lietotnei. Kad lietotne saka „mēs glabājam jūsu paroli hašētu”, pati lietotne nevar izlasīt sākotnējo paroli, pat ja gribētu; tā var tikai pārbaudīt, vai tas, ko jūs rakstāt, atkal rada to pašu nospiedumu. Otrais modelis, ja tas ir pareizi ieviests, ir daudz labāks paroļu glabāšanai. Vēlāk redzēsim, kāpēc „pareizi ieviests” prasa ko vairāk nekā tikai tīru SHA-256.

## Četras īpašības, kas padara kriptogrāfisko kopsavilkumu noderīgu

Jaucējfunkcija, kas ir pelnījusi apzīmējumu *kriptogrāfiska*, atbilst četrām īpašībām:

1. Determinisma princips. Viena un tā pati ievade vienmēr rada vienu un to pašu nospiedumu.
2. Lavīnas efekts. Neliela izmaiņa ievadē rada pilnīgi citu nospiedumu, bez redzamas līdzības ar iepriekšējo.
3. Noturība pret pretattēla atrašanu. Ņemot vērā nospiedumu, nav skaitļošanas ziņā iespējams atrast tekstu, kas to radījis.
4. Noturība pret kolīzijām. Nav skaitļošanas ziņā iespējams atrast divus dažādus tekstus, kas rada vienu un to pašu nospiedumu.

„Nav skaitļošanas ziņā iespējams” nenozīmē „ir matemātiski neiespējami”. Tas nozīmē, ka laika, enerģijas un naudas izmaksas, lai to sasniegtu, par daudzām kārtām pārsniedz visu saprātīgi pieejamo skaiļošanas jaudu summu. SHA-256 gadījumā šī robeža tiek mērīta tūkstošos triljonu gadu pat visoptimistiskākajām prognozēm ar specializētu aparatūru. Kas lasītājam praktiski nozīmē to pašu, ko „nevar”.

## Konkrēti par SHA-256

Nosaukums pasaka visu. SHA ir akronīms no *Secure Hash Algorithm* – drošs jaucējalgoritms. Skaitlis 256 norāda nospieduma izmēru bitos: divi simti piecdesmit seši biti, t.i., trīsdesmit divi baiti, kas sešpadsmitnieku sistēmā ir tie sešdesmit četri simboli, kurus lasītājs jau atpazīst. Standartu 2001. gadā publicēja ASV NIST, organizācija, kas normē šāda veida funkcijas, kā daļu no SHA-2 saimes; pašreizējā standarta versija FIPS 180-4 ir no 2015. gada.

Ir vērts brīdi padomāt par mērogiem. Divi simti piecdesmit seši biti pieļauj divi pakāpē divi simti piecdesmit seši dažādu vērtību: skaitlis ar septiņdesmit astoņiem cipariem, par vairākām kārtām lielāks nekā aprēķinātais atomu skaits novērojamajā visumā. Katrs pasaules teksts – katra grāmata, katrs e-pasts, katra ziņa – nonāk pie vienas no šīm vērtībām. Varbūtība, ka divi dažādi teksti sakritīs nejauši, praktiski neatšķiras no nulles.

## Kā tas izskatās kodā

## Kāpēc mēs to saucam par zīmogvasku

Eiropas korespondencē no piecpadsmitā līdz deviņpadsmitajam gadsimtam zīmogvasks noslēdza vēstuli. Izkausēta vaska pile, virsū uzspiests zīmogs, un vēstule palika atzīmēta neatkārtojamā veidā. Tas nepasargāja saturu no apņēmīga ziņkārīgā – papīru varēja izlasīt pret gaismu, vasku varēja salauzt –, bet tas padarīja to acīmredzamu. Jebkura noslēguma izmaiņa bija redzama saņēmējam vēl pirms papīra atvēršanas. Vasks neaizkavēja kaitējumu; tas to deklarēja.

Katra „Cuaderno” teksta SHA-256 pilda to pašu funkciju digitālajā versijā. Ja rakstā mainītos kaut viens vārds no tā publicēšanas brīža līdz brīdim, kad jūs to lasāt, sešpadsmitnieku nospiedums teksta apakšā vairs nesakristu ar jūsu priekšā esošā teksta SHA-256 vērtību. Jebkurš lasītājs ar piecām koda rindiņām varētu to pārbaudīt. Izdevējs nevar pārrakstīt savu vēsturi, lai nospiedums viņu nenodotu. Tas neaizsargā pret kaitējumu; tas padara to pārbaudāmu.

## Kas kopsavilkums (hash) nav

Reizēm no SHA-256 tiek gaidīti četri lietošanas veidi, kas tam nepienākas:

1. Šifrēšana. Jaucējfunkcija apkopo; tā neslēpj. Ja vēlaties, lai tekstu nevarētu izlasīt, tas ir jāšifrē, nevis jāhašē.
2. Autora autentificēšana. Jaucējfunkcija nepasaka, kas uzrakstīja tekstu, tikai to, kurš teksts tika hašēts. Lai sasaistītu autorību, ir nepieciešams kriptogrāfisks paraksts virs kopsavilkuma, nevis tikai pats kopsavilkums.
3. Paroļu glabāšana. Šeit ir slazds, kuru ir vērts saprast. SHA-256 ir izstrādāts, lai būtu ļoti ātrs – kas ir labi daudzām lietām, bet slikti šai. Uzbrucējs ar specializētu aparatūru var pārbaudīt miljardiem paroļu sekundē pret SHA-256 nospiedumu, līdz atrod jūsējo. Paroļu glabāšanai ir jāizmanto apzināti lēnas atslēgu atvasināšanas funkcijas, piemēram, „Argon2”, „scrypt” vai „bcrypt”, apvienojumā ar *sāli* (salt – unikāli nejauši dati katram lietotājam, kas neļauj diviem cilvēkiem ar vienādu paroli iegūt vienādu nospiedumu).
4. Nospieduma izmantošana kā autora identifikators. Tas tāds nav. Nospiedums identificē saturu. Ja divi cilvēki hašē vārdu *hola* ar SHA-256, abi iegūst vienu un to pašu rezultātu – un tā ir galvenā īpašība, nevis trūkums: ja rezultāti būtu dažādi, mēs nevarētu pārbaudīt sakritību starp publicēto un saņemto.

## Kur SHA-256 parādās jūsu ikdienā

Lai gan jūs to neredzat, SHA-256 uztur lielu daļu no tā, ko ikdienā izmantojat internetā. „Bitcoin” blokķēde tiek veidota, savienojot katra bloka SHA-256 ar nākamo; mainot kādu pagātnes bloku, ir jāpārrēķina visa turpmākā ķēde. „Git”, sistēma, ar kuru tiek uzturētas koda versijas visā pasaulē, identificē katru izmaiņu (commit) pēc tās pilnā satura SHA-256 (jaunākajās versijās) vai pēc tā priekšteča SHA-1 (vecākajās versijās). HTTPS sertifikāti, kas apstiprina vietnes identitāti, ietver saistītu SHA-256 nospiedumu. Programmatūras lejupielādēm bieži pievieno izstrādātāja publicētu SHA-256, lai jūs varētu pārbaudīt, vai fails nav mainīts ceļā. Un, kā jau teicām, katra „Cuaderno Lacre” apakšā.

## Profesionālam lasītājam

Četri operatīvi atgādinājumi tam, kurš pieņem lēmumus vai auditē sistēmas:

1. Jaucējfunkcija nav šifrēšana. Ja piegādātājs savā tehniskajā dokumentācijā jauc abus terminus, ir vērts pajautāt, ko tieši viņš ar to domā.
2. Paroļu glabāšanai nekad nedrīkst izmantot tīru SHA-256. SHA-256 šim uzdevumam ir pārāk ātrs (skat. 3. punktu sadaļā *Kas kopsavilkums nav*). Pašreizējais standarts ir Argon2id: pēc konstrukcijas lēns, konfigurējams atbilstoši servera jaudai, apvienots ar atšķirīgu nejaušu *sāli* katram lietotājam.
3. Dokumentu – līgumu, lietu, failu – integritātei SHA-256 joprojām ir atsauces standarts. Tieši to izmanto kvalificēti laika zīmogu pakalpojumu sniedzēji ES.
4. Ilgtermiņa saglabāšanai (gadu desmitiem) ir vērts aprēķināt un arhivēt arī SHA-3 vai SHA-512 kopā ar SHA-256; kriptogrāfiskā piesardzība iesaka nepaļauties tikai uz vienu funkciju gadsimtu arhīviem.

Iedomājieties, ka esat uzbūvējis pasaulē sarežģītāko domino ķēdi: tūkstošiem kauliņu, desmitiem atzarojumu, mehāniskie tilti un rampas visā istabā, rūpīgi izvietoti pa vienai detaļai.

Ja pieskaraties pirmajam kauliņam, ķēde gāžas precīzā un atkārtojamā secībā. Tas pats izvietojums, tas pats sākotnējais pieskāriens → identisks galīgais nokritušo kauliņu raksts, atkal un atkal.

Šeit sākas interesantākais: pirms sākšanas pabīdiet tikai vienu kauliņu par puscentimetru uz sānu un atkal pieskarieties. Rampa, kurai vajadzēja nostrādāt, paliek nekustīga, tilts negāžas, nostrādā cits atzarojums. Galīgais kauliņu raksts uz grīdas ir pilnīgi neatpazīstams salīdzinājumā ar pirmo.

Matemātiski SHA-256 ir tieši šī ķēde. Jūsu rakstītais teksts ir kauliņu sākotnējā pozīcija. Algoritms ir pieskāriens, kas palaiž kaskādi. Un galīgais rezultāts — ko mēs saucam par *hašu* (angl. hash) — ir grīdas fotoattēls, kad viss ir apstājies. Nomainiet kaut vienu komatu oriģinālajā tekstā, un fotoattēls būs radikāli citāds. Tik vienkārši un tik drastiski.

---

*Ja atgriezīsieties šī raksta apakšā, redzēsiet sešdesmit četru simbolu sešpadsmitnieku nospiedumu. Tas ir SHA-256 tekstam, ko tikko izlasījāt šajā valodā. Ja mēs iztulkotu rakstu, nospiedums būtu cits; ja mainītos kaut vārds spāņu versijā, spāņu nospiedums mainītos. Nospiedums neaizsargā saturu – tam ir citi rīki –, bet tas to viennozīmīgi identificē. Un ar to, lai cik pieticīgi tas neizklausītos, pietiek, lai neviens redakcijas ķēdes posms nevarētu mainīt teikto, to nepamanot. Viss pārējais – šifrēšana, parakstīšana, identificēšana – tiek būvēts uz šīs vienkāršās idejas.*

## Avoti un papildu literatūra

- NIST — *FIPS PUB 180-4: Secure Hash Standard (SHS)*, 2015. gada augusts. Oficiālā SHA-2 saimes specifikācija, ieskaitot SHA-256.
- RFC 6234 — *US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)*, IETF, 2011. gada maijs. Normatīvā versija programmētājiem.
- Ferguson, N.; Schneier, B.; Kohno, T. — *Cryptography Engineering: Design Principles and Practical Applications* (Wiley, 2010). 5. un 6. nodaļa aptver jaucējfunkcijas un to likumīgu un nelikumīgu izmantošanu.
- Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktisks piemērs SHA-256 izmantošanai bloku sasaistīšanai nemainīgā struktūrā.
- Regula (ES) 910/2014 (eIDAS) — kvalificētu laika zīmogu ietvars. SHA-256 ir atsauces funkcija kvalificētiem elektroniskajiem parakstiem un zīmogiem, kas izsniegti ES.
- Atsauces īstenojums „Zig” valodā: std.crypto.hash.sha2.Sha256 oficiālajā valodas krātuvē (*github.com/ziglang/zig* → lib/std/crypto/sha2.zig). Tā ir optimizētā un auditētā versija, ko faktiski izmanto „Solo2”. Noderīga salīdzināšanai ar pielikuma didaktisko īstenojumu.

---

*Cuadernos Lacre · Menzuri Gestión S.L. publikācija · autors R.Eugenio · rediģējusi Solo2 komanda.*
*https://solo2.net/lv/piezimju-gramatas/*
