Lugnt att validera SoC-säkerhet. Innovation inom verifiering

Källnod: 1853830

Fuzzing är för mjukvaruverifiering vad randomisering är hårdvaruverifiering. Kan ett otydligt tillvägagångssätt förbättra hårdvarusäkerhetstestning? Paul Cunningham (GM, Verification at Cadence), Raúl Camposano (Silicon Catalyst, entreprenör, tidigare Synopsys CTO) och jag fortsätter vår serie om forskningsidéer. Som alltid välkomnas feedback.

Lugnt att validera SoC-säkerhet

Innovation

Den här månadens val är HyperFuzzing för SoC-säkerhetsvalidering. Författarna presenterade denna artikel vid ICCAD 2020. De kommer från IIT Kanpur.

Detta är ett spännande tillvägagångssätt för fuzzing, anpassat specifikt till modern SoC-design. Det bygger på hyper-egenskap incheckning av dynamiska simuleringar. Dessa hyperegenskaper resonerar om beteenden över uppsättningar av spår, ett tillvägagångssätt som är väl lämpat för säkerhetskontroll. Författarna erbjuder som exempel informationsflödeskontroller (priviligierade data kan t.ex. inte läcka från A till B) och icke-interferenskontroller (motstridiga åtgärder får inte störa beräkningsflödet). Säkerheten kontrolleras sedan genom att jämföra buntar av simuleringsspår med och utan manipulering.

Att manipulera med detta tillvägagångssätt kan modellera olika typer av sårbarheter till opålitliga källor. Genom att randomisera firmware-instruktioner, skriv instruktioner från en komponent till NoC, eller bitflip i ett minne. Författarna föreslår också flera nya täckningsmått. Dessa är utformade för att vägleda iterationer till manipulering runt fall som mest påverkats av tidigare manipuleringskörningar.

Deras testfall är en liten men representativ SoC (detaljer i GitHub) kör firmware-tester mot kryptografiska block, kontrollerar icke-störningar och andra sårbarheter. De kör också säker start med datablockkontroller. De hittade flera säkerhetsöverträdelser i kryptoblocken, förutom där blocket inkluderar ECC-skydd.

Pauls syn

Säkerhetsverifiering är ett så viktigt ämne, och det pågår mycket arbete här både inom den akademiska världen och inom industrin. Den här artikeln sammanför slumpmässigt mutationsbaserad täckning med "hyperegenskaper" över uppsättningar av simuleringsspår för att skapa en innovativ lösning som är både skalbar och effektiv för att visa säkerhetsbrister.

Vissa säkerhetsegenskaper kan formellt definieras endast över en uppsättning simuleringsspår. Till exempel betyder "icke-interferens" att en angripare inte kan störa vissa skyddade beräkningar i en design. För att påvisa störningar måste du jämföra två spår, identiska i ingångsstimulans förutom förekomsten av några angriparåtgärder i ett spår. Om några skyddade beräkningar i det attackerade spåret skiljer sig från de i det gyllene spåret, har det förekommit störningar.

Författarna skapar sin egen speciella smak av språk för påståenden över flera spår och använder den för att formulera säkerhetsegenskaper för icke-interferens och konfidentialitet. De bygger ett anpassat flöde för att slumpmässigt manipulera simuleringar och kontrollera deras säkerhetsegenskaper mellan manipulerade och icke-manipulerade simuleringar. Deras slumpmässiga manipuleringsalgoritm har också en elegant täckningsbaserad inlärningsheuristik för att vägleda den för att mer effektivt hitta säkerhetsbrister.

Idén med påståenden över flera simuleringar är mycket kraftfull. Jag undrar om det skulle vara möjligt att rent utvidga SystemVerilog för att stödja den här typen av påståenden. Detta kan öppna dörren till några övertygande inbyggda tillägg till kommersiell simulering och formella verktyg. En annan möjlighet kan vara att utöka den nya Portable Stimulus Standard (PSS) till att inkludera påståenden som sträcker sig över flera genererade tester.

Den här uppsatsen är lätt och trevlig att läsa, även om jag önskar lite mer information om resultaten. Författarna hävdar att deras lösning hittar säkerhetshål i deras SoC-testfall med öppen källkod, men det finns inga detaljer om vad dessa hål är eller hur deras tillvägagångssätt jämförs med andra tillvägagångssätt i litteraturen som kan användas för att hitta samma hål.

Raúls syn

Jag ska först titta på detta från en teknisk mognadsvinkel. Jag gillar idén i allmänhet, ett väldigt intressant sätt att betygsätta säkerhet i en design. Som sagt, varje design kräver att designers tillhandahåller frötest, sabotage och säkerhetsspecifikationer i ett nytt påståendespråk. För mig binder detta förhållningssättet starkt till den akademiska domänen för nu. Perfekt för avhandlingar och uppsatser, ännu inte i närheten av något som skulle kunna ta steget till kommersiell tillämpning.

Jag tar på mig investerarhatten för den andra utmaningen. Säkerhet är ett viktigt ämne, ingen tvekan. Men utanför några få domäner känner vi redan till – till exempel flyg, försvar, betalningssystem och processorer/servrar. Det är fortfarande inte ett existentiellt problem för de flesta OEM-tillverkare och komponentbyggare. De är villiga att markera en ruta om det förväntas. Men bara om inverkan på kostnad eller tid till marknaden är liten. Eftersom deras kunder i allmänhet inte kommer att betala mer för säkerheten. Vilket gör att säkerheten för de flesta marknader fortfarande är beroende av nyckelfärdig IP, såsom hårdvarurötter och lättanvända appar. Lösningar paketerade på ett av dessa sätt kommer att kunna investeras, annars inte så mycket.

Min åsikt

Paul och Raúl täckte upp det mesta av det jag kan ha föreslagit. Jag gillar Pauls idé att utöka SVA, åtminstone för att uppmuntra experiment med hyperegenskaper. Detta måste öppna en ny klass av intressanta tester, vilket så småningom leder till nya paketerade verifieringsmetoder.

Dela det här inlägget via: Källa: https://semiwiki.com/eda/299391-fuzzing-to-validate-soc-security-innovation-in-verification/

Tidsstämpel:

Mer från Semiwiki