SHA-3
Kiejtés
- IPA: [ ˈʃhɒ3] érvénytelen IPA-karakterek (3)
Főnév
SHA-3 Algoritmus
A SHA-3 (Secure Hash Algorithm 3) a legújabb tagja a biztonságos hash algoritmusok családjának, amelyet az amerikai National Institute of Standards and Technology (NIST) 2015-ben fogadott el. A SHA-3 a Keccak kriptográfiai hashfüggvényre épül, amelyet Guido Bertoni, Joan Daemen, Michaël Peeters, és Gilles Van Assche fejlesztettek ki.
Hashfüggvények célja
A hashfüggvények alapvető céljai: 1. Adatok összefoglalása: Egy bemenetből rögzített méretű hash-érték létrehozása. 2. Integritás ellenőrzése: Megváltoztathatatlan lenyomat generálása az adatokhoz. 3. Kriptográfiai biztonság: - Egyirányúság: A hash-érték alapján nem rekonstruálható a bemenet. - Ütközésállóság: Két különböző bemenet nem eredményezhet ugyanazt a hash-értéket.
SHA-3 fő jellemzői
- Szerkezet: A SHA-3 a sponge construction nevű keretet használja, amely lehetővé teszi különböző bemenethosszak feldolgozását és változó hash-hosszúságú kimenetek generálását.
- Hash-méret:
- SHA3-224: 224 bites kimenet.
- SHA3-256: 256 bites kimenet.
- SHA3-384: 384 bites kimenet.
- SHA3-512: 512 bites kimenet.
- Üzenetpárnázás:
- Az üzenet feldolgozását a keccak-párnázás egészíti ki, amely biztosítja, hogy a hash-folyamat biztonságosan működjön.
- Ellenállás támadásokkal szemben:
- SHA-3 hatékonyan védi az adatok biztonságát ismert támadási formákkal szemben, mint például az ütközéskeresés és a preimage támadások.
Sponge konstrukció működése
A SHA-3 a sponge (szivacs) konstrukciót alkalmazza, amely két fázisból áll:
- Elnyelés (Absorb):
- Az üzenetet blokkokra bontják, és ezeket iteratívan feldolgozzák egy állapotmátrix segítségével.
- Kifacsarás (Squeeze):
- Az állapotból kinyerik a hash-értéket a kívánt hosszban.
A sponge konstrukció két paraméteren alapul: - r (rate): A bemeneti blokk mérete. - c (capacity): A belső állapot biztonságának mérete ((r + c) az állapot teljes mérete).
Keccak állapot
Az állapot egy (5 ) mátrixban van reprezentálva, ahol minden cella 64 bit hosszú (összesen 1600 bit).
SHA-3 lépései
- Inicializáció:
- Az állapot (5 ) mátrixát nullázza.
- Párnázás:
- Az üzenetet párnázzák a Keccak-párnázással, és darabolják (r) méretű blokkokra.
- Elnyelési fázis (Absorb):
- A bemeneti blokkok XOR-olása az állapottal.
- Minden blokk után Keccak-permutáció végrehajtása az állapoton.
- Kifacsarási fázis (Squeeze):
- Az állapotból kinyert adatok képezik a hash-értéket.
- Ha további hash-érték szükséges, ismét permutációt végeznek az állapoton.
Keccak-permutáció
A Keccak-permutáció több fázisból áll: 1. Theta: A paritásokon alapuló XOR műveletek az állapotban. 2. Rho: Bitforgatás minden cellában. 3. Pi: A cellák pozíciójának átrendezése. 4. Chi: Az értékek nemlineáris módosítása. 5. Iota: Kerekállandó hozzáadása a cellákhoz.
A permutációt többször végrehajtják ((24) kör, ha az állapot 1600 bit).
Python implementáció
A Python hashlib
modulja támogatja a SHA-3 algoritmust.
import hashlib
# Példa üzenet
message = b"Hello, SHA-3!"
# SHA3-256 hash generálása
hash_object = hashlib.sha3_256(message)
hash_value = hash_object.hexdigest()
print(f"Üzenet: {message.decode()}")
print(f"SHA3-256 hash: {hash_value}")
Kimenet:
Üzenet: Hello, SHA-3! SHA3-256 hash: 19a73d7762d2c92dd613ff80b55cb6dc7f4ab98b0b3ae79c83282e57352dd4a2
C++ implementáció
A C++ implementációhoz használható például a Crypto++ könyvtár.
#include <iostream>
#include <cryptopp/sha3.h>
#include <cryptopp/hex.h>
using namespace std;
using namespace CryptoPP;
int main() {
// Példa üzenet
string message = "Hello, SHA-3!";
string hash;
// SHA3-256 hash generálása
SHA3_256 hashFunction;
StringSource(message, true,
new HashFilter(hashFunction,
new HexEncoder(
new StringSink(hash), true
)
)
);
cout << "Üzenet: " << message << endl;
cout << "SHA3-256 hash: " << hash << endl;
return 0;
}
Kimenet:
Üzenet: Hello, SHA-3! SHA3-256 hash: 19A73D7762D2C92DD613FF80B55CB6DC7F4AB98B0B3AE79C83282E57352DD4A2
Előnyök
- Biztonságos konstrukció:
- Ellenáll a jelenlegi támadásokkal szemben, például az ütközéskeresés és preimage támadások ellen.
- Rugalmasság:
- Különböző hash-méretek támogatása.
- Hatékonyság:
- Alkalmas mind hardveres, mind szoftveres implementációkra.
Hátrányok
- Újdonság:
- Kevésbé elterjedt, mint a SHA-2 algoritmusok.
- Több számítási költség:
- Bár biztonságosabb, több erőforrást igényel, mint a SHA-2.
Alkalmazások
- Digitális aláírások:
- Alkalmas aláírások és tanúsítványok generálására.
- Kriptovaluták:
- Hashláncok építésére és tranzakciók hitelesítésére.
- Adatbiztonság:
- Hálózati kommunikáció, fájlok ellenőrzése.
Összegzés
A SHA-3 egy modern, biztonságos hash-algoritmus, amely kiváló védelmet nyújt kriptográfiai célokra. Bár a SHA-2 algoritmusok még mindig dominálnak, a SHA-3 új szintet képvisel a hashfüggvények biztonságában és rugalmasságában, különösen a jövőbeli támadásokkal szemben.