(Det här blev en stor text…)
En sak som dök upp bland informationen om NSAs moderniseringsprogram är att NSA och FPGA-tillverkaren Xilinx genomfört ett i mitt tycke extremt intressant projekt. Vad NSA och Xilinx har gjort är att både analysera säkerheten i SRAM-baserade FPGAer samt utvecklat metodik och verktyg för att implementera system som möter NSAs säkerhetsklass FSDA - Fail Safe Design Assurance.
Projektet inkluderar saker som FPGAer, rekonfigurerbara arkitekturer, metodik och system på chip i kombination med kryptoimpementationer och säkerhet – det kan inte bli mer Kryptoblog än så här! 😉
(Brasklapp: Ja, NSA och Xilinx publicerade information om detta projekt i Februari i år och jag borde naturligtvis sett detta då, men bättre sent än aldrig. Och jag ser inte att detta uppmärksammats tidigare, speciellt inte i Sverige.)
FPGAer används sedan tidigare i säkerhetssystem för att realisera olika typer av funktioner – typiskt acceleration av kryptofunktioner. Men de FPGAer som används är förhållandevis små och dyra. Dessa FPGAer är baserade på antingen FLASH-minnesteknik eller antifuse (dvs säkringar av Tungsten som bränns av och därmed konfigurerar FPGAn).
Att implementera kompletta säkerhetssystem i en FPGA har även det undvikits av rädsla för att det inte skall gå att upprätthålla röd/svart-separation inne i FPGA:n, med risk för informationsläckage och säkerhetsproblem.
Resultatet blir maskiner med fler än en FPGA - FPGAer som är små, dyra och sitter monterade på mönsterkort i maskiner som därmed rent fysiskt blir stora och klumpiga. Inte alls bra – men med kontrollerbar och verifierbar säkerhet.
SRAM-baserade FPGAer (från i första hand Xilinx och Altera) å sin sida har kapacitetsmäsigt snabbt växt till att i dag vara kapabla att implementera massiva datorsystem (med CPUer, minnen och applikationsspecifika funktioner) på ett enda chip (SRAM-FPGAer används i dag som testchip vid utveckling av nya kiselprocesser, ligger i framkant på Moores lag och är bland de första kretsarna som kommer ut i volym när en ny processnod startas upp.)
Den snabba utvecklingen driver ner priset på SRAM-baserade FPGAer och gör det möjligt att implementera allt större, kompletta inbyggda system på ett chip som går att bygga in i fysiskt små, allt mer mobila applikationer. Att kunna använda SRAM-baserade FPGAer även för implementation även kompletta system avsedda för de högsta säkerhetsklasserna vore mycket välkommet. (En personlig reflektion är att utvecklingsverktygen för SRAM-baserade FPGAer ofta är både billigare och bättre, detta för att det finns en större användarbas och fler leverantörer)
Exempel på vad NSA vill kunna implementera i en FPGA är redundanta kryptoenheter, röd/svart-separering intern på chippet och chip med funktioner som arbetar med olika säkerhetsklass.
Det NSA och Xilinx gjort är att analysera säkerheten och sedan utveckla metoder för bygga säkra systemimplementationer på Xilinx FPGA-familj Virtex-4
En Virtex-4 består av ett rutmönster med rader och kolumner av funktionsblock som upprepas över hela kretsytan. Typiska funktionsblock är logikblock, minnen, multiplikatorer samt block för acceleration av signalbehandling (DSP) och tom hela PowerPC-processorer.
(Bilden visar kiselbrickan i en Virtex-4 och man kan tydligt se kolumner och rader med olika funktionsblock, bland annat DPS-funktioner.)
Det grundläggande funktionsblocken är ett block för implementation kallat Configurable Logic Block (CLB) samt ett block som implementerar kommunikationen mellan de olika funktionsblocken på chippet kallat Global Switch Matrix (GSM). Xilinx och NSAs analys utgick från CLB- och GSM-enheterna för att se hur man skall kunna implementera en funktion i FPGA:n som är isolerad från resten av FPGA:ns funktionsblock. Figuren nedan visar uppbyggnaden ev en CLB:
Det man kom fram till är att det räcker med att omgärda den specifika funktionen med en ram av CLB:er som är en CLB-bred. Min gissning till varför man vill ha en CLB:s separation är att CLB:er är tätt kopplade till sin närmaste grannar, ex genom carry-kedjor. Om man då ser till att allokera döda CLB:er bryts dessa kedjor. Men detta räcker dock inte, utan man måste även titta på kommunikationen – både matriselementen (GSM) och de fysiska ledarna.
Kommunikationen på en FPGA som Virtex-4 består av ett antal ledare som från en given punkt (en CLB) sträcker sig olika antal steg bort. Exempelvis finns en ledartyp kallad HEX som sträcker sig till en CLB tre och sex steg bort.
Det man kom fram till är att det krävs en metodik för att märka upp de ledare som används så att även om bara en del av ledningen används får ingen annan funktion implementeras i en CLB som är kopplad på längs hela ledaren. Detta löstes genom att Xilinx införde ett direktiv NOBOUNDARYCROSS i sitt Place & Route-verktyg.
Vidare utvecklades ett verktyg kallat IVT (Isolation Verification Tool) som utifrån mappningsinformation går in och verifierar att alla isoleringsramar (de tomma CLB:erna) är kompletta och att inga ledningar som allokerats för en funktion passerar genom en isoleringsram. (Verktyget IVT ser inte ut att vara tillgängligt, men då all information går att extrahera från designverktygen borde det bara vara en fråga om programmering att skapa sin egen version av IVT.)
Det som krävs för att lyckas med det Xilinx och NSA genomfört är att konstruktören har möjlighet att styra/kontrollera hur sina funktioner placeras på chipytan. Xilinx och NSA utnyttjar att Xilinx i sina FPGAer stödjer partiell rekonfiguration, dvs att bara delar av FPGAns funktionsblock konfigureras. Detta gör det även möjligt att i en Xilinx-FPGA dynamiskt byta ut olika funktioner, exempelvis kryptoacceleratorer.
För att kunna åstadkomma kompletta system på chip behöver funktionsblocken kommunicera med varandra. För detta implementerades speciella generatorer för specifika kommunikationsbussar. De genererade kommunikationsbussarna integreras i den totala FPGA-konstruktionen. Slutligen implementerade NSA även en säkerhetsmonitor som kan läggas in i en FPGA och övervaka säkerheten för resten av systemet, och om så krävs vidta åtgärder – exempelvis konfigurera om en del av FPGA:n.
En viktig implementationsaspekt som tas upp är att externa I/O:n från separata funktioner inte bara inte skall dela samma fysiska I/O (pinne eller boll), utan att dom inte heller skall dela samma I/O-bank. (I/O:n i en FPGA är uppdelade i olika bankar där I/O:n i en bank har gemensam matning – vilket skulle kunna öppna upp för sidoattacksbaserat informationsläckage). Vidare är det vanligt att I/O:n på en FPGA har multipla funktioner, vilket man som konstruktör måste hålla reda på och om så krävs undvika dessa I/O:n.
Den genomförda analysen av Virtex-4 som krets inkluderade känslighet för olika typer sidoattacker samt JTAG-baserade attacker. NSA och Xilinx genomförde även en intressant analys av hur länge en SRAM-FPGA bibehåller konfiguration samt data i register och minnen när matningen kopplas ifrån (remenance). Det saknas information om vad man kom fram till, men tydligen var det tillräckligt bra. Troligen finns det dock krav på hur FPGA:n skall kapslas för att tillräcklig med tid hinner passera innan det går att fysiskt komma åt SRAM-cellerna.
Slutsatsen från Xilinx och NSA är att det med rätt metodik och verktyg går att använda Xilinx Viirtex-4 i applikationer med hög säkerhet.
Hela Xilinx och NSAs arbete finns beskrivet i relativt hög detalj i en artikel publicerad i Military Embedded Systems – Läs den!
Några detaljer som går att utläsa från artikeln är att testkonstruktionen troligen inkluderade en implementation av blockkryptot AES. Samt att NSA använder det hårdvarubeskrivande konstruktionsspråket Verilog (kloka människor).
Det som inte är klart är hur konfigurationsinformationen skyddas. Xilinx-4 inkluderar en AES-motor för kryptering av konfigurationen (där nyckeln är lagrad i register med separat matning från resten av chippet) och möjligtvis skulle man kunna dra slutsatsen att NSA anser att detta skydd är tillräckligt bra.
Konspirationsteoretikern kan ju invända att detta bara är bluff och båg, och ett sätt att få de NSA anser vara skurkar att börja använda Xilinx SRAM-baserade FPGAer för att implementera sina kryptosystem. Men jag tror inte att det är speciellt sannolikt. Ett skäl är att Xilinx bara tillverkar SRAM-baserade FPGAer och tidigare inte kunnat konkurrera med leverantörer som Actel och QuickLogic inom segmentet säkerhet av högsta klass.
Nyttigt och ojojoj så spännande är det i alla fall!
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
Säkert.. För vem?