PROCEDE DE CALCUL D'UNE DONNEE DE CONTROLE DE CLE CRYPTOGRAPHIQUE
L'invention concerne un procédé de calcul d'une donnée de contrôle pour algorithme cryptographique à clé secrète. Une telle donnée de contrôle est essentiellement utilisée dans le cadre de l'algorithme DES (de l'anglais Data Encryption Standard), elle est alors connue sous le terme anglais de « checksum » et consiste à attacher des valeurs spécifiques redondantes à la clé secrète. Le procédé selon l'invention est basé sur le calcul d'une donnée de contrôle à partir d'un message déterminé (connu et préférentiellement constant) . Dans la suite du texte, on utilisera le terme usuel de checksum pour désigner cette donnée de contrôle .
La présente invention concerne plus spécifiquement l'algorithme DES qui est en effet le seul algorithme à clé secrète actuellement connu qui utilise un calcul de checksum, objet de l'invention.
Le DES est un des algorithmes cryptographiques à clé secrète les plus connus et les plus utilisés. Un tel algorithme est dit symétrique car il exploite une unique clé de 64 bits, secrète et réversible pour chiffrer et déchiffrer des données.
Plus spécifiquement, le DES comporte une clé de 64 bits secrets dont 56 sont des bits de chiffrement (et déchiffrement) aléatoires et 8 sont des bits de checksum. En fonctionnement, le DES génère 16 sous-clés de 48 bits à partir des 56 bits aléatoires. Ainsi, dans chacun des 8 octets de la clé du DES, les 7 premiers sont aléatoires et utilisés pour calculer les sous- clés, et le dernier bit fait partie de la checksum. En général, les bits de cette checksum sont des bits de
parité, c'est à dire qu'ils sont calculés par une opération de « ou exclusif » sur les 7 premiers bits de chaque octet .
La checksum est essentiellement utilisée pour protéger la clé du DES contre des attaques mémoires ou DFA (de l'Anglais Differential Fault Attack) qui consistent à modifier un par un les bits de la clé pour tenter de la déterminer. Par exemple, les bits à 1 sont forcés à 0, un par un, et le DES est utilisé avec ces modifications pour chiffrer le même message jusqu'à ce que tous les bits de la clé soient à zéro (le message chiffré est alors constant) . On remonte alors la chaîne des messages chiffrés et on peut ainsi parvenir à déterminer quels étaient les bits à 1 dans la clé initiale.
La checksum permet d'éviter de telles attaques. On peut en effet recalculer régulièrement la checksum (composée classiquement des bits de parité) et détecter ainsi une modification d'un ou plusieurs des bits de la clé.
En revanche, la connaissance de la checksum peut laisser filtrer des informations sur les bits de chiffrement de la clé, en révélant si le nombre de bits à 1 est pair ou impair dans chaque octet . L'objectif de la présente invention est de résoudre cet inconvénient et de proposer un procédé de calcul d'une checksum qui ne divulgue aucune information sur les bits secrets de la clé.
A cette fin, le procédé propose de construire une checksum à partir d'un message déterminé, encodé à l'aide des seuls bits de chiffrement de la clé, et d' intégrer les bits de cette checksum aux bits de chiffrement de la clé pour reconstituer une clé complète. L'algorithme sera ensuite utilisé selon un
fonctionnement classique avec une clé composée des bits de chiffrement aléatoires et de cette checksum construite.
L'invention a plus particulièrement pour objet un procédé de calcul d'une donnée de contrôle d'un algorithme à clé secrète à N bits, dont N-N/n bits aléatoires de chiffrement et N/n bits de donnée de contrôle, caractérisé en ce qu'il comporte les étapes suivantes : - chiffrer un message déterminé de K bits à l'aide des N-N/n bits de chiffrement de la clé, construire une donnée de contrôle en sélectionnant N/n bits parmi les K bits du message chiffré, - intégrer un des N/n bits de ladite donnée de contrôle tous les n-1 bits de chiffrement de la clé de manière à constituer une clé secrète complète de N bits. Selon une caractéristique, le message déterminé est un message constant .
Selon une particularité, les K bits d'entrée du message constant ont la même valeur.
Selon une autre caractéristique, la donnée de contrôle est composée des N/n premiers bits du message chiffré.
Selon une caractéristique, K est égal à N. Selon une application préférentielle, l'algorithme à clé secrète est le DES, ladite clé ayant 64 bits, dont 56 bits de chiffrement et 8 bits de donnée de contrôle .
Selon une caractéristique, l'algorithme à clé secrète étant implémenté dans un composant électronique, la construction de la donnée de contrôle est effectuée une seule fois par clé, lors de la
fabrication du composant électronique ou lors de la première utilisation du composant électronique avec une clé donnée .
Selon une caractéristique, le procédé consiste en outre à vérifier l'intégrité de la clé secrète complète en comparant une donnée de contrôle recalculée, à partir du même message déterminé, avec la donnée de contrôle construite.
Selon une caractéristique, la vérification de la donnée de contrôle est réalisée à chaque mise sous tension du composant électronique.
Selon une autre caractéristique, la vérification de la donnée de contrôle est réalisée avant chaque appel à 1' algorithme. Selon une caractéristique, lorsque la vérification de la donnée de contrôle est erronée, le procédé comporte une fonction de blocage de l'algorithme avec la clé secrète construite et/ou une fonction de blocage du composant électronique . L'invention s'applique à tout support sécurisé, de type carte à puce, ou à tout dispositif de calcul, de type ordinateur muni d'un logiciel de chiffrement, comportant un composant électronique apte à mettre en œuvre le procédé selon l'invention.
Le procédé selon l'invention permet de construire une checksum qui ne révèle aucune information sur la clé secrète à laquelle elle est associée. En effet, la checksum n'est plus du tout liée à la parité des bits de chiffrement de la clé.
En outre, cette checksum ne contenant aucune information sensible, il n'est même pas nécessaire de la masquer.
La sécurité de la clé reste néanmoins assurée puisque la vérification qu'aucune attaque n'a été intentée demeure, en calculant une nouvelle checksum et en la comparant à la checksum initialement construite. Le procédé selon l'invention requiert un premier fonctionnement de l'algorithme avec les seuls bits de chiffrement de la clé, de manière à recalculer la checksum pour vérification, ce qui représente un coût en temps. Cependant, ce coût en temps est compensé par le gain en sécurité qu'apporte le procédé selon 1' invention.
D'autres particularités et avantages de 1 ' invention apparaîtront clairement à la lecture de la description qui est faite ci-après et qui est donnée à titre d'exemple illustratif et non limitatif.
La description fait référence à un algorithme DES à clé secrète de 64 bits. En effet, parmi les algorithmes actuellement connus, seul le DES utilise une checksum pour contrer les attaques mémoires de type DFA. Néanmoins, le procédé selon l'invention pourrait être appliqué à d'autres algorithmes symétriques utilisant des clés secrètes éventuellement plus longues .
L'objet de l'invention est de construire une checksum qui ne révèle aucune information sur les 56 bits de chiffrement de la clé du DES.
A cet effet, un message déterminé M de K bits, c'est à dire non tenu secret, est encodé par les 56 bits de chiffrement du DES. Selon un mode de réalisation préférentiel, on choisit un message M de 64 bits constants, c'est à dire fixés et connus. Selon un mode de réalisation, le message M peut être composé de K bits ayant tous la même valeur, par exemple tous à 0.
Le message chiffré M' en sortie du DES comporte K bits (64 dans l'exemple) qui ne divulguent absolument rien des 56 bits de chiffrement utilisés par l'algorithme.
L'invention consiste alors à sélectionner 8 bits parmi les 64 bits du message chiffré M'. N'importe quels bits peuvent être sélectionnés, mais pour simplifier, on choisit préférentiellement les 8 premiers, c'est à dire le premier octet du texte chiffré M' . Ces 8 bits forment alors la checksum du DES Co.
Les bits de cette checksum construite Co sont ensuite intégrés aux 56 bits de chiffrement aléatoire pour former une clé complète de 64 bits. Chaque bit de la checksum est placé entre les bits de chiffrement tous les 7 bits.
La checksum Co ainsi construite l'est une fois pour toute pour une clé donnée, soit en fin de production lors de la fabrication du composant électronique sur lequel le DES est implémenté, soit lors de la première utilisation dudit composant avec cette clé. Il existe en effet des applications dans lesquelles la clé du DES peut être modifiée, une nouvelle construction de la checksum Co est alors nécessaire . Par la suite, le DES retrouve un fonctionnement classique, c'est à dire qu'il code et décode des messages avec une clé de 64 bits dont 56 sont aléatoires et 8 sont une checksum ne contenant strictement aucune information sur lesdits bits de chiffrement.
Cependant, la protection contre d'éventuelles attaques mémoire de type DFA reste assurée en recalculant une checksum Ci et en la comparant à celle
construite Co, par exemple à chaque mise sous tension du composant, ou avant chaque appel au DES.
La checksum de vérification Ci est calculée avec les 56 bits de chiffrement de la clé à partir du message constant M initial, et déterminée par 8 des bits du message ainsi chiffré M' (on reprend les mêmes bits que pour Co, les premiers par exemple) .
Si une attaque DFA a été intentée et qu'un bit de la clé a été modifié, la checksum Ci calculée avec la clé attaquée à partir du même message constant M initial sera nécessairement différente de celle construite initialement et mémorisée Co . En effet, le DES étant un algorithme non linéaire, de nombreux bits du message chiffré M' seront modifiés par la modification d'un seul bit de la clé et la checksum Ci reconstruite à partir de cette clé attaquée aura certainement des bits différents de Co.
En revanche, si Cι=Co, la clé n'a subi aucune attaque, et elle peut être utilisée en toute tranquillité.
Par contre, si Ci ≠ C0, la clé a subi une attaque. Le procédé selon l'invention comporte alors une fonction de blocage de l'utilisation de l'algorithme de chiffrement/déchiffrement avec cette clé secrète complète construite, et/ou une fonction de blocage de l'utilisation du composant électronique sur lequel le procédé est implanté (par exemple une carte à puce) .