Qu'est ce qu'une résistance ? Comment calculer sa valeur ? Laquelle choisir ?

Introduction

On va maintenant voir les différents type de canal auxiliaire : La consommation d’énergie, les radiations électromagnétiques et le temps d’exécution.

Les cannaux auxiliaires dépendent beaucoup de comment est déployé le programme et le circuit sur le système embarqué. Les canaux auxiliaires ne peuvent être vue sous forme mathématique ou algorithmique.

L’implémentation du circuit et du programme peut donner des informations secrète via le cannal auxiliaire, même le secret qui n’apparait pas dans les entrées/sorties.

En conséquence, une observation passive faite par un hacker peut lui permettre d’obtenir le seret. On va voir comment juste en dessous.

Temps d'exécution

On va voir comment le temps d’exécution peut avoir une influence pour hacker un système. Pour mieux comprendre, voici un exemple de programme qui permet de vérifier si un code est bon :

boolean verification_PIN(byte[] entre_PIN)
{
for (int i = 0; i < correctPIN.length; i++)
    if (entre_PIN[i] != correctPIN[i])
        return false;
    return true;
}

Dans ce programme, on peut voir que l’on vérifie chaque chiffre et quand quand l’un est faux le programme retourne false. De cette façon, selon le chiffre qui est faux alors le temps d’exécution ne sera pas le même : si le premier chiffre est faux le temps d’exécution sera beaucoup plus court que si c’est le 4ième chiffre. Si un hacker tente de forcer un code à 4 chiffres avec le brut force, il en aurait pour 9999 tentatives.

Mais sachant que si le hacker prends en compte le temps d’exécution, alors il pourra savoir quand le premier chiffre est bon car le temps d’éxecution va augmenter légèrement. Il va donc tester les chiffres de 0 à 9 pour chaque digit du code, ce qui fait donc pour un code à 4 chiffres 4*10 = 40 tentatives au lieu de 9999.

Le temps d’exécution à donc une grande importance dans le hacking et il convient de le masquer un peu en faisant en sorte que les instructions n’influent pas sur ce temps d’exécution.Vous pouvez notamment dérouler les boucles en ajoutant des instructions dans celle-ci et enlevant des « tours de boucle ».

  • Consommation d’energie

La plupart des composants électronique voient leur consommation électrique augmenter lors de leurs utilisations. Ceci donne de bon indice sur quand est utilisé un composant ou bien quand le programme accède à une certaine partie de la carte. Ceci permet de révéler des secrets au hacker.

Il existe deux types de méthodes utilisés par les hackers : le simple power Analysis (RSA) et le differential power analysis (DPA).

L’analyse de puissance simple (RSA) consiste à interpréter visuellement sur un oscillosocope les traces de puissances ou les graphiques des traces électriques en fonction du temps.

L’analyse différentiel de puissance (DPA) est une forme avancée d’analyse de puissance, qui peut permettre à un attaquant de calculer les valeurs intermédiaire grâce à l’analyse statistique grâce à plusieurs observations de trace de puissance.

La différence entre les deux méthodes c’est que l’analyse de puissance simple donne la clé secrète que l’on souhaite obtenir en une seule observation des traces de puissance alors que l’analyse différentiel de puissance nécessite l’observation de plusieurs trace de puissance afin d’obtenir la clé secrète.

 

 

Analyse de puissance simple

L’analyse de puissance simple consiste à trouver une clé secrète à partir de l’analyse des traces de puissances relevée sur le système embarqué avec un oscilloscope par exemple. Une méthode de chiffre de clé secrète est le RSA. C’est une clé très utilise dans la transmission de donnée. On va voir comment cracker cette clé avec l’analyse simple de puissance.

L’analyse de puissance est souvent utilisé dans les cas les plus simples. Néanmoins aujourd’hui c’est l’analyse différentiel de puissance qui est le plus utilisé due au faite que les secrets sont beaucoup plus dur à trouver.

Analyse différentiel de puissance

L’analyse différentiel de puissance utilise beaucoup plus d’observation de trace de puissance et utilise des outils de statistique. L’analyse différentiel de puissance est utilisé pour les secrets beaucoup plus dur à trouver.

A. Les outils de l’analyse différentiel de puissance

  • Modèle de fuite : Un modèle prédisant le comportement du canal auxiliaire observé en fonction d’une hypothèse sur un état du système.
  • Distinction : Outils statistique qui permet de détecter une corrélation entre le comportement du système et notre prédiction

Le modèle de fuite corresponds à une clé. On va faire plusieurs modèle de fuite et grâce à la distinction on déterminera quel modèle de fuite (clé) est correcte.

B. La méthode ou craquer la clé

On va maintenant voir les différentes étapes pour craquer une clé en utilisant l’analyse différentiel de puissance:

On va d’abord diviser la clé à trouver en petite partie afin de trouver chaque partie.

  1. Déterminer une variable S en fonction d’une partie de la clé et sur des entrées ou des sorties connues.
  2. On établit un modèle de fuite en fonction de la variable S
  3. On fait des observations (mesures) sur le circuit et du comportement du canal auxiliaire en faisant varier les entrées et les sorties connues.
  4. On analyse les données : Pour chaque entrée et sortie connus, on calcul le modèle de fuite en fonction de la variable S et les entrées et sorties connues. On utilise ensuite la distinction pour vérifier s’il y a une correction entre le comportement prédit par le modèle de fuite et le modèle observé.
  5. Pour la valeur correcte de la variable S, le modèle de fuite prédit correctement le comportement du circuit. En conséquence, les observations faites grâce au trace d’énergie permettra de distinguer quelle est le bon modèle de fuite et donc de trouver la bonne partie de la clé.
  6. Pour toute les autres valeurs de S (mauvaise partie de la clé), le modèle de fuite ne prédit pas le bon comportement, il n’y aura donc pas de correlation entre le modèle de fuite et les observations sur les traces de puissance.
Point d'interrogation

Quand utiliser une analyse differentiel de puissance ?

On décide d’utiliser l’analyse différentiel de puissance pour faire une attaque lorsque :

  • L’attaquant peut envoyer des messages en clair au circuit
  • L’attaquant peut lire le texte chiffré et mesurer les traces de puissance lors du cryptage

Si ces deux choses sont possibles sur un même circuit, alors l’analyse differentiel de puissance est à priviligié pour une attaque.

Exemple d'utilisation de la DPA sur le cryptage DES

On va maintenant voir comment faire une attaque avec l’analyse différentiel de puissance sur le chiffrement DES. Le Data Encryption Standard est un algorithme de chiffrement symétrique utilisant des clés de 56 bits.

Notre objectif sera donc de trouver cette clé 56 bits.

  1. On commence avec un modèle de fuite : une clé de 64 bits. On va découper cette clé en plusieurs petite partie que l’on va traiter séparement.
  2. On effectue la permutation initiale de la clé en clair

Pour la suite on va utiliser la fonction de feistel.

  • Fonction de Feistel

Un réseau de feistel est une construction utilisée dans les algorithmes de chiffrement par bloc.

Ce réseau est subdivisé en plusieurs étages. Dans sa version équilibrée, le réseau traite les données en deux parties de taille identique.

Voici un exemple de réseau de feistel sur la droite qui va nous permettre de trouver la sous clé:

Pour chaque sous partie de la clé, on part d’une valeur R0 et une valeur L0. On utilise la valeur de R0 pour avoir L1 comme on peut voir avec la ligne rouge.

Pour calculer R1 on va utiliser la fonction de feisteil. Pour cela on va utiliser la sous clé S multiplié à K0. La fonction de feistel va donner une clé de 30 bits.On a donc plus qu’a ajouter L0 à la clé de feistel pour avoir notre R1.

Voici la formule de R1 :

Une fois le L1 et R1 trouvé, on a décodé la petite partie de la clé. Il nous reste donc à faire pareil pour chaque petite partie de la clé afin de décoder la clé complète.

  • Conclusion

La Data Encryption standard n’est pas seule sur un circuit : il y a plein d’autre puce autour de celle-ci. C’est pourquoi l’attaquant doit se concentrer sur une petite partie du circuit et considérer le reste comme du bruit.  L’utilisation de la DES n’est plus recommandé aujourd’hui, du fait de sa lenteur à l’exécution et de son espace de clés trop petit permettant une attaque systématique en un temps raisonnable.

Distance de Hamming

Elle permet de quantifier la différence entre deux séquences de symboles. La distance de hamming est aussi un bon modèle pour caractériser la consommation d’énergie pour un transistor par exemple.

On peut prendre un exemple de deux nombre : 1101 et 1001.

On a donc une distance de hamming de 13-9=4.