Särtryck ur Säkerhet & Sekretess nr 6 år 2005
Publikation utgiven av IDG världens största utgivare av datarelaterad fackpress.

  • Vi listar för- och nackdelarna med ASIC och FPGA.
  • Vilka olika typer av FPGA:er finns det? Hur skiljer de sig åt vad gäller säkerheten?
  • Vi tipsar om gratisverktygen du kan börja med för att utveckla med FPGA:er.

     


    BILLIGASTE VÄGEN

    Flera av FPGA-leverantörerna erbjuder gratisversioner av sina utvecklingsverktyg. Alteras utmärkta verktyg Quartus-II Web Edition tar inte lång stund att installera och sedan är det bara att börja att konstruera.

    När du sedan blivit varm i kläderna bör du skaffa ett utvecklingskort, vilket gör det mycket smidigt att börja testa din konstruktion.

    Vill du se hur byggblock implementeras med ett hårdvarubeskrivande språk kan du besöka Opencores, en webbplats för fria och öppna byggblock. Här finns allt från enkla seriegränssnitt till 32-bitarsprocessorn Openrisc.

    För att verifiera att dina egna byggblock fungerar behöver du testa funktionen. Det gör du genom att köra blocken i en simulator som skickar in testdata och kontrollerar resultatet. En utmärkt fri simulator för Verilog är Icarus Verilog.

    Bli inte förvånad om du öppnar en modern router eller brandvägg och träffar på en stor integrerad krets från tillverkare som Altera, Xilinx eller Actel. Utrustningsleverantörer som Cisco Systems, Ericsson och Alcatel har insett att en modern fältprogrammerbar grindmatris, en FPGA (Field-Programmable Gate Array), i många applikationer ger den kombination av pris, prestanda, flexibilitet med mera som krävs för en framgångsrik produkt.

    Förr byggde man elektroniksystem genom att på ett mönsterkort koppla ihop ett stort antal färdiga komponenter till ett system. Den specifika mixen av komponenter och programvara gav den önskade funktionaliteten. När inte detta har räckt har man istället utvecklat en applikationsspecifik integrerad krets, en ASIC. Idag integreras hela system i en ASIC, och stora delar av dess funktion skapas genom att man använder färdiga byggblock som precis som på mönsterkortet tillför funktionalitet till detta system på chip (SoC).

    En ASIC har många fördelar: hög integration, låg effektförbrukning och bra prestanda till ett mycket lågt styckepris. Dock är utvecklingstiden lång och kostsam och en traditionell ASIC är en oflexibel lösning. Ändras kraven under utvecklingstiden, eller om dina kunder vill ha nya funktioner efter produktlanseringen, kan en ASIC vara ett hinder för framgång.

    Lösningen på detta dilemma är ofta en FPGA. Denna best är en standardkomponent som när den levereras från fabriken är generisk och funktionslös men byter skepnad när den konfi- gureras och blir det högintegrerade system din applikation vill ha.

    Byt krypto – på fältet
    Med färdiga byggblock kan du i en FPGA precis som i en ASIC snabbt realisera funktioner som talkodning för IP-telefoni, MPEG4-avkodning för digitalvideo och inte minst olika kryptografi ska funktioner som AES. Komplettera med en anpassad grundplattform med de processorer, minnen och standardgränssnitt din applikation behöver till en färdig applikationsplattform.

    Den stora skillnaden jämfört med en ASIC är dock att du med en FPGA kan byta ut den digitala hårdvaran, ditt elektroniska system, genom att byta konfiguration, vilket även kan ske ute på fältet. I ett WLAN-system byggt med en FPGA skulle det exempelvis gå att byta ut kryptot RC4 och WEP mot kryptot AES och WPA 2.

    Så fungerar en FPGA
    Grunden för en FPGA är den klassiska logiska sanningstabellen. I en FPGA finns ett stort antal små tabeller kopplade till var sin dataväljare, även kallad multiplexer (mux). Genom att exempelvis lägga in bitmönstret för ELLER-funktionen i tabellen och sedan koppla operatorerna A och B till väljarens styrsignal får man funktionen F = A ELLER B (se bilden på nästa sida). En sanningstabell kopplad till en mux kallas på engelska för Look-Up Table (LUT).

    Med hjälp av ett program bryts den logiska funktionen du vill implementera, till exempel din kryptoalgoritm, ned till en mängd av funktioner som var och en passar i en LUT. LUT:arna kopplas sedan samman av ett ledningsnät med styrbara korskopplingar. Slutligen finns det även register och minnesmoduler i en FPGA. De tre delarna i en FPGA, LUT:ar, ledningsnät och minnen, gör det möjligt att implementera alla typer av digitala funktioner i en FPGA.

    Innehållet i LUT:arna, hur ledningsnätet är kopplat och innehållet i minnet styrs av ett antal kontrollbitar – minnesceller på kiselbrickan. Genom att ändra dessa bitar ändras den funktion som FPGA:n skapar. När en FPGA ska konfi gureras läser man in kontrollbitarna från en konfigurationsfil och in i minnescellerna.

    FPGA och säkerheten
    I en ASIC sitter din applikation gömd inuti en kapsel och nedetsad på en kiselbricka med mikroskopiska transistorer och ledningar. Att kopiera eller återskapa funktionen i en ASIC är inte omöjligt, men väldigt omständligt och mycket kostsamt.

    I en FPGA ges funktionen av konfigurationsfilen. Om någon kan komma åt och kopiera din konfigurationsfil har de därmed en kopia på den digitala funktionen i din produkt. Det finns ingen tillverkare som använder ett öppet format, utan vad de olika bitarna i en konfigurationsfi l styr är hemligt. Dock har sådana konfi- gurationsfiler utsatts för avkodningsattacker, så att förlita sig på formatets hemlighet som skydd av din konstruktion är inte en bra lösning.

    Ett annat problem som FPGA:n delar med många programvarubaserade system är att om du tillåter nedladdning av ny programvara, eller i FPGA:ns fall en ny konfigurationsfil, blottar du din produkt för risken att den nya konfigurationsfi len påverkas under överföringen. Din produkt riskerar att innehålla en annan digital funktion än den avsedda.

    För att lösa dessa problem erbjuder FPGAleverantörerna olika skyddsmekanismer, men även vilken typ av FPGA du väljer att använda påverkar vilken säkerhet du får.

    Vanligast med SRAM-baserade FPGA:er
    Den vanligaste typen av FPGA:er är byggda med SRAM-teknik. Fördelen med SRAM-teknik är dess relativa enkelhet, vilket gör det möjligt att bygga kretsar med stor kapacitet. Nackdelen är att precis som innehållet i en dators SRAM-minne tappas så fort strömmen försvinner så kommer FPGA-konfigurationen att raderas i motsvarande situation. Därmed måste kretsens konfiguration laddas in från ett externt minne vid varje systemstart.

    De två stora drakarna på FPGA-marknaden är Altera och Xilinx. Båda leverantörerna har idag flera familjer av SRAM-baserade FPGA:er för olika typer av tillämpningar. De har även tagit fram liknande säkerhetslösningar.

    Altera har i Stratix-II-familjen förutom den vanliga FPGA-strukturen byggt in en färdig kryptomotor för AES. Kryptonycklarna lagras i ett litet Flashminne på kiselbrickan och därmed raderas inte nycklarna när strömmen försvinner. Via direktkopplingen för produktionstest, enligt industristandarden JTAG som finns på några av kretsens anslutningar, skriver du ner nycklarna i minnet under produktframtagningen. Det går dock inte att läsa nyckeln från minnet och ut ur kretsen. I Alteras lösning finns det även en möjlighet att efter nedskrivning av nyckeln via JTAG spärra nyckelminnet så att nyckeln aldrig mer går att ändra.

    Den konfigurationsfil som sedan läses in i FPGA:n måste vara krypterad med samma nyckel som den som ligger i nyckelminnet. FPGA:n försöker dekryptera filen, men har inte filen krypterats med korrekt nyckel kommer den checksumma som FPGA:n beräknar inte att stämma och då accepteras inte den nya konfi gurationen. Den nedre bilden till höger visar hur konfigurationen med AES-kryptering fungerar.

  •  

    Nästa sida >>>