Etikettarkiv: informationsläckage

Sidokanaler och trojaner i ASICar

De senaste veckorna har det varit mycket diskussioner om bakdörrar och säkerhet i hårdvara. Därför är det extra spännande att läsa ett par artiklar som belyser denna problematik.

Den första artikeln, On Measurable Side-Channel Leaks inside ASIC Design Primitives tittar närmare på vad som orsakar informationsläckage via en så kallad sidokakanal i form av strömförbrukning i kundspecifika digitala kretsar. Kundspecifika digitala kretsar (ASIC:ar) designas oftast genom att använda så kallad standard cell-teknik. Det innbär att den digitala funktionen bryts ner till instanser av grindar (kallade celler) som skapats och kvalificerats för en given tillverkningsprocess hos en tillverkare. Vill vi exempelvis producera vårt nya mobilchip i TSMCs 55-nm-process behöver vi använda ett bibliotek där cellerna instansierats i testkretsar och sedan testats för att se att deras elektriska egenskaper. En sådan leverantör är EDA-draken Synopsys som har kvalificerade cellbibliotek för flera leverantörers processer.

Det artikeln nu visar är hur differentiell strömförbrukning i ASIC:ar ger upphov till sidoinformation som går att mäta. Och dom kan koppla sidoinformationen till såväl vilka celler som används och placeringen av celler på kretsytan. Den senare är speciellt intressant då det visar att valet att det inte bara är den digitala funktionen och därmed vilka celler som används, utan även placeringen av cellerna påverkar (vilket iofs krav på drivstyrka och därmed vilken storlek på cellerna som används). Sedan går tyvärr artikeln in i diskussioner om hur celler kan byggas för att skydda mot oavsiktliga sidokanaler. Men som nästa artikel visar är det minst sagt svårt.

Den andra artikeln, Stealthy Dopant-Level Hardware Trojans (PDF) som presenterades på konferensen CHES 13 är mer spektakulär. I artikeln visar författarna hur man genom att ändra den så kallade dopningen kan påverka den digitala funktionen i en krets, utan att modifiera nätlistan [1]. Genom att selektivt modifiera dopningen lyckas man åstadkomma två saker.

  1. grindar celler att låsa i ett fast läge. Exemplet som används är en fristående implementation av Intels slumptalsgenerator RdRand/Bull Mountain som finns i Ivy Bridge och senare processorer.
  2. Få grindar att ändra elektriskt beteende och därmed förbruka mer ström än som är specat för vissa bitkombinationer. Exemplet är S-boxen i AES implementerad med grindar signade för att skydda mot sidokanalsläckage.

Utgångspunkten för den modifierade funktionen i slumptalsgeneratorn är att tvinga en vanlig, enkel inverterare att alltid låsa till ett fast värde ut oavsett värde in. Förändringen är subtil (vilket visar hur svårt det skulle vara att se vid granskning). Förändringen möter även de automatiska kontroller (Design Rule Check – DRC) som körs när masksetet skapas.

Trojansk inverterare
Trojansk inverterare

Men en inverterare som fastnat – det är ju ett vanligt problem och ska detekteras som del i produktionstest av kretsen, kan man tycka. Och normalt sett, om man använt bra ASIC-metodik ska detta upptäckas. I fallet med Intels slumptalsgenerator är det dock så att man av säkerhetsskäl undantagit generatorns digitala funktioner från att finnas med i scankedjor (som används för att läsa in olika testmönster i kretsen och sedan observera resultatet). Istället används en inbyggd självtestningsfunktion (Built In Self Test – BIST). Det är den lokala BIST-funktionalitetens uppgift att testa generatorn och sedan till övriga kretsen rapportera om generatorn fungerar eller ej. Ja eller nej. Ett eller noll.

Genom att både modifiera dopningen i grindar i generatorn OCH grindar i BIST-funktionaliteten får generatorn att generera mycket sämre slumptal utan att BIST-enheten rapportera att den är trasig. Lurigt.

Den andra attacken är mer subtil. Där ändras inte den logiska funktionen i grinden. Dessutom, vilket gör det mer intressant är de celler som används inte vanliga celler, utan celler som författarna tidigare utvecklat för att skydda mot den typ av sidoläckage som den första artikeln beskriver. Celler som är mycket mer robusta än de författarna till den första artikeln föreslår. Genom att påverka dopningen i en AOI (AND-OR-Invert)-grind får man grinden att förbruka energi även om den ger en logisk nolla ut och därmed ska dra mycket lite ström.

Trojansk AOI-cell.
Trojansk AOI-cell.

Resultatet är att även om cellen är så konstruerad att den inte ska läcka information om kryptonyckeln kan författarna visa att dom kan detektera nyckelns bitar genom att observera strömförbrukningen.

Läckage av nyckelinformation.
Läckage av nyckelinformation.

För mig som gillar hårdvara och ASICar är det här otroligt fräckt. Speciellt den senare attacken där den logiska funktionen inte ändras är riktigt snygg och rätt skrämmande.

Den jag saknar i artikeln är hotbildsanalysen – vem är det som är motståndaren och vilka resurser har denne. För att kunna ändra dopningen på specifika ställen på kretsen krävs insikt om kretsens funktion så att rätt område hittas. Och dessutom behöver detta ske någonstans mellan att underlaget till kretsen skett (sign-off) och testkretsar levererats. Det är relativt kort tid för att hitta rätt ställe att modifiera, analysera kretsen och föra in modifieringar i underlag för maskset. Att förstå en krets genom att titta på masksetet är inte enkelt (för att uttrycka det milt). Den som troligen utför attacken måste nästan sitta där designen av kretsen sitter, inte hos tillverkaren för att helt enkelt ha tillgång till så mycket designinformation att modifieringarna ska hinna göras. Sedan beror detta naturligtvis på var i utvecklingskedjan överlämning från designhus till tillverkaren sker.

Att dopning kan påverka funktionaliteten, inte minst hos mer analoga funktioner är inget nytt. När man tillverkar integrerade kretsar pratar man om processhörn (process corner), vilket är det gränser över vilka de olika process-stegen tillsammans ger kretsar med olika elektriska egenskaper. Om en krets innehåller en mer analog funktion kan dess beteende påverkas. Jag drar mig till minnes att Hifn en gång i tiden tillverkade och sålde en kryptokrets med inbyggd slumptalsgenerator byggd med en kedja av inverterare. Genom en olycklig kombination av processhörn och temperatur kunde vissa kedjan av inverterare (som skapar en oscillator) låsa mot en inre klocka. Följden blev att generatorn skapade tal i ett snyggt, periodiskt och inte alls speciellt slumpmässigt mönster. (Försöker hitta info och modellnummer om detta men hittar inte. Uppdaterar när jag har mer).

[1] Sidoförklaring: Nätlistan är beskrivningen över alla grindar och ledningar som kopplar ihop grindarna till den önskade kretsen. Andra attacker som presenterats försöker modifiera nätlistan eller i källkoden som genom kompilering (syntes) omvandlas till nätlistan. Nätlistan omvandlas genom flera steg till en uppsättning med polygoner (rektanglar) som tillsammans beskriver var på kretsytan olika ämnen (metall, kiseoxid etc) ska placeras i olika lager. Uppsättningen kallas maskset. Ett steg som beskrivs är var på den renda kiselytan joner ska injekteras i ytan för att göra delen av kretsytan potentiellt negativ eller positiv. Denna tidiga process kallas dopning.