Paramètres du système
Il est nécessaire de disposer d’une technique qui permet d’effectuer des analyses dans le cloud, dans un environnement IoT, sans exposer le texte en clair des données recueillies, peu importe si les données qui se déplacent sur le réseau, sont stockées temporairement ou en permanence dans un ordinateur principal ou en passant par les registres/caches/unités logiques arithmétiques du processeur.
Selon un premier aspect, il est nécessaire d’avoir un élément de calcul pour l’exécution sécurisée des opération sur les données chiffrés. Cet élément peut être un « secure element », possédant au moins un processeur et une mémoire.
Le secure element
Un secure element est un dispositif inviolable qui fournit un environnement de stockage et d’exécution sécurisé. Il assure généralement l’intégrité et la confidentialité de son contenu. Il peut être fourni comme un microcontrôleur indépendant (ex., puces)- souvent offert avec une certification de sécurité comme la FIPS-140 -2 ou Common Criteria- et peut prendre différentes formes, par exemple sous forme d’une carte à puce, où la puce est intégrée dans une carte physique, sous la forme d’une UICC (Universal Integrated Circuit Card) ou d’une carte SIM et sou forme d’une carte à puce SD, où la puce est intégrée sur une carte SD. Les secures elements peuvent également être fournis en tant que secure element embarqué, où la puce est liée directement une carte mère. Un secure element, héberge une ou plusieurs applications, communément appelées on-card-applications, qui peuvent interagir avec les applications off-card-applications, fourni sur l’hôte du secure element à travers une API (application programming interface). Contrairement au processeur, le secure element peut être assez simple et dédié aux tâches spécialisées afin qu’il soit possible d’obtenir une certification en démontrant qu’il ne peut pas être attaqué en interne ou par les méthodes connues de canaux cachés.
Ainsi, les données sont déchiffrés dans le secure element, dans lequel les opérations sur des données clairs seront effectuées, après avoir déchiffrés les textes chiff Le secure element va ensuite chiffrer les résultats pour les retourner au Cloud. De cette façon, on s’assure que les données déchiffrées ne sont jamais exposées en dehors de l’environnement sécurisé, fournie par le secure element. les données ne sont pas visibles par la machine de stockage et de traitement et, par conséquent, elle sont sécurisées même en cas d’atteinte à la sécurité de l’ordinateur.
Le secure element de l’unité de calcul peut fournir ainsi une API, qui peut être utilisée par l’unité de calcul pour interagir avec le secure element, tel que c’est décrit ici, par exemple, pour transmettre les données chiffrées (données individuelles ou plusieurs données) au secure element, et lui demander de dé-chiffrer ces données et effectuer en interne l’opération demandée sur les données déchiffrées, le secure element renvoi ainsi le résultat après l’avoir chiffré.
Le capteur
Le capteur qui collecte les données chiffrées dans l’environnement IoT peut être un capteur intelligent, par exemple, un capteur qui comprend des res-sources intégrées permettant d’exécuter des fonctions prédéfinies, par exemple, les fonctions de traitement du signal ou les fonctions de chiffrement, avant de transmettre les données détectées à un récepteur. Les données collectées par le capteur intelligent peuvent être chiffrées par le capteur lui-même et transmises l’unité de calcul en conséquence. Si le capteur n’est pas un capteur intelli-gent, il ne peut détecter que des données environnementales, dans lesquelles les données détectées sont traitées et chiffrées par une unité de traitement qui est connectée au capteur. Les données chiffrées peuvent ensuite être transmises de l’unité de traitement à l’unité de calcul. Dans une variante spécifique, l’unité de traitement peut être l’unité de calcul elle-même, de sorte que le l’unité de calcul soit un capteur intelligent.
Les opérations
Les opérations demandées par l’unité de calcul peuvent faire partie d’un calcul analytique effectué dans l’environnement IoT. Dans les calculs analy-tiques, les opérations mathématiques peuvent typiquement être effectuées sur les données collectées par le capteur. Ainsi, l’opération demandée peut être une opération mathématique, telle qu’une simple opération arithmétique (ex., addition, multiplication, etc.). Avant de retourner le résultat de l’opération à l’unité calcul, le secure element peut chiffrer ce résultat pour que l’unité de calcul obtienne un résultat sous forme chiffrée.
Dans un autre type de demande au secure element, l’opération demandée peut être une opération de comparaison entre deux ou plusieurs données chif-frées. L’opération de comparaison peut comprendre des opérations telles que « égal à », « inférieur à », « supérieur à ». Les parties comparées des données chif-frées peuvent comprendre, par exemple, une première partie qui a été obtenue partir d’un premier capteur et une seconde partie qui a été obtenu à partir d’un deuxième capteur, ou bien la première et la deuxième partie peuvent avoir été reçue ultérieurement du même capteur. Le résultat de la comparaison peut être retourné à partir du secure element sans qu’il soit nécessaire d’appliquer un chiff t supplémentaire, de sorte que l’unité de calcul obtienne le résul-tat de l’opération de comparaison sous forme non chiffrée, en particulier sous forme de valeur booléenne non chiffrée. Bien que le retour de données non chif-frées puisse être considéré comme une fuite possible d’informations dans le cas d’une attaque, il peut parfois être utile d’avoir au moins un processeur dans l’unité de calcul pour effectuer des branchements conditionnels basés sur un résultat booléen non chiffré d’une comparaison. Dans ce cas, il peut être utile que l’API du secure element propose de travailler avec des opérateurs mathé-matiques chiffrés pour que le renvoi d’un texte clair booléen ne donnent pas beaucoup d’informations sur les opérandes des opérateurs.
L’unité de calcul
Il est donc évident que l’unité de calcul décrite ici doit être en mesure d’ef-fectuer des opérations sur les données chiffrées sans jamais avoir accès au texte en clair des données chiffrées. L’unité de calcul peut être, par exemple, un capteur intelligent, un commutateur, une passerelle ou un autre nœud du réseau. Alternativement, l’unité de calcul peut être physique ou virtuelle fourni dans le cloud. L’utilisation d’une ou de plusieurs unités de calcul de ce type permet éventuellement de fournir un chiffrement de bout en bout dans l’IoT et permet de chiffrer les données dans ou en dehors du capteur, ainsi que d’analyser des données dans le edge analytics (l’analytique en périphérie de réseau) ou dans le cloud analytics sans exposer le texte en clair à aucun moment. Une fois les don-nées sont chiffrées à proximité de l’objet, toutes erreurs liées au facteur humain (mauvaise configuration des paramètres de sécurité, corruption d’individus, etc.) peuvent être évitées.
Les protocoles
La comparaison des données chiffrées
Dans le cas de l’opération de comparaison, l’unité de calcul peut être capable d’envoyer des alertes et/ou de contrôler les flux de programme vu que le résultat d’une opération de comparaison peut être visible par cet unité de calcul (seul le résultat peut être visible, et pas les données comparées elles-mêmes). En outre, au moins une mémoire de l’unité de calcul peut donc contenir des instructions exécutables par un processeur de telle sorte que l’unité de calcul puisse être utilisée pour déclencher une alerte en fonction du résultat de l’opération. Dans une requête d’API fournie par le secure element, l’opération peut être une opé-ration de comparaison chiffrée. Prenons l’exemple suivant, 6537298 peut être le chiffrement du » égal à » et 22223333 peut être le chiffrement de l’opérateur « moins de », et ainsi de suite. En raison d’un facteur aléatoire dans le schéma de chiffrement utilisé, le même opérateur de comparaison est chiffré sous diffé-rent textes chiffrés avec le même algorithme. Dans ce cas, on ne peut ni savoir quel type de comparaison est effectué ni sur quelles données la comparaison est effectuée.
Les différents schémas de chiffrement
En général, les données chiffrées obtenues par l’unité de calcul peuvent être chiffrées avec un algorithme de chiffrement homomorphe ou non homomorphe. Les schémas de chiffrement non homomorphes peuvent être des cryptosystèmes symétriques bien connus avec une seule clé de chiffrement/déchiffrement, telles que l’AES [46 ], ou des algorithmes asymétriques avec une clé secrète et une clé publique, tels que le RSA [40], par exemple. Les schémas de chiffrement homomorphes sont connus depuis la thèse de doctorat de Craig Gentry « A Fully Homomorphic Encryption Scheme » de septembre 2009. Le chiffrement homomorphe est une forme de chiffrement qui permet d’effectuer des calculs directement sur les textes chiffrés. Un calcul homomorphe d’une opération (ex., addition, multiplication, etc.) effectuée sur des données chiffrées génère un ré-sultat chiffré qui, une fois déchiffré, correspond au résultat de la même opération effectuée sur le texte en clair des données chiffrées. Lorsque les additions et les multiplications peuvent être effectuées sur les textes chiffrés, le schéma de chif-frement est qualifié de Fully Homomorphic Encryption (FHE) (chiffrement com-plètement homomorphe). Toutes les opérations mathématiques peuvent alors être dérivées des opérateurs d’addition et de multiplication.
Le chiffrement homomorphe
L’application du chiffrement homomorphe nécessite généralement d’impor-tantes ressources de traitement (en particulier, de la vitesse de traitement, de grandes ressources mémoire, et, par conséquent, la vitesse du réseau) qui peuvent seulement exister dans les environnements de cloud, même pour des opérations simples. Ainsi, si les données sont chiffrées avec un schéma de chif-frement homomorphe, les calculs homomorphes nécessitant d’importantes res-sources peuvent être évités ou accélérés par l’application des mesures décrites ci-dessus : Il s’agit d’une technique d’exécution d’opérations sur les données chiffrées par l’intermédiaire du secure element fixé à l’unité de calcul (qui peut être intégré à l’unité de calcul, ou distant). Cela peut être particulièrement ap – pliqué dans le cas du rafraîchissement des textes chiffrés. Le rafraîchissement (Bootstrapping) fait partie du schéma de Gentry dans lequel il est possible de calculer un nombre arbitraire d’additions et de multiplications en rafraîchissant le texte chiffré périodiquement chaque fois que le bruit devient trop grand pour permettre un déchiffrement correcte. Dans ces cas, chaque calcul de rafraîchis-sement homomorphe peut être remplacé par un simple déchiffrement suivi d’un nouveau chiffrement des données dans le secure element. De plus, dans le cas d’une opération de comparaison, il est évident que même si le résultat d’une comparaison peut être calculé en cryptographie homomorphe – le résultat de la comparaison (p. ex. résultat booléen) est toujours chiffré, donc ce résultat ne peut pas être utilisé pour déclencher des alertes et/ou faire des branchements conditionnels. De telles mesures peuvent être réalisées par la technique décrite ci-dessus en effectuant les opérations dans le secure element.
La gestion des clés de chiffrement
Afin de déchiff et rechiffrer les données dans les schémas homomorphes et non homomorphes, le secure element peut stocker une clé de déchiffrement et une clé de chiffrement. Ces clés peuvent être fournies au secure element par l’unité de calcul lors de la mise en service ou pendant le processus de démarrage, par exemple, à l’aide d’un algorithme standard de distribution de clés, tel que les schémas de chiffrement asymétrique ou l’algorithm e Diffie-Hellman.
Quelques contre-mesures nécessaires
Dans d’autres implémentations, en particulier lorsque les données sont chif-frées par des cryptosystèmes déterministes, certaines mesures peuvent être prises afin d’empêcher de deviner les valeurs en clair des données chiffrées. Pour cela la valeur d’un texte clair peut être complétée par une ou plusieurs valeurs de rembourrage aléatoire avant de générer le texte chiffré, c’est-à-dire avant que la donnée ne soit réellement chiffrée. De cette façon, il est possible d’éviter que le chiffrement de numéros (tels que 0, 1, 2, ect.) puisse être deviné par un at-taquant en se basant sur des calculs comme « x − x » ou « y /y » dans le secure element. Dans le même but, le secure element peut être configuré pour rejeter, ou pour ignorer silencieusement l’opération et marquer le résultat comme inva-lide, si l’opération demandée est prédéfinie comme une opération qui permet de deviner le texte clair d’une donnée chiffrée (ex., « x − x » ou « y /y « ).
