Sidekanalangreb
fordi sidekanalangreb er afhængige af forholdet mellem udsendt information (lækket) gennem en sidekanal og de hemmelige data, falder modforanstaltninger i to hovedkategorier: (1) eliminere eller reducere frigivelsen af sådanne oplysninger og (2) eliminere forholdet mellem de lækkede oplysninger og de hemmelige data, det vil sige gøre de lækkede oplysninger uafhængige eller rettere ukorrelerede til de hemmelige data, typisk gennem en eller anden form for randomisering af krypteringsteksten, der transformerer dataene på en måde, der kan fortrydes, efter at den kryptografiske operation (f.eks. dekryptering) er afsluttet.
under den første kategori er skærme med særlig afskærmning for at mindske elektromagnetiske emissioner, hvilket reducerer følsomheden over for stormangreb, nu kommercielt tilgængelige. Kraftledningskonditionering og filtrering kan hjælpe med at afskrække strømovervågningsangreb, selvom sådanne foranstaltninger skal bruges forsigtigt, da selv meget små sammenhænge kan forblive og kompromittere sikkerheden. Fysiske kabinetter kan reducere risikoen for skjult installation af mikrofoner (for at imødegå akustiske angreb) og andre mikroovervågningsenheder (mod CPU-strøm-træk-eller termisk billeddannelsesangreb).
en anden modforanstaltning (stadig i den første kategori) er at blokere den udsendte kanal med støj. For eksempel kan en tilfældig forsinkelse tilføjes for at afskrække timingangreb, selvom modstandere kan kompensere for disse forsinkelser ved at Gennemsnit flere målinger (eller mere generelt ved hjælp af flere målinger i analysen). Da mængden af støj i sidekanalen stiger, skal modstanderen indsamle flere målinger.
en anden modforanstaltning under den første kategori er at bruge sikkerhedsanalyseprogrammer til at identificere bestemte klasser af sidekanalangreb, der kan findes i designfasen af selve det underliggende udstyr. Timingangreb og cache-angreb kan begge identificeres gennem visse kommercielt tilgængelige sikkerhedsanalyseplatforme, som gør det muligt at teste for at identificere angrebssårbarheden i sig selv samt effektiviteten af den arkitektoniske ændring for at omgå sårbarheden. Den mest omfattende metode til at anvende denne modforanstaltning er at skabe en sikker Udviklingslivscyklus for udstyr, som inkluderer brug af alle tilgængelige sikkerhedsanalyseplatforme i deres respektive faser af udstyrets udviklingslivscyklus.i tilfælde af timingangreb mod mål, hvis beregningstider kvantiseres til diskrete urcyklustællinger, er en effektiv modforanstaltning mod at designe programmet til at være isokron, det vil sige at køre i en nøjagtig konstant mængde tid uafhængigt af hemmelige værdier. Dette gør timingangreb umulige. Sådanne modforanstaltninger kan være vanskelige at gennemføre i praksis, da selv individuelle instruktioner kan have variabel timing på nogle CPU ‘ er.
en delvis modforanstaltning mod simple strømangreb, men ikke differentierede effektanalyseangreb, er at designe programmet, så det er “PC-sikkert” i “program counter security model”. I et PC-sikkert program afhænger udførelsesstien ikke af hemmelige værdier. Med andre ord afhænger alle betingede filialer kun af offentlig information.(Dette er en mere restriktiv betingelse end isokron kode, men en mindre restriktiv betingelse end grenfri kode.)Selvom multiplicer-operationer trækker mere strøm end NOP på praktisk talt alle CPU ‘ er, forhindrer brug af en konstant eksekveringssti sådanne driftsafhængige strømforskelle (forskelle i strøm fra at vælge en gren frem for en anden) i at lække hemmelige oplysninger.På arkitekturer, hvor instruktionsudførelsestiden ikke er dataafhængig, er et PC-sikkert program også immun mod timingangreb.
en anden måde, hvorpå kode kan være ikke-isokron, er, at moderne CPU ‘ er har en hukommelsescache: adgang til sjældent anvendte oplysninger medfører en stor timingstraf, der afslører nogle oplysninger om hyppigheden af brugen af hukommelsesblokke. Kryptografisk kode designet til at modstå cache-angreb forsøger kun at bruge hukommelse på en forudsigelig måde (såsom Kun at få adgang til input, output og programdata og gøre det i henhold til et fast mønster). For eksempel skal dataafhængige tabelopslag undgås, fordi cachen kunne afsløre, hvilken del af opslagstabellen der blev åbnet.
andre delvise modforanstaltninger forsøger at reducere mængden af information, der lækkes fra dataafhængige strømforskelle.Nogle operationer bruger strøm, der er korreleret med antallet af 1 bit i en hemmelig værdi.Brug af en kode med konstant vægt (såsom brug af Fredkin gates eller dual-rail-kodning) kan reducere lækage af information om Hamming-vægten af den hemmelige værdi, selvom udnyttelige korrelationer sandsynligvis forbliver, medmindre afbalanceringen er perfekt. Dette “afbalancerede design” kan tilnærmes i programmer ved at manipulere både dataene og dets komplement sammen.
flere “sikre CPU’ er “er bygget som asynkrone CPU’ er; de har ingen global timingreference. Mens disse CPU ‘ er var beregnet til at gøre timing og strømangreb vanskeligere, fandt efterfølgende forskning, at timingvariationer i asynkrone kredsløb er sværere at fjerne.
et typisk eksempel på den anden kategori (decorrelation) er en teknik kendt som blinding. I tilfælde af RSA-dekryptering med hemmelig eksponent d {\displaystyle d}
og tilsvarende krypteringseksponent e {\displaystyle e}
og modulus m {\displaystyle m}
, teknikken gælder som følger (for enkelhed er den modulære reduktion med M udeladt i formlerne): før dekryptering, det vil sige, før du beregner resultatet af y d {\displaystyle y^{d}}
for en given chiffertekst y {\displaystyle y}
, vælger systemet et tilfældigt tal r {\displaystyle r}
og krypterer det med offentlig eksponent e {\displaystyle E}
for at opnå r e {\displaystyle r^{e}}
. Derefter udføres dekrypteringen på den røde r e {\displaystyle y\cdot r^{e}}
for at opnå ( y kur r e ) d = y d kur r e Kur d = y d kur r {\displaystyle {(y\cdot r^{e})}^{d}=y^{d}\cdot r^{e\cdot d}=y^{d}\cdot r}
. Da dekrypteringssystemet valgte r {\displaystyle r}
, kan det beregne dets inverse modulo m {\displaystyle m}
for at annullere faktoren r {\displaystyle r}
i resultatet og opnå y d {\displaystyle y^{d}}
, det faktiske resultat af dekrypteringen. For angreb, der kræver indsamling af sidekanalinformation fra operationer med data kontrolleret af angriberen, er blinding en effektiv modforanstaltning, da den faktiske operation udføres på en randomiseret version af dataene, som angriberen ikke har kontrol over eller endda viden om.
en mere generel modforanstaltning (idet den er effektiv mod alle sidekanalangreb) er den maskerende modforanstaltning. Princippet om maskering er at undgå at manipulere enhver følsom værdi y {\displaystyle y}
direkte, men snarere manipulere en deling af det: et sæt variabler (kaldet “aktier”) y 1 , . . . , y d {\displaystyle y_{1},…, y_{d}}
sådan at y = Y 1 liter . . . ret y d {\displaystyle y=y_{1} \ oplus …\oplus y_{d}}
(hvor det er en operation, der kaldes\oplus). En angriber skal gendanne alle værdierne for aktierne for at få nogen meningsfuld information.
for nylig blev hvidboksmodellering brugt til at udvikle en lav-overhead generisk kredsløb-niveau modforanstaltning mod både EM såvel som magt side-kanal angreb. For at minimere virkningerne af metallagene på højere niveau i en IC, der fungerer som mere effektive antenner, er ideen at indlejre kryptokernen med et signaturundertrykkelseskredsløb, der føres lokalt inden for metallagene på lavere niveau, hvilket fører mod både magt-og EM-sidekanalangrebsimmunitet.