EE Times publicerade i förra veckan en artikel om ett nytt företag som lanserat en teknik för att stoppa kloning av integrerade kretsar.
Företaget Verayo är avknoppning från MIT där Srini Devadas, en av grundarna av Verayo, ledde forskningen om PUF - Physical Unclonable Functions. På Verayos sida finns en förklaring till PUF-teknologin.
Grunden till PUF-teknologin är att de olika process-stegen som utgör en CMOS-processen är statistisk och ger upphov till små lokala varianser, både mellan olika kretsar och inom en krets. Ett exempel på variation är antalet atomer (aluminium eller koppar) en ledning består av. Dessa varianser leder till små skillnader i det elektriska beteendet, exempelvis fördröjningen av en signal genom en grind.
Verayo försöker utnyttja dessa varianser genom att skapa en krets där skillnaden i signalhastighet i olika ledningar får betydelse för hur en signal traverserar en krets och ger upphov till olika digitala mönster. Genom att bygga en kedja med korsvis kopplade multiplexrar och sedan skicka ett känt mönster (challenge) genom kedjan får dom ut ett för den specifika kretsen känt mönster (response).

Vid produktion sparas det förväntade mönstret i ett ROM-minne på kretsen. Skulle kretsen klonas kommer mönstret som produceras av kedjan att förändras och då matchar det ej längre det lagrade mönstret.

Jag sökte lite på nätet efter artiklar om PUF-teknologin och hittade några artiklar, bland annat ett par på underbara Citeseer. Silicon Physical Random Functions från 2002 verkar vara den tidigaste som nämner PUF som koncept. En annan som ser ut att vara en hash av samma material är Controlled physical random functions.
2006 kom en artikel av några andra forskare som också tar upp PUF:s, men artikeln Offline HW/SW Authentication for Reconfigurable Platforms tar PUF-konceptet till FPGA-världen. Författarna skriver i sin sammanfattning:
We describe an offline authentication scheme for IP modules. The scheme implements mutual authentication of the IP modules and the hardware platform, and enables us to provide authentication and integrity assurances to both the system developer and IP provider.
Compared to the Trusted Computing Platform’s approach to hardware, software authentication, our solution is more lightweight and tightly integrates with existing FPGA security features. We are able to demonstrate an implementation of the authentication scheme that requires a symmetric cipher and a Physically Unclonable Function (PUF). In addition to the low hardware requirements, our implementation does not require any on-chip, non-volatile storage.
Jag har bara skummat den artikeln och återkommer med en närmare förklaring om vad dom faktiskt gör för att implementera PUF:s i FPGA:er.
Att det finns ett behov av att skydda mot kretskloning är helt klart. Kretskloning och piratkretsar omsätter i dag mycket stora belopp. Ett hitta sätt som (enkelt) gör det svårare att klona kretsar är därför mycket intressant.
Det jag funderar på är vad som händer med Verayos PUF:ar när kretsen åldras, finns det risk att kedjans unika mönster förändras över tiden? Vidare är varians i dag ett av de stora problemen (en av de röda tegelstenarna i ITRS roadmaps) mot mindre geometrier, och i takt med att man processmässigt blir tvingad att minimera varianser borde Verayos teknologi får svårare att skapa riktigt unika mönster.
Verayo är inte heller ensamma i sin strävan. Jag bloggade för nästan ett år sedan om en annan forskning där initialtillståndet i kretsars SRAM-celler används för att skapa krets-ID. Verayos teknik tycker jag dock verkar mer praktiskt intressant.
Uppdatering 2008-09-14:
Jag tror att jag har kommit på hur man kan slå ut Verayos teknologi.
Eftersom MUX-kedjan är till för att förstärka varianser och därmed ge olika mönster i varje krets går det knappast att ha med kedjan och dess utregister i den del av logiken som testas vid produktionstest. Detta undantag skulle göra det möjligt att relativt enkelt lokalisera var på kretsen kedjan, dess utregister och framförallt den komparator som jämför mönstret från kedjan med det förväntade mönstret är placerade.
När väl detta ställe är lokaliserat kan man göra på två sätt:
- Strömsätta kretsen, låta stimuligeneratorn skicka igenom indatat till kedjan, observera resultatet och lagra det i minnet. Detta är väsentligen den procedur som behöver utföras vid produktion av de riktiga kretsarna (återkommer strax till detta.)
- Låsa resultatet från komparatorn så att den alltid anger att korrekt mönster observerats. Detta görs relativt enkelt genom att FIB:a utsignalen till matning eller jord (beroende på vilket värde som anger att kretsen inte är klonad).
Att slå ut komparatorn är antagligen det enklaste, även om det tar tid att FIB:a. Men (1) tar också tid, och skall utföras på varje krets som produceras – i alla fall alla kretser som i övrigt har klarat sig igenom produktionstest. Verayos teknik innebär därmed en ökad produktionskostnad. Frågan är om denna kostnad överstiger alternativkostnaden med klonade kretsar under kretsens marknadsfönster?
Sedan kan det dessutom vara så att resultatet från komparatorn plockas upp av programvara, och att det är där beslutet om vad som händer när en krets detekterar fel mönster sker. Då är det antagligen ännu enklare att NOP:a bort den programfunktionen.