Software bevat vaak imperfecties en zelfs fouten. Zo'n fouten kunnen er voor zorgen dat aanvallers geheime informatie van slachtoffers kunnen ontfutselen. In dit proefschrift bestuderen we hoe gebruikers beschermd kunnen worden tegen verschillende soorten veiligheidslekken. Hierbij hebben
we de rol bestudeerd die de variatie tussen programma's speelt bij veiligheidslekken.
Een eerste soort programmavariatie is de variatie in programmacode. Wanneer softwareontwikkelaars veiligheidslekken dichten zullen ze gebruikers een nieuwe, veiligere versie van het programma ter beschikking stellen. Aanvallers kunnen echter het verschil bepalen tussen de oude en de nieuwe
programmacode, wat hen kan helpen bij het opzetten van een aanval tegen gebruikers van oude programmaversies. In dit proefschrift stellen we modellen op voor zo'n aanvallen. Deze modellen gebruiken we dan om verschillende verdedigingstechnieken te evalueren. We introduceren bovendien
een nieuwe verdedigingstechniek die informatie van deze modellen gebruikt om een betere bescherming te bieden.
Een tweede soort programmavariatie is de variatie in uitvoeringstijd, waarbij het mogelijk is dat de uitvoeringstijd van een programma afhangt van geheime informatie. Aanvallers kunnen uitvoeringstijden opmeten en deze gebruiken om geheime informatie te achterhalen. In dit proefschrift introduceren we een geautomatiseerd compilerraamwerk dat de uitvoeringstijd van programma's onafhankelijk maakt van deze geheime informatie. | |