Brevet FR2810480A1 — publié le 20011221

Traitement de données avec une clé La présente invention concerne de manière générale tout moyen électronique de traitement de données dans lequel des données doivent être traitées au moyen d'une clé secrète. Par exemple, le traitement de données concerne un chiffrement des données selon un algorithme de chiffrement prédéterminé. Les données sont ffrées bloc par bloc. Pour chaque bloc de données, la clé secrète constitue la clé de chiffrement et est appliquée avec le bloc de données à l'algorithme pour produire des données chiffrées. Le moyen de traitement de données, en général un microcontrôleur, par exemple inclus dans un terminal ou dans une carte à puce, contient une mémoire morte dans laquelle la clé du chiffrement est pré-mémorisée lors de la fabrication du moyen de traitement. Pour prendre connaissance des données qui sont chiffrées, il est connu, qu'un attaquant, une personne malintentionnée, cherche à lire la clé de chiffrement dans le moyen de traitement, ou bien à effectuer une analyse de la consommation électrique en connectant un appareil de mesure de tension à l'interface électrique entre le moyen de traitement et le monde extérieur, ou bien au niveau d'un bus interne au moyen de traitement lorsqu'il est accessible. De manière à se préserver contre une telle attaque, il est connu d'appliquer un premier nombre aléatoire et la clé de chiffrement à une fonction logique prédéterminée pour produire une clé de traitement afin d'exécuter l'algorithme de chiffrement avec cette clé de traitement. Ainsi, chaque fois qu'un bloc de données est à chiffrer, un premier nombre aléatoire est généré et, une ' de chiffrement est produite différente des cles de chiffrement pour les chiffrements précédents.. Ce procédé de chiffrement rend beaucoup plus difficile la recherche de la clé de chiffrement un attaquant, puisque la clé de traitement utilisée à chaque chiffrement est par nature aléatoire. Toutefois, ce procédé connu maintient ou manipule en clair la clé de chiffrement dans la mémoire du moyen de traitement. L'objectif de l'invention est de remédier à la vulnérabilité de la clé secrète dans le moyen de traitement de données afin de la rendre inaccessible. A cette fin, un procédé pour traiter des données avec une première clé dans un moyen de traitement de données est caractérisé en ce qu'il comprend préalablement et une fois pour tous les traitements données, une application d'une clé secrète et d'un premier nombre aléatoire à une première fonction pour produire la première clé dans le moyen de traitement, une pré-mémorisation de la première clé et du premier nombre aléatoire dans le moyen de traitement. Bien que la première clé servant au traitement des données dépende de la clé secrète et du premier nombre aléatoire, la clé secrète n'est pas mémorisée dans le moyen de traitement, et la première clé produite est mémorisée préalablement. A chaque traitement de données, la clé secrète n'est pas ainsi utilisée ou convertie en clair. Par exemple, les première et deuxième fonctions sont des fonctions OU-Exclusif, et le traitement de données est un chiffrement de données. Selon une première réalisation préférée de l'invention, le procédé comprend pour chaque traitement de données, une génération d'un deuxième nombre aléatoire, une application de la première clé et du deuxième nombre aléatoire généré à une deuxième fonction pour produire une deuxième clé, et une application de la deuxième clé et du premier nombre aléatoire pré-mémorisé à une fonction inverse de la première fonction pour produire une troisième clé utilisée pour le traitement de données. Selon une deuxième réalisation préférée de l'invention, le procédé est particulièrement avantageux pour la vérification d'un code confidentiel, constituant les données à traiter, présenté au moyen de traitement de données, tel qu'une carte à puce. Le code confidentiel présenté et le deuxième nombre aléatoire généré sont alors appliqués à la deuxième fonction pour produire un code présenté transformé, en parallèle aux applications relatives à la première et le traitement de données comprend une comparaison de la troisième clé et du code présenté transformé. D'autres caractéristiques et avantages de la présente invention apparaîtront plus clairement à la lecture de la description suivante plusieurs réalisations préférées de l'invention référence aux dessins annexés correspondants dans lesquels - la figure 1 est un algorithme des étapes principales du procédé de traitement de données selon l'invention ; - la figure 2 est un bloc-diagramme analogue à la figure 1, détaillant un traitement de données pour chiffrement selon la première réalisation de l'invention ; - la figure 3 est un bloc-diagramme analogue à la figure 1, détaillant un traitement de donnees pour code confidentiel dans le contexte d'une carte ' puce en tant que moyen électronique de traitement de données, selon la deuxième réalisation de l'invention et - la figure 4 est un bloc-diagramme schematique montrant un système pour la mise en oeuvre du procédé de traitement de données selon l'invention dans le contexte d'une carte à puce. Comme cela apparaît à la figure 1, le procedé de traitement de données selon la réalisation préférée de l'invention comprend préalablement des étapes d'initialisation I1 à 13 pour déterminer en fonction d'une clé secrète K une première clé K1, dites clé de traitement, à mémoriser dans un dispositif électronique de traitement de données DTD, et une étape cyclique de traitement de données ET chaque fois que des données sont à traiter dans le dispositif DTD, comme indiqué à une étape initiale EO dans la figure 1. Par exemple, lorsque le dispositif de traitement de données est une carte à puce, le fournisseur de dispositif de traitement de données peut exécuter lui-même les étapes initiales I1 à 13 dans un bureau de commercialisation de cartes, lors de l'acquisition de chaque carte, par exemple lors de l'abonnement à un service accessible par les fonctionnalités de la carte, ou bien en variante lors de la fabrication de la carte elle-même. Au préalable, on a pris soin qu'à une premiere étape IO un algorithme de traitement AL et fonction F1 caractéristique de l'invention soient implémentés en mémoire du dispositif de traitement A l'étape initiale I1, une clé secrète K déterminée et écrite en mémoire vive RAM dans le dispositif de traitement de données DTD, par exemple en fonction de données formées par le fabricant du dispositif. Puis aussitôt à l'étape suivante 12, un premier nombre aléatoire R1 est généré et est appliqué avec la clé secrète déterminée K à la première fonction F1 pour produire la clé de traitement Kl. A la fin de l'initialisation à l'étape I3, la clé de traitement K1 et 1e premier nombre aléatoire R1 sont mémorisés dans une mémoire non volatile du dispositif de traitement de données DTD, par exemple une mémoire EEPROM. Ainsi, seule la clé de traitement K1, et non la clé secrète K, laquelle était constamment contenue en mémoire dans les dispositifs de traitement de données selon la technique antérieure, est conservée en mémoire dans le dispositif DTD. Le traitement de données à des étapes ultérieures ET n'utilise jamais la clé secrète K en clair qui n'est pas mémorisée dans le dispositif DTD. Selon la première réalisation montrée à la figure 2, l'étape de traitement ET concerne un chiffrement ou un cryptage des données, ou autre traitement analogue. L'étape ET comprend le cycle des étapes de traitement de données El à E4 qui est exécuté comme indiqué à l'étape initiale EO chaque fois que des données sont à traiter suivant un algorithme de traitement ALl à l'étape E4 dans le dispositif DTD. Par exemple, les étapes El à E4 sont effectuées chaque fois que le dispositif doit transmettre un bloc de données BD traité monde extérieur, par exemple à un terminal d'accueil lorsque le dispositif DTD est une carte à puce, ou bien chaque fois qu'une opération doit être effectuée sur un bloc de données. Lorsque le processeur constituant l'unité centrale de traitement du dispositif de traitement de données décide de traiter des données à l'étape E0, un deuxième nombre aléatoire R2 est généré et la première clé Ki qui avait été pré-mémorisée à l'étape 13 est lue dans la mémoire non volatile, à l'étape El. La première clé lue K1 et le premier nombre aléatoire généré Ri sont appliqués à une deuxième fonction F2 pour produire un résultat K2 = F2(Kl, Ri) à l'étape suivante E2. La deuxième fonction F2 a été implémentée avec la première fonction F1 en mémoire du dispositif DTD à l'étape initiale 10. Le résultat K2 de cette application constitue une deuxième clé K2 inscrite dans un registre interne au dispositi DTD. Puis, la deuxième clé K2 et le premier nombre aléatoire pré-mémorisé Ri sont lus pour les appliquer à une fonction inverse F1 1 de la première fonction Fi de manière à produire une troisième clé K3 = Fi 1(K2, R1) qui est égal à Fi 1 (F2 (K1, R2), Ri) = Fi 1 (F2 (F1 (K, Ri), , Ri) soit K3 = F2 (K, R2). Finalement à l'étape E4, le bloc de données BD à traiter est lu et est appliqué avec la troisième clé K3 précédemment produite à l'algorithme de traitement de données AL1. Par exemple, l'algorithme de traitement de données AL1 est un algorithme de chiffrement de données, tel que l'algorithme connu DES (Data Encryption Standard) ou RSA (Rivest, Shamir, Adleman), ou un algorithme de compression, ou un algorithme d'authentification du dispositif DTD. Ainsi, le bloc de données BD est traité par l'algorithme AL en dépendance d'une clé K3 qui est fonction uniquement de la clé secrète K et du deuxième nombre aléatoire R2 généré dans dispositif de traitement et donc différent, d' traitement de données BD au suivant, si bien que cette troisième clé servant au traitement proprement dit des données ne peut être déduite directement la première clé Kl qui est la seule mémorisée permanence dans le dispositif DTD. En variante, comme montré à une étape E5 exécutée en parallèle avec l'étape E3 dans la-figure 2, le bloc de données BD à traiter et un troisième nombre aléatoire R3, qui est généré par le processeur et est a priori différent du deuxième nombre aléatoire R2, sont appliqués à une troisième fonction F3 qui est également implémentée préalablement dans le dispositif DTD à l'étape 10. La fonction F3 produit des données modifiées DM = F3(BD, R3) sont traitées selon l'algorithme de traitement AL1 fonction de la troisième clé produite K3 à l'étape E4 selon la figure 2, ou plus généralement en fonction d'un traitement de la clé de traitement K1 à l'étape ET selon la figure 1. A titre d'exemple simple, les première, deuxième et troisième fonctions Fl, F2 et F3 sont des fonctions logiques simples, telles que le OU- Exclusif, pour lequel la fonction inverse correspondant à la fonction F1 1, est également un OU-Exclusif. Ainsi, au terme de l'étape E3, on a K3 = ((K R1) R2) R1, soit K3 = K R2. Selon un autre exemple, les fonctions F1 et F2 sont des additions, la fonction inverse F1 1 de la fonction F1 étant une soustraction. Selon la deuxième réalisation de l'invention montrée à la figure 3, le procédé d'utilisation de clé de traitement sert à accroître la sécurité du contrôle du code confidentiel, en tant que clé secrète, associée à une carte à puce CA, dite également carte à microcontrôleur ou carte à circuit intégré (Smart Card), en tant que dispositif de traitement de données, afin d'éviter toute manipulation de la clé secrète dans la carte à puce. I1 est rappelé schématiquement en référence à 1.a figure 4 qu'une carte à puce CA est composée d'un microcontrôleur comportant une unité traitement centrale CPU formée par un microprocesseur PR, une mémoire MO de type ROM incluant un système d'exploitation OS de la carte et notamment des algorithmes d'application de communication et d'authentification spécifiques et en 'occurrence l'algorithme de traitement de données AL et les fonctions F1 et F2 selon le procédé de traitement de données de l'invention, une mémoire non volatile MNV de type programmable et effaçable, comme une mémoire EEPROM, qui contient des données notamment liées au possesseur de la carte et au fournisseur la carte, et une mémoire MA de type RAM destinée ' recevoir notamment des données d'un terminal d'accueil TE de la carte. Tous les composants PR, MO, MNV et MA sont reliés entre eux par un bus interne BU. Un terminal d'accueil TE, tel qu'un terminal bancaire ou un terminal téléphonique, est équipé d'un clavier CL pour notamment composer un code confidentiel CP, dit également code soumis, à présenter à la carte. Dans un lecteur LE du terminal TE est introduite une partie de la carte CA contenant le microcontrôleur et supportant typiquement huit contacts électriques d'une liaison électrique LI entre le lecteur LE et le bus BU interne à carte CA lorsque la carte est du type à contact. En se référant à la figure 3, on y retrouve les étapes de traitement de données E1 à E3 déjà décrites, précédées par les étapes initiales IO à 13 selon la figure 1. Ces étapes El à E3 sont exécutées après une étape initiale E01 faisant suite à l'introduction de la carte CA dans le lecteur LE du terminal d'accueil TE qui est ainsi relié par la liaison électrique LI du bus interne BU au microcontrôleur de la carte CA. Lors de chaque traitement de données au sens de l'invention, correspondant à chaque utilisation de la carte dans ce contexte de carte à puce, code confidentiel présenté CP qui doit être normalement identique à la clé secrète K jamais conservée en clair dans la carte est composé sur le clavier CL du terminal TE à l'étape EO afin de vérifier code présenté dans la carte CA, suivi de la sollicitation d'une touche de validation. Soit au fur et à mesure de la composition des chiffres du code présenté, par exemple au nombre de quatre, soit en bloc, le terminal TE transmet le code confidentiel présenté CP, constituant un bloc de données BD selon la figure 2, à la carte CA à travers la liaison LI et le bus BU afin qu'il soit écrit dans la mémoire RAM MA, à l'étape E0. La validation de l'écriture en mémoire RAM du code confidentiel présenté CP déclenche les étapes suivantes E1 à E3. En parallèle notamment à l'étape E2 au cours de laquelle la première clé K1 et le deuxième nombre aléatoire généré R2 sont appliqués à la deuxième fonction F2, le processeur PR applique le code confidentiel présenté CP contenu dans la mémoire MA et le deuxième nombre aléatoire généré R2 à la deuxième fonction F2 afin de produire et mémoriser un code présenté transformé CPT = F1(CP, R2) à une étape E51. Le nombre R2 est généré par le génerateur pseudo-aléatoire associé au processeur PR. Finalement à l'étape E4, le processeur applique la troisième clé K3 = F2 (K, R2) venant d'être déterminée à l'étape E3 et le code présenté transformé CPT = F2(CP, R2) lu en mémoire, à l'algorithme de traitement AL1 qui comprend, selon cette deuxième réalisation, une comparaison de la troisième clé K3 et du code présenté transformé CPT. Si la clé K3 est identique au code presenté transformé CPT, des fonctionnalités de la carte CA sont accessibles à travers le terminal par exemple pour accéder à un service tel qu'un service de paiement ou un service téléphonique. Sinon, lorsque la clé K3 est différente du code CPT, d'autres tentatives de composition d'un autre code présenté en nombre limité peuvent être effectuees sur le clavier CL. Ainsi, selon l'invention, la clé secrète K n'est pas mémorisée dans la carte à puce et n'est donc pas manipulée dans la carte pour chaque vérification du@ code confidentiel présenté CP. En outre, bien la clé secrète K soit combinée initialement avec le premier nombre aléatoire R1 constant pendant toute l'utilisation de la carte en association avec clé secrète, la clé K3 servant à la comparaison est différente à chaque vérification pour laquelle un nombre aléatoire R2 est généré. Ceci garantit la vérification du code présenté CP ne s'exécute 'amais de la même manière dans la carte à puce. De préférence, deux cartes à puce, ou. plus généralement deux dispositifs de traitement de données associés à des clés secrètes identiques sont associés à des premiers nombres aléatoires Rl différents. Les nombres aléatoires R1 étant a priori différents pour les deux cartes, les effets la manipulation de ces nombres aléatoires ne peuvent servir à la caractérisation des cartes. De préférence, à chaque clé secrète K correspond un premier nombre aléatoire respectif Rl Ainsi avantageusement, lorsque la clé secrète associee à une carte est modifiée, le premier nombre aléatoire R1 est également modifié. Par exemple deux chiffres d'une clé secrète sont inversés, deux premiers nombres aléatoires correspondant à deux versions de clé secrète sont différents. Cette variante permet d'éviter de reconnaître un premier nombre aléatoire dans une première carte grâce ' la manipulation du nombre aléatoire dans une autre carte associée à une clé secrète commune avec la première carte. Dans la description ci-dessus, il sera compris que la carte à puce recouvre tous les types connus de carte à puce, dites également cartes à microcontrôleur, comme les cartes à contact ou sans contact énoncées ci-après à titre d'exemple non limitatif : cartes de crédit (Carte Bleue), cartes de paiement, cartes téléphoniques, cartes SIM (Subscriber Identity Mobile), cartes "additionnelles", cartes de centrale d'achat cartes de jeu, etc. Plus généralement, l'invention concerne non seulement des cartes à puce mais également d'autres objets électroniques portables désignés indifféremment par moyens ou dispositifs de traitement de données électroniques, tels, que assistants ou organiseurs électroniques, porte- monnaie électroniques, jetons, calculettes, etc Le terminal d'accueil du moyen de traitement de données électronique peut être par exemple type terminal informatique, ordinateur personnel notamment portable, terminal bancaire, terminal de point de vente, terminal radiotéléphonique, dispositif de contrôle d'accès à un local ou à une armoire forte, etc. Le moyen d'accueil peut être éloigné du moyen de traitement de données, ceux-ci étant reliés par tout moyen de transmission de données. Le clé secrète au sens de l'invention est également désignée dans certains contextes comme code confidentiel, mot de passe (password), ou code secret, ou bien numéro d'identité personnel PIN (Personal Identification Number) ou CHV (Card Holder Verification) ou identificateur PTI (Personal Telecommunication Identifier) notamment pour des cartes SIM de terminal radiotéléphonique. Le code confidentiel présenté est en géneral un code alphanumérique. Il peut être appliqué moyen de traitement de données, carte à puce ou objet électronique portable, par tout moyen de saisie de code connu, autre qu'un clavier à touches, par exemple par la voix et reconnaissance vocale, ou bien par reconnaissance d'une signature biométrique, par exemple au moins une empreinte digitale. REVENDICATIONS 1 - Procédé pour traiter des données (BD) avec une première clé de traitement (K1) dans un moyen de traitement de données (DTD), caractérisé en ce qu'il comprend préalablement une fois pour tous les traitements de données, application (I2) d'une clé secrète (K) et d'un premier nombre aléatoire (R1) à une première fonction (F1) pour produire la première clé (K1) dans moyen de traitement (DTD), et une pré-mémorisation de la première clé et du premier nombre aléatoire dans le moyen de traitement. 2 - Procédé conforme la revendication 1, selon lequel deux moyens de traitement de données (DTD) associés à des clés secrètes (K) identiques sont associés à des premiers nombres aléatoires différents (RI). 3 - Procédé conforme ' la revendication 1 ou 2, selon lequel le premier nombre aléatoire (R1) est modifié lorsque la clé secrète (K) associée au moyen de traitement (DTD) est modifiée. 4 - Procédé conforme à l'une quelconque des revendications 1 à comprenant pour chaque traitement de données (E4) une génération (E1) d'un deuxième nombre aléatoire (R2), une application (E2) de la première clé ) et du deuxième nombre aléatoire généré (R2) à deuxième fonction (F2) pour produire une deuxième clé (K2), et une application (E3) de la deuxième clé (K2) et du premier nombre aléatoire pré-mémorisé (R1) à une fonction (FI- 1) inverse de la première fonction pour produire une troisième clé (K3) utilisée pour le traitement des données (E4). 5 - Procédé conforme à la revendication 4, selon lequel les première et deuxième fonctions (F1, F2) sont des fonctions OU-Exclusif. 6 - Procédé conforme à la revendication 4 ,ou selon lequel le traitement de données (E4) est chiffrement de données. 7 - Procédé conforme à l'une quelconque des revendications 4 à 6, selon lequel les données (BD) traiter et un troisième nombre aléatoire (R3) sont appliqués à une troisième fonction (F3) pour produire des données modifiées (DM) traitées (E4) en fonction de la troisième clé (K3) ou d'un traitement (ET) la première clé (K1). 8 - Procédé conforme à la revendication 4, selon lequel les données à traiter sont constituées par un code confidentiel (CP) présenté (E01) au moyen de traitement de données (DTD), le code confidentiel présenté (CP) et 1e deuxième nombre aléatoire généré (R2) sont appliqués (E51) à la deuxième fonction (F2) pour produire un code présenté transformé (CPT), et le traitement de,données comprend une comparaison (E4) de la troisième clé (K3) et du code présenté transformé (CPT).