
Preuve de concept démontrant une attaque par canal auxiliaire d'analyse de puissance contre une implémentation RSA vulnérable sur Arduino (Atmega328P), avec une configuration matérielle détaillée et une méthodologie de mesure.
Récemment, j'ai observé des personnes implémentant elles-mêmes la cryptographie pour Arduino, comme dans ce sujet sur stackoverflow :
https://stackoverflow.com/questions/39189065/rsa-encryption-decryption-functions-for-arduino
Plusieurs d'entre eux peuvent être trouvés sur Internet, certains se trouvent d'ailleurs dans des bibliothèques bien connues.
J'ai décidé de réaliser cette petite POC (Preuve de concept) pour montrer pourquoi il est important non seulement de ne pas inventer son propre algorithme cryptographique, mais aussi d'utiliser une implémentation robuste de tels algorithmes.
Cette POC effectue une attaque par canal auxiliaire (attaque par analyse de puissance) contre une mauvaise implémentation d'une routine auxiliaire utilisée dans l'implémentation RSA (exponentiation rapide).
Une attaque par canal auxiliaire est une méthode visant à compromettre un système cryptographique en exploitant des fuites d'informations indirectes plutôt qu'en attaquant directement l'algorithme ou le protocole cryptographique lui-même.
Ce type de fuite peut provenir de diverses sources telles que les informations temporelles, la consommation électrique, les émissions électromagnétiques, ou même le son.
De telles attaques peuvent être très efficaces pour compromettre des systèmes cryptographiques comme RSA sans obliger l'attaquant à résoudre les problèmes mathématiques sous-jacents qui assurent la sécurité du système cryptographique (Kocher, Jaffe, & Jun, 1999).
Cet article réalisera une attaque par analyse de puissance sur une vulnérabilité bien connue dans une implémentation de l'algorithme RSA dans un firmware pour Arduino (Atmega328P).
Remarque : Je l'ai fait rapidement, veuillez m'excuser pour les fautes d'orthographe / de grammaire que vous trouverez éventuellement.
Les attaques par analyse de puissance consistent à mesurer la consommation électrique d'un appareil lors d'opérations cryptographiques.
L'analyse différentielle de puissance (DPA) implique une analyse statistique des schémas de consommation électrique sur plusieurs opérations cryptographiques pour extraire des secrets, ce qui la rend plus sophistiquée que l'analyse simple de puissance (SPA), qui corrèle directement les fluctuations de puissance avec des opérations cryptographiques spécifiques pour déduire des secrets.
L'analyse différentielle de puissance (DPA) et l'analyse simple de puissance (SPA) peuvent être utilisées pour extraire des clés privées en analysant les schémas de consommation électrique lors des calculs RSA.
Ces attaques peuvent révéler la clé privée en identifiant des schémas distincts d'utilisation de la puissance associés à différents bits de la clé (Kocher, Jaffe, & Jun, 1999).
RSA (Rivest-Shamir-Adleman) est un algorithme de chiffrement à clé publique largement utilisé, nommé d'après ses inventeurs : Ron Rivest, Adi Shamir et Leonard Adleman, qui l'ont introduit en 1977 (Paar & Pelzl, 2010).
Il reste l'une des méthodes les plus sécurisées pour transmettre des données de manière sécurisée sur Internet.
L'un des fondements de la sécurité de RSA réside dans la difficulté de factoriser de grands nombres composés en leurs facteurs premiers (Menezes, van Oorschot, & Vanstone, 1996).
Ce problème, connu sous le nom de problème de factorisation, consiste à trouver les nombres premiers qui se multiplient pour former un grand nombre donné.
Le chiffrement RSA repose sur l'hypothèse que ce problème de factorisation est suffisamment difficile sur le plan computationnel pour qu'il soit irréaliste de briser le chiffrement en factorisant le module en ses facteurs premiers (Menezes, van Oorschot, & Vanstone, 1996).
La Figure 1 illustre le processus de chiffrement et de déchiffrement RSA à l'aide d'un exemple simple.

Figure 1 - Exemple RSA.
Veuillez noter que dans ce cas, 3 et 33 sont publics. Le nombre 7 dans l'exemple est la clé privée.
La fonction Phi (N), fonction indicatrice d'Euler, calcule tous les nombres premiers entre eux dans l'intervalle de 1 à 33.
La valeur 33 est obtenue par la multiplication de P et Q ; dans ce cas, 11 multiplié par 3.
Le résultat de la fonction Phi est obtenu en multipliant (P - 1) par (Q - 1) ; dans ce cas, 10 multiplié par 2.
L'opération e<sup>-1</sup> mod 20 désigne l'opération d'inverse modulaire (Menezes, van Oorschot, & Vanstone, 1996).
Remarque : Si vous souhaitez approfondir RSA, ce qui n'est pas nécessaire pour comprendre cet article. Il y a une introduction rapide à ces opérations de base de théorie des nombres dans ce dépôt, dans le fichier number_theory.md. L'explication peut améliorer votre compréhension des opérations RSA.
L'expérience a utilisé un oscilloscope DS1102 (présenté dans la Figure 2) fabriqué par Rigol.
Le manuel de l'oscilloscope peut être trouvé dans les références (RIGOL Technologies, Inc., 2017).
Une alimentation générique a également été utilisée (présentée dans la Figure 3).

Figure 2 - Oscilloscope utilisé dans l'expérience.

Figure 3 - Alimentation utilisée dans l'expérience.
La loi d'Ohm est un principe fondamental dans le domaine du génie électrique et de la physique.
Elle stipule que le courant traversant un conducteur entre deux points est directement proportionnel à la tension entre ces deux points et inversement proportionnel à la résistance entre eux (Boylestad, 2015).
La Figure 4 montre un circuit et la loi d'Ohm.

Figure 4 - Illustration de la loi d'Ohm.
La loi d'Ohm implique que si vous augmentez la tension aux bornes d'un conducteur, le courant augmentera également, à condition que la résistance reste constante (Johnson & Hilburn, 2013). La Figure 5 présente un exemple d'application de la loi d'Ohm dont l'objectif est de trouver le courant dans le circuit.

Figure 5 - Exemple de la loi d'Ohm.
La loi des tensions de Kirchhoff (LTK) est un principe fondamental en génie électrique et en physique (Boylestad, 2015).
Elle stipule que la somme de toutes les différences de potentiel électrique (tensions) autour de tout réseau ou boucle fermée est nulle (Boylestad, 2015).
La Figure 6 illustre la loi des tensions de Kirchhoff.

Figure 6 - Illustration de la loi de Kirchhoff.