Résumé
Le temps que prend un programme ou ses opérations élémentaires à s'exécuter révèle beaucoup de choses sur les données qu'il manipule. En partant de l'exemple de la signature RSA, nous verrons comment attaquer un logiciel en observant ses temps d'exécution, et comment contrer ces attaques en modifiant l'algorithme (masquage des données) ou son implémentation (quantisation du temps, etc). La mémoire cache des processeurs fournit un autre canal indirect d'information: le temps que prend un accès mémoire révèle des choses sur les cases mémoires qui ont été récemment accédées, ce qui permet de monter des attaques, comme nous le verrons sur l'exemple du chiffrement AES. La programmation dite «en temps constant» (ou plus exactement en temps indépendant des données secrètes) est une des manières de contrer ces attaques par observation du temps et des caches. Nous verrons comment la caractériser en termes de flux d'information et comment la mettre en pratique. Nous finirons par un aperçu des attaques de type « Spectre », qui combinent observation du cache et manipulation de l'exécution spéculative du processeur.