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.
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.
A SHA-3 a sponge (szivacs) konstrukciót alkalmazza, amely két fázisból áll:
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).
Az állapot egy (5 ) mátrixban van reprezentálva, ahol minden cella 64 bit hosszú (összesen 1600 bit).
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).
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
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
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.