Bezpieczniejsze algorytmy szyfrowania i haszowania: kompletny przewodnik

Ostatnia aktualizacja: 11/11/2025
Autor: Isaac
  • Aby zapewnić integralność, należy używać algorytmów SHA-256, SHA-512 lub SHA-3; należy unikać algorytmów MD5 i SHA-1.
  • Do szyfrowania: AES-256 na GCM/XTS; Serpent, Twofish i Camellia to dobre alternatywy.
  • Hasła: Argon2id (≥19 MiB, 2 iter.) lub dobrze sparametryzowane scrypt/bcrypt.
  • 3DES, RIPEMD-160 i SHA-1 są przestarzałe: należy przeprowadzić migrację do AES i SHA-2/3.

Bezpieczeństwo kryptograficzne: szyfrowanie i haszowanie

Jeśli chodzi o ochronę danych, nie wszystko jest takie samo: szyfrować y zrobić haszysz To różne rzeczy, ale mają różne cele. W tym przewodniku wyjaśnię Ci, jasno i zwięźle, na czym one polegają. bezpieczniejsze algorytmy szyfrowania i haszowaniaJak je wybierać w zależności od przypadku użycia i jakich opcji należy unikać w dzisiejszych czasach.

Oprócz omówienia klasyki, takiej jak AES, SHA-2 i SHA-3Zobaczysz dlaczego. MD5, SHA-1 lub 3DES Nie są już dobrym pomysłem. Co polecasz? OWASP jak zapisywać hasła i jak je sprawdzać uczciwość plików poprawnie. A skoro pytasz, wyjaśnię również, którego użyć, „jeśli szybkość nie jest ważna”, w tym szyfrów takich jak Kamelia, Dwuryb, Wąż lub Kuznyechiki hasze takie jak SHA-256, SHA-512, Whirlpool lub Streebog.

Czym jest funkcja skrótu i ​​co sprawia, że ​​jest bezpieczna?

Funkcja skrótu przekształca dane wejściowe o dowolnym rozmiarze w podsumowanie o stałej długościDo zastosowań kryptograficznych dobry hash powinien być deterministyczny, odporny na obraz wstępny, A drugi obraz wstępny już kolizje, oprócz wystawiania słynnego efekt lawinowyMinimalna zmiana danych wejściowych daje zupełnie inny wynik.

W idealnej funkcji podsumowania są rozłożone w jednolity i nieprzewidywalny w całej przestrzeni wyjściowej, tak że dwa podobne dane wejściowe generują pozornie niepowiązane hasze. Chociaż ideał nie istnieje, przy rozmiarach wyjściowych takich jak 256 bity Możliwa przestrzeń jest gigantyczna, co powoduje przypadkowe kolizje obliczeniowo niewykonalne w obecnej praktyce.

Ważne: hash to jednokierunkowyNie można go „odszyfrować”. Jedynym teoretycznym sposobem odzyskania wpisu jest atak brutalna siła lub według słownika, i dlatego hasła muszą być traktowane przy użyciu określonych funkcji i parametrów, które je tworzą powolny do obliczenia ataku.

Porównanie funkcji skrótu i ​​szyfrowania

Hash kontra szyfrowanie: to nie to samo

Szyfrowanie jest bidireccionalKonwertuje tekst jawny na tekst zaszyfrowany i, z właściwym kluczem, odwraca proces. Skrót to nieodwracalny i zawsze zwraca wynik stała długośćSzyfrowanie chroni poufnośćHasz przyczynia się uczciwość i służy jako „ślad” danych.

Typowe przypadki: do przesyłania danych wrażliwych stosuje się szyfrowanie (na przykład HTTPS); aby sprawdzić, czy plik został zmodyfikowany, haszyszDo przechowywania haseł nie stosuje się szyfrowania ani algorytmu SHA-256: stosuje się inne metody. KDF-y z hasłem takich jak Argon2id, scrypt lub bcrypt z parametrami kosztów.

Stan najczęściej występujących funkcji skrótu

  • MD5 Generuje 128 bitów i obecnie nie nadaje się do celów kryptograficznych: w praktyce występują kolizje. Obecnie można go używać tylko w aplikacjach niekrytycznych, takich jak: wykrywanie przypadkowego uszkodzeniaJednakże wskazane jest przejście na nowoczesne alternatywy, ponieważ ich słabość ułatwia ataki celowe zderzenie.
  • SHA-1 Generuje 160 bitów i jest również zagrożony. Badania pozwoliły na zmniejszenie kosztu kolizji do około 263 operacji, a w 2017 roku zademonstrowano praktyczne zderzenie ZNISZCZONYNie zaleca się jego stosowania w podpisach, certyfikatach i innych rzeczywistych sytuacjach związanych z bezpieczeństwem.
  • SHA-2 Oto rodzina zalecana przez NIST do ogólnego użytku: SHA-256, SHA-512, oprócz skróconych wariantów, takich jak SHA-224, SHA-384, SHA-512/224 o SHA-512/256Zachowują wysoką odporność na zderzenia i korzystają z optymalizacji sprzęt komputerowy, Chociaż SHA-256 Zwykle jest to o 20–30% więcej lento niż MD5 lub SHA-1.
  • SHA-3 (dawniej Keccak) nie jest „ulepszonym algorytmem SHA-2”; wykorzystuje konstrukcja gąbkowa i jest z natury odporny na ataki wydłużenia długościOferuje warianty SHA3-224/256/384/512 oraz rozszerzenia o zmiennym wyjściu SHAKE128/256. Jego popularność rośnie, choć SHA-2 nadal dominuje ze względu na wydajność i obsługę.
  • Inne skróty: DOPASOWANY-160 Zapewnia mniejsze bezpieczeństwo przed kolizjami niż współczesny algorytm SHA-2 i jest uważany przestarzałe dla nowych projektów; Whirlpool y Streetbog (GOST R 34.11-2012) istnieją, ale poza określonymi środowiskami ich ekosystem i przyspieszenia są ograniczony w porównaniu do SHA-2/3.
  Konstelacja satelitów IRIS2 Unii Europejskiej: Suwerenność cyfrowa i konkurencyjność w przestrzeni kosmicznej

Sprawdzanie integralności plików (przykłady praktyczne)

Opublikowanie i zweryfikowanie skrótu umożliwia wykrycie zmiany lub uszkodzenia podczas pobierania i utwórz bezpośredni link do pobrania Zaleca się również publikowanie oficjalnej wartości SHA-256. Chociaż można znaleźć przykłady z wykorzystaniem MD5, obecnie zalecaną praktyką jest używanie oficjalnej wartości SHA-256. SHA-256 lub wyższy. W systemach takich jak Unix Możesz zrobić coś takiego: sha256sum archivo.iso i porównaj z wartością oficjalną.

Jeśli chcesz zautomatyzować proces, możesz go połączyć w łańcuch poleceniaNa przykład generowanie pakietu i jego skrótu w jednym wierszu: tar cf - carpeta | tee paquete.tar | sha256sum -Odbiorca zweryfikuje to za pomocą sha256sum -c wykorzystując opublikowaną wartość.

En Windows, PowerShell upraszcza obliczenia za pomocą: Get-FileHash .\fichero.zip -Algorithm SHA256Istnieją również polecenia dla Sprawdź atrybuty plików i szyfrowanie w systemie Windows. Unikaj używania MD5 lub SHA-1 jako „pieczęć integralności” w kontekście bezpieczeństwa, ponieważ atakujący może wymusić kolizje i oszukać proces.

Kiedy używać skrótu, a kiedy szyfrować

Korzystać haszysz Jeśli szukasz integralności, deduplikacji lub szybkiego indeksowania: weryfikacji plików, podpisy cyfrowe (podpis to skrót wiadomości), tablice skrótów w strukturach danych lub generowanie unikalnych identyfikatorów. Są one również wykorzystywane w czarne listy i podpisy malware.

Korzystać szyfrowanie W celu zachowania poufności: dane w tranzycie (HTTPS, VPN), dane w spoczynku (dyski, Bazy danych), kopie zapasowe i ruchomySzyfrowanie zapobiega odczytaniu treści przez osoby trzecie bez klucz deszyfrujący.

Przechowywanie haseł: KDF i zalecenia OWASP

W przypadku haseł nigdy nie używaj szybkie hasze ogólnego przeznaczenia (MD5, SHA-1, SHA-256 „surowy”). Używa kluczy szyfrowania haseł z konfigurowalny koszt y Sal losowy: argon2id, scrypt o bcryptJego celem jest zwiększenie kosztów ataków siłowych i ataków GPU/ASIC.

OWASP ustala priorytety argon2id z co najmniej 19 MiB pamięci, 2 iteracji y paralelizm 1Jeśli nie jest dostępny, zasugeruj scrypt z N = 217, r = 8 yp = 1Jako trzecią opcję, bcrypt z czynnikiem kosztowym około 10-12 (lub taki, który daje ~0,5 s na twoim sprzęcie).

PBKDF2 Pozostaje kwestia zgodności: jest ona ważna, jeśli dostosujesz wystarczająco wysokie iteracje (miliony), ale w porównaniu z nowoczesnymi procesorami graficznymi/układami ASIC działa gorzej niż scrypt lub Argon2id ze względu na niski koszt pamięci.

  Eksport zasad sieciowych i konfiguracji za pomocą poleceń netsh, gpresult i secedit

Wydajność algorytmu haszującego

Hasze ogólnego przeznaczenia są zaprojektowane tak, aby: rapids i wydajne, idealne do protokołów i weryfikacji, ale dokładnie odwrotne od tego, czego szukamy hasłaRzeczywista prędkość zależy od danych wejściowych, algorytmu, instrukcje procesora i paralelizmu.

W scenariuszach o dużej objętości lub w czasie rzeczywistym zbyt wolny hash może stać się wąskie gardłoDlatego rozróżniamy szybkie funkcje (SHA-256/512) i wolne KDF-y (Argon2id, scrypt, bcrypt), które wiążą się z kosztami Procesor i pamięć celowy.

Podstawowe właściwości dobrego haszu

Oprócz determinizmu i efektu lawinowego, hash musi być odporny na obraz wstępny, A drugi obraz wstępny już kolizjeI minimalny rozmiar 256 bity aby wytrzymać obecne natarcie i przyszłe marże.

Choć czasami upraszcza się to stwierdzeniem, że „dwa różne dane wejściowe nie mogą mieć tego samego skrótu”, w rzeczywistości przy skończonych danych wyjściowych kolizje istniejeWażne jest to, że ich znalezienie jest niepraktyczne. Dlatego MD5 i SHA-1 są brane pod uwagę. zepsuty a SHA-2/3 pozostaje bezpieczną opcją.

Szyfrowanie symetryczne i tryby: z czego korzystać dzisiaj

W szyfrowaniu symetrycznym odniesieniem jest AES z kluczami 128/192/256 bity. Kluczową kwestią jest nie tylko algorytm, ale sposób operacji: unikaj ECB, korzystaj z uwierzytelnianych trybów, takich jak GCM lub w magazynowanie, XTS (na przykład dla dysków). Jeśli pracujesz w środowisku Windows, sprawdź również obsługę sprzętu i Bezpieczeństwo szyfrowania BitLocker.

Inne szyfry: Kamelia (norma ISO, dobry profil), Dwie ryby y Wąż (finaliści AES, wciąż silni), ChaCha20-Poly1305 (niezwykle szybkie oprogramowanie i bardzo bezpieczne). 3DES y DES zostały w tyle: 3DES jest również ograniczony i zniechęcający ze względu na wiele standardów.

Szyfrowanie asymetryczne, podpisy i rozmiary kluczy

Do ustalania kluczy i podpisywania stosuje się: RSA y ECCZ RSA użyj OAEP do szyfrowania i PSS Do podpisu; nigdy nie „książka” RSA. Rozmiary: co najmniej RSA 3072 bity lub ESK 256 bitów dla przybliżonego poziomu bezpieczeństwa wynoszącego 128 bitów symetrycznych.

Zobaczysz także Diffie-Hellman (w tym wariant krzywej eliptycznej) do wymiany kluczy i DSA/ECDSA do podpisów. W nowoczesnych protokołach połączenie TLS Wykorzystuje wymianę asymetryczną i uwierzytelnione szyfrowanie symetryczne w celu zrównoważenia bezpieczeństwa i wydajność.

Co wybrać, jeśli szybkość nie jest istotna?

Jeśli ustalasz priorytety bezpieczeństwo/solidność Jeśli chodzi o szybkość, rozsądnym wyborem jest wybór sprawdzonych i dobrze sprawdzonych algorytmów, unikając niepotrzebnych „koktajli”. W przypadku szyfrowania symetrycznego wybierz AES-256 z GCM (ruch drogowy) lub XTS (dysk). Kamelia-256, Wąż y Dwie ryby Są to solidne alternatywy.

Te wodospady (AES-Twofish, Serpent-Twofish-AES itd.) rzadko wnoszą realną wartość i komplikują audyt oraz zapewnienie zgodności. Jeśli Twój model zagrożeń tego wymaga, lepiej wzmocnić klucze, zarządzanie IV, rotację i uwierzytelnianie danych, które w każdej chwili mogą łączyć ze sobą szyfry.

O Kuznieczik (GOST): technicznie solidny, ale z mniejszą kontrolą międzynarodową. Używaj go do spełnienie Jeśli wymagają tego przepisy rosyjskie; w przeciwnym razie należy użyć patyczka z AES/Camellia/Serpent. W przepływach bez AES-NI, ChaCha20-Poly1305 To wspaniałe, choć prędkość nie jest tutaj priorytetem.

W przypadku ogólnych haszy (nie haseł): preferuj SHA-512/256 o SHA-256 poprzez ekosystem i wsparcie; SHA3-256 To doskonałe rozwiązanie, jeśli chcesz mieć pewność, że konstrukcja nie wydłuży konstrukcji. Whirlpool y Streetbog Są one słuszne, ale ich przyjęcie i przyspieszenie jest mniejsze.

  Dlaczego Twój internet nie przyspiesza po zwiększeniu pakietu i jak się tego dowiedzieć.

Hasła: argon2id z dużą ilością pamięci (≥ 19 MiB), co najmniej 2 iteracjami i ścisłym paralelizmem. Jeśli nie możesz, scrypt dobrze sparametryzowane lub bcrypt wysokim kosztem. Jest to o wiele bardziej efektywne niż „przesyłanie bitów” do ogólnego algorytmu SHA.

Reguła CA5350 (.NET): Unikaj niebezpiecznych algorytmów

Analiza kodu .NET ostrzega (CA5350), jeśli wykryje 3DES, SHA-1 lub RIPEMD-160Ponieważ oferują gorsze gwarancje w porównaniu z nowoczesnymi opcjami. Szybka wymiana: TripleDES → AES; SHA-1/RIPEMD-160 → SHA-256/384/512.

Kanoniczne przykłady korekty: var h = SHA1.Create(); a var h = SHA256.Create();; z RIPEMD160Managed.Create() a SHA256.Create(); i TripleDES.Create() a new AesManaged()W razie potrzeby dostosowuje również rozmiary kluczy i tryby bezpieczeństwa (GCM/XTS).

Szybkie porównanie: szyfrowanie kontra haszowanie

Wygląd Szyfrowanie Haszysz CBD
Kierunkowość Dwukierunkowy (odwracalny kluczem) Jednokierunkowy (nieodwracalny)
Cel poufność Integralność/Identyfikacja
Wyjście Zmienna długość Stała długość
Przykłady AES, ChaCha20, RSA, ECC SHA-256, SHA-512, SHA-3

Ataki i najlepsze praktyki, o których należy pamiętać

Nawet przy użyciu solidnych algorytmów, wdrożenia Mają znaczenie. Unikaj EBC, zweryfikuj wypełniacze poprawnie (CBC jest wrażliwy na wyrocznie wypełniające), używa AEAD (GCM/ChaCha20-Poly1305), generuje nieprzewidywalne i różne IV/noncesy dla każdej wiadomości i zawsze sprawdza autentyczność przed rozszyfrowaniem.

W przypadku podpisów cyfrowych nie podpisuj całej wiadomości, tylko podpisuj ją. haszyszZ RSA użyj OAEP do szyfrowania i PSS podpisać; z ECDSA z miłością dba o przypadkowość nonce'ów. I aktualizuj biblioteki i konfiguracje, aby chronić je przed nowymi lukami w zabezpieczeniach.

SHA-2 i SHA-3 nieco bardziej szczegółowo

SHA-256 Działa na słowach 32-bitowych, 64 rundach i blokach 512-bitowych; SHA-512 ze słowami 64-bitowymi, 80 rundami i blokiem 1024-bitowym, stąd jego skrócone warianty, takie jak SHA-512/256 które zapewniają lepszą odporność na wydłużanie przy zmniejszonej mocy wyjściowej.

SHA-3 Wykorzystuje 1600-bitowy stan wewnętrzny i 24 rundy permutacji; absorbuje dane za pomocą XOR i generuje tyle wyjść, ile potrzeba (SHAKE). Jest bardzo elastyczny i, choć w oprogramowaniu generycznym może być bardziej lento Algorytm SHA-2, dzięki swojej charakterystycznej konstrukcji, zapewnia różnorodność kryptograficzną.

Notatki dotyczące generowania losowości

Do kryptografii używaj czcionek bezpieczna losowość systemu (na przykład /dev/urandom, język CSPRNG). Unikaj generatorów takich jak skraj() lub MT19937 dla kluczy, IV lub soli: nie są one odporne na przewidywania i mogą zagrozić całemu schematowi.

Aby zamknąć krąg, skupmy się na jednym praktycznym pomyśle: wybierz audytowane standardy (AES-GCM/XTS, SHA-2/3), unika algorytmów z historią kolizji lub krótkimi kluczami (MD5, SHA-1, DES/3DES), a w przypadku haseł stosuje nowoczesne KDF, takie jak argon2id o scrypt z dobrze skalibrowanymi parametrami; jeśli prędkość nie jest priorytetem, możesz bez obaw zwiększyć koszt i pamięć, ponieważ to najlepsza tarcza przeciwko atakom offline.

Cipher.exe
Podobne artykuł:
Cipher.exe w systemie Windows: praktyczne zastosowanie, szczegółowe szyfrowanie plików i bezpieczne usuwanie