Integreren van beveiliging in blockchainapplicaties - deel 1: Hoe blockchain werkt en het gebruik van private sleutels
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2019-10-08
Van de redactie: Aangezien de details van blockchaintechnologie en transactiemethoden nogal complex zijn, geven we in deel 1 van deze tweedelige serie een overzicht van de blockchainstructuur en het transactieproces. Aan de hand hiervan wordt duidelijk waarom bescherming van private sleutels de kern vormt van blockchainbeveiliging, waarna een gebruiksklare oplossing wordt geïntroduceerd voor het beveiligen van private sleutels. In deel 2 wordt uitgelegd hoe ontwikkelaars blockchaintransacties eenvoudiger kunnen beschermen met deze kant-en-klare, hardware-oplossing.
Bezorgdheid over beveiliging heeft geleid tot de ontwikkeling van blockchaintechnologie, vooral bekend onder ontwikkelaars in verband met cryptocurrencies. Blockchaintechnologie biedt ontwikkelaars echter ook een veilige infrastructuur met brede toepasbaarheid. De gedecentraliseerde architectuur maakt een centrale autoriteit overbodig en biedt in plaats daarvan private sleutels en cryptografiemethoden om activa en transacties tussen partijen te beschermen. Zo hangt de beveiliging van een blockchainsysteem in belangrijke mate af van de beveiliging van sleutels en het juiste gebruik ervan in robuuste algoritmen.
Hoewel relevante algoritmen overal voorhanden zijn, vereist de implementatie ervan om een veilige oplossing te ontwikkelen en in een applicatie te integreren aanzienlijke expertise en ervaring. Daarom vereisen ontwikkelaars een toegankelijker aanpak van sleutelbeveiliging voor nieuwe blockchaintoepassingen.
Dit artikel gaat kort in op de redenen waarom blockchain zo interessant is en hoe de technologie werkt. Vervolgens wordt een hardware-oplossing voor blockchainbeveiliging van Infineon Technologies geïntroduceerd.
De opkomst van blockchain
Blockchaintechnologie is in bijna elk segment van de samenleving te vinden met toepassingen die variëren van cryptocurrencies, identiteitsbescherming, goederenstroombesturing en stemmen. Dankzij een combinatie van decentralisatie, authenticatie en archiefbehoud elimineert blockchaintechnologie, ook wel ‘gedistribueerde grootboektechnologie’ (distributed ledger technology) genoemd, alle centrale toezichtautoriteiten of tussenpersonen voor de uitvoering van transacties.
Financiële instellingen zijn geïnteresseerd in de mogelijkheid voor snellere en goedkopere betalingsmechanismen dan die met huidige technologieën en werkwijzen. Maar behalve de financiële wereld tonen andere bedrijven voor wie identiteitsvalidatie en traceerbaarheid van transacties essentieel is belangstelling, vanwege het vermogen van blockchain om een recordtrail bij te houden dat is geverifieerd en ‘effectively immutable’ (daadwerkelijk onveranderlijk). De onveranderlijkheid van een blockchain ligt in de manier waarop hij is geconstrueerd en de authenticiteit ervan ligt in de manier waarop transacties worden uitgevoerd.
In principe hangt deze technologie af van het vermogen om geheime sleutels die gebruikt worden om blokken te bouwen voor het overbrengen van transacties te beschermen. Hoewel de details van blockchaintechnologie en de transactiemethoden ver buiten het bestek van dit artikel vallen, kan een kort overzicht van de blockchainstructuur en het transactieproces nuttig zijn om beter te begrijpen waarom de bescherming van private sleutels bij blockchainbeveiliging centraal staat. Let wel dat real-world blockchainsystemen aanzienlijk meer van verfijnde structuren en protocollen afhankelijk zijn dan in dit versimpelde, conceptuele overzicht van blockchaintechnologie wordt gesuggereerd.
Onveranderlijke ketens
Zoals de naam al doet vermoeden, is een blockchain een keten van blokken die wordt gebruikt om een reeks transacties te registreren. De structurele details en protocollen die worden gebruikt in openbare blockchains, zoals Bitcoin en Ethereum, kunnen aanzienlijk verschillen van de private blockchains waartoe een individuele organisatie toegang heeft. Er zijn ook semi-private blockchains, zogenaamde ‘permissioned blockchains’ (blockchains met toestemming), die toegankelijk zijn voor een samenwerkende groep entiteiten.
Ongeacht het soort blockchain is het principe van elk blok gebaseerd op een aantal gemeenschappelijke elementen (Afbeelding 1):
- De hashwaarde van het vorige blok (Prev_Hash) die de link vormt in de keten van blokken
- De bijbehorende transacties van het blok, vertegenwoordigd door de root (Tx_Root) van een boom (een hash-boom of Merkle-boom genoemd), bestaande uit hashes (Hashi) van transacties (Txi)
- Een nonce die een rol speelt bij het genereren van geldige blokken
- Een tijdstempel die de tijd registreert waarop het blok is aangemaakt
Afbeelding 1: In deze vereenvoudigde weergave van een Bitcoin-blockchain bevat elk blok een tijdstempel, een willekeurige nonce, een hash-boom of Merkel-boom en een hash van het vorige blok (Prev_Hash) in de keten. (Bron afbeelding: Wikimedia Commons/CC-BY-SA-3.0)
De Prev_Hash-waarde in een blockchain vormt het framework voor de integriteit van een blockchain als geheel. Een wijziging door een hacker van een eerdere transactie in blokn-1 zou de hash in blokn ongeldig maken, zelfs als de hacker de Merkle-boom en Tx_Root in blokn-1 heeft gecorrigeerd. Zoals hieronder wordt beschreven, lost de gedistribueerde eigenschap van blockchainsystemen dergelijke hash-mismatches op.
De nonce speelt een rol in de regels voor het maken van blokken. Deze regels zorgen ervoor dat blockchains daadwerkelijk onveranderlijk zijn. Openbare blockchains zoals de cryptocurrencies Bitcoin en Ethereum leggen kunstmatige beperkingen op aan de waarde van de eigen hashwaarde van een nieuw blok voordat het kan worden gebruikt om de keten uit te breiden. Wanneer een reeks Prev_Hash-transacties wordt verzameld voor de constructie van een nieuw blok, vereisen deze regels doorgaans dat de uiteindelijke hash voor een nieuw blok onder een bepaalde maximale waarde valt. De hash-algoritmen die in blockchainsystemen worden gebruikt, genereren hetzelfde resultaat voor dezelfde invoer, maar de kleinste wijziging in de invoer retourneert een geheel nieuw resultaat dat onvoorspelbaar is.
De nonce biedt een manier om de hash-waarde te wijzigen zonder de elementen te beïnvloeden die van cruciaal belang zijn voor het blockchainsysteem en de gebruikers. De hash die aan de regels van de blockchain voldoet, kan worden gevonden door ‘brute force’ zoeken met behulp van verschillende waarden voor de nonce. Door een reeks verschillende waarden voor de nonce te doorlopen en het blok telkens opnieuw te hashen, vindt men uiteindelijk een hash-waarde die aan de regels voldoet. De mensen die dit werk doen, worden niet voor niets ‘blockchain miners’ genoemd.
Deze uiteindelijk acceptabele nonce wordt het ‘bewijs van werk’ (proof of work) genoemd, omdat het de succesvolle voltooiing van het zeer rekenintensieve mijnproces vertegenwoordigt. Dit proces en het bewijs van werk geven ook het gedecentraliseerde karakter van blockchain-systemen weer. Nadat een miner een acceptabele nonce heeft gevonden, verdient hij of zij het recht (en de bijbehorende vergoeding in cryptocurrency) om de blockchain uit te breiden met een nieuw gecreëerd blok.
Andere miners en blockchain-gebruikers kunnen eenvoudig de geldigheid van het nieuwe blok bevestigen door de hash te berekenen met het blok en de door de miner gevonden nonce.
In de gedecentraliseerde architectuur van blockchains wordt elk blok en elke transactie door afzonderlijke knooppunten in het blockchain-gedistribueerde netwerk geanalyseerd aan de hand van dezelfde regelset als die tijdens mining werd toegepast. Zo kunnen blockchains zichzelf corrigeren, omdat knooppunten alle blokken negeren die ongeldig zijn vanwege een constructiefout of een hash die niet conform of simpelweg incorrect is. Cryptocurrencies en andere blockchainsystemen maken optimaal gebruik van dit consensusvormende aspect van blockchaindecentralisatie door extra mechanismen in te zetten die de pogingen van hackers om het proces te ondermijnen verder compliceren.
De combinatie van rekenintensieve ‘bewijs van werk’-regels en op consensus gebaseerde blokvalidatieprocessen vormt een onoverkomelijk obstakel voor een hacker die een eerdere transactie in een blockchain probeert te wijzigen. Een hacker die een keten vanaf het gewijzigde blok wil herbouwen, moet op de een of andere manier het bewijs van werk sneller voltooien dan de miners. Hackers krijgen alleen hier al te maken met een virtuele wapenwedloop van verwerkingsresources, die is geëvolueerd van het gebruik van grafische verwerkingseenheden op pc’s via field-programmable gate arrays (FPGA’s) naar gespecialiseerde toepassingsspecifieke geïntegreerde schakelingen. Afgezien van het probleem van een grote investering in computerresources, zou alleen het bijkomende energieverbruik al onbetaalbaar zijn.
Na al die verwerkingsinspanningen en het energieverbruik lopen hackers nog steeds de kans dat hun gemodificeerde keten eenvoudigweg door de consensusgebaseerde mechanismen wordt afgewezen. Aanzienlijke verschillen in de resultaten binnen een reeks blokken zijn op één hand te tellen, maar leiden tot grote, krantenkoppen inspirerende storingen in het getroffen blockchainsysteem, wat tot een zeldzame harde vork kan leiden die een geheel nieuwe versie van het systeem zou creëren.
Verifiëren van transacties
Alle eerdere discussies over blockchainstructuur en -processen gingen ervan uit dat de transacties die door een Merkle-boom in een blok worden weergegeven geldig zijn. Maar als ongeldige transacties op de een of andere manier een weg vinden naar het blockchainsysteem, zijn alle inspanningen zoals bewijs van werk en gedecentraliseerde blokvalidatie voor niets. De fundamentele motivatie voor blockchaintechnologie ligt in het vermogen om betrouwbaar een reeks geldige transacties op te nemen in een onveranderlijke blockchain. Vanuit dit oogpunt begint het genereren van blokken op het moment wanneer de gebruiker een transactie aanvraagt. In plaats van een centrale autoriteit die de transactie goedkeurt, gebruikt blockchaintechnologie cryptografische methoden met private sleutels die eigendom zijn van de aanvrager.
Om een aanvraag te initiëren, ondertekenen gebruikers hun aanvragen digitaal met hun private sleutels, waarna ze de aanvraag indienen bij een pool met andere niet-bevestigde transacties (Afbeelding 2). De blockchain-miner haalt vervolgens een reeks niet-bevestigde transacties uit deze pool en verifieert dat elke aanvraag afkomstig is van de respectieve private sleuteleigenaar door de openbare sleutel van de aanvrager, die bij elke niet-bevestigde transactie is inbegrepen, te gebruiken. In cryptocurrencies worden transactieverzoeken met ongeldige handtekeningen snel door miners omzeild om andere miners te overtreffen die het volgende blok in de blockchain proberen te maken.
Afbeelding 2: Private/publieke sleutelparen vormen de basis voor het ondertekenen van blockchaintransacties door de aanvrager (links) en verificatie door de blockchainminer (rechts). (Bron afbeelding: Wikimedia Commons/CC-BY-SA-3.0)
Garanderen dat private sleutels privé blijven
Volgens de gedecentraliseerde blockchainarchitectuur staat bezit van de private sleutel voor een reeks transacties gelijk aan eigendom van die transacties. Er is geen klantenservicemedewerker die klaar staat om verloren fondsen op te sporen of de federale regels voor herstel na te leven. Daarom zijn verloren of gestolen private sleutels vaak de reden voor enorme cryptocurrencyverliezen en analisten verwachten dat deze trend zich zal voortzetten.
Het fundamentele vertrouwen van blockchaintechnologie op private sleutels voor het ondertekenen van transacties en verificatie is van cruciaal belang om deze geheimen te beschermen. Voor de gebruiker kan een slecht beveiligde sleutel op den duur een open deur zijn voor verlies van controle over hun deelname aan een blockchainsysteem.
Hackers gebruiken phishing en andere welbekende technieken om toegang te krijgen tot niet-gecodeerde private sleutels die achteloos op mobiele apparaten of computers zijn opgeslagen. Maar vaak zijn gecodeerde sleutels net zo kwetsbaar. Gebruikers kunnen doorgaans door middel van sleutelgenererende software een wachtwoordzin invoeren die wordt gebruikt om de sleutel op het apparaat van de gebruiker te coderen. Beveiligingsonderzoekers hebben echter geconstateerd dat gebruikers hun sleutel vaak coderen met een zwakke, gemakkelijk te raden wachtwoordzin, wat veel voorkomt bij alle op wachtwoord gebaseerde benaderingen.
Zelfs wanneer de gebruiker de nodige voorzorgsmaatregelen treft met een persoonlijke sleutel, kan die sleutel al onveilig zijn door fouten in de software die de sleutel hebben gegenereerd. Sleutelgeneratiesoftware vertrouwt vaak op random number generators (RNG's) met voorspelbare patronen die een dief met een eenvoudig script kan ontdekken. Erger nog, coderingsfouten of fouten in sleutelgeneratie-algoritmen kunnen sleutels kwetsbaar maken voor iedereen die bekend is met dat softwareprogramma.
Zelfs een perfecte implementatie van een robuust algoritme is geen garantie voor bescherming. Gebruikers lopen namelijk nog steeds het reële risico dat het systeem dat die geïdealiseerde code uitvoert ook software bevat die al door hackers is gepenetreerd. Terwijl de sleutelgeneratiesoftware sleutels genereert, worden geheugen- en processorcycli gedeeld met de gehackte software, waardoor hackers inzicht krijgen in de geheime gegevens.
Processors met een vertrouwde uitvoeringsomgeving (trusted execution environment of TEE) bieden een verdere mate van bescherming door vertrouwde en niet-vertrouwde code in afzonderlijke locaties uit te voeren. Deze aanpak vermindert de kans dat algoritmen en geheime gegevens zoals private sleutels worden aangevallen via kwetsbaarheden in besturingssystemen, middleware of andere applicaties.
Veel hardware blijft echter kwetsbaar voor meer geavanceerde microarchitecturale en fysieke aanvallen, zelfs als ze zijn gebouwd met mogelijkheden voor veilige uitvoering en sleutelbeveiliging. Microarchitecturale aanvallen maken gebruik van zwakke punten in het processorontwerp. Dit soort aanvallen kwam in het nieuws met Meltdown en Spectre, die gebruik maakten van kwetsbaarheden in de geheugentoegang en instructieverwerking van de microprocessor.
Fysieke aanvallen kunnen variëren, zoals side-channel exploits die stroomverbruik, elektromagnetische emissie of timingkarakteristieken monitoren om beschermde informatie te onthullen. Bij andere fysieke aanvallen veroorzaken hackers fouten met lasers of creëren ze stroomstoringen om interne signalen af te leiden. Bij directere fysieke aanvallen ‘decaperen’ hackers halfgeleidercomponenten en gebruiken ze microprobes in een poging om gegevens en instructies te lezen.
Bescherming tegen al deze beveiligingsbedreigingen vereist een beveiligingscontroller die fundamentele beveiligingsfuncties combineert met diepere bescherming tegen de vele microarchitecturale en fysieke methoden die worden gebruikt om halfgeleidercomponenten aan te vallen. De Infineon Blockchain Security 2Go starterkit (BLOCKCHAINSTARTKITTOBO1) is gebouwd rond dit type beveiligingscontroller en biedt een rechtstreekse oplossing voor het beveiligen van private sleutels die worden gebruikt om transacties te ondertekenen voor opname in een blockchain (Afbeelding 3).
Afbeelding 3: De Infineon Blockchain Security 2Go smartcard vereenvoudigt blockchainbeveiliging met onder andere transactie-ondertekening zonder waardevolle private sleutels vrij te geven. (Bron afbeelding: Infineon)
In plaats het bouwen van veilige ondertekeningsmethoden, kunnen integrators van blockchainsystemen gebruikers eenvoudig smartcards bieden van de Blockchain Security 2Go starterkit of van het Infineon Security 2GO pakket met 10 smartcards (BLOCKCHAIN10CARDSTOBO1).
Conclusie
Blockchaintechnologie wordt voor veel meer toepassingen gebruikt dan alleen cryptocurrencies. Het is echter ook complex en afhankelijk van private sleutels die robuuste beveiligingsmechanismen vereisen om verlies van controle over gebruikerstransacties en het in gevaar brengen van het blockchainsysteem te voorkomen.
Hoewel ontwerpers de mogelijkheid hebben om veilige ondertekeningsmethoden te bouwen, biedt de Infineon Blockchain Security 2Go starterkit een kant-en-klare blockchain-beveiligingsoplossing die tijd en geld bespaart.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.



