FR 3060809 A1 20180622 FR 1662859 A 20161220 1 MÉTHODE DE CHIFFREMENT PAR CALCUL MASSIVEMENT PARALLÈLE DESCRIPTION DOMAINE TECHNIQUE La présente invention concerne de manière générale le domaine de la cryptographie et plus particulièrement celui des méthodes de chiffrement résistant aux attaques physiques. ÉTAT DE LA TECHNIQUE ANTÉRIEURE Les méthodes de chiffrement permettent de protéger des données dans les systèmes électroniques, informatiques ou de télécommunication. On distingue classiquement deux types de systèmes cryptographiques, les systèmes symétriques où une même clé privée est utilisée pour le chiffrement et le déchiffrement, et les systèmes asymétriques utilisant un couple de clés distinctes, une clé privée étant utilisée pour le déchiffrement (ou la signature) et une clé publique pour le chiffrement (ou la vérification de signature). Parmi les méthodes de chiffrement symétriques, on distingue les méthodes de chiffrement par blocs et les méthodes de chiffrement par flot. Dans une méthode de chiffrement par blocs, le message à chiffrer est découpé en blocs et ces blocs sont chiffrés de manière indépendante ou chainée, généralement les uns après les autres. Dans les méthodes de chiffrement par flot, le message est en revanche chiffré en continu par un flot de clé (key stream). Un critère essentiel de qualité d'une méthode de chiffrement est sa robustesse aux techniques de cryptanalyse, c'est-à-dire à l'ensemble des techniques auxquelles un attaquant peut recourir pour retrouver les données en clair sans posséder la clé de chiffrement. On distingue la cryptanalyse classique (ou théorique) et la cryptanalyse par attaques physiques. La cryptanalyse classique consiste à observer des données chiffrées et 3060809 2 à essayer de remonter par une analyse différentielle ou algébrique aux données en clair. Les attaques physiques sont l'ensemble des techniques exploitant le fonctionnement du circuit de chiffrement pour remonter aux données en clair. A la différence de la cryptanalyse classique, les attaques physiques ne visent pas à attaquer l'algorithme de 5 chiffrement en soi mais son implémentation logicielle ou matérielle. Les attaques physiques peuvent être matérielles ou logicielles (cheval de Troie par exemple). On distingue généralement deux grandes familles d'attaques physiques matérielles, à savoir les attaques par observation (ou par canaux auxiliaires) et les attaques par injection de fautes. Les attaques par observation ou SCA (Sicle Channel Analysis) se 10 fondent sur l'observation du circuit pendant l'exécution des calculs liés au chiffrement. Cette observation se traduit en pratique par des mesures physiques (consommation de courant, trace électromagnétique, temps de calcul, etc.). Les attaques par injection de fautes ou FIA (Fouit Injection Attack) exploitent l'effet d'une perturbation intentionnelle sur le fonctionnement du circuit, notamment pour détourner des protections ou réduire la 15 complexité mathématique du déchiffrement. Le brevet US-B-7 500 112 décrit une méthode de chiffrement utilisant au moins deux processeurs, à savoir un CPU et au moins un coprocesseur, permettant de protéger le calcul cryptographique contre des attaques par canaux cachés et plus particulièrement contre une attaque par analyse différentielle de consommation ou DPA (Differential Power 20 Analysis). Plus précisément, pendant que l'un des deux processeurs opère sur les données utiles à chiffrer, l'autre opère sur des données leurres. L'allocation des données utiles à chiffrer et des données leurres est effectuée de manière pseudo-aléatoire entre les deux processeurs, et le flux chiffré est reconstitué en ne conservant que les données utiles. Il est ainsi possible de noyer la trace électromagnétique et/ou la trace de consommation de 25 courant dans le bruit produit par le chiffrement des données leurres. Cette méthode de chiffrement présente une bonne robustesse aux attaques par DPA mais reste néanmoins vulnérable à des attaques telles que la CPA (Correlation Power Analysis). Cette dernière permet, grâce à la corrélation avec un modèle de consommation, de différencier dans les traces de consommation 3060809 3 Le but de la présente invention est par conséquent de proposer un système/ une méthode de chiffrement qui soit plus robuste aux attaques par canaux auxiliaires, et plus particulièrement aux attaques par CPA, que les systèmes/ méthodes de chiffrement de l'état de la technique. 5 EXPOSÉ DE L'INVENTION La présente invention est définie par un système de chiffrement d'un message au moyen d'une clé de chiffrement, ledit système comprenant un module de contrôle et une pluralité de processeurs identiques opérant en parallèle, dans lequel : 10 - le module de contrôle alloue à chaque intervalle de temps et à chaque processeur : - soit un bloc de données dudit message, dit bloc de données utiles, ainsi qu'une clé de chiffrement élémentaire obtenue à partir de ladite clé de chiffrement, pour chiffrer ledit bloc de données utiles ; 15 - soit un bloc de données leurres de même taille que le bloc utile ainsi qu'une clé de chiffrement leurre, pour chiffrer le bloc de données leurres ; le module de contrôle allouant au plus un bloc de données utiles et une clé de chiffrement élémentaire par intervalle de temps ; - les processeurs sont cadencés par une même horloge et sont initialisés par le 20 module de contrôle en un même instant, les processeurs exécutant à chaque instant des instructions identiques, aux données et aux clés de chiffrement près. Avantageusement, le module de contrôle divise le message en blocs de données utiles et génère les blocs de données leurres de manière aléatoire, les blocs de données utiles et les blocs de données leurres étant transmis aux processeurs auxquels ils sont 25 alloués. En outre, le module de contrôle génère les clés de chiffrement élémentaires à partir de la clé de chiffrement et génère les clés de chiffrement leurres de manière pseudoaléatoire, les clés de chiffrement élémentaires et les clés de chiffrement leurre étant transmis aux processeurs auxquels elles sont allouées. 3060809 4 Selon un premier exemple de réalisation, le chiffrement est réalisé par flot de clé et que les clés élémentaires sont obtenues comme des portions consécutives de la clé de chiffrement. Selon un second exemple de réalisation, le chiffrement est un chiffrement AES et 5 que les clés élémentaires sont des clés chaînées ou identiques. Le système de chiffrement peut être implémenté sous la forme d'une carte graphique ou d'un circuit intégré graphique de type GP-GPU. Alternativement, il peut être implémenté sous la forme d'un réseau de processeurs de type MPPA. 10 L'invention concerne également une méthode de chiffrement d'un message au moyen d'une clé de chiffrement, ladite méthode mettant en oeuvre une pluralité de processeurs identiques opérant en parallèle, dans laquelle : - on alloue à chaque intervalle de temps et à chaque processeur : - soit un bloc de données dudit message, dit bloc de données 15 utiles, ainsi qu'une clé de chiffrement élémentaire obtenue à partir de ladite clé de chiffrement, pour chiffrer ledit bloc de données utiles ; - soit un bloc de données leurres de même taille que le bloc utile ainsi qu'une clé de chiffrement leurre, pour chiffrer le bloc de données leurres ; au plus un bloc de données utiles et une clé de chiffrement élémentaire étant 20 alloués par intervalle de temps ; - on cadence les processeurs par une même horloge et on initialise les processeurs en un même instant, lesdits processeurs exécutant à chaque instant des instructions identiques, aux données et aux clés de chiffrement près. Avantageusement, on divise le message en blocs de données utiles et l'on génère 25 les blocs de données leurres de manière aléatoire, les blocs de données utiles et les blocs de données leurres étant transmis aux processeurs auxquels ils sont alloués. En outre, on génère les clés de chiffrement élémentaires à partir de la clé de chiffrement et l'on génère les clés de chiffrement leurres de manière pseudo-aléatoire, les clés de chiffrement élémentaires et les clés de chiffrement leurres étant transmises aux 3 0 processeurs auxquels elles sont allouées. 3060809 5 BRÈVE DESCRIPTION DES DESSINS D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture d'un mode de réalisation préférentiel de l'invention, fait en référence aux figures jointes parmi lesquelles : 5 La Fig. 1 représente schématiquement l'architecture d'un système de chiffrement selon un mode de réalisation de l'invention ; La Fig. 2A représente schématiquement une première variante de chronogramme des opérations de chiffrement réalisées par les différents processeurs de la Fig. 1; La Fig. 2B représente schématiquement une seconde variante de chronogramme 10 des opérations de chiffrement réalisées par les différents processeurs de la Fig. 1; La Fig. 3 représente un exemple de traces de consommation en courant de deux processeurs de la Fig. 1. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS 15 L'idée à la base de l'invention est d'utiliser un système de chiffrement comprenant une pluralité de processeurs identiques. Par identique, on entend que ces processeurs ont la même architecture matérielle et que le logiciel stocké dans ces processeurs est identique. Tous les processeurs sont cadencés par une seule et même horloge et les calculs cryptographiques exécutés par ces processeurs démarrent au même instant, de sorte qu'à 20 un instant donné deux processeurs quelconques de ladite pluralité exécutent la même instruction, à la différence éventuelle près des données à chiffrer et de la clé de chiffrement sur laquelle elle porte. Toutefois, en un instant donné, un processeur au plus opère sur des données utiles, les autres processeurs opérant sur des données leurres. Le fait que les instructions soient identiques (à la seule différence près de la clé de chiffrement et des 25 données à chiffrer sur lesquelles ces instructions portent) et que celles-ci soient exécutées de manière strictement simultanée rend une attaque par CPA particulièrement difficile. La Fig. 1 représente de manière schématique l'architecture d'un système de chiffrement selon un mode de réalisation de l'invention. 3060809 6 Ce système de chiffrement comprend un module de contrôle, 100, noté MP, par exemple un processeur maître. Il comprend en outre une pluralité N (N 2) de processeurs identiques, 110, notés PU,,...,PUN, agissant comme processeurs esclaves. 5 Ces processeurs peuvent être par exemple des processeurs génériques contenant dans leur mémoire ROM le même logiciel de chiffrement ou des circuits logiques programmables de type FGPA, programmés pour exécuter un même algorithme de chiffrement, ou des unités de calcul présentes dans un GPU (Graphic& Processing Unit) comme expliqué plus loin. 10 Chaque processeur PU,, dispose de sa propre mémoire locale, désignée par MEM,,. Autrement dit, les mémoires MEM, des processeurs PU,, sont non partagées. Ces mémoires stockent les données à chiffrer (utiles ou leurres) et les clés de chiffrement. Les processeurs PU'..., PU, sont reliés par un bus ou plusieurs bus au module de contrôle 100. Ils sont cadencés par une même horloge CLK et sont initialisés par un 15 même signal de synchronisation sync. Ce signal peut être un signal physique voire un message transmis par le module de contrôle. Le module de contrôle MP peut être un processeur de même type que les processeurs PU'..., PU, ou bien un processeur spécifique. Le module de contrôle MP a pour rôle de transmettre aux processeurs les données à chiffrer et les clés de chiffrement. 20 Plus précisément, il alloue de manière pseudo-aléatoire les données utiles à l'un des processeurs et des données leurres aux autres. Il convient de noter que cette allocation peut être effectuée de manière dynamique, par intervalle de temps. Autrement dit, à chaque intervalle de temps, le module de contrôle MP peut modifier l'allocation et charger un processeur différent du 25 chiffrement des données utiles. Selon une variante particulière, le module de contrôle peut, pendant certains intervalles de temps, n'allouer aux processeurs que des données leurres et pas de données utiles. Enfin, le module de contrôle est chargé de récupérer les données chiffrées par les processeurs PU,, n = 1, , N , d'éliminer les données leurres (chiffrées) et de reconstituer 3060809 7 le flux de données utiles chiffrées. Ce traitement peut être effectué à la fin de chaque intervalle de temps ou bien au terme du processus de chiffrement. La Fig. 2A représente schématiquement une première variante de chronogramme 5 des opérations de chiffrement réalisées par les différents processeurs de la Fig. 1. On suppose que l'on ait à chiffrer un message Mi, dit message utile, constitué par des données à chiffrer (données utiles). Ce message peut être divisé en bloc successifs notés MiBk où k =1,...,K est un indice temporel. Le message utile est noyé au sein d'une pluralité N de messages, Ali, j=1,...,N, les N-1 messages Ali, j # i, étant constitués 10 de données leurres et, pour cette raison, dénommés messages leurres. Les messages leurres, M., , j # i, sont également divisés en blocs successifs, MfBk , de même taille que les blocs M.Bk . A chaque intervalle de temps k, le module de contrôle alloue les blocs de données MfBk , j #1,...,N, aux processeurs PUn, n 1, N et leur transmet des clés de 15 chiffrement pour chiffrer respectivement ces blocs, soit . Le chiffrement peut être un chiffrement symétrique par flot. Dans ce cas, les clés de chiffrement çài,k constituent un flot de clé sà, {çà , . Alternativement, le chiffrement réalisé par le système de chiffrement peut être par exemple un chiffrement symétrique par blocs comme le chiffrement AES. Dans ce cas, 20 les clés de chiffrement n k sont des clés qui peuvent être toutes identiques ou bien chaînées suivant le mode d'opération envisagé. Quel que soit le type de chiffrement, les clés SZj k sont des clés de chiffrement leurres, générées par exemple de manière pseudo-aléatoire par le module de contrôle. 25 Selon une variante, l'ensemble des clés ni j =1,...,N , k =1,...,K peuvent avoir été stockées dans les différentes mémoires MEM n, n N à l'initialisation du processus de chiffrement. 3060809 8 De manière similaire, tous les blocs MJBk , j =1,...,N , k = 1,...,K , peuvent avoir été chargés dans les mémoires MEM n, n =1,...,N , lors de l'étape d'initialisation du processus de chiffrement. Dans ce cas, seuls les indices de message j =1,...,N sont alors communiqués à chaque intervalle de temps aux différents processeurs, chaque processeur 5 utilisant un compteur pour incrémenter l'indice k à chaque intervalle de temps. Quelle que soit la variante envisagée, le module de contrôle effectue l'allocation des blocs de données/ des indices de message de manière pseudo-aléatoire, accroissant ainsi la dispersion spatiale du chiffrement du message utile Mi . On désigne dans la suite par CF une opération de chiffrement. Ainsi, pendant 10 l'intervalle de temps k, le processeur n s'étant vu allouer un bloc de données MJBk et une clé de chiffrement n, k effectue l'opération de chiffrement CF (M,Bk,Sjk) . Les instructions effectuées par les différents processeurs pour réaliser cette opération pendant l'intervalle de temps k sont strictement synchronisées et ne diffèrent que par les données MJBk et les clés n, k auxquelles elles s'appliquent. 15 Ainsi, sur l'exemple représenté en Fig. 2A, les blocs de données utiles ont été représentés en blanc et les blocs de données leurres ont été représentés en grisé. Les blocs successifs du message utile Mi sont chiffrés par le processeur PU2 lors de l'intervalle de temps k =1 , le processeur PU, lors de l'intervalle de temps k = 2, le processeur PU3 lors de l'intervalle de temps k = 3, etc. 20 Le module de contrôle récupère les données chiffrées au terme de chaque intervalle de chiffrement ou bien au terme du processus de chiffrement. La totalité du processus de chiffrement dure KT où T est la durée d'un intervalle de temps. Les données utiles chiffrées sont extraites des données chiffrées CF (M JBk, çà ik) pour reconstituer les données utiles chiffrées CF (M iBk , , k = K . 25 La Fig. 2B représente schématiquement une seconde variante des opérations de chiffrement réalisées par les différents processeurs de la Fig. 1. 3060809 9 Dans cette variante, à la différence de la première, le module de contrôle n'alloue pas nécessairement à chaque intervalle de temps k un bloc du message utile Mi à l'un des processeurs PUn, n =1,..., N . Autrement dit, si l'on désigne par MfBk , k=1,...,K les blocs du message utile Mi, le chiffrement complet de ce message s'effectue sur une durée 5 QT > KT . Ainsi, les blocs du message utile, M.Bk, k=1,...,K , sont distribués de manière pseudo-aléatoire, non seulement spatialement, entre les différents processeurs mais aussi temporellement entre les différents intervalles de temps. L'allocation respecte toutefois l'ordre des blocs et alloue au plus un de ces blocs par intervalle de temps à l'un des processeurs. En d'autres termes, si l'on se place à l'intervalle de temps q et que le bloc de 10 message utile MiBk est le dernier bloc à avoir été alloué, le processeur maître peut soit allouer le bloc M Bk_ri à l'un des processeurs PUn, n = 1,...,N soit n'allouer que des blocs de messages leurres aux processeurs en question. Sur l'exemple représenté en Fig. 2B, les blocs de données utiles ont été représentés en blanc et les blocs de données leurres ont été représentés en grisé. 15 Le processeur PU2 chiffre le premier bloc de données utiles, MiBi, lors de l'intervalle de temps k =1. Les processeurs ne chiffrent que des blocs de données leurres lors de l'intervalle de temps k = 2. Le processeur PU3 chiffre le second bloc de données utiles, MiB2 lors de l'intervalle de temps k = 3, etc. 20 La Fig. 3 représente un exemple de traces du courant consommé au cours du temps par deux processeurs de la Fig. 1. Il convient de noter que des traces d'intensité de rayonnement électromagnétique des différents processeurs pourraient être alternativement utilisées. Les traces 310 et 320 correspondent respectivement à la consommation en 25 courant au cours d'un intervalle de temps T de deux processeurs, la trace 310 correspondant au chiffrement AES d'un bloc de données utiles et la trace 320 au chiffrement de données leurres. 3060809 10 On remarque que ces traces sont parfaitement superposables sur l'axe temporel. La seule différence apparaissant en 330 provient du fait que les données à chiffrer ainsi que les clés de chiffrement sont différentes. En effet, des instructions identiques (aux clés de chiffrement et données près) sont 5 exécutées de manière synchronisées par les différents processeurs. Ces instructions étant identiques, démarrant au même instant de début et se terminant au même instant de fin, on comprend que leurs traces temporelles sont quasi-identiques. Une corrélation entre les différentes traces ne permettra donc pas de discriminer les différentes étapes de calcul et donc de discriminer la consommation induite par le calcul sur les données sensibles de la 10 consommation induite par le calcul sur les données leurres. Le système de chiffrement peut être implémenté au moyen d'une carte graphique ou d'un circuit intégré graphique, de type GP-GPU (General Purpose computing on Graphics Processing Units). Une telle implémentation permet de faire effectuer par une carte 15 graphique ou un circuit intégré graphique des calculs lourds qui traditionnellement étaient réalisés par un CPU, en bénéficiant de leur architecture massivement parallèle. Plusieurs bibliothèques de programmation GP-GPU sont disponibles pour exécuter ces calculs en ignorant les primitives graphiques sous-jacentes, notamment le langage OpenCL. Le langage OpenCL distingue le processeur central CPU (c'est-à-dire le processeur 20 maître MP dans le cas du système de chiffrement exposé précédemment) et les processeurs périphériques chargés des calculs intensifs (dans notre cas, les processeurs PUn, n = N , chargés dans des opérations de chiffrement). Le langage OpenCL permet de tirer parti de l'architecture parallèle sous deux formes : SPMD (Single Program Multiple Data) et SIMD (Single Instruction Multiple Data). Le parallélisme des tâches et des 25 instructions garantit une superposition temporelle parfaite entre les instructions exécutées par les différents processeurs. Plus précisément, les différents blocs de messages Mi/3k (données utiles ou données leurres) sont considérés comme des « work item » regroupés dans des « work-group », mappés dans des processeurs dans le langage OpenCL. Chaque « work-group » exécute une même opération cryptographique sur des données (MJBk ) et 3060809 11 des clés nik) différentes. Ce type d'implémentation offre en outre l'avantage d'interdire l'accès à un attaquant aux mémoires internes des différents processeurs contenant des informations sensibles. Le système de chiffrement selon la présente invention peut alternativement être 5 implémenté à l'aide d'un réseau de processeurs massivement parallèle ou MPPA (Massively Parallel Processor Array). Un tel réseau est un circuit intégré comportant plusieurs centaines à plusieurs milliers de processeurs (ou coeurs) opérant en parallèle. Un coeur dédié (coeur de groupe) voire un processeur extérieur joue le rôle de module de contrôle. Il dispose du message Mi des données utiles et d'une clé R de chiffrement 10 (composée des clés nik). En outre, il génère les N -1 messages leurres M1, j -1,...,N , j i . Il divise le message utile M1, j N en blocs MJBk et les alloue à différents coeurs au cours du temps. Le coeur de groupe envoie une interruption aux différents coeurs pour effectuer une opération de chiffrement. Chaque coeur passe alors en mode non interruptible et effectue l'opération en question sur le bloc et avec la clé qui lui ont été 15 préalablement fournis par le coeur de groupe. Chaque coeur signale la fin de son calcul et repasse en mode interruptible. Le coeur de groupe peut alors à nouveau envoyer une interruption aux différents coeurs pour lancer une nouvelle opération de chiffrement. REVENDICATIONS1. Système de chiffrement d'un message au moyen d'une clé de chiffrement, ledit système comprenant un module de contrôle et une pluralité de processeurs identiques opérant en parallèle, caractérisé en ce que : - le module de contrôle alloue à chaque intervalle de temps et à chaque processeur : - soit un bloc de données dudit message, dit bloc de données utiles, ainsi qu'une clé de chiffrement élémentaire obtenue à partir de ladite clé de chiffrement, pour chiffrer ledit bloc de données utiles ; - soit un bloc de données leurres de même taille que le bloc utile ainsi qu'une clé de chiffrement leurre, pour chiffrer le bloc de données leurres ; le module de contrôle allouant au plus un bloc de données utiles et une clé de chiffrement élémentaire par intervalle de temps ; - les processeurs sont cadencés par une même horloge et sont initialisés par le module de contrôle en un même instant, les processeurs exécutant à chaque instant des instructions identiques, aux données et aux clés de chiffrement près. 2. Système de chiffrement selon la revendication 1, caractérisé en ce que le module de contrôle divise le message en blocs de données utiles et génère les blocs de données leurres de manière aléatoire, les blocs de données utiles et les blocs de données leurres étant transmis aux processeurs auxquels ils sont alloués. 3. Système de chiffrement selon la revendication 1 ou 2, caractérisée en ce que le module de contrôle génère les clés de chiffrement élémentaires à partir de la clé de chiffrement et génère les clés de chiffrement leurres de manière pseudo-aléatoire, les clés de chiffrement élémentaires et les clés de chiffrement leurre étant transmis aux processeurs auxquels elles sont allouées. 3060809 13 4. Système de chiffrement selon la revendication 3, caractérisé en ce que le chiffrement est réalisé par flot de clé et que les clés élémentaires sont obtenues comme des portions consécutives de la clé de chiffrement. 5 5. Système de chiffrement selon la revendication 3, caractérisé en ce que le chiffrement est un chiffrement AES et que les clés élémentaires sont des clés chaînées ou identiques. 6. Système de chiffrement selon l'une des revendications précédentes, caractérisé 10 en ce qu'il est implémenté sous la forme d'une carte graphique ou d'un circuit intégré graphique de type GP-GPU. 7. Système de chiffrement selon l'une des revendications 1 à 5, caractérisée en ce qu'il est implémenté sous la forme d'un réseau de processeurs de type MPPA. 15 8. Méthode de chiffrement d'un message au moyen d'une clé de chiffrement, ladite méthode mettant en oeuvre une pluralité de processeurs identiques opérant en parallèle, caractérisée en ce que : - on alloue à chaque intervalle de temps et à chaque processeur : 20 - soit un bloc de données dudit message, dit bloc de données utiles, ainsi qu'une clé de chiffrement élémentaire obtenue à partir de ladite clé de chiffrement, pour chiffrer ledit bloc de données utiles ; - soit un bloc de données leurres de même taille que le bloc utile ainsi qu'une clé de chiffrement leurre, pour chiffrer le bloc de données leurres ; 25 au plus un bloc de données utiles et une clé de chiffrement élémentaire étant alloués par intervalle de temps ; - on cadence les processeurs par une même horloge et on initialise les processeurs en un même instant, lesdits processeurs exécutant à chaque instant des instructions identiques, aux données et aux clés de chiffrement près. 30 3060809 14 9. Méthode de chiffrement selon la revendication 8, caractérisée en ce que l'on divise le message en blocs de données utiles et l'on génère les blocs de données leurres de manière aléatoire, les blocs de données utiles et les blocs de données leurres étant transmis aux processeurs auxquels ils sont alloués. 5 10. Méthode de chiffrement selon la revendication 8 ou 9, caractérisée en ce que l'on génère les clés de chiffrement élémentaires à partir de la clé de chiffrement et l'on génère les clés de chiffrement leurres de manière pseudo-aléatoire, les clés de chiffrement élémentaires et les clés de chiffrement leurres étant transmises aux processeurs auxquels 10 elles sont allouées.