Dans cette introduction, l’objectif est de se familiariser en pratique avec les problématiques de sécurité matérielle et avec l’environnement ChipWhisperer. L’ensemble des exercices est basé sur cet environnement et sur la plateforme matérielle du même nom.

Préparation

ChipWhisperer est le nom d’une plateforme fournissant un environnement logiciel (essentiellement en Python) permettant de reproduire des attaques matérielles. Pour cela, différentes cibles matérielles sont disponibles, avec aussi bien des microcontrôleurs que des FPGA. L’intérêt majeure de cette plateforme est sa simplicité d’utilisation: l’ensemble de la chaîne peut-être automatisé à l’aide de scripts Python, de la mesure de consommation par un ADC jusqu’au traitement des données. Ainsi, elle représente un moyen idéale pour une première approche des problématiques de sécurité.

Les différents TP réalisés ici sont directement des tutoriels disponibles avec la plateforme: https://github.com/newaetech/chipwhisperer. Ceux-ci s’appuyent sur le principe de notebook Jupyter. Nous utiliserons également une carte ChipWhisperer Nano (CWNANO). Cette carte intègre aussi bien la partie de contrôle (e.g. mesure de la consommation) que la cible (ici un microcontrôleur STM32). L’ensemble des outils et drivers sont (normalement) déjà installés sur les machines à disposition. Cependant, il est nécessaire de configurer votre environnement au démarrage. Pour cela, à chaque ouverture de terminal, lancez la commande:

  source /net/npers/mescoutelou/share/env/HWSEC/setup.sh
Installation Il est tout à fait possible d’installer les outils nécessaires au fonctionnement de la plateforme sur votre ordinateur personnel. Pour cela, suivez la partie installation correspondante à votre système d’exploitation dans la documentation officielle.

Avant de commencer, il est ensuite nécessaire de télécharger sur vos sessions certains éléments. Pour cela, uniquement au début de la première séance, placez-vous dans votre répertoire de travail et lancez les commandes suivantes:

  git clone https://github.com/newaetech/chipwhisperer
  cd chipwhisperer
  git submodule update --init jupyter
  python -m notebook

Au début des séances suivantes ou pour reprendre le TP, lancez:

cd chipwhisperer
python -m notebook

Sur le navigateur internet, vous verrez alors s’afficher votre répertoire de travail. La plupart des manipulations s’effectueront via cette interface. Pour commencer, aller dans le répertoire jupyter et cliquez sur 0 - Introduction to Jupyter Notebooks.ipynb. Pour la suite, suivez les indications des tutoriels. En cas de problèmes, certaines informations ci-dessous pourrons vous guider.

Tutoriels

Expérimentations Les différentes manipulations présentées lors des tutoriels ci-dessous fonc intervenir de nombreux facteurs: des composants matériels paramétrables (la fréquence de fonctionnement, la résolution de l’ADC, le nombre de mesures etc.), de la connectique, du logiciel embarqué (sur le microcontrôleur) mais aussi du logiciel de commande et d’analyse (scripts Python). Même si les expérimentations sont cadrées, les sources potentielles d’erreur et de bugs restent donc très nombreuses. Calme et persévérance sont donc souvent nécessaires.

Voici ci-dessous une liste des tutoriels à réaliser. Certaines notes viennent compléter les manipulations.

  • 0 - Introduction to Jupyter Notebooks
    • Suite à des mises à jours, des incohérences existent entre le tutoriel et la version installée de Jupyter. Remplacez %matplotlib notebook par %matplotlib widget (ou %matplotlib inline).
    • L’installation pip install ipympl peut être nécessaire
  • 1 - Connecting to Hardware
  • courses/sca101/Lab 0 - SCA101 Setup
  • courses/sca101/Lab 2_1A - Instruction Power Differences
    • Si la version HARDWARE ne fonctionne pas, vous pouvez tester la version SIMULATED pour voir ce qui est attendu.
  • courses/sca101/Lab 2_1B - Power Analysis for Password Bypass
  • courses/sca101/Lab 3_1 - Large Hamming Weight Swings
  • courses/sca101/Lab 3_2 - Recovering Data from a Single Bit
  • courses/sca101/Lab 3_3 - DPA on Firmware Implementation of AES
  • courses/sca101/Lab 4_1 - Power and Hamming Weight Relationship
  • courses/sca101/Lab 4_2 - CPA on Firmware Implementation of AES
  • courses/sca101/Lab 4_3 - ChipWhisperer Analyzer CPA Attack