Czym naprawdę jest SHA-256 Cuadernos Lacre · Koncepcja · 19 maja 2026 https://solo2.net/pl/zeszyty/articulos/czym-naprawde-jest-sha-256.html Matematyczny odcisk, który mieści się w sześćdziesięciu czterech znakach i zmienia się całkowicie, jeśli choćby jeden przecinek w oryginalnym tekście zostanie przesunięty. Dlaczego nazywamy go cyfrową pieczęcią lakową. --- Prosta idea stojąca za nazwą techniczną Wyobraź sobie, że istnieje maszyna z jedną szczeliną i jednym ekranem. Przez szczelinę wprowadzasz tekst: słowo, zdanie, całą powieść. Na ekranie pojawia się, chwilę później, sekwencja dokładnie sześćdziesięciu czterech znaków. Tę sekwencję, dla czytelnika profesjonalnego, nazywamy hashem lub skrótem kryptograficznym; dla czytelnika ogólnego możemy ją na razie nazywać matematycznym odciskiem tekstu, tak jak odcisk palca jest odciskiem osoby. Jeśli wprowadzisz ten sam tekst dwa razy, maszyna za każdym razem pokaże ten sam odcisk. Jeśli wprowadzisz tekst nieco inny — jeden przesunięty przecinek, wielka litera zamieniona na małą — maszyna pokaże odcisk całkowicie inny od pierwszego. Nie podobny: inny. Te dwie właściwości razem — determinizm i czułość — to prosta idea. Cała reszta SHA-256 to mechanizm, który sprawia, że są one dobrze realizowane. Warto od początku powiedzieć, czego maszyna nie robi. Nie szyfruje tekstu. Nie ukrywa go. Nie zapisuje go. Maszyna patrzy na tekst, oblicza odcisk i zapomina o tekście. Odcisk nie pozwala na zrekonstruowanie tekstu, który go wytworzył; pozwala jedynie, przy danym tekście kandydackim, sprawdzić, czy zgadza się on z oryginałem. Dlatego mówimy, że jest to skrót jednokierunkowy: wychodzi, ale nie wraca. Hash to nie to samo co szyfrowanie Często dochodzi do nieporozumień i warto je wyjaśnić: szyfrowanie i haszowanie to różne operacje. Szyfrowanie polega na przekształceniu tekstu w taki sposób, aby tylko posiadacz klucza mógł przywrócić go do pierwotnej formy. Haszowanie polega na wytworzeniu odcisku tekstu, z którego pierwotnego tekstu nie da się nigdy odzyskać, ani z kluczem, ani bez niego. Pierwsza operacja jest z założenia odwracalna; druga, z założenia, nieodwracalna. Konsekwencje praktyczne są ważne. Gdy aplikacja mówi: „przechowujemy Twoje hasło zaszyfrowane”, istnieje ktoś, kto ma klucz do jego odszyfrowania — w każdym razie sama aplikacja. Gdy aplikacja mówi: „przechowujemy Twoje hasło haszowane”, sama aplikacja nie może odczytać oryginalnego hasła, nawet gdyby chciała; może jedynie sprawdzić, czy to, co wpisujesz, ponownie wytwarza ten sam odcisk. Drugi model, dobrze wykonany, jest znacznie lepszy od pierwszego do przechowywania haseł. Później zobaczymy, dlaczego „dobrze wykonany” wymaga czegoś więcej niż tylko samego SHA-256. Cztery właściwości, które czynią skrót kryptograficzny użytecznym Funkcja skrótu, która zasługuje na miano kryptograficznej, spełnia cztery właściwości: 1. Determinizm. Te same dane wejściowe zawsze dają ten sam odcisk. 2. Efekt lawinowy. Mała zmiana na wejściu daje całkowicie inny odcisk, bez widocznego podobieństwa do poprzedniego. 3. Odporność na odwracanie. Na podstawie odcisku nie jest możliwe obliczeniowo znalezienie tekstu, który go wytworzył. 4. Odporność na kolizje. Nie jest możliwe obliczeniowo znalezienie dwóch różnych tekstów dających ten sam odcisk. „Nie jest możliwe obliczeniowo” nie oznacza „jest matematycznie niemożliwe”. Oznacza to, że koszt czasu, energii i pieniędzy potrzebny do osiągnięcia tego celu przekracza o rzędy wielkości sumę wszystkich racjonalnie dostępnych mocy obliczeniowych. W przypadku SHA-256 granicę tę mierzy się w tysiącach bilionów lat, nawet przy najbardziej optymistycznych założeniach dotyczących specjalistycznego sprzętu. Co dla praktycznych celów czytelnika jest tym samym, co „nie da się”. SHA-256, konkretnie Nazwa mówi wszystko. SHA to skrót od Secure Hash Algorithm: bezpieczny algorytm skrótu. Liczba 256 wskazuje rozmiar odcisku w bitach: dwieście pięćdziesiąt sześć bitów, czyli trzydzieści dwa bajty, które wyświetlane w systemie szesnastkowym dają sześćdziesiąt cztery znaki, które czytelnik już rozpoznaje. Standard został opublikowany przez amerykański NIST, organ normalizujący tego typu funkcje, w 2001 roku jako część rodziny SHA-2; obecna wersja standardu, FIPS 180-4, pochodzi z 2015 roku. Wymiary zasługują na chwilę uwagi. Dwieście pięćdziesiąt sześć bitów pozwala na dwa do potęgi dwieście pięćdziesiąt sześć różnych wartości: liczba z siedemdziesięcioma ośmioma cyframi dziesiętnymi, o kilka rzędów wielkości większa niż szacowana liczba atomów w obserwowalnym wszechświecie. Każdy tekst na świecie — każda książka, każdy e-mail, każda wiadomość — przypada na jedną z tych wartości. Prawdopodobieństwo, że dwa różne teksty zbiegną się przypadkowo, jest w praktyce nieodróżnialne od zera. Jak to wygląda w kodzie Dlaczego nazywamy to pieczęcią lakową W korespondencji europejskiej od XV do XIX wieku list zamykano lakiem. Kropla roztopionego laku, odciśnięta na niej pieczęć i list zostawał oznaczony w sposób niepowtarzalny. Nie chroniło to treści przed zdeterminowanym podglądaczem — papier można było przeczytać pod światło, lak można było złamać — ale czyniło to widocznym. Każda zmiana zamknięcia była widoczna dla odbiorcy jeszcze przed otwarciem papieru. Lak nie zapobiegał szkodzie; on ją deklarował. SHA-256 treści każdego Cuaderno pełni tę samą funkcję w wersji cyfrowej. Gdyby choć jedno słowo w artykule zmieniło się między momentem jego publikacji a momentem, w którym go czytasz, szesnastkowa pieczęć u dołu tekstu nie zgadzałaby się już z SHA-256 tekstu, który masz przed sobą. Każdy czytelnik dysponujący pięcioma liniami kodu mógłby to sprawdzić. Publikacja nie może napisać swojej historii na nowo bez ujawnienia tego przez pieczęć. Nie chroni ona przed szkodą; czyni ją weryfikowalną. Czym hash nie jest Od SHA-256 oczekuje się czasem czterech zastosowań, które do niego nie należą: 1. Szyfrowanie. Hash streszcza; nie ukrywa. Jeśli chcesz, aby tekstu nie dało się odczytać, musisz go zaszyfrować, a nie zahaszować. 2. Uwierzytelnianie autora. Hash nie mówi, kto napisał tekst, a jedynie jaki tekst został zahaszowany. Aby powiązać autorstwo, potrzebny jest podpis kryptograficzny nad hashem, a nie sam hash. 3. Przechowywanie haseł. Tutaj kryje się pułapka, którą warto zrozumieć. SHA-256 został zaprojektowany tak, aby był bardzo szybki — co jest dobre dla wielu rzeczy, ale złe dla tej jednej. Atakujący ze specjalistycznym sprzętem może sprawdzać miliardy haseł na sekundę względem hasha SHA-256, aż znajdzie Twoje. Do zapisywania haseł należy używać celowo wolnych funkcji derywacji klucza, takich jak Argon2, scrypt lub bcrypt, w połączeniu z solą (unikalnymi losowymi danymi dla każdego użytkownika, co zapobiega sytuacji, w której dwie osoby z tym samym hasłem mają ten sam hash). 4. Odczytywanie hasha jako identyfikatora autora. Tak nie jest. Hash identyfikuje treść. Jeśli dwie osoby zahaszują słowo cześć za pomocą SHA-256, obie otrzymają ten sam skrót — i to jest centralna właściwość, a nie wada: gdyby były to różne skróty, nie moglibyśmy sprawdzić zgodności między tym, co opublikowano, a tym, co otrzymano. Gdzie SHA-256 pojawia się w Twoim codzinnym życiu Nawet jeśli tego nie widzisz, SHA-256 wspiera znaczną część tego, czego używasz na co dzień w Internecie. Łańcuch bloków Bitcoina budowany jest poprzez łączenie SHA-256 każdego bloku z następnym; zmiana przeszłego bloku wymusza ponowne obliczenie całego późniejszego łańcucha. Git, system, w którym wersjonowany jest kod połowy świata, identyfikuje każde zatwierdzenie (commit) poprzez SHA-256 (w nowszych wersjach) lub przez jego poprzednika SHA-1 (w starszych wersjach) jego pełnej treści. Certyfikaty HTTPS, które weryfikują tożsamość witryny po wejściu na nią, mają powiązany odcisk SHA-256. Pobieranym plikom oprogramowania często towarzyszy SHA-256 opublikowany przez dewelopera, abyś mógł zweryfikować, czy plik nie został zmieniony po drodze. I, jak powiedzielśmy, u dołu każdego Cuadernos Lacre. Dla profesjonalnego czytelnika Cztery przypomnienia operacyjne dla tych, którzy podejmują decyzje lub audytują systemy: 1. Hash to nie szyfrowanie. Jeśli dostawca myli te dwa terminy w swojej dokumentacji technicznej, warto zapytać, co dokładnie ma na myśli. 2. Do przechowywania haseł nigdy nie należy używać samego SHA-256. SHA-256 jest zbyt szybki do tego zadania (zobacz punkt 3 w Czym hash nie jest). Obecnym standardem jest Argon2id: wolny z założenia, konfigurowalny w zależności od możliwości serwera, w połączeniu z losową solą, inną dla każdego użytkownika. 3. W przypadku integralności dokumentów — umów, akt, plików — SHA-256 pozostaje standardem referencyjnym. Jest to standard używany przez kwalifikowane znaczniki czasu w UE. 4. W przypadku długoterminowego przechowywania (dziesięciolecia) warto obliczyć i zarchiwizować również SHA-3 lub SHA-512 obok SHA-256; kryptograficzna roztropność zaleca, aby nie polegać na jednej funkcji w przypadku archiwów stuletnich. Wyobraź sobie, że zbudowałeś najbardziej skomplikowany tor domina na świecie: tysiące klocków, dziesiątki rozgałęzień, mechaniczne mosty i rampy przecinające cały pokój, starannie układane element po elemencie. Jeśli popchniesz pierwszy klocek, łańcuch upada w precyzyjnej i powtarzalnej sekwencji. Ten sam układ, to samo początkowe popchnięcie → identyczny końcowy wzór przewróconych klocków, raz za razem. Oto co jest interesujące: przesuń tylko jeden klocek o pół centymetra w bok przed rozpoczęciem i popchnij ponownie. Rampa, która powinna zadziałać, pozostaje martwa, most nie opada, uruchamia się inne rozgałęzienie. Końcowy wzór klocków na podłodze jest całkowicie nierozpoznawalny w porównaniu z pierwszym. SHA-256 to z matematycznego punktu widzenia właśnie ten tor. Tekst, który wpisujesz, to początkowe pozycje klocków. Algorytm to popchnięcie wyzwalające kaskadę. A ostateczny rezultat — to, co nazywamy hashem — to zdjęcie podłogi, gdy wszystko się zatrzyma. Zmień jeden jedyny przecinek w oryginalnym tekście, a zdjęcie będzie radykalnie inne. To takie proste i takie drastyczne. --- Jeśli wrócisz do dołu tego artykułu, zobaczysz szesnastkową pieczęć o długości sześćdziesięciu czterech znaków. Jest to SHA-256 tekstu, który właśnie przeczytałeś, w tym języku. Gdybyśmy przetłumaczyli artykuł, pieczęć byłaby inna; gdyby zmieniło się choć jedno słowo w wersji hiszpańskiej, pieczęć hiszpańska uległaby zmianie. Pieczęć nie chroni treści — do tego służą inne narzędzia — lecz identyfikuje ją w sposób jednoznaczny. I to, jakkolwiek skromnie by to nie brzmiało, wystarczy, aby żaden etap łańcucha redakcyjnego nie mógł zmienić tego, co powiedziano, bez bycia zauważonym. Cała reszta — szyfrowanie, podpisywanie, identyfikacja — opiera się na tej prostej idei. Źródła i dodatkowa lektura - NIST — FIPS PUB 180-4: Secure Hash Standard (SHS), sierpień 2015. Oficjalna specyfikacja rodziny SHA-2, w tym SHA-256. - RFC 6234 — US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF), IETF, maj 2011. Wersja normatywna dla implementatorów. - Ferguson, N.; Schneier, B.; Kohno, T. — Cryptography Engineering: Design Principles and Practical Applications (Wiley, 2010). Rozdziały 5 i 6 omawiają funkcje skrótu oraz ich legalne i nielegalne zastosowania. - Nakamoto, S. — Bitcoin: A Peer-to-Peer Electronic Cash System (2008). Praktyczny przykład użycia SHA-256 do łączenia bloków w strukturę niezmienną z konstrukcji. - Rozporządzenie (UE) 910/2014 (eIDAS) — ramy dla kwalifikowanych znaczników czasu. SHA-256 jest referencyjną funkcją dla kwalifikowanych podpisów i pieczęci elektronicznych wydawanych w UE. - Implementacja referencyjna w Zig: std.crypto.hash.sha2.Sha256 w oficjalnym repozytorium języka (github.com/ziglang/zig → lib/std/crypto/sha2.zig). Jest to zoptymalizowana i audytowana wersja, której faktycznie używa Solo2. Przydatna do porównania z implementacją dydaktyczną z dodatku. --- Cuadernos Lacre · Publikacja Menzuri Gestión S.L. · napisana przez R.Eugenio · redagowana przez zespół Solo2. https://solo2.net/pl/zeszyty/