SHA (Secure Hash Algorithm) to rodzina kryptograficznych funkcji skrótu opracowanych przez National Security Agency (NSA) i opublikowanych przez National Institute of Standards and Technology (NIST). Algorytmy z rodziny SHA są szeroko stosowane w różnych dziedzinach kryptografii, takich jak tworzenie podpisów cyfrowych, certyfikatów SSL/TLS, haszowanie haseł i wiele innych aplikacji, gdzie wymagana jest integralność i bezpieczeństwo danych.
Główne algorytmy z rodziny SHA:
- SHA-1:
- Długość skrótu: 160 bitów (20 bajtów).
- Zastosowanie: SHA-1 był szeroko stosowany w przeszłości do tworzenia podpisów cyfrowych i certyfikatów SSL/TLS.
- Bezpieczeństwo: Obecnie uważany za przestarzały ze względu na odkryte słabości kryptograficzne, które pozwalają na ataki kolizyjne, co oznacza, że dwa różne wejścia mogą prowadzić do tego samego skrótu. W 2017 roku zespół badaczy Google przeprowadził pierwszy praktyczny atak kolizyjny na SHA-1, co ostatecznie potwierdziło jego niebezpieczeństwo.
- SHA-2:
- Długość skrótu: Obejmuje kilka wariantów, takich jak SHA-224, SHA-256, SHA-384 i SHA-512, gdzie liczby oznaczają długość skrótu w bitach.
- Zastosowanie: SHA-2 jest obecnie standardem w wielu zastosowaniach kryptograficznych, w tym w certyfikatach SSL/TLS, podpisach cyfrowych, oraz w kryptowalutach (np. SHA-256 w Bitcoinie).
- Bezpieczeństwo: SHA-2 jest uważany za bezpieczny i szeroko stosowany, choć istnieją obawy, że w przyszłości postępy w kryptografii mogą wpłynąć na jego bezpieczeństwo, zwłaszcza w kontekście komputerów kwantowych.
- SHA-3:
- Długość skrótu: SHA-3, podobnie jak SHA-2, oferuje różne długości skrótu: SHA3-224, SHA3-256, SHA3-384, i SHA3-512.
- Zastosowanie: SHA-3 został zaprojektowany jako alternatywa dla SHA-2, mająca na celu zwiększenie odporności na potencjalne ataki kryptograficzne, zwłaszcza te, które mogą się pojawić w przyszłości.
- Bezpieczeństwo: SHA-3 jest oparty na konstrukcji Keccak, która wygrała konkurs NIST na nowy standard funkcji skrótu. Jest uważany za bardzo bezpieczny i jest odporny na znane rodzaje ataków.
Zastosowania SHA:
- Podpisy cyfrowe: SHA jest używany do tworzenia skrótów wiadomości, które są następnie podpisywane cyfrowo, zapewniając integralność i autentyczność danych.
- Certyfikaty SSL/TLS: SHA jest używany do tworzenia certyfikatów cyfrowych, które są kluczowe dla zabezpieczania połączeń internetowych.
- Przechowywanie haseł: Skróty SHA są często używane do bezpiecznego przechowywania haseł w systemach informatycznych.
- Kryptowaluty: SHA-256 jest szczególnie ważny w ekosystemie Bitcoin, gdzie jest używany zarówno do kopania, jak i tworzenia adresów.
SHA odgrywa kluczową rolę w zapewnianiu bezpieczeństwa cyfrowego w wielu różnych zastosowaniach, a jego rozwój i adaptacja do nowych zagrożeń jest nieustannie monitorowana przez społeczność kryptograficzną.