• Aucun résultat trouvé

ReadAndCheck le DC correspondant au bloc de données D et le CC parent sont récupé- rés à l’intérieur de la puce et déchiffrés. L’authentification du DC est effectuée en comparant le nonce reconstruit, à partir de l’adresse et du compteur correspondant dans le payload du CC parent déchiffré, avec les derniers n bits du texte en clair produit après le déchiffrement du DC. Le bloc de données D est envoyé au processeur (exécution spéculative) s’il n’y a pas d’erreur de comparaison. Ensuite, le reste des nœuds de la branche du DC jusqu’à la racine sont authentifiés comme décrit précédemment. L’authentification de la racine est effectuée en comparant le compteur produit après le déchiffrement de la racine avec le compteur stocké à l’intérieur de la puce. Si une erreur est détecté durant la vérification de la branche, une excep- tion de vérification d’intégrité est levée pour prévenir le processeur. Toutes les opérations de déchiffrement sont effectuées en parallèle, puisqu’ils sont basées sur le chiffrement par bloc dans le mode ECB.

WriteAndUpdate le DC à mettre à jour est récupéré, déchiffré et authentifié en utilisant le CC parent. Ensuite, le payload du DC est mis à jour, concaténé avec l’adresse du bloc et le compteur correspondant incrémenté, chiffré et écrit dans la mémoire externe. Le payload du CC parent doit aussi être mis à jour avec la nouvelle valeur du compteur. Ce processus est effectué pour tous les parents jusqu’à la mise à jour de la valeur du compteur de la racine stocké à l’intérieur de la puce. Tous les nœuds sont authentifiés avant d’être mis à jour. Les calculs effectués dans ce processus de mise à jour, à savoir les opérations de déchiffrement et de re-chiffrement, sont également parallélisables.

L’utilisation d’un TEC-Tree augmente les besoins en espace mémoire du système d’un facteur (a−1)2 (où a est l’arité de l’arbre) par rapport à la même application n’utilisant aucun mécanisme de protection.

2.3.4

Comparaison des différents arbres

Les trois arbres décrits précédemment offrent une protection de la mémoire externe contre les attaques actives (injection, permutation spatiale et rejeu) décrites dans notre modèle de menace. TEC-Tree offre, en plus, une protection de la confidentialité des données. Les arbres de Merkle réguliers permettent d’avoir des opérations de vérification parallélisables et, PAT et TEC-Tree permettent d’avoir des opérations de vérification et de mise à jour parallélisables. Par contre, PAT et TEC-Tree augmentent l’empreinte de la mémoire externe par rapport aux arbres de Merkle réguliers. En effet, l’empreinte mémoire externe supplémentaire introduite par les arbres de PAT est 2×(a−1)3 et celle de TEC-Tree est (a−1)2 où a est l’arité de l’arbre. Par exemple, pour un arbre quaternaire (c’est-à-dire a = 4), PAT et TEC-Tree augmentent l’empreinte de la mémoire externe par les facteurs de 50 % et 66 % respectivement et, alors que les arbres de Merkle ont une augmentation de 33 % de l’empreinte de la mémoire externe. Le tableau 2.1 résume les différentes propriétés des trois arbres.

TABLE2.1 – Résumé des propriétés des arbres existants [24]

Arbre de Merkle PAT TEC-Tree Résistance aux at-

taques actives

Oui Oui Oui

Parallélisabilité Vérification d’inté- grité uniquement

Vérification d’inté- grité et mise à jour

Vérification d’inté- grité et mise à jour

Confidentialité Non Non Oui

Empreinte mémoire supplémentaire

1/(a − 1) 3/2(a − 1) 2/(a − 1)

2.4

Plates-formes de calcul sécurisées

Dans cette section, nous présenterons quelques plates-formes de calcul sécurisées qui sont utilisées pour protéger la confidentialité et/ou l’intégrité du contenu des mémoires externes dans les systèmes embarqués.

2.4.1

Best

La limitation de la zone fiable au SoC et la protection de la mémoire externe par un module localisé à l’intérieur de la puce est un concept introduit par Best [29–32], en 1979, avec un microprocesseur utilisant un mécanisme de chiffrement de bus : les données sont chiffrées avant d’être transmises vers la mémoire externe lors des opérations d’écriture et sont déchiffrées uniquement à l’intérieur de la puce lors des opérations de lecture, ce qui rend les données stockées dans la mémoire externes incompréhensibles (théoriquement) par un adversaire. Les algorithmes de chiffrement utilisent une clé secrète qui est également stockée à l’intérieur du SoC, accessible uniquement par le mécanisme de protection. L’objectif est donc de garantir la confidentialité du code et des données d’un programme stocké en mémoire contre un attaquant pouvant espionner le bus mémoire ou la mémoire externe elle-même.

Ce microprocesseur cryptographique garantit uniquement la confidentialité des données en utilisant des algorithmes de chiffrement, mais ne fournit pas de mécanismes pour garantir l’intégrité des données. De plus, un seul programme peut être exécuté par ce microprocesseur qui ne dispose d’aucun support pour un éventuel système d’exploitation.

Un mécanisme de destruction de la clé du processeur a été ajouté afin de rendre le pro- gramme inutilisable après un certain nombre d’exécutions ou au bout d’un certain temps. De plus, des instructions de destruction de la clé ont été insérées dans le jeu d’instruction du pro- cesseur pour rendre le processeur inutilisable si ces instructions ont été déclenchées par un attaquant en essayant de modifier le programme chiffré.

2.4.2

Dallas DS5002FP

La société Dallas Semiconductor a intégré des dispositifs de sécurité dans des microcon- trôleurs de la famille DS5000 afin de permettre le chiffrement du code et des données d’un programme stocké en mémoire, et donc d’empêcher qu’un adversaire accède aux données ou aux instructions en clair du programme.

Par exemple, le DS5002FP [33] contient une unité de chiffrement pour le bus de données et une autre pour le bus d’adresse. L’algorithme propriétaire de chiffrement utilisé pour les deux unités dépend d’une clé secrète de 64 bits stockée dans un registre spécial interne alimenté par une petite batterie externe. Une entrée particulière permet de programmer le microcontrô- leur. Lorsqu’elle est activée, un moniteur génère une nouvelle clé à partir d’un générateur de nombres aléatoires intégré au circuit, puis charge en clair le programme via le port série, le chiffre à la volée et le stocke en mémoire. Une fois la programmation terminée, le moniteur est désactivé et il devient alors impossible d’accéder au contenu en clair de la mémoire ou à la clé sans qu’une nouvelle clé soit générée (rendant ainsi les anciens programmes inutilisables).

Afin de rendre l’observation du bus plus complexe, les adresses sont elles-mêmes chiffrées (ce qui revient à faire une permutation des adresses) et des accès mémoires aléatoires inutiles sont insérés lorsque le microcontrôleur n’utilise pas le bus mémoire.

Le mécanisme de chiffrement associé au dispositif de sécurité logiciel de DS5002FP est présenté dans la figure 2.22.