Abstract-Vi utforskar mjukvarumångfald som ett försvar mot sidokanalsattacker genom att dynamiskt och systematiskt randomisera styrflödet av program. Befintliga mjukvarumångfald tekniker omvandla varje program spår identiskt. Vår mångfaldsbaserade teknik omvandlar istället program för att göra varje program spår unikt. Detta tillvägagångssätt erbjuder ett probabilistiskt skydd mot både online- och offline-attacker. I synnerhet skapar vi ett stort antal unika program körvägar genom att automatiskt generera diversifierade repliker för delar av ett inmatningsprogram. Repliker som härrör från samma ursprungliga programfragment har olika implementationer, men utför semantiskt likvärdiga beräkningar. På runtime byter vi sedan slumpmässigt och ofta mellan dessa kopior. Vi utvärderar hur väl vårt tillvägagångssätt motverkar cache-baserade sidokanal attacker, där en angripare strävar efter att återställa kryptografiska nycklar genom att analysera sidoeffekter av program exekvering. Vår metod kräver ingen manuell ansträngning eller maskinvaruförändringar, har en rimlig prestandapåverkan, och minskar informationsläckage från sidokanal avsevärt. Artificiell programvarumångfald, liksom dess biologiska motsvarighet, är en mycket flexibel och effektiv försvarsmekanism. Kodinsprutning, kod återanvändning och omvänd teknik attacker är alla betydligt svårare mot diversifierad programvara. Vi föreslår att programvarumångfald utvidgas för att skydda mot sidokanalsattacker, särskilt cachesidekanaler. I huvudsak, artificiell programvara mångfald förnekar angripare exakt kunskap om sitt mål genom att slumpmässigt genomföra funktioner i ett program. Eftersom kod återanvändning och andra relaterade attacker bygger på statiska egenskaper hos ett program, tidigare arbete på programvara mångfald fokuserar främst på att randomisera program representation, t.ex., de in-minne adresser kod och data. Side-channel attacker, å andra sidan, förlitar sig på dynamiska egenskaper hos program, t.ex., exekveringstid, minne latenser, eller strömförbrukning. Följaktligen måste diversifiering mot sidokanaler randomisera ett programs utförande snarare än dess representation. De flesta befintliga diversifiering tillvägagångssätt randomisera program innan exekvering, t.ex., under sammanställning, installation, eller laddning. Framför-tid randomisering är önskvärt eftersom omfördelning under körning påverkar prestanda (liknar just-in-time sammanställning). Vissa närmar sig interleave program randomisering och programutförande ([9], [6], [10], [11] ). Men granulariteten av randomisering i dessa metoder är ganska grov, potentiellt tillåter en angripare att observera programmet oavbruten tillräckligt länge för att utföra en framgångsrik sidokanal attack. Vi undviker detta problem genom att utöka tekniker som används för att förhindra omvänd teknik såsom kodreplikation och kontrollflöde randomisering ([12], [7] ). Till skillnad från dessa metoder, kopierar vi dock kod på en finare kornad nivå och producerar ett nästan obegränsat antal runtime banor genom att slumpmässigt växla mellan dessa kopior. I stället för att göra kontrollflödet svårt att vända ingenjör, växlar vår teknik slumpmässigt utförandet mellan olika kopior av programfragment, som vi kallar repliker, att slumpmässigt utföra kod och därmed sidokanal observationer. Vi kallar denna nya förmåga dynamisk kontroll-flöde mångfald. För att variera sidokanal egenskaper repliker, använder vi diversifiera transformationer. Diversifiering bevarar det ursprungliga programmet semantik samtidigt som den säkerställer att varje replika skiljer sig åt på maskininstruktionernas nivå. För att skydda mot cache sidokanal attacker använder vi diversifieringar som varierar observerbara utförande egenskaper. Liksom andra cache sidokanalsreduceringar, såsom att ladda om cache på sammanhangsbrytare och skriva om krypteringsrutiner för att undvika optimerade uppslagstabeller, har införandet av mångfald vissa prestandaeffekter som vi noggrant kvantifierar i detta papper. I kombination, dynamisk kontroll-flöde mångfald och diversifiera transformationer skapar binärer med randomiserade program spår, utan att kräva hårdvara eller utvecklarhjälp. I detta dokument undersöker vi användningen av dynamisk kontrollflödesmångfald mot cache-baserade sidokanal attacker på kryptografiska algoritmer. Våra viktigaste bidrag är följande: • Vi tillämpar den nya förmågan till dynamisk kontroll-flödesmångfald på problemet med sidokanaler. Såvitt vi vet är detta den första användningen av automatiserad programvara mångfald för att minska cache sidokanaler. • Vi visar hur man genererar maskinkod för effektiva randomiserade kontrollflödesöverföringar och kombinerar detta med en diversifierande omvandling för att motverka cachebaserade sidokanalattacker.
Programdiversifiering REF erbjuder probabilistiskt försvar mot cache sidokanal attacker, genom att slumpmässigt och ofta växla mellan program repliker med samma semantik.
Thwarting Cache Side-Channel Attacks Through Dynamic Software Diversity
{'venue': 'NDSS', 'journal': None, 'mag_field_of_study': ['Computer Science']}