Bygg in säkerhet i blockkedjetillämpningar – del 1: Hur blockkedjor fungerar och använder privata nycklar

Av Stephen Evanczuk

Bidraget med av DigiKeys nordamerikanska redaktörer

Redaktörens anmärkning: Blockkedjetekniken och dess transaktionsmetoder är komplexa, men del 1 i en serie med två delar ger en översikt över blockkedjestrukturen och dess transaktionsprocess. Detta ger kontexten för att förstå varför skydd av privata nycklar utgör kärnan i blockkedjesäkerhet, vilket leder vidare till en presentation av en nyckelfärdig lösning för skydd av privata nycklar. Del 2 visar hur utvecklarna enklare kan skydda blockkedjetransaktioner med den här nyckelfärdiga, maskinvarubaserade lösningen.

Säkerhetstänkande har drivit på utvecklingen av blockkedjetekniken, vilket är bekant för många utvecklare inom kryptovalutaområdet. Dock kan blockkedjetekniken även erbjuda utvecklarna en säker infrastruktur med bred tillämpbarhet. Den decentraliserade arkitekturen eliminerar behovet av en central auktoritetskälla och förlitar sig istället på privata nycklar och kryptografiska metoder för att skydda tillgångar och deras utbyte mellan parter. Därför bygger säkerheten i ett blockkedjesystem kritiskt på nycklarnas säkerhet och deras korrekta användning i robusta algoritmer

Trots att lämpliga algoritmer finns tillgängliga kräver implementeringen betydande expertis och erfarenhet för att utveckla en säker lösning och integrera den i måltillämpningen. Utvecklarna behöver en mer tillgänglig metod för att säkerställa nyckelsäkerheten i framväxande blockkedjetillämpningar.

Den här artikeln beskriver i korthet varför blockkedjetekniken är så intressant och hur den fungerar innan en maskinvarubaserad lösning presenteras för blockkedjesäkerhet från Infineon Technologies.

Blockkedjans framväxt

Blockkedjetekniken har fått uppmärksamhet i nästan alla delar av samhället med så varierande tillämpningar som kryptovalutor, identitetsskydd, distributionskedjehantering och röstning. Den kallas ofta distribuerad liggarteknik och dess kombination av decentralisering, autentisering och registerlagring väcker intresse med sin förmåga att eliminera centrala kontrollauktoriteter eller mellanhänder vid transaktionskörning.

Finansiella institutioner lockas av dess potential att möjliggöra snabbare och kostnadseffektivare betalningsmekanismer än de som är tillgängliga med aktuell teknik och metoder. Förutom finanstekniksektorn lockas företag som arbetar med identitetsvalidering och spårbarhet för transaktioner av blockkedjeteknikens möjlighet att behålla en verifieringskedja som är autentiserad och i praktiken aldrig ändras. Oföränderligheten hos en blockkedja ligger i dess konstruktion och autenticiteten ligger i hur transaktionerna utförs.

I botten bygger den här tekniken på förmågan att skydda hemliga nycklar som är inblandade i att bygga de block som förmedlar transaktioner. Trots att detaljerna i blockkedjetekniken och dess transaktionsmetoder ligger utanför artikelns omfattning kan en övergripande genomgång av blockkedjestrukturen och dess transaktionsprocess tillhandahålla kontext för att förstå varför skydd av privata nycklar är centralt för blockkedjesäkerhet. Observera dock att verkliga blockkedjesystem förlitar sig på betydligt mer sofistikerade strukturer och protokoll än vad som beskrivs i den här förenklade, konceptuella översikten över blockkedjetekniken.

Oföränderliga kedjor

Som namnet antyder är en blockkedja en kedja med block som används för att registrera en uppsättning transaktioner. Strukturdetaljerna och protokollen som används i offentliga blockkedjor som Bitcoin och Ethereum kan skilja sig betydligt från privata blockkedjor som används av en enskild organisation. Det finns även halvprivata blockkedjor, som kallas tillståndsblockkedjor, där en samarbetande grupp av organisationer har åtkomst.

I varje typ av blockkedja bygger dock grunderna för blocket på några få gemensamma element (figur 1):

  • Det föregående blockets hash-värde (Prev_Hash), som används för länkarna i blockkedjan
  • Blockets förknippade transaktioner, som representeras av roten (Tx_Root) av ett träd som kallas ett hash-träd eller Merkle-träd och består av hash-algoritmer (Hashi) för transaktioner (Txi)
  • Ett temporärt ID som spelar en roll i genereringen av giltiga block
  • En tidsstämpel som registrerar tiden när blocket skapades

Diagram över förenklad vy över en Bitcoin-blockkedjaFigur 1: I en förenklad vy över en Bitcoin-blockkedja innehåller varje block en tidsstämpel, ett godtyckligt temporärt ID, ett hash-träd eller Merkel-träd och en hash-algoritm för föregående block (Prev_Hash) i kedjan. (Bildkälla: Wikimedia Commons/CC-BY-SA-3.0)

Genom att Prev_Hash-värdet ingår i blockkedjan, tillhandahålls ett ramverk för en blockkedjas integritet som helhet. Om en hackare modifierade någon tidigare transaktion i blockn-1 skulle hashalgoritmen i blockn bli ogiltig även om hackaren korrigerade Merkle-trädet och Tx_Root i blockn-1. Som beskrivs nedan åtgärdar den distribuerade karaktären hos blockkedjesystem sådana hash-matchningsfel.

Det temporära ID:t spelar en roll i reglerna för blockskapande som gör blockkedjorna oföränderliga. Offentliga blockkedjor som kryptovalutorna Bitcoin och Ethereum lägger artificiella begränsningar på värdet för ett nytt blocks eget hash-värde innan det kan användas för att förlänga kedjan. När en uppsättning Prev_Hash-transaktioner samlas för att skapa ett nytt block kräver dessa regler normalt att den sista hashalgoritmen för ett nyligen konstruerat block faller under ett specificerat maxvärde. Hash-algoritmerna som används i blockkedjesystem genererar samma resultat för samma inmatning, men minsta förändring i inmatningen returnerar ett helt nytt oförutsägbart resultat.

Det temporära ID:t ger att sätt att ändra hash-värdet utan att påverka de element som är kritiska för blockkedjesystemet och dessa användare. Att hitta den hash-algoritm som uppfyller blockkedjans regler blir då en resurskrävande aktivitet där olika värden för det temporära ID:t används. Genom att arbeta igenom en serie olika värden för det temporära ID:t och omhasha blocket varje gång kommer ett hash-värde som uppfyller reglerna att hittas till slut. Av goda skäl kallas de som utför det här arbetet för brytare.

Det här slutgiltiga godkända temporära ID:t kallas arbetsbevis eftersom det motsvarar lyckat genomförande av den mycket resurskrävande miningprocessen. Den här processen och arbetsbeviset avspeglar även den decentraliserade naturen hos blockkedjesystem. Efter att ha hittat en godtagbar temporär engångsnyckel får brytaren rätten (och den förknippade ersättningen i kryptovalutabrytning) för att förlänga blockkedjan med sitt nyskapade block.

Andra brytare och blockkedjeanvändare kan enkelt bekräfta det nya blockets giltighet genom att beräkna hash-algoritmen med blocket och den temporära engångsnyckeln som hittats av den framgångsrika brytaren.

I den decentraliserade blockkedjearkitekturen analyserar enskilda noder i blockkedjans distribuerade nätverk varje block och transaktion mot samma regeluppsättning som användes under brytningen. Därför kan blockkedjor självkorrigeras eftersom noderna ignorerar ogiltiga block på grund av fel i konstruktionen eller hash-algoritmer som inte följer reglerna eller helt enkelt är felaktiga. Kryptovalutor och andra blockkedjesystem drar full nytta av den här konsensusbyggande aspekten av blockkedjans decentralisering för att använda ytterligare mekanismer som ytterligare försvårar hackares försök att manipulera processen.

Kombinationen av beräkningsintensiva arbetsbevisregler och konsensusbaserade blockvalideringsprocesser ger ett oövervinnerligt hinder för hackare som hoppas kunna ändra en tidigare transaktion i en blockkedja. Hackare som försöker återskapa en kedja utifrån det modifierade blocket måste på något vis slutföra arbetsbeviset snabbare än gruppen av brytare. Bara i detta steg får hackarna hantera en kapprustning i processorresurser som har gått från användning av grafiska processorenheter på hemdatorer till fältprogrammerbara grindmatriser till specialiserade tillämpningsspecifika integrerade kretsar. Utöver hindret med en stor investering i datorresurser skulle de medföljande effektförbrukningskraven i sig vara ett stort hinder.

Efter all denna processorkraft och effektförbrukning skulle hackarna fortfarande stå inför sannolikheten att deras modifierade kedja helt enkelt skulle avvisas direkt av de konsensusbaserade mekanismerna. Stora skillnader i resultaten i en körning av block sker mycket sällan och leder till stora störningar i det berörda blockkedjesystemet, vilket möjligen skulle kräva en ovanligt hård förgrening som skulle skapa en helt ny version av systemet.

Autentisera transaktioner

I hela den föregående diskussionen om blockkedjestrukturen och processerna har det antagits att de transaktioner som representeras av ett Merkle-träd i ett block är giltiga. Om ogiltiga transaktioner på något vis kommer in i blockkedjesystemet är ansträngningar som arbetsbevis och decentraliserad blockvalidering bortkastade. Den grundläggande motiveringen för blockkedjetekniken ligger i förmågan att tillförlitligt inkludera en uppsättning giltiga transaktioner i en oföränderlig blockkedja. Ur det här perspektivet börjar blockgenereringen när användaren begär en transaktion. Snarare än en central auktoritetskälla som godkänner transaktionen förlitar sig blockkedjetekniken på kryptografiska metoder som använder privata nycklar som ägs av den förfrågande användaren.

För att initiera en begäran signerar användarna sina begäranden med sina privata nycklar och skickar in begäran till en pool som innehåller andra obekräftade transaktioner (figur 2). Blockkedjebrytaren i sin tur drar en uppsättning obekräftade transaktioner från den här poolen och verifierar att varje begäran kommer från respektive privata nyckels ägare genom att använda begärarens offentliga nyckel som ingår i varje obekräftad transaktion. I kryptovalutor hoppas transaktionsbegäranden med ogiltiga signaturer snabbt över av brytare som försöker att hinna före andra brytare som försöker skapa nästa block i blockkedjan.

Diagram över privata/offentliga nyckelpar som utgör basen för blockkedjetransaktionerFigur 2: Privata/offentliga nyckelpar som utgör basen för signering av blockkedjetransaktioner av begäraren (till vänster) och verifiering av blockkedjebrytaren (till höger). (Bildkälla: Wikimedia Commons/CC-BY-SA-3.0)

Säkerställa att privata nycklar förblir privata

I blockkedjans decentraliserade arkitektur ger innehav av den privata nyckeln för en uppsättning transaktioner ägarskap över dessa transaktioner. Ingen kundtjänstmedarbetare finns för att spåra förlorade tillgångar eller uppfylla federala regler för att återställa dem. Av den här anledningen är förlorade eller stulna privata nycklar ofta anledningen bakom rubriker om stora kryptovalutaförluster och analytikerna förväntar sig att den här trenden kommer att fortsätta.

Att blockkedjeteknikens i grunden förlitar sig på privata nycklar för att signera och verifiera transaktioner gör det kritiskt att skydda dessa hemligheter. För användaren är en dåligt skyddad nyckel en möjlig öppen dörr för att förlora kontrollen över sitt deltagande i ett blockkedjesystem.

Hackare har använt nätfiskeattacker och andra bekanta metoder för att få tillgång till okrypterade privata nycklar som lagrats oförsiktigt på mobila enheter eller datorer. Ofta är krypterade nycklar lika sårbara. Nyckelgenereringsprogramvara tillåter normalt användarna att ange en lösenfras som används för att kryptera nyckeln på användarens enhet. Säkerhetsforskare har upptäckt att den här metoden har ett problem som är gemensamt för alla lösenordsbaserade metoder: användarna krypterar allt för ofta sin nyckel med en svag, lättgissad lösenfras.

Till och med när användaren vidtar de nödvändiga försiktighetsåtgärderna med en privat nyckel kan nyckeln redan vara avslöjad på grund av fel i nyckelgenereringsprogramvaran. Programvarubaserade nyckelgenererare förlitar sig ofta på slumptalsgeneratorer (RNG:er) som arbetar med förutsägbara mönster som en angripare kan avslöja med ett enkelt skript. Ännu värre är att kodningsfel eller fel i nyckelgenereringsalgoritmer kan göra nycklarna sårbara för alla som är bekanta med den aktuella nyckelgenereringsprogramvaran.

Inte ens en perfekt implementering av en robust algoritm är en garanti för skydd. Användarna riskerar fortfarande att systemet som kör den idealiserade koden också kör programvara som har knäckts helt av hackare. När nyckelgenereringsprogramvaran körs delar den minnes- och processorcykler med den angripna programvaran och ger hackarna insyn i hemliga data.

Processorer som erbjuder en betrodd körmiljö (TEE) ger en ytterligare grad av skydd genom att köra betrodd och icke betrodd kod i separata körmiljöer. Den här metoden minskar risken att algoritmer och hemliga data som privata nycklar kan angripas via sårbarheter i operativsystem, mellanprogramvara eller andra tillämpningar.

Även om de byggts med säkra körnings- och nyckelskyddsfunktioner är många maskinvaruenheter sårbara för mer sofistikerade mikroarkitekturbaserade och fysiska attacker. Mikroarkitekturangrepp utnyttjar svagheter i processorkonstruktionen. Dessa typer av angrepp fick stor uppmärksamhet genom Meltdown och Spectre som utnyttjade sårbarheter i mikroprocessorernas minnesåtkomst och instruktionsbehandling.

Fysiska attacker varierar från sidokanalangrepp som övervakar effektförbrukning, elektromagnetiska utsläpp eller timingegenskaper för att avslöja skyddad information. Genom fysiska attacker förorsakar hackare fel med hjälp lasrar eller orsakar strömförsörjningsstörningar för att avslöja interna signaler. Vid mer direkta fysiska attacker öppnar hackarna halvledarenheter och använder mikrosonder i ett försök att läsa av data och instruktionssekvenser.

Skydd mot den här stora räckan säkerhetshot kräver en säkerhetscontroller som kombinerar grundläggande säkerhetsfunktioner med djupare skydd mot de många mikroarkitekturbaserade och fysiska metoder som används för att angripa halvledarenheter. Infineon Blockchain Security 2Go-startsatsen (BLOCKCHAINSTARTKITTOBO1) är byggd runt den här typen av säkerhetscontroller och ger en omedelbar lösning på den kritiska utmaningen att säkra de privata nycklar som används för att signera transaktioner som ska ingå i en blockkedja (figur 3).

Diagram över Infineon Blockchain Security 2Go:s smartkortFigur 3: Infineon Blockchain Security 2Go-smartkortet förenklar blockkedjesäkerheten inklusive transaktionssignering utan att exponera värdefulla privata nycklar. (Bildkälla: Infineon)

Istället för att lägga tid på att bygga säkra signeringsmetoder kan blockkedjesystemintegratörer helt enkelt tillhandahålla användarna med smartkort från Blockchain Security 2Go-startsatsen eller från Infineon Security 2GO:s 10-kortspaket (BLOCKCHAIN10CARDSTOBO1).

Slutsats

Blockkedjetekniken har bred tillämpbarhet, bortom kryptovalutor. Dock är den komplex och bygger på privata nycklar som kräver robusta säkerhetsmekanismer för att hindra förlust av kontrollen över användarnas transaktioner och kompromisserna i blockkedjesystemet.

Medan konstruktörerna kan lägga tid på att bygga upp säkra signeringsmetoder ger Infineon Blockchain Security 2Go-startsatsen en nyckelfärdig blockkedjesäkerhetslösning som sparar tid och resurser.

DigiKey logo

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.

Om skribenten

Image of Stephen Evanczuk

Stephen Evanczuk

Stephen Evanczuk har arbetat i mer än 20 år med att skriva för och om elektronikbranschen inom många olika områden som maskinvara, programvara, system och applikationer – inklusive sakernas internet. Han har en kandidatexameni neurovetenskap om artificiella neuronnät och har arbetat inom rymdfartsindustrin med mycket distribuerade säkra system och metoder för acceleration av algoritmer. När han inte skriver artiklar om teknik och konstruktion arbetar han med applikationer för djupinlärning för igenkänningssystem och rekommendationssystem.

Om utgivaren

DigiKeys nordamerikanska redaktörer