Sécurité matérielle

Que faut-il respecter lors de l'implémentation « en temps constant » d'un traitement cryptographique ?

  1. AFaire en sorte que l'ensemble du traitement se termine toujours en une seconde
  2. BArrêter l'horloge pendant le traitement
  3. 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.

S'entraîner sur ce thème Retour au thème

Autres questions sur Sécurité matérielle

  1. Quel est le principe du partitionnement du cache partagé, utilisé comme contre-mesure aux canaux auxiliaires de cache ?
  2. Pourquoi désactive-t-on parfois le multithreading simultané (SMT) du CPU dans les systèmes effectuant des traitements confidentiels ?
  3. Quelle contre-mesure s'applique aux attaques par lesquelles un appareil externe connecté à un ordinateur lit ou écrit à volonté le contenu de la mémoire principale par DMA ?
  4. Quel est le principe de la « défense en profondeur », privilégiée en sécurité matérielle et logicielle ?
  5. Lors de la fabrication de nombreux appareils, pourquoi dote-t-on chaque appareil d'une clé différente plutôt que d'une même clé pour tous ?