Veel processoren voeren regelmatig cryptografische toepassingen uit. Wanneer deze correct geïmplementeerd zijn, bieden ze sterke beveiliging tegen aanvallen. Naast het input-outputgedrag van deze algoritmen kunnen aanvallers ook andere eigenschappen zoals het gebruik van architecturale componenten of uitvoeringstijd observeren. Wanneer er een verband is tussen deze observeerbare eigenschappen en geheime informatie zoals bvb. cryptografische sleutels worden het nevenkanalen genoemd. Nevenkanaalaanvallen maken gebruik van dit verband om de cryptografische software aan te vallen.
In deze thesis onderzoeken we hoe compilertransformaties kunnen worden ingezet om software te beschermen tegen nevenkanaalaanvallen gebaseerd op uitvoeringstijd. Hierbij bestuderen we zowel beveiligingstransformaties in statische als dynamische compilers. Hoewel beschermingstechnieken in statische compilers voldoende bescherming bieden, worden ze echter belemmerd door hun statisch karakter en hun afhankelijkheid van de details van de doelarchitectuur tijdens het compileren. Hierdoor kan de runtime-overhead sterk toenemen. Dynamische compilatietechnieken bieden een oplossing voor veel van deze beperkingen. Door middel van profielinformatie die offline verzameld wordt, kunnen te beschermen codefragmenten in het programma automatisch gedetecteerd worden. Deze automatische beveiligingstechnieken reduceren niet alleen het risico op menselijke fouten, maar kunnen ook de beveiligingsoverhead sterk reduceren. Bovendien staan dynamische technieken toe het beveilingsniveau tijdens het uitvoeren aan te passen naargelang de beveiligingscontext.
| |