SHA-3

De Keccak-hashfunctie (ook bekend als SHA-3, wat staat voor Secure Hash Algorithm 3), is een algoritme dat wordt gebruikt om data te converteren naar een unieke, vaste reeks tekens oftewel de ‘hashwaarde’. In tegenstelling tot zijn voorgangers biedt Keccak een combinatie van eenvoud, veiligheid en veelzijdigheid. Keccak is een relatief eenvoudig en efficiënt algoritme. Het maakt gebruik van de zogenaamde ‘sponge-functie’, een constructie die de invoerdata absorbeert en vervolgens een hashwaarde produceert. Deze eenvoudige structuur maakt het algoritme gemakkelijk te begrijpen en te implementeren in blockchainnetwerken en andere digitale systemen.

 

Binaire getallen

 

Flexibeler en veiliger tegen aanvallen

Keccak is een krachtige cryptografische hashfunctie en tevens de kracht achter SHA-3 dat steeds vaker wordt gebruikt voor blockchaintechnologie, digitale handtekeningen en dataverificatie. Keccak verschilt van traditionele hashfuncties zoals SHA-2, omdat het gebruikt maakt van de sponge-constructie in plaats van gebruik te maken van de ‘Merkle-Damgård-structuur (zoals bijvoorbeeld SHA-256 dat wordt gebruikt door Bitcoin). Deze sponge-constructie maakt de hashfunctie flexibeler en veiliger tegen bepaalde aanvallen. Keccak bestaat uit verschillende fasen:

Absorptiefase:

De input wordt verdeeld in blokken en geabsorbeerd in de interne toestand van de hashfunctie.

Permutatiefase:

De gegevens worden door een reeks bitoperaties gemixt.

Squeezefase:

De uiteindelijke hashwaarde wordt geëxtraheerd uit de interne toestand.

 

Beter bestand tegen aanvallen

Door deze structuur is Keccak goed bestand tegen lengte-extensieaanvallen en differentiële cryptanalyse. Keccak biedt verschillende voordelen ten opzichte van eerdere hashfuncties. Zo is Keccak beter bestand tegen aanvallen zoals hashbotsingen (collision attacks) en preimage-aanvallen. Een hashbotsing treedt op wanneer twee verschillende inputs dezelfde hash genereren, waardoor er beveiligingsrisico’s kunnen ontstaan. Het hashing-algoritme SHA-3 is gebaseerd op Keccak en kan verschillende hashlengtes genereren, zoals:

  • SHA3-224
  • SHA3-256
  • SHA3-384
  • SHA3-512

 

Geoptimaliseerd voor FPGA’s en ASIC’s

Keccak is efficiënter op hardware en geoptimaliseerd voor FPGA’s en ASIC’s, waardoor de hashfunctie aantrekkelijker is voor blockchaintechnologie en IoT-toepassingen. Keccak speelt dan ook een belangrijke rol in de cryptowereld. Ethereum gebuikt Keccak-256 in plaats van SHA3 voor hashing. Keccak-256 is een technische afwijking van de officiële SHA-3 standaard, maar biedt nog steeds een sterke beveiliging. Keccak-256 wordt onder andere gebruikt voor Ethereum-adressen en smart contracts.

 

Sponge-functie

Een sponge-functie is een unieke, flexibele en veelzijdige structuur, die de basis vormt voor de werking van de Keccak-hashfunctie. De term ‘sponge’ (spons) is gekozen omdat de functie werkt als een virtuele spons die invoerdata absorbeert, en vervolgens een ‘gecondenseerde’ hashwaarde produceert. Dit proces kan in figuurlijke zin worden vergeleken met het onderdompelen van een spons in water, waarbij de spons water absorbeert en vervolgens wordt uitgewrongen, om alleen het geabsorbeerde water over te houden. In het geval van een sponge-functie, wordt de invoerdata opgedeeld in blokken en geabsorbeerd in een intern buffergeheugen. Vervolgens wordt de buffer herhaaldelijk door een interne transformatie-functie gehaald. Dit proces wordt herhaald totdat alle invoer is verwerkt.

 

Squeezing-modus

Nadat alle invoer is geabsorbeerd, wordt de sponge-functie in een zogenaamde ‘squeezing-modus’ gezet, waarbij de interne transformatie-functie herhaaldelijk wordt toegepast en de resulterende output wordt verkregen. Deze output (de hashwaarde) vertegenwoordigt een unieke representatie van de invoerdata. Wat sponge-functies uniek maakt, is dat ze flexibel zijn qua in- en uitvoergrootte. Dit betekent dat de invoer- en uitvoerlengtes kunnen variëren, waardoor de functie kan worden aangepast aan de vereisten van verschillende toepassingen. Over het algemeen biedt de sponge-constructie een efficiënte en veilige manier, om invoerdata te verwerken en een hashwaarde te produceren. De sponge-functie is dan ook een belangrijk onderdeel van de Keccak-hashfunctie en heeft bijgedragen aan de populariteit en acceptatie ervan, in blockchain-ecosystemen.

 

Uitgebreide analyse en evaluatie

Veiligheid is een cruciaal aspect van elke hashfunctie, en Keccak voldoet dan ook aan de hoogste veiligheidsnormen. Het algoritme is speciaal ontworpen met het oog op cryptografische sterkte en heeft uitgebreide analyse en evaluatie ondergaan door cryptografen. De Keccak-hashfunctie kan worden gebruikt voor een breed  scala aan toepassingen, waaronder digitale handtekeningen, wachtwoordopslag en authenticatieprotocollen. Keccak ondersteunt ook verschillende uitvoerlengtes, wat betekent dat het kan worden aangepast aan de vereisten van specifieke toepassingen. Daarnaast biedt het Keccak-algoritme ook enkele interessante eigenschappen. Het is een zogenaamde ‘bitwise’ onafhankelijke hashfunctie, wat betekent dat elke bit van de invoer, evenredig bijdraagt aan elke bit van de hashwaarde. Dit zorgt voor een gelijkmatige verdeling van de informatie en maakt het moeilijk om zwakke punten in het algoritme te vinden.

 

Bitwise onafhankelijke hashfunctie

Een bitwise onafhankelijke hashfunctie is een type hashfunctie, waarbij elke bit van de invoer (input) min of meer onafhankelijk bijdraagt aan elke bit van de resulterende hashwaarde (output). Dit betekent dat zelfs kleine wijzigingen in de invoer grote en willekeurige veranderingen in de hashwaarde veroorzaken. In een bitwise onafhankelijke hashfunctie is er geen directe correlatie tussen individuele bits van de invoer, en de corresponderende bits van de hashwaarde. Dit maakt het moeilijk voor een aanvaller om patronen te ontdekken of zwakheden te exploiteren in de hashfunctie.

Veiligheid en betrouwbaarheid

De bitwise onafhankelijkheidseigenschap is belangrijk, omdat het de veiligheid en betrouwbaarheid van de hashfunctie verhoogt. Dat betekent dat zelfs kleine wijzigingen in de invoer, grote en onvoorspelbare wijzigingen in de hashwaarde veroorzaken, waardoor het moeilijk wordt om de oorspronkelijke invoer te achterhalen of om ‘botsingen’ (twee verschillende invoerwaarden met dezelfde hashwaarde) te vinden. Deze bitwise onafhankelijke eigenschap draagt sterk bij aan het veilige, solide, robuuste en betrouwbare karakter van de Keccak-hashfunctie.

 

Parallelle verwerking

Bovendien heeft Keccak een hoge mate van parallelle verwerking, wat betekent dat het efficiënt kan worden geïmplementeerd op moderne computers en apparaten met meerdere processorkernen. Dit maakt het ideaal voor toepassingen die een snelle hashberekening vereisen. Met andere woorden: parallelle verwerking betekent dat een algoritme of systeem meerdere taken tegelijkertijd kan uitvoeren, waarbij iedere taak wordt verdeeld over meerdere processorkernen of rekenbronnen. Deze parallelle verwerking versnelt de hashberekening dan ook aanzienlijk. Terwijl een enkele processor sequentieel de invoerdata zou verwerken, kunnen meerdere processorkernen parallel aan de slag gaan, waardoor de totale verwerkingstijd flink wordt verkort. Dit zorgt ervoor dat transacties op de blockchain sneller kunnen worden verwerkt en uitgevoerd.

 

 

Andere hashing-algoritmen

Naast Keccak worden er nog verschillende andere hashing-algoritmen gebruikt binnen blockchain-ecosystemen, waaronder:

 

NIST

Keccak zal de komende jaren een belangrijke cryptografische hashfunctie blijven. Door de groei van blockchain, IoT en digitale beveiliging zal de vraag naar veilige hashfuncties alleen maar toenemen. Met zijn unieke sponge-constructie en robuuste beveiliging is Keccak klaar voor de toekomst. Meer informatie over hashfuncties kun je vinden op de website van het National Institute of Standards and Technology (NIST), een Amerikaans instituut dat een belangrijke rol speelt in de ontwikkeling van cryptografische standaarden, zoals AES (Advanced Encryption Standard) en SHA-3.

 

Terug naar boven ↑

 

Op de hoogte blijven van de ontwikkelingen op het gebied van blockchaintechnologie? Meld je dan nu aan voor de blogpost!

 

Meld je aan voor de blogpost!
Ik ga ermee akkoord dat mijn naam en e-mailadres worden gedeeld met Mailchimp.
Met de blogpost van Uitleg Blockchain blijf je automatisch op de hoogte van de nieuwste ontwikkelingen omtrent de blockchain technologie.
We hebben een hekel aan spam. Uw e-mailadres zal niet worden verkocht of gedeeld met anderen (afgezien van het marketing automation platform dat wij gebruiken voor onze e-maillijst).