Als we het hebben over Bitcoin en bijvoorbeeld Ethereum, dan komt de term cryptocurrency al snel om de hoek kijken. Waar komt deze term eigenlijk vandaan? Wat is er zo ‘crypto’ aan deze online munten? En hoe werkt dat? Een kleine opfriscursus.
Cryptografie en blockchain
Om te beginnen is het van belang om te snappen waar cryptografie voor nodig is. Want dat is de term waar cryptocurrency eigenlijk hun naam aan ontlenen. Crypto is de afkorting van cryptografie, wat iets betekent als ‘geheimschrift’. Een cryptografische functie zorgt ervoor dat een bepaalde boodschap onherkenbaar en onherleidbaar wordt. Er zijn verschillende algoritmes die hiervoor zorgen. Het meest gebruikte algoritme is de SHA-256.
In een blockchain is cryptografie onmisbaar. Met je keys kun je een betaling encrypten en decrypten. De input van een cryptografische functie noem je plain text en als dit door een algoritme wordt gehaald is het ineens ‘onleesbaar’. Dit noem je ciphertext.
Bitcoin en Ethereum (SHA-x)
Er zijn verschillende manieren om een stuk tekst (of wat je dan ook maar wilt encrypten) te versleutelen. Bij het Bitcoin netwerk is er gebruik gemaakt van de SHA-256 encryptie. Dit is een oude SHA-2 familie. Ethereum maakt gebruik van Keccak. Dit is een pre-standaard variant van de SHA-3. Dit is een versie met een kleine aanpassing waardoor het voor de standaard publicatie wordt gebruikt. Hyperledger Fabric maakte gebruik van SHAKE-256 (een een variant op SHA-3), maar downgrade dit algorithme vervolgens terug naar de SHA-256. De keuze hiervoor is gebaseerd op een grotere acceptatie van het protocol.
De SHA-2 en SHA-3 families worden nog steeds als een van de sterkst mogelijke manieren gezien om bepaalde informatie te encrypten. Tegelijkertijd zijn er op dit moment verschillende onderzoekers manieren aan het zoeken naar manieren om deze codering te kraken. En stel je voor: als er ergens een zwakke plek wordt gevonden in het algoritme, dan is een blockchain niet meer wat het altijd is geweest: extreem betrouwbaar. Gezien (in de meeste gevallen) de héle blockchain op dit logaritme is gebaseerd, is dit algoritme ook niet zomaar even te vervangen door een betere variant.
Universa (HashID)
De Universa Blockchain heeft een slimmigheidje in haar blockchain gebouwd, waardoor het veilig is tegen deze mogelijke zwakheden. Het gebruikt niet één hash functie (zoals Bitcoin en Ethereum), maar er worden maar liefst drie hash functies gecombineerd om tot een veilige cryptogafische vergrendeling te komen. Elk van deze drie functies behoren tot een andere familie, waardoor deze combinatie nagenoeg onhackbaar is. Zelfs als er een zwak punt in één algoritme gevonden is, zal het niet nuttig zijn en zullen er nog twee andere algoritmes zijn die het netwerk beschermen. De combinatie van deze drie hash functies maakt de Universa Blockchain dus ongekend veilig op het gebied van cryptografie.
- HA-512/256 (256 bits) – dit is de variant van de SHA-2 algorithm familie die wordt beschouwd als de sterkste hash functie tegen length extension attack. Het is ‘sterker’ dan het meestgebruikte SHA-256 en gecreerd door de National Security Agency, USA. Daarnaast is het een goedgekeurde standaard door de Amerikaanse Federale overheid en is het ook goedgekeurd door Japan (CRYPTREC) en de EU (NESSIE).
- SHA3-256 (256 bits) – als variant van de SHA-3 standaard. Origineel is dit gecreëerd door een team van Europese cryptographers en en door de NIST hash function competition in 2007 gepubliceerd.
- Streebog (256 bits) – deze derde cryptographische hash functie is in Rusland ontwikkeld en valt binnen de FSB (Federal Security Service of Russian Federation) and InfoTeCS JSC. Sinds 2012 is dit algoritme ook gestandardiseerd door de Russische Federatie.
Combinatie van algoritmes: HashID
Door gebruik te maken van drie verschillende hashfuncties, die door drie significant verschillende cryptographer-teams zijn ontwikkeld, van nogal verschillende cryptografische concepten en primitieven, maakt deze cryptografische beveiliging van smart contracts van Universa enorm hoog. De combinatie van deze algoritmes noemt men bij Universa ook wel HashID. Bij het gebruik van deze HashID binnen Universa worden de resultaten van deze drie functies uit de brongegevens berekend en samengevoegd. Elke functie maakt een 256 bits (32 bytes) lange waarde van de hashfunctie; drie functies maken het totaal 3*256 = 768 bits (96 bytes) lang.
Om gebruik hiervan eenvoudiger te maken, wordt deze string ge-encode in Base64. De eigenschap van Base64-codering is dat elke 3 bytes van alle binaire gegevens zijn gecodeerd als 4 symbolen van Base64-weergave; dat maakt het mogelijk om elke HashID weer te geven als als 96 ⋅ 4 / 3 = 128 symbolen. Dit is weer te gebruiken als 2 regels met 64 symbolen of 4 regels met 32 symbolen:
NPo4dIkNdgYfGiNrdExoX003+lFT/d45OA6GifmcRoTzxSRSm5c5jDHBSTaAS+QleuN7ttX1rTvSQbHIIqkcK/zWjx/fCpP9ziwsgXbyyCtUhLqP9G4YZ+zEY/yL/GVE
NPo4dIkNdgYfGiNrdExoX003+lFT/d45
OA6GifmcRoTzxSRSm5c5jDHBSTaAS+Ql
euN7ttX1rTvSQbHIIqkcK/zWjx/fCpP9
ziwsgXbyyCtUhLqP9G4YZ+zEY/yL/GVE
Een HashID als deze omvat dus alle informatie die nu encrypt is weergegeven. Dit zou je kunnen uitlezen in de blockexplorer. Een voorbeeld hiervan is het root contract van de Universa Token (UTN) – dit is ook het bovenstaande voorbeeld van een HashID. Voor meer informatie over HashID’s, zie de Knowledge Based site van Universa.
Elk project zijn eigen hash
Elke blockchain heeft zijn eigen toepassingen en manier van werken. Cryptografen zijn continue bezig met het ontwikkelen van nieuwe manieren om bestanden te versleutelen. Dit gebeurt al op alle niveau’s van het internet. Van je mail tot aan het bankenverkeer, alles is versleuteld. En daar horen blockchainnetwerken dus ook zeker bij. De naam cryptocurrency is daarom zeker geen gekke gedachte, maar past perfect bij wat bitcoin en andere cryptovaluta zijn: geld dat beschermd wordt door encryptie.