Kas iš tikrųjų yra SHA-256 Cuadernos Lacre · Koncepcija · 2026 m. gegužės 19 d. https://solo2.net/lt/uzrasu-knygeles/articulos/kas-is-tikruju-yra-sha-256.html Matematinis antspaudas, telpantis į šešiasdešimt keturis simbolius, kuris visiškai pasikeičia, jei pajudinamas bent vienas originalaus teksto kablelis. Kodėl jį vadiname skaitmeniniu vaško antspaudu. --- Paprasta idėja už techninio pavadinimo Įsivaizduokite, kad egzistuoja mašina su viena anga ir vienu ekranu. Per angą įdedate tekstą: žodį, frazę, visą romaną. Ekrane po akimirkos pasirodo seka, sudaryta lygiai iš šešiasdešimt keturių simbolių. Profesionalus skaitytojas šią seką vadina hash (maiša) arba kriptografine santrauka; paprastam skaitytojui kol kas galime ją vadinti matematiniu teksto antspaudu, panašiai kaip piršto atspaudas yra žmogaus tapatybės ženklas. Jei tą patį tekstą įdėsite du kartus, mašina abu kartus parodys tą patį antspaudą. Jei įdėsite šiek tiek kitokį tekstą – paslinksite vieną kablelį, pakeisite didžiąją raidę mažąja – mašina parodys visiškai kitokį antspaudą nei pirmąjį. Ne panašų, o visiškai kitokį. Šios dvi savybės kartu – determinizmas ir jautrumas – yra ta paprasta idėja. Visa kita SHA-256 sistemoje yra tik mechanizmas, užtikrinantis šių savybių veikimą. Svarbu iš pat pradžių pasakyti, ko mašina nedaro. Ji nešifruoja teksto. Ji jo neslepia. Ji jo nesaugo. Mašina pažiūri į tekstą, apskaičiuoja antspaudą ir tekstą pamiršta. Pagal antspaudą neįmanoma atkurti jį sugeneravusio teksto; galima tik turint kandidatinį tekstą patikrinti, ar jis sutampa su originalu. Todėl sakome, kad tai yra vienpusė santrauka: galima nueiti, bet negrįžti. Maiša nėra tas pats, kas šifravimas Painiava kyla dažnai, todėl verta ją išsklaidyti: šifravimas ir „hašavimas“ (maiša) yra skirtingos operacijos. Šifravimas – tai teksto transformavimas taip, kad tik rakto turėtojas galėtų jį grąžinti į pradinę formą. Maiša – tai teksto antspaudo sukūrimas, iš kurio pradinio teksto niekada neįmanoma atkurti, nei su raktu, nei be jo. Pirmoji operacija pagal konstrukciją yra grįžtamoji, antroji – negrįžtamoji. Praktinė pasekmė yra svarbi. Kai programėlė sako „saugome jūsų slaptažodį užšifruotą“, yra kažkas, kas turi raktą jam iššifruoti – bent jau pati programėlė. Kai programėlė sako „saugome jūsų slaptažodį suhašuotą“, pati programėlė negali perskaityti pradinio slaptažodžio, net jei norėtų; ji gali tik patikrinti, ar tai, ką įrašote, vėl sugeneruoja tą patį antspaudą. Antrasis modelis, teisingai įgyvendintas, yra daug geresnis slaptažodžiams saugoti. Vėliau pamatysime, kodėl „teisingai įgyvendintas“ reikalauja šiek tiek daugiau nei vien tik SHA-256. Keturios savybės, dėl kurių kriptografinė santrauka yra naudinga Maišos funkcija, verta apibūdinimo kriptografinė, atitinka keturias savybes: 1. Determinizmas. Ta pati įvestis visada sugeneruoja tą patį antspaudą. 2. Lavinos efektas. Nedidelis įvesties pakeitimas sugeneruoja visiškai kitokį antspaudą, neturintį jokio matomo panašumo į ankstesnį. 3. Atsparumas atvirkštinei inžinerijai. Turint antspaudą, skaičiavimo požiūriu neįmanoma rasti jį sugeneravusio teksto. 4. Atsparumas kolizijoms. Skaičiavimo požiūriu neįmanoma rasti dviejų skirtingų tekstų, kurie sugeneruotų tą patį antspaudą. „Skaičiavimo požiūriu neįmanoma“ nereiškia „matematiškai neįmanoma“. Tai reiškia, kad laiko, energijos ir pinigų sąnaudos tam pasiekti daug kartų viršija visus pagrįstai prieinamus skaičiavimo pajėgumus. SHA-256 atveju ši riba matuojama tūkstančiais trilijonų metų net ir naudojant optimistiškiausią specializuotą įrangą. Tai skaitytojui praktiškai reiškia tą patį, ką ir „neįmanoma“. Konkrečiai apie SHA-256 Pavadinimas pasako viską. SHA yra santrumpa iš Secure Hash Algorithm – saugus maišos algoritmas. Skaičius 256 nurodo antspaudo dydį bitais: du šimtai penkiasdešimt šeši bitai, t. y. trisdešimt du baitai, kurie šešioliktainėje sistemoje rodomi kaip tie šešiasdešimt keturi simboliai, kuriuos skaitytojas jau atpažįsta. Standartą 2001 m. paskelbė JAV NIST, organizacija, normuojanti tokio tipo funkcijas, kaip SHA-2 šeimos dalį; dabartinė standarto versija FIPS 180-4 yra iš 2015 m. Verta akimirkai susimąstyti apie mastelius. Du šimtai penkiasdešimt šeši bitai leidžia du pakeltą du šimtai penkiasdešimt šeštuoju laipsniu skirtingų reikšmių: tai skaičius su septyniasdešimt aštuoniais skaitmenimis, keliais eilės laipsniais didesnis nei numatomas atomų skaičius matomoje visatoje. Kiekvienas pasaulio tekstas – kiekviena knyga, kiekvienas el. laiškas, kiekviena žinutė – patenka į vieną iš tų reikšmių. Tikimybė, kad du skirtingi tekstai sutaps atsitiktinai, praktiškai nesiskiria nuo nulio. Kaip tai atrodo kode Kodėl vadiname vaško antspaudu Europos korespondencijoje nuo penkiolikto iki devyniolikto amžiaus vaškas užsandarindavo laišką. Ištirpusio vaško lašas, ant viršaus prispaustas antspaudas, ir laiškas likdavo pažymėtas nepakartojamai. Tai neapsaugodavo turinio nuo ryžtingo smalsuolio – popierių buvo galima perskaityti prieš šviesą, vašką galima buvo sulaužyti – bet tai tapdavo akivaizdu. Bet koks uždarymo pažeidimas buvo matomas gavėjui dar prieš atidarant popierių. Vaškas neužkirsdavo kelio žalai; jis ją deklaruodavo. Kiekvieno „Cuaderno“ teksto SHA-256 atlieka tą pačią funkciją skaitmeninėje versijoje. Jei straipsnyje pasikeistų bent vienas žodis nuo jo paskelbimo momento iki to laiko, kai jį skaitote, šešioliktainis antspaudas teksto apačioje nebesutaptų su teksto, kurį matote, SHA-256 reikšme. Bet kuris skaitytojas, parašęs penkias kodo eilutes, galėtų tai patikrinti. Leidėjas negali perrašyti savo istorijos, kad antspaudas jo neišduotų. Tai neapsaugo nuo žalos; tai padaro ją patikrinamą. Kuo santrauka (hash) nėra Kartais iš SHA-256 tikimasi keturių naudojimo būdų, kurie jam nepriklauso: 1. Šifravimas. Maiša apibendrina; ji neslepia. Jei norite, kad teksto nebūtų galima perskaityti, turite jį šifruoti, o ne generuoti jo santrauką. 2. Autoriaus autentiškumo patvirtinimas. Santrauka nepasako, kas parašė tekstą, tik kokiam tekstui ji buvo sugeneruota. Norint susieti autorystę, reikalingas kriptografinis parašas ant santraukos, o ne pati santrauka savaime. 3. Slaptažodžių saugojimas. Čia yra spąstai, kuriuos verta suprasti. SHA-256 sukurtas būti labai greitas – tai gerai daugeliui dalykų, bet blogai šiam. Užpuolikas su specializuota įranga gali išbandyti milijardus slaptažodžių per sekundę lygindamas su SHA-256 santrauka, kol ras jūsiškį. Slaptažodžiams saugoti reikia naudoti sąmoningai lėtas rakto išvedimo funkcijas, tokias kaip „Argon2“, „scrypt“ arba „bcrypt“, derinant su druska (salt – unikalūs atsitiktiniai duomenys kiekvienam vartotojui, neleidžiantys dviem žmonėms su tuo pačiu slaptažodžiu turėti tą pačią santrauką). 4. Santraukos naudojimas kaip autoriaus identifikatoriaus. Tai nėra identifikatorius. Santrauka identifikuoja turinį. Jei du žmonės sugeneruos žodžio hola santrauką per SHA-256, abu gaus tą patį rezultatą – ir tai yra pagrindinė savybė, o ne trūkumas: jei santraukos būtų skirtingos, negalėtume patikrinti, ar tai, kas paskelbta, sutampa su tuo, kas gauta. Kur SHA-256 pasirodo jūsų kasdienybėje Nors to ir nematote, SHA-256 palaiko didelę dalį to, ką kasdien naudojate internete. „Bitcoin“ blokų grandinė kuriama jungiant kiekvieno bloko SHA-256 su kitu; pakeitus praėjusį bloką, tenka perskaičiuoti visą vėlesnę grandinę. „Git“, sistema, kuria versijuojamas viso pasaulio kodas, kiekvieną pakeitimą (commit) identifikuoja pagal jo viso turinio SHA-256 (naujesnėse versijose) arba pagal jo pirmtaką SHA-1 (senesnėse versijose). HTTPS sertifikatai, patvirtinantys svetainės tapatybę, turi susietą SHA-256 antspaudą. Programinės įrangos atsisiuntimus dažnai lydi kūrėjo paskelbtas SHA-256, kad galėtumėte patikrinti, ar failas nebuvo pakeistas kelyje. Ir, kaip minėjome, kiekvieno „Cuaderno Lacre“ apačioje. Profesionaliam skaitytojui Keturi operaciniai priminimai tam, kas nusprendžia arba audituoja sistemas: 1. Maiša nėra šifravimas. Jei tiekėjas techninėje dokumentacijoje painioja šiuos du terminus, verta paklausti, ką tiksliai jis turi omenyje. 2. Slaptažodžiams saugoti niekada negalima naudoti tik SHA-256. SHA-256 yra per greitas šiai užduočiai (žr. 3 punktą skyriuje Kuo santrauka nėra). Dabartinis standartas yra Argon2id: lėtas pagal konstrukciją, konfigūruojamas pagal serverio pajėgumus, derinamas su skirtinga atsitiktine druska kiekvienam vartotojui. 3. Dokumentų – sutarčių, bylų, failų – vientisumui SHA-256 išlieka pagrindiniu standartu. Būtent jį naudoja kvalifikuoti laiko žymų teikėjai ES. 4. Ilgalaikiam saugojimui (dešimtmečiams) verta apskaičiuoti ir archyvuoti taip pat SHA-3 arba SHA-512 kartu su SHA-256; kriptografinis atsargumas rekomenduoja nesiremti tik viena funkcija saugant šimtmečio archyvus. Įsivaizduokite, kad sukonstravote sudėtingiausią pasaulyje domino grandinę: tūkstančiai kauliukų, dešimtys atsišakojimų, mechaniniai tiltai ir rampos per visą kambarį, kruopščiai sudėlioti po vieną detalę. Jei paliečiate pirmąjį kauliuką, grandinė griūva tikslia ir atkartojama seka. Ta pati sudėtis, tas pats pradinis prisilietimas → identiškas galutinis nukritusių kauliukų raštas, vėl ir vėl. Štai čia ir prasideda įdomumai: pajudinkite tik vieną kauliuką pusę centimetro į šalį prieš pradedant ir vėl palieskite. Rampa, kuri turėjo suveikti, lieka nejudri, tiltas negriūva, suveikia kita atšaka. Galutinis kauliukų raštas ant grindų yra visiškai neatpažįstamas, lyginant su pirmuoju. Matematiškai SHA-256 yra būtent ši grandinė. Jūsų rašomas tekstas yra pradinė kauliukų padėtis. Algoritmas yra prisilietimas, kuris paleidžia kaskadą. O galutinis rezultatas – tai, ką vadiname maiša (angl. hash) – yra grindų nuotrauka, kai viskas sustoja. Pakeiskite bent vieną kablelį originaliame tekste ir nuotrauka bus radikaliai kitokia. Taip paprasta ir taip drastiška. --- Jei grįšite į šio straipsnio apačią, pamatysite šešiasdešimt keturių simbolių šešioliktainį antspaudą. Tai yra teksto, kurį ką tik perskaitėte šia kalba, SHA-256. Jei išverstume straipsnį, antspaudas būtų kitas; jei pasikeistų bent žodis ispaniškoje versijoje, ispaniškas antspaudas pasikeistų. Antspaudas neapsaugo turinio – tam yra kiti įrankiai – bet jis jį vienareikšmiškai identifikuoja. Ir to, kad ir kaip kukliai tai skambėtų, pakanka, kad jokia leidybos grandinės dalis negalėtų pakeisti to, kas pasakyta, to nepastebėjus. Visa kita – šifravimas, pasirašymas, identifikavimas – statoma ant šios paprastos idėjos. Šaltiniai ir papildomas skaitymas - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), 2015 m. rugpjūtis. Oficiali SHA-2 šeimos specifikacija, įskaitant SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, 2011 m. gegužė. Normatyvinė versija programuotojams. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). 5 ir 6 skyriai apima maišos funkcijas ir jų teisėtą bei neteisėtą naudojimą. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktinis SHA-256 naudojimo pavyzdys blokams jungti nekintamoje struktūroje. - Reglamentas (ES) 910/2014 (eIDAS) — kvalifikuotų laiko žymų teikėjų sistema. SHA-256 yra etaloninė funkcija kvalifikuotiems elektroniniams parašams ir antspaudams ES. - Etaloninis įgyvendinimas „Zig“ kalba: std.crypto.hash.sha2.Sha256 oficialioje kalbos saugykloje (github.com/ziglang/zig → lib/std/crypto/sha2.zig). Tai optimizuota ir audituota versija, kurią faktiškai naudoja „Solo2“. Naudinga palyginti su mokomuoju įgyvendinimu priede. --- Cuadernos Lacre · Menzuri Gestión S.L. leidinys · parašė R.Eugenio · redagavo Solo2 komanda. https://solo2.net/lt/uzrasu-knygeles/