Какво всъщност е SHA-256 Cuadernos Lacre · Концепция · 19 май 2026 https://solo2.net/bg/notebooks/articulos/what-sha-256-actually-is.html Математически отпечатък, който се побира в шестдесет и четири знака и се променя изцяло, ако се премести дори една запетая в оригиналния текст. Защо го наричаме цифров восъчен печат. --- Простата идея зад техническото име Представете си, че съществува машина с един слот и един екран. През слота вкарвате текст: дума, изречение, цял роман. На екрана се появява, мигове по-късно, последователност от точно шестдесет и четири знака. Тази последователност за професионалния читател наричаме hash или криптографско резюме; за широкия читател можем да я наречем засега математически отпечатък на текста, както пръстовият отпечатък е такъв за човека. Ако въведете един и същ текст два пъти, машината ще покаже един и същ отпечатък и двата пъти. Ако въведете малко по-различен текст —една преместена запетая, главна буква, която става малка— машината показва напълно различен отпечатък от първия. Не подобен, а различен. Тези две свойства заедно —детерминизъм и чувствителност— са простата идея. Всичко останало в SHA-256 е механизмът, който ги кара да се изпълняват добре. Важно е да кажем от самото начало какво машината не прави. Тя не шифрова текста. Не го скрива. Не го пази. Машината поглежда текста, изчислява отпечатъка и забравя за текста. Отпечатъкът не позволява да се възстанови текстът, който го е произвел; той само позволява при даден кандидат-текст да се провери дали съвпада с оригинала или не. Ето защо казваме, че това е еднопосочно резюме: отива се, но не се връща. Хеш не е същото като шифроване Объркването е често срещано и е добре да се изясни: шифроването и хеширането са различни операции. Шифроването се състои в трансформиране на текст така, че само притежателят на ключа да може да го върне в оригиналния му вид. Хеширането се състои в създаване на отпечатък на текста, от който оригиналният текст никога не може да бъде възстановен, нито с ключ, нито без него. Първото е обратимо по дизайн; второто е необратимо по дизайн. Практическото следствие е важно. Когато едно приложение казва „пазим паролата ви шифрована“, има някой, който има ключа за дешифрирането й — самото приложение във всеки случай. Когато едно приложение казва „пазим паролата ви хеширана“, самото приложение не може да прочете оригиналната парола, дори и да иска; то може само да провери дали това, което пишете, произвежда същия отпечатък отново. Вторият модел, направен добре, е много по-предпочитан от първия за съхранение на пароли. По-нататък ще видим защо „направен добре“ изисква нещо повече от SHA-256 чисто. Четирите свойства, които правят криптографския хеш полезен Хеш функция, която заслужава прилагателното криптографска, отговаря на четири свойства: 1. Детерминизъм. Един и същ вход винаги произвежда един и същ отпечатък. 2. Ефект на лавината. Малка промяна на входа произвежда напълно различен отпечатък, без видима прилика с предишния. 3. Устойчивост на инверсия. При даден отпечатък не е изчислително възможно да се намери текстът, който го е произвел. 4. Устойчивост на колизии. Не е изчислително възможно да се намерят два различни текста, които да произвеждат един и същ отпечатък. „Не е изчислително възможно“ не означава „математически невъзможно“. Това означава, че цената по отношение на време, енергия и пари за постигането му надвишава с порядъци сумата от целия разумен наличен изчислителен капацитет. За SHA-256 тази граница се измерва в хиляди милиарди години дори за най-оптимистичните подходи със специализиран хардуер. Което за практическите цели на читателя е същото като „не може“. SHA-256 конкретно Името казва всичко. SHA е съкращение от Secure Hash Algorithm: алгоритъм за сигурен хеш. Числото 256 показва размера на отпечатъка в битове: двеста петдесет и шест бита, тоест тридесет и два байта, които показани в шестнадесетичен вид са шестдесет и четирите знака, които читателят вече познава. Стандартът е публикуван от американския NIST, органът, който нормализира този тип функции, през 2001 г. като част от семейството SHA-2; текущата версия на стандарта, FIPS 180-4, е от 2015 г. Размерите заслужават момент внимание. Двеста петдесет и шест бита позволяват две на степен двеста петдесет и шест различни стойности: число със седемдесет и осем десетични цифри, няколко порядъка по-голямо от прогнозния брой атоми в наблюдаваната вселена. Всеки текст по света —всяка книга, всеки имейл, всяко съобщение— попада върху една от тези стойности. Вероятността два различни текста да съвпаднат по случайност е за практически цели неразличима от нула. Как изглежда в код Защо го наричаме восъчен печат В европейската кореспонденция от петнадесети до деветнадесети век червеният восък е запечатвал писмото. Капка разтопен восък, печат, притиснат върху него, и писмото оставало маркирано по неповторим начин. Това не предпазвало съдържанието от решителния любопитко —хартията можела да се прочете срещу светлината, восъкът можел да се счупи— но го доказвало. Всяка промяна на затварянето била видима за получателя още преди отварянето на писмото. Восъкът не предотвратявал щетата; той я обявявал. SHA-256 на тялото на всеки Cuaderno изпълнява същата функция в своята цифрова версия. Ако дори една дума от статията се промени между момента, в който е публикувана, и момента, в който я четете, шестнадесетичният печат в долната част на текста вече няма да съвпада с SHA-256 на текста пред вас. Всеки читател с пет реда код би могъл да го провери. Изданието не може да пренапише своята история, без печатът да го издаде. Той не предпазва от щети; той ги прави проверими. Какво не е хеш Четири приложения понякога се изискват от SHA-256, които не му съответстват: 1. Шифроване. Хешът резюмира, но не скрива. Ако искате текстът да не може да се чете, трябва да го шифровате, а не да го хеширате. 2. Удостоверяване на автора. Хешът не казва кой е написал текста, а само кой текст е бил хеширан. За асоцииране на авторство е необходим криптографски подпис върху хеша, а не хешът сам по себе си. 3. Съхранение на пароли. Тук има капан, който е добре да се разбере. SHA-256 е проектиран да бъде много бърз —което е добре за много неща, но лошо за това. Нападател със специализиран хардуер може да изпробва милиарди пароли в секунда срещу хеш SHA-256, докато намери вашата. За съхранение на пароли трябва да се използват нарочно бавни функции за извличане на ключове като Argon2, scrypt или bcrypt, комбинирани със sol (уникални случайни данни за всеки потребител, които предотвратяват двама души с една и съща парола да имат един и същ хеш). 4. Четене на хеша като идентификатор на автора. Не е такъв. Хешът идентифицира съдържанието. Ако двама души хешират думата hola с SHA-256, и двамата получават едно и също резюме — и това е централното свойство, а не дефект: ако бяха различни резюмета, не бихме могли да проверим съвпадението между публикуваното и полученото. Къде се появява SHA-256 в ежедневието ви Дори и да не го виждате, SHA-256 поддържа голяма част от това, което използвате ежедневно в интернет. Блокчейнът на Bitcoin се изгражда чрез свързване на SHA-256 на всеки блок към следващия; промяната на минал блок налага преизчисляване на цялата последваща верига. Git, системата, с която се версиира кодът на половин свят, идентифицира всяко потвърждение (commit) чрез SHA-256 (в новите версии) или чрез неговия предшественик SHA-1 (в по-старите версии) на цялото му съдържание. Сертификатите HTTPS, които проверяват идентичността на уебсайт, когато влизате, носят асоцииран отпечатък SHA-256. Изтеглянето на софтуер често се придружава от SHA-256, публикуван от разработчика, за да проверите дали файлът не е бил променен по пътя. И както казахме, в долната част на всеки Cuadernos Lacre. За професионалния читател Четири оперативни напомняния за тези, които вземат решения или одитират системи: 1. Хешът не е шифроване. Ако доставчик бърка двата термина в техническата си документация, е добре да попитате какво точно има предвид. 2. За съхранение на пароли никога не трябва да се използва SHA-256 чисто. SHA-256 е твърде бърз за тази задача (вижте точка 3 от Какво не е хеш). Настоящият стандарт е Argon2id: бавен по дизайн, конфигурируем според капацитета на сървъра, комбиниран с различна случайна sol за всеки потребител. 3. За интегритет на документи —договори, преписки, файлове— SHA-256 продължава да бъде референтният стандарт. Той е този, който се използва от квалифицираните доставчици на удостоверителни услуги за времеви печати в ЕС. 4. За дългосрочно съхранение (десетилетия) е добре да се изчислява и архивира също SHA-3 или SHA-512 заедно с SHA-256; криптографската предпазливост препоръчва да не се разчита на една единствена функция по време на вековно архивиране. Представете си, че сте сглобили най-сложната домино верига в света: хиляди плочки, десетки разклонения, механични мостове и рампи, пресичащи цялата стая, внимателно поставени плочка по плочка. Ако докоснете първата плочка, веригата пада в прецизна и повтаряема последователност. Същата сглобка, същото първо докосване → идентичен краен модел от паднали плочки, отново и отново. Тук е интересното: преместете само една плочка с половин сантиметър встрани преди началото и докоснете отново. Рампа, която е трябвало да се активира, остава инертна, мост не пада, задейства се съвсем различно разклонение. Крайният модел на плочките на пода е напълно неразпознаваем в сравнение с първия. Математически SHA-256 е точно тази верига. Текстът, който пишете, е първоначалното положение на плочките. Алгоритъмът е докосването, което освобождава каскадата. А крайният резултат — това, което наричаме hash (хеш) — е снимката на пода, когато всичко е спряло. Променете само една запетая в оригиналния текст и снимката ще бъде радикално различна. Толкова просто и толкова драстично. --- Ако се върнете в долната част на тази статия, ще видите шестнадесетичен печат от шестдесет и четири знака. Това е SHA-256 на текста, който току-що прочетохте, на този език. Ако преведем статията, печатът ще бъде друг; ако се промени една дума от българската версия, българският печат ще се промени. Печатът не предпазва съдържанието —за това има други инструменти— а го идентифицира еднозначно. И това, колкото и скромно да звучи, е достатъчно, за да не може нито една стъпка от редакционната верига да промени казаното, без това да се забележи. Останалите неща —шифроване, подписване, идентифициране— се изграждат върху тази проста идея. Източници и допълнително четиво - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), август 2015 г. Официална спецификация на семейството SHA-2, включително SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, май 2011 г. Нормативна версия за разработчици. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). Глави 5 и 6 обхващат хеш функциите и техните легитимни и нелегитимни употреби. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Практически пример за използване на SHA-256 за свързване на блокове в имутабилна по конструкция структура. - Регламент (ЕС) 910/2014 (eIDAS) — рамка на квалифицираните доставчици на времеви печати. SHA-256 е референтната функция за квалифицираните електронни подписи и печати, издавани в ЕС. - Референтна реализация в Zig: std.crypto.hash.sha2.Sha256 в официалното хранилище на езика (github.com/ziglang/zig → lib/std/crypto/sha2.zig). Това е оптимизираната и одитирана версия, която всъщност Solo2 използва. Полезно за сравнение с дидактическата реализация в приложението. --- Cuadernos Lacre · Публикация на Menzuri Gestión S.L. · написана от R.Eugenio · редактирана от екипа на Solo2. https://solo2.net/bg/notebooks/