SHA-1 - Dlaczego jest przestarzały i czym go zastąpić w Linux?

Jędrzej Czarnecki .

4 sierpnia 2026

Żółte cyfry i litery tworzą cyfrowy strumień danych, jakby kod SHA-1 w ruchu.

SHA-1 to hasz, nie szyfrowanie. Przez lata służył do sprawdzania integralności plików i budowania mechanizmów zaufania, ale dziś jego bezpieczeństwo jest zbyt słabe, żeby opierać na nim nowe rozwiązania. W tym tekście wyjaśniam, jak działa ten algorytm, gdzie nadal się pojawia, dlaczego przestał wystarczać i czym rozsądnie zastąpić go w systemach Linux.

Skupię się na praktyce: na różnicy między sumą kontrolną a podpisem, na realnych skutkach kolizji i na prostych krokach, które pomagają ocenić, czy w danym projekcie SHA-1 trzeba od razu wycofać, czy tylko zostawić do odczytu starych danych.

Najważniejsze fakty o SHA-1 w praktyce

  • SHA-1 generuje 160-bitowy hash, ale jego odporność na kolizje jest dziś zbyt słaba dla nowych podpisów i certyfikatów.
  • NIST planuje pełne odejście od SHA-1 do 31 grudnia 2030 r.
  • Najbezpieczniejszym domyślnym następcą jest SHA-256; w części środowisk sens ma też SHA-512/256 lub SHA3-256.
  • W Linuksie do szybkiej weryfikacji plików zwykle używa się sha256sum, a nie sha1sum.
  • Do haseł nie używa się żadnego z tych hashy; tam potrzebny jest Argon2id, bcrypt albo scrypt.

Czym jest SHA-1 i po co w ogóle powstał

Najprościej mówiąc, hash działa jak krótki odcisk palca danych. Z dowolnego pliku, wiadomości albo bloku bajtów wylicza stałej długości wynik, który zmienia się radykalnie nawet po jednej drobnej modyfikacji wejścia. W przypadku SHA-1 ten wynik ma 160 bitów, czyli 40 znaków szesnastkowych w typowym zapisie.

To właśnie dlatego taki algorytm był przez lata użyteczny. Pozwalał szybko sprawdzić, czy plik nie został uszkodzony, czy kopia jest identyczna z oryginałem i czy podpis opiera się na tym samym materiale wejściowym. Ja lubię porównanie do pieczęci na kopercie: jeśli koperta się zmieni, pieczęć też wygląda inaczej. Tyle że pieczęć nie mówi jeszcze, kto ją przyłożył.

Właśnie tu leży ważne rozróżnienie. Hash nie jest szyfrowaniem, bo nie służy do ukrywania treści. Nie jest też podpisem cyfrowym, bo sam z siebie nie daje żadnej gwarancji tożsamości nadawcy. Dobrze nadaje się do kontroli spójności, dużo gorzej do budowania zaufania. To prowadzi do pytania, kiedy ten mechanizm przestał być wystarczająco mocny.

Dlaczego przestał być dobrym wyborem

W bezpieczeństwie kluczowa jest odporność na kolizje, czyli możliwość znalezienia dwóch różnych wejść z tym samym wynikiem. Jeśli taki atak staje się praktyczny, algorytm przestaje być dobrym fundamentem dla podpisów cyfrowych, certyfikatów i innych mechanizmów, które mają odróżniać oryginał od podrobionej wersji.

Własność Co oznacza w praktyce Stan w SHA-1
Odporność na kolizje Trudno znaleźć dwa różne pliki z tym samym haszem Praktycznie złamana
Odporność na preimage Trudno odtworzyć wejście na podstawie samego hasza Nadal trudna, ale to nie wystarcza do zaufania
Odporność na second preimage Trudno znaleźć inny plik o tym samym wyniku co wskazany Za słaba, by budować na niej nowe zabezpieczenia

W 2017 roku Google pokazało pierwszą praktyczną kolizję SHA-1, a to zamknęło spór o to, czy problem jest tylko teoretyczny. Nie był. Od tego momentu sensowne stało się traktowanie SHA-1 jako algorytmu historycznego, a nie jako podstawy nowych podpisów i zaufanych łańcuchów weryfikacji. W praktyce oznacza to jedno: jeśli bezpieczeństwo ma znaczenie, trzeba patrzeć dalej niż ten hash.

To nie znaczy jednak, że każda jego obecność jest od razu awarią. Ważne jest, gdzie dokładnie algorytm pracuje i czy służy do tworzenia nowych zabezpieczeń, czy tylko do odczytu przeszłości.

Gdzie jeszcze spotkasz go w praktyce

W realnych systemach najczęściej trafiam na SHA-1 tam, gdzie ktoś przez lata po prostu nie ruszał starego mechanizmu. Sam fakt jego występowania nie mówi jeszcze wszystkiego. Liczy się rola, jaką pełni, oraz to, czy atakujący może podmienić również sam wynik haszowania.

Miejsce użycia Ryzyko Co zrobić
Archiwalne podpisy i stare certyfikaty Wysokie, jeśli nadal służą do nowych decyzji zaufania Nie wystawiać nowych artefaktów z SHA-1, stare zostawić tylko do odczytu
Sumy kontrolne do dawnych wersji oprogramowania Umiarkowane, jeśli weryfikujesz tylko historyczne wydania Przechodzić na SHA-256 w nowych publikacjach
Starsze repozytoria i mechanizmy referencji Różne, zależnie od tego, czy repo jest aktywnie rozwijane Planować migrację i nie mieszać starego formatu z nowym bez testów
HMAC i KDF w legacy systemach Mniejsze niż przy podpisach, ale nadal nie jest to wybór idealny Migrować, jeśli kontrolujesz obie strony albo możesz zaktualizować protokół

Najważniejsza zasada jest prosta: sama suma kontrolna nie potwierdza źródła pliku. Jeśli ktoś może podmienić plik, może też podmienić hash obok niego. Dlatego w nowoczesnym workflow lepiej traktować hasz jako element pomocniczy, a nie jako jedyny dowód, że plik jest właściwy. Z tego powodu warto od razu porównać dostępne zamienniki.

Czym zastąpić SHA-1 w systemach Linux

W praktyce wybieram algorytm nie według nostalgii, tylko według tego, czy ma być zgodny z większością narzędzi, czy raczej dać świeższy margines bezpieczeństwa. Dla większości zastosowań operacyjnych najlepszym punktem startu pozostaje SHA-256.

Algorytm Długość wyniku Kiedy ma sens Mój wybór
SHA-256 256 bitów Checksumy plików, podpisy, API, większość systemów Domyślnie tak
SHA-512/256 256 bitów Środowiska 64-bitowe i ekosystemy oparte na rodzinie SHA-512 Tak, gdy kompatybilność na to pozwala
SHA3-256 256 bitów Nowe projekty, gdy chcesz inną rodzinę algorytmów Dobry wybór dla nowych wdrożeń

Ważne: do haseł nie wybiera się zwykłych hashy typu SHA-1, SHA-256 ani SHA3-256. Do przechowywania haseł potrzebny jest wolny algorytm przeznaczony właśnie do tego celu, na przykład Argon2id, bcrypt albo scrypt. To jest jeden z tych błędów, które widuję zaskakująco często w starych projektach.

Kiedy wybór algorytmu masz już uporządkowany, można przejść do konkretów: jak znaleźć problematyczne miejsca w kodzie i konfiguracji oraz jak bezpiecznie je wymienić.

Jak sprawdzić i wymienić użycie w praktyce

W systemach Linux zaczynam od prostego audytu: szukam miejsc, w których ktoś generuje, zapisuje albo weryfikuje SHA-1. Potem rozdzielam te przypadki na dwa koszyki. Pierwszy to rzeczy historyczne, które trzeba tylko odczytać. Drugi to wszystko, co tworzy nowe dane, podpisy albo sumy kontrolne.

sha1sum obraz.iso
sha256sum obraz.iso
sha256sum -c SHA256SUMS
rg -n "sha1|sha1sum|SHA-1" .

Takie podejście jest praktyczne, bo nie wymaga od razu wielkiej migracji. Najpierw widzę, gdzie algorytm faktycznie występuje, a dopiero potem decyduję, czy wystarczy go zastąpić, czy trzeba przebudować cały proces publikacji. W przypadku pakietów i archiwów dobrze działa też prosta zasada: nowa wersja pliku ma nową sumę SHA-256, a plik z sumami powinien być dodatkowo podpisany niezależnym mechanizmem.

  1. Znajdź miejsca, w których SHA-1 jest używany do generowania nowych danych.
  2. Oddziel ścieżki historyczne od aktywnych.
  3. Zamień nowe generowanie na SHA-256 albo SHA3-256.
  4. Zostaw SHA-1 wyłącznie do weryfikacji starych danych, jeśli jest to naprawdę potrzebne.
  5. Przetestuj kompatybilność, zanim wyłączysz stary format w produkcji.

Jeśli publikujesz pliki do pobrania, nie zatrzymuj się na samej sumie kontrolnej. Dołącz podpis do pliku z sumami, bo dopiero to daje realną ochronę przed podmianą całego katalogu z wydaniem. To prowadzi do ostatniej rzeczy, która najczęściej rozstrzyga temat w organizacjach.

Trzy decyzje, które porządkują migrację z SHA-1

Gdybym miał zamknąć temat w trzech decyzjach, zrobiłbym to tak: najpierw wyłączyłbym tworzenie nowych podpisów i nowych sum opartych na SHA-1, potem zostawiłbym go wyłącznie do odczytu starych archiwów, a na końcu przepiąłbym nowe publikacje na SHA-256 albo SHA3-256. To jest prostsze niż niekończąca się dyskusja o tym, czy „jeszcze można”.

  • Nowe podpisy, certyfikaty i artefakty wydawaj bez SHA-1.
  • Stare dane weryfikuj tylko tam, gdzie naprawdę musisz zachować zgodność historyczną.
  • W nowych projektach wybieraj SHA-256 jako domyślne minimum, a SHA3-256 rozważaj tam, gdzie ekosystem już go wspiera.

Ja traktuję SHA-1 jako technologię do porządkowania archiwów, a nie do budowania zaufania. W 2026 roku rozsądny domyślny wybór jest prosty: SHA-256 dla kompatybilności, SHA-3 gdy chcesz świeższej rodziny algorytmów, a SHA-1 zostawiasz tylko tam, gdzie wymaga tego historia.

FAQ - Najczęstsze pytania

SHA-1 to algorytm haszujący generujący 160-bitowy "odcisk palca" danych. Służył do sprawdzania integralności plików i budowania mechanizmów zaufania, np. w podpisach cyfrowych, gwarantując, że dane nie zostały zmienione.
W 2017 roku Google zademonstrowało praktyczną kolizję SHA-1, co oznacza, że można znaleźć dwa różne pliki z tym samym hashem. To podważa jego odporność na ataki i sprawia, że nie nadaje się do nowych zastosowań wymagających silnego bezpieczeństwa, np. certyfikatów.
Dla większości zastosowań operacyjnych najlepszym następcą jest SHA-256. W środowiskach 64-bitowych można rozważyć SHA-512/256, a w nowych projektach, gdzie chcemy inną rodzinę algorytmów, SHA3-256. Do haseł używaj Argon2id, bcrypt lub scrypt.
Nie zawsze. Jeśli SHA-1 służy do weryfikacji starych, archiwalnych danych, które nie są już aktywnie modyfikowane ani nie stanowią podstawy nowych decyzji zaufania, można go pozostawić. Kluczowe jest, aby nie używać go do generowania nowych podpisów czy certyfikatów.
Możesz użyć narzędzi takich jak sha1sum do weryfikacji plików lub rg -n "sha1|sha1sum|SHA-1" . do wyszukania wystąpień w kodzie. Następnie zamień generowanie nowych danych na SHA-256/SHA3-256, a SHA-1 zostaw tylko do odczytu historycznych danych.
Oceń artykuł

Średnia: 0.0 / 5 · 0 ocen

Tagi

sha 1 sha-1 bezpieczeństwo zastąpienie sha-1 w linux migracja z sha-1 sha-1 a sha-256
Autor Jędrzej Czarnecki
Jędrzej Czarnecki
Nazywam się Jędrzej Czarnecki i od czterech lat zajmuję się systemami Linux, bezpieczeństwem oraz oprogramowaniem. Moja przygoda z tymi tematami zaczęła się z fascynacji możliwościami, jakie oferują otwarte systemy operacyjne. Uwielbiam zgłębiać złożone zagadnienia i dzielić się wiedzą, aby pomóc innym lepiej zrozumieć, jak działają technologie, które nas otaczają. Piszę o różnych aspektach związanych z bezpieczeństwem systemów oraz optymalizacją oprogramowania, a moim celem jest dostarczanie rzetelnych, zrozumiałych i aktualnych informacji. Staram się w swoich tekstach porównywać różne źródła, upraszczać trudne tematy i organizować wiedzę w sposób przystępny dla każdego. Dzięki temu mam nadzieję, że moi czytelnicy zyskają nie tylko wiedzę, ale także pewność w korzystaniu z technologii w codziennym życiu.
Komentarze (0)
Dodaj komentarz