Sécurité matérielle
Que faut-il respecter lors de l'implémentation « en temps constant » d'un traitement cryptographique ?
- AFaire en sorte que l'ensemble du traitement se termine toujours en une seconde
- BArrêter l'horloge pendant le traitement
- CFaire en sorte que le sens des branchements conditionnels, le nombre d'itérations et les adresses mémoire lues ou écrites ne dépendent pas des valeurs secrètes
Afficher la réponse et l'explication
Réponse : C. Faire en sorte que le sens des branchements conditionnels, le nombre d'itérations et les adresses mémoire lues ou écrites ne dépendent pas des valeurs secrètes
Le temps constant signifie que la durée du traitement ne varie pas selon les valeurs secrètes. Si le sens d'une instruction if dépend d'une valeur secrète, le temps change ; si un indice de tableau est déterminé par une valeur secrète, les traces dans le cache changent. On écrit donc le code en calculant les deux résultats par opérations binaires et en sélectionnant au lieu de brancher, et en n'indexant pas de table par une valeur secrète. Il faut aussi vérifier que les optimisations du compilateur ne créent pas de branchements.