Kiejtés

  • IPA: [ ˈʃhɒ3] érvénytelen IPA-karakterek (3)

Főnév

SHA-3

  1. (matematika, algoritmusok)

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

  1. 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.
  2. Hash-méret:
    • SHA3-224: 224 bites kimenet.
    • SHA3-256: 256 bites kimenet.
    • SHA3-384: 384 bites kimenet.
    • SHA3-512: 512 bites kimenet.
  3. Ü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.
  4. 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:

  1. Elnyelés (Absorb):
    • Az üzenetet blokkokra bontják, és ezeket iteratívan feldolgozzák egy állapotmátrix segítségével.
  2. 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

  1. Inicializáció:
    • Az állapot (5 ) mátrixát nullázza.
  2. Párnázás:
    • Az üzenetet párnázzák a Keccak-párnázással, és darabolják (r) méretű blokkokra.
  3. 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.
  4. 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

  1. 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.
  2. Rugalmasság:
    • Különböző hash-méretek támogatása.
  3. Hatékonyság:
    • Alkalmas mind hardveres, mind szoftveres implementációkra.



Hátrányok

  1. Újdonság:
    • Kevésbé elterjedt, mint a SHA-2 algoritmusok.
  2. 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

  1. Digitális aláírások:
    • Alkalmas aláírások és tanúsítványok generálására.
  2. Kriptovaluták:
    • Hashláncok építésére és tranzakciók hitelesítésére.
  3. 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.

  • SHA-3 - Értelmező szótár (MEK)
  • SHA-3 - Etimológiai szótár (UMIL)
  • SHA-3 - Szótár.net (hu-hu)
  • SHA-3 - DeepL (hu-de)
  • SHA-3 - Яндекс (hu-ru)
  • SHA-3 - Google (hu-en)
  • SHA-3 - Helyesírási szótár (MTA)
  • SHA-3 - Wikidata
  • SHA-3 - Wikipédia (magyar)