Articles

Attaque par canal latéral

Comme les attaques par canal latéral reposent sur la relation entre les informations émises (divulguées) par un canal latéral et les données secrètes, les contre-mesures se divisent en deux catégories principales: (1) éliminer ou réduire la diffusion de telles informations et (2) éliminer la relation entre les informations divulguées et les données secrètes, c’est-à-dire rendre les informations divulguées non liées, ou plutôt non corrélées, aux données secrètes, généralement par une forme de randomisation du texte chiffré qui transforme les données d’une manière qui peut être annulée une fois l’opération cryptographique (par exemple, le déchiffrement) terminée.

Dans la première catégorie, des écrans dotés d’un blindage spécial pour réduire les émissions électromagnétiques, réduisant ainsi la sensibilité aux attaques de TEMPÊTE, sont maintenant disponibles dans le commerce. Le conditionnement et le filtrage des lignes électriques peuvent aider à dissuader les attaques de surveillance de l’alimentation, bien que de telles mesures doivent être utilisées avec prudence, car même de très petites corrélations peuvent subsister et compromettre la sécurité. Les boîtiers physiques peuvent réduire le risque d’installation subreptice de microphones (pour contrer les attaques acoustiques) et d’autres dispositifs de micro-surveillance (contre les attaques de puissance CPU ou d’imagerie thermique).

Une autre contre-mesure (toujours dans la première catégorie) consiste à brouiller le canal émis avec du bruit. Par exemple, un délai aléatoire peut être ajouté pour dissuader les attaques temporelles, bien que les adversaires puissent compenser ces retards en faisant la moyenne de plusieurs mesures (ou, plus généralement, en utilisant plus de mesures dans l’analyse). À mesure que la quantité de bruit dans le canal latéral augmente, l’adversaire doit collecter plus de mesures.

Une autre contre-mesure de la première catégorie consiste à utiliser un logiciel d’analyse de sécurité pour identifier certaines classes d’attaques par canal latéral qui peuvent être trouvées pendant les étapes de conception du matériel sous-jacent lui-même. Les attaques de synchronisation et les attaques de cache sont toutes deux identifiables via certaines plates-formes logicielles d’analyse de sécurité disponibles dans le commerce, qui permettent de tester l’identification de la vulnérabilité de l’attaque elle-même, ainsi que l’efficacité du changement architectural pour contourner la vulnérabilité. La méthode la plus complète pour utiliser cette contre-mesure consiste à créer un cycle de développement sécurisé pour le matériel, ce qui comprend l’utilisation de toutes les plates-formes d’analyse de sécurité disponibles à leurs étapes respectives du cycle de développement du matériel.

Dans le cas d’attaques temporelles contre des cibles dont les temps de calcul sont quantifiés en nombres de cycles d’horloge discrets, une contre-mesure efficace consiste à concevoir le logiciel de manière isochrone, c’est-à-dire à fonctionner dans un temps exactement constant, indépendamment des valeurs secrètes. Cela rend les attaques de synchronisation impossibles. De telles contre-mesures peuvent être difficiles à mettre en œuvre dans la pratique, car même des instructions individuelles peuvent avoir une synchronisation variable sur certains PROCESSEURS.

Une contre-mesure partielle contre les attaques de puissance simples, mais pas les attaques d’analyse de puissance différentielle, consiste à concevoir le logiciel de manière à ce qu’il soit « PC-secure » dans le « program counter security model ». Dans un programme sécurisé pour PC, le chemin d’exécution ne dépend pas de valeurs secrètes. En d’autres termes, toutes les branches conditionnelles ne dépendent que de l’information publique.(C’est une condition plus restrictive que le code isochrone, mais une condition moins restrictive que le code sans branche.) Même si les opérations de multiplication consomment plus de puissance que la NOP sur pratiquement tous les processeurs, l’utilisation d’un chemin d’exécution constant empêche de telles différences de puissance dépendantes de l’opération (différences de puissance en choisissant une branche par rapport à une autre) de divulguer des informations secrètes.Sur les architectures où le temps d’exécution des instructions ne dépend pas des données, un programme sécurisé pour PC est également à l’abri des attaques de synchronisation.

Une autre façon dont le code peut être non isochrone est que les PROCESSEURS modernes ont un cache mémoire: l’accès à des informations rarement utilisées entraîne une pénalité de synchronisation importante, révélant certaines informations sur la fréquence d’utilisation des blocs de mémoire. Le code cryptographique conçu pour résister aux attaques de cache tente d’utiliser la mémoire uniquement de manière prévisible (par exemple, n’accéder qu’aux entrées, sorties et données du programme, et ce, selon un schéma fixe). Par exemple, les recherches de tables dépendantes des données doivent être évitées car le cache pourrait révéler quelle partie de la table de recherche a été consultée.

D’autres contre-mesures partielles tentent de réduire la quantité d’informations divulguées à partir de différences de puissance dépendantes des données.Certaines opérations utilisent une puissance corrélée au nombre de bits 1 dans une valeur secrète.L’utilisation d’un code à poids constant (comme l’utilisation de portes de Fredkin ou d’un codage à double rail) peut réduire la fuite d’informations sur le poids de Hamming de la valeur secrète, bien que des corrélations exploitables soient susceptibles de subsister à moins que l’équilibrage ne soit parfait. Cette « conception équilibrée » peut être approximée dans un logiciel en manipulant à la fois les données et son complément.

Plusieurs « processeurs sécurisés » ont été construits en tant que PROCESSEURS asynchrones ; ils n’ont pas de référence de synchronisation globale. Alors que ces processeurs étaient destinés à rendre les attaques de synchronisation et de puissance plus difficiles, des recherches ultérieures ont révélé que les variations de synchronisation dans les circuits asynchrones sont plus difficiles à éliminer.

Un exemple typique de la deuxième catégorie (décorrélation) est une technique connue sous le nom d’aveuglement. Dans le cas du déchiffrement RSA avec l’exposant secret d {\displaystyle d}

d

et l’exposant de chiffrement correspondant e {\displaystyle e}

e

et le module m {\displaystyle m}

m

, la technique s’applique comme suit (pour plus de simplicité, la réduction modulaire par m est omise dans les formules): avant de déchiffrer, c’est-à-dire avant de calculer le résultat de y d {\displaystyle y ^{d}}

y^d

pour un texte chiffré donné y {\displaystyle y}

y

, le système choisit un nombre aléatoire r {\displaystyle r}

r

et le chiffre avec l’exposant public e {\displaystyle e}

e

pour obtenir r e {\displaystyle r^{e}}

r^e

. Ensuite, le décryptage se fait sur le decrypr e {\displaystyle y\cdot r ^{e}}

y\cdot r ^e

pour obtenir (y ⋅ r e) d = y d r r e d d =y d r r {\displaystyle {(y\cdot r^{e})} ^{d} =y^{d} \cdot r ^ {e\cdot je ne sais pas si c’est le cas, mais je ne sais pas si c’est le cas, mais je ne sais pas si c’est le cas, mais je ne sais pas si c’est le cas. Comme le système de décryptage a choisi r {\displaystyle r}

r

, il peut calculer son module inverse m {\displaystyle m}

m

pour annuler le facteur r {\displaystyle r}

r

dans le résultat et obtenir y d {\displaystyle y^{d}}

y^d

, le résultat réel du décryptage. Pour les attaques qui nécessitent de collecter des informations de canal latéral à partir d’opérations avec des données contrôlées par l’attaquant, l’aveuglement est une contre-mesure efficace, car l’opération réelle est exécutée sur une version aléatoire des données, sur laquelle l’attaquant n’a aucun contrôle ni même aucune connaissance.

Une contre-mesure plus générale (en ce sens qu’elle est efficace contre toutes les attaques par canal latéral) est la contre-mesure de masquage. Le principe du masquage est d’éviter de manipuler toute valeur sensible y{\displaystyle y}

y

directement, mais plutôt de manipuler un partage de celle-ci: un ensemble de variables (appelées « partages ») y 1,. . . , y d {\displaystyle y_{1}, …, y_{d}}

y_{1}, ..., y_{d}

tel que y = y 1 1. . . y y d {\displaystyle y = y_{1}\oplus…\oplus y_{d}}

{\displaystyle y=y_{1}\oplus...\oplus y_{d}}

(où {{\displaystyle\oplus}

\oplus

est l’opération XOR). Un attaquant doit récupérer toutes les valeurs des actions pour obtenir des informations significatives.

Récemment, la modélisation par boîte blanche a été utilisée pour développer une contre-mesure générique au niveau du circuit à faible surcharge contre les attaques EM ainsi que les attaques par canal latéral de puissance. Pour minimiser les effets des couches métalliques de niveau supérieur dans un circuit intégré agissant comme des antennes plus efficaces, l’idée est d’intégrer le noyau crypto avec un circuit de suppression de signature, acheminé localement dans les couches métalliques de niveau inférieur, menant à l’immunité d’attaque de canal latéral de puissance et EM.