FR2994608A1 - Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants. - Google Patents

Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants. Download PDF

Info

Publication number
FR2994608A1
FR2994608A1 FR1257837A FR1257837A FR2994608A1 FR 2994608 A1 FR2994608 A1 FR 2994608A1 FR 1257837 A FR1257837 A FR 1257837A FR 1257837 A FR1257837 A FR 1257837A FR 2994608 A1 FR2994608 A1 FR 2994608A1
Authority
FR
France
Prior art keywords
input data
masked
words
mask
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1257837A
Other languages
English (en)
Other versions
FR2994608B1 (fr
Inventor
Luk Bettale
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Idemia France SAS
Original Assignee
Oberthur Technologies SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oberthur Technologies SA filed Critical Oberthur Technologies SA
Priority to FR1257837A priority Critical patent/FR2994608B1/fr
Publication of FR2994608A1 publication Critical patent/FR2994608A1/fr
Application granted granted Critical
Publication of FR2994608B1 publication Critical patent/FR2994608B1/fr
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/002Countermeasures against attacks on cryptographic mechanisms
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/04Masking or blinding
    • H04L2209/043Masking or blinding of tables, e.g. lookup, substitution or mapping
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/08Randomization, e.g. dummy operations or using noise

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

Il est proposé un procédé de traitement cryptographique, mis en oeuvre par un dispositif électronique, comprenant une étape de transformation de manière sécurisée d'une donnée d'entrée masquée arithmétiquement (ã = a m) en une donnée de sortie masquée soit de manière booléenne, soit de manière arithmétique, ladite donnée d'entrée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une donnée d'entrée utile (a) et un premier masque (m), ladite donnée d'entrée utile et ledit premier masque comprenant chacun au moins deux mots d'entrée (a = a || a || ... || a ). Un tel procédé est remarquable en ce que ladite donnée de sortie masquée de manière booléenne ou arithmétique correspond à une concaténation d'au moins deux mots de sortie, chacun desdits au moins deux mots de sortie correspondant au résultat d'une opération booléenne ou arithmétique entre une sortie d'une table de substitution indexée à partir d'un desdits au moins deux mots d'entrée de la donnée d'entrée utile, et d'un mot de masquage (S(a) m', avec S(a) = S (a ) || S (a ) ||...|| S (a )), et en ce que ladite étape de transformation comprend en outre au moins une étape de gestion sécurisée de retrait d'une retenue provenant de ladite opération arithmétique entre ladite donnée d'entrée utile et ledit premier masque, ladite étape de gestion sécurisée étant réalisée de manière concomitante à une étape de détermination de manière sécurisée desdits au moins deux mots de sortie.

Description

Procédé de traitement cryptographique comprenant un accès sécurisé à une pluralité de tables de substitution, dispositifs et produit programme d'ordinateur correspondants 1. DOMAINE DE L'INVENTION Le domaine de l'invention est celui de la cryptographie. Plus précisément, l'invention concerne une technique de protection contre les attaques par canaux cachés d'un traitement cryptographique utilisant une pluralité de table de substitutions. La présente technique peut notamment être mise en oeuvre dans des systèmes embarqués qui sont, par nature, sensibles aux attaques par canaux cachés. 2. ARRIÈRE-PLAN TECHNOLOGIQUE De nombreux cryptosystèmes (comme l'AES, le DES, l'IDEA, GOST 28147-89, etc...) utilisent au moins une table de substitution encore appelée table de correspondance (ou « Look-Up Table (LUT))> en anglais, ou S-Box) qui est une représentation sous la forme d'une table, d'une fonction non linéaire. L'utilisation de telles tables contribuent, en autres, à la réalisation du critère dit d'effet d'avalanche. De nombreux articles détaillent les propriétés que doivent respecter de telles tables. Par exemple, l'article intitulé «On the design of S-boxes" de A. F. Webster, et al., publié dans les annales de la conférence Crypto 85, présente des critères de constructions de telles tables de substitution. Généralement, une table de substitution permet de faire correspondre à une donnée d'entrée (résultant d'une opération arithmétique ou booléenne entre une donnée et une partie d'une clé cryptographique), une donnée de sortie. Ainsi, la donnée d'entrée peut être vue comme un index permettant de déterminer une valeur de sortie. L'obtention du résultat de l'accès à une telle table de substitution s'avère donc crucial dans des environnements sensibles aux attaques par canaux cachés (telles que les attaques par analyse de courant, comme les attaques dites SPA (pour « Simple Power Analysis » en anglais) ou DPA (pour « Differential Power Analysis » en anglais)). En effet, un attaquant, peut, via la mise en oeuvre de telles attaques, sur des implémentations naïves d'algorithmes cryptographique utilisant au moins un accès à une table de substitution, récupérer des informations relatives à une clé secrète de manière plus rapide qu'une attaque de type recherche exhaustive. Pour se prémunir contre les attaques par canaux cachés lors de l'accès à une table de substitution, différentes techniques, bien connues de l'Homme du métier, peuvent être mises en oeuvre. Une première technique consiste à, dans un premier temps, masquer de manière booléenne une donnée utile a en réalisant une opération de ou exclusif entre la donnée utile a et un nombre aléatoire (encore appelé un masque) m. Puis à accéder à une table de substitution masquée T (soit préalablement déterminée, soit déterminée à la volée à partir d'une table de substitution S) afin d'obtenir, en sortie le résultat suivant : T(ei) = T (a e = (a) (f) m' . Par exemple, dans l'article «Securing the AES finalists against power analysis attacks» de T. Messerges, publié dans les annales de la conférence FSE 2000, la détermination d'une telle table de substitution masquée T masquée est réalisé à la volée, mais elle nécessite une quantité de mémoire en RAM (pour « Random Access Memory »en anglais) importante. Une autre technique, proposée dans l'article «A generic method for secure SBox implementation » de E. Prouff et al., publié dans les annales de la conférence WISA 2007 permet de déterminer une telle table de substitution masquée T en utilisant moins de ressources mémoire en RAM.
Dans certains cryptosystèmes, la donnée utile a n'est pas initialement masquée de manière booléenne avant l'accès à une table de substitution, mais la donnée utile a est masquée de manière arithmétique (comme dans le cryptosystème GOST 28147-89, ou dans le cryptosystème SEED). Un tel masquage arithmétique consiste par exemple à réaliser une opération d'addition modulo une puissance de 2, entre la donnée utile a et un masque m. Ainsi, pour une donnée utile a et un masque m comprenant chacun / bits, le masquage arithmétique est obtenu en réalisant l'opération suivante : a RI m correspondant à l'opération suivante : (a + m )mod 21. Dans la suite, lorsque nous ne précisons par l'index I sur l'opérateur E9 nous considérons que l'opération correspondante est une addition modulaire avec le module 2n (on considère alors que les opérandes sont représentés sur n-bits).
Il convient de noter que la technique divulguée dans l'article « A generic method for secure SBox implementation » mentionné précédemment, permet de déterminer la valeur suivante T (a El) m) = S (a) ED m' , mais aussi de T (a 91 = (a) e in', de T (a e m.) = S (a) m', ou de T (a 93 = S (a) EB m', suivant le cas de figure nécessaire. Les détails de cette technique sont présentés en lien avec la figure 1 où la fonction intitulée « SecureSBox » est une implémentation d'un accès sécurisé à une table de substitution S à partir de données d'entrées masquées. Lorsque, dans un cryptosystème (tel que GOST 28147-89, ou SEED), il est nécessaire d'accéder à une pluralité de tables de substitution SN simultanément à partir d'une donnée d'entrée utile comprenant N mots, de /-bits par exemple, (i.e à partir de a = ao 11 al 11 --- , où ao E F12, on cherche à déterminer (a) = S0(a0) 11 Si(ai) 11 --- 11 SN_1(aN_1)), il est possible d'appliquer la technique mentionnée précédemment lorsque la donnée d'entrée est masquée de manière booléenne (i.e en déterminant la valeur de SecureSBox(S, â, m, m', ED,o) II .... Il SecureSBox(S, à, m, m', Cependant, lorsque la donnée utile a est masquée de manière arithmétique (via une opération d'addition), du fait que l'on ait la propriété suivante qui soit vérifiée : = a m = cto mo E9 co 11 Il aN_i em311 mN-1 cN_i , avec co = 0 et pour les nombre i entier compris dans l'intervalle [1; N-1 ], on a : ci = 1 si ai_i 9111 ci_i 21; et ci = 0 sinon, où la variable ci correspond à la propagation d'une retenue, on ne peut pas appliquer la technique précédente. Afin de résoudre ce problème, l'Homme du métier aurait appliqué la technique suivante consistant à réaliser une conversion d'un masque arithmétique à un masque booléen, via des techniques bien connues comme celles divulguées dans l'article intitulé « Switching blindings with a view towards IDEA » de J. Pulkus et al., publié dans les annales de la conférence CHES 2004 ou dans l'article intitulé «A sound method for switching between boolean and arithmetic masking » de L. Goubin, et publié dans les annales de la conférence CHES 2001, puis à N-exécution de la fonction SecureSBox. Cette approche est décrite en lien avec la figure 2 dans la présente demande.
Cependant, un inconvénient de cette solution réside dans le fait que celle-ci utilise de nombreuses ressources (tant en mémoire qu'en temps d'exécution). 3. OBJECTIFS DE L'INVENTION L'invention, dans au moins un mode de réalisation, a notamment pour objectif de pallier ces différents inconvénients de l'état de la technique. Un autre objectif d'au moins un mode de réalisation de l'invention est de fournir une telle technique qui n'utilise pas de mémoire supplémentaire, et dont l'implémentation peut être réalisée avec une taille de code réduite. Cette méthode est donc plus adaptée à des environnements très contraints. Un objectif complémentaire d'au moins un mode de réalisation de l'invention est de fournir une telle technique que l'on peut même en oeuvre sur un dispositif électronique possédant peu de ressources (mémoires). 4. EXPOSÉ DE L'INVENTION Dans un mode de réalisation particulier de l'invention, il est proposé un procédé de traitement cryptographique, mis en oeuvre par un dispositif électronique, comprenant une étape de transformation de manière sécurisée d'une donnée d'entrée masquée arithmétiquement en une donnée de sortie masquée soit de manière booléenne, soit de manière arithmétique, ladite donnée d'entrée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une donnée d'entrée utile et un premier masque, ladite donnée d'entrée utile et ledit premier masque comprenant chacun au moins deux mots d'entrée. Un tel procédé est remarquable en ce que ladite donnée de sortie masquée de manière booléenne ou arithmétique correspond à une concaténation d'au moins deux mots de sortie, chacun desdits au moins deux mots de sortie correspondant au résultat d'une opération booléenne ou arithmétique entre une sortie d'une table de substitution indexée à partir d'un desdits au moins deux mots d'entrée de la donnée d'entrée utile, et d'un mot de masquage, et en ce que ladite étape de transformation comprend en outre au moins une étape de gestion sécurisée de retrait d'une retenue provenant de ladite opération arithmétique entre ladite donnée d'entrée utile et ledit premier masque, ladite étape de gestion sécurisée étant réalisée de manière concomitante à une étape de détermination de manière sécurisée desdits au moins deux mots de sortie.
Selon un aspect particulier de l'invention, ladite étape de transformation comprend une étape de modification de ladite donnée d'entrée masquée et dudit premier masque en fonction d'une donnée aléatoire, et ladite étape de transformation comprend en outre une étape de traitement itératif sur chacun des mots de la donnée d'entrée masquée arithmétiquement, modifié suite à ladite étape de modification, ladite étape de traitement itératif comprenant ladite étape de gestion sécurisée et ladite étape de détermination de manière sécurisée réalisées de manière concomitante. Selon un aspect particulier de l'invention, ladite étape de modification comprend : - une étape d'obtention d'un bit aléatoire correspondant à ladite donnée aléatoire; - une étape de modification d'une valeur de ladite donnée d'entrée masquée en fonction dudit bit aléatoire; - une étape de modification d'une valeur dudit premier masque en fonction dudit bit aléatoire ; et ladite étape de transformation comprend en outre une étape d'instanciation d'une variable à utiliser dans ladite étape de gestion sécurisée de retrait d'une retenue, en fonction dudit bit aléatoire, ladite étape d'instanciation étant réalisée préalablement à ladite étape de traitement itératif. Selon un aspect particulier de l'invention, ladite étape de traitement itératif sur chacun des mots de la donnée d'entrée masquée comprend en outre une étape de traitement itératif d'accès à une table de substitution indexée à partir d'une donnée obtenue suite à une étape de soustraction réalisée pour toutes les valeurs possibles d'un mot dudit premier masque, et fonction de ladite donnée aléatoire. Dans un autre mode de réalisation de l'invention, il est proposé un produit programme d'ordinateur qui comprend des instructions de code de programme pour la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation), lorsque ledit programme est exécuté sur un ordinateur. Dans un autre mode de réalisation de l'invention, il est proposé un composant électronique comportant des moyens adaptés à la mise en oeuvre du procédé précité (dans l'un quelconque de ses différents modes de réalisation).
Plus précisément, selon une implémentation préférée, les différentes étapes du procédé selon l'invention sont mises en oeuvre par un logiciel ou programme d'ordinateur, ce logiciel comprenant des instructions logicielles destinées à être exécutées par un processeur de données d'un module relais selon l'invention et étant conçu pour commander l'exécution des différentes étapes de ce procédé. En conséquence, l'invention vise aussi un programme, susceptible d'être exécuté par un ordinateur ou par un processeur de données, ce programme comportant des instructions pour commander l'exécution des étapes d'un procédé tel que mentionné ci-dessus. Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. L'invention vise aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy disc) ou un disque dur. D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet. Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question. Selon un mode de réalisation, l'invention est mise en oeuvre au moyen de composants logiciels et/ou matériels. Dans cette optique, le terme "module" peut correspondre dans ce document aussi bien à un composant logiciel, qu'à un composant matériel ou à un ensemble de composants matériels et logiciels.
Un composant logiciel correspond à un ou plusieurs programmes d'ordinateur, un ou plusieurs sous-programmes d'un programme, ou de manière plus générale à tout élément d'un programme ou d'un logiciel apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Un tel composant logiciel est exécuté par un processeur de données d'une entité physique (terminal, serveur, etc) et est susceptible d'accéder aux ressources matérielles de cette entité physique (mémoires, supports d'enregistrement, bus de communication, cartes électroniques d'entrées/sorties, interfaces utilisateur, etc). De la même manière, un composant matériel correspond à tout élément d'un ensemble matériel (ou hardware) apte à mettre en oeuvre une fonction ou un ensemble de fonctions, selon ce qui est décrit ci-dessous pour le module concerné. Il peut s'agir d'un composant matériel programmable ou avec processeur intégré pour l'exécution de logiciel, par exemple un circuit intégré, une carte à puce, une carte à mémoire, une carte électronique pour l'exécution d'un micrologiciel (firmware), un élément de sécurité (ou « secure element » en anglais) utilisé dans le contexte de communication en champ proche (pour « Near Field Communication » en anglais), etc.
Dans un autre mode de réalisation de l'invention, il est proposé un dispositif électronique comprenant des moyens de traitement cryptographique comprenant des moyens permettant de réaliser une transformation de manière sécurisée d'une donnée d'entrée masquée arithmétiquement en une donnée de sortie masquée soit de manière booléenne, soit de manière arithmétique, ladite donnée d'entrée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une donnée d'entrée utile et un premier masque, ladite donnée d'entrée utile et ledit premier masque comprenant chacun au moins deux mots d'entrée. Un tel dispositif est remarquable en ce que lesdits moyens permettant de réaliser une transformation fournissent ladite donnée de sortie masquée de manière booléenne ou arithmétique représentée sous la forme d'une concaténation d'au moins deux mots de sortie, chacun desdits au moins deux mots de sortie correspondant au résultat d'une opération booléenne ou arithmétique entre une sortie d'une table de substitution indexée à partir d'un desdits au moins deux mots d'entrée de la donnée d'entrée utile, et d'un mot de masquage, et en ce que lesdits moyens permettant de réaliser une transformation comprennent en outre au moins des moyens de gestion sécurisée de retrait d'une retenue provenant de ladite opération arithmétique entre ladite donnée d'entrée utile et ledit premier masque, lesdits moyens de gestion sécurisée étant utilisés de manière concomitante à des moyens de détermination de manière sécurisée desdits au moins deux mots de sortie. Dans une variante, un tel dispositif est remarquable en ce que lesdits moyens permettant de réaliser une transformation comprennent des moyens de modification de ladite donnée d'entrée masquée et dudit premier masque en fonction d'une donnée aléatoire, et en ce que lesdits moyens permettant de réaliser une transformation comprennent en outre des moyens permettant de réaliser un traitement itératif sur chacun des mots de la donnée d'entrée masquée arithmétiquement, modifié suite à l'utilisation des moyens de modification, les moyens permettant de réaliser un traitement itératif comprenant les moyens de gestion sécurisée et les moyens de détermination de manière sécurisée utilisés de manière concomitante. Dans une variante, un tel dispositif est remarquable en ce que les moyens de modification comprennent : - des moyens d'obtention d'un bit aléatoire correspondant à ladite donnée aléatoire; - des moyens de modification d'une valeur de ladite donnée d'entrée masquée en fonction dudit bit aléatoire; - des moyens de modification d'une valeur dudit premier masque en fonction dudit bit aléatoire ; et en ce que lesdits moyens permettant de réaliser une transformation comprennent en outre des moyens d'instanciation d'un registre utilisé par les moyens de gestion sécurisée de retrait d'une retenue, en fonction dudit bit aléatoire, lesdits moyens d'instanciation étant utilisés préalablement à l'utilisation des moyens permettant de réaliser un traitement itératif.
Dans une variante, un tel dispositif est remarquable en ce que les moyens permettant de réaliser un traitement itératif sur chacun des mots de la donnée d'entrée masquée comprennent en outre des moyens permettant de réaliser un traitement itératif d'accès à une table de substitution indexée à partir d'une donnée obtenue suite à l'utilisation de moyens de soustraction, utilisés pour toutes les valeurs possibles d'un mot dudit premier masque, et fonction de ladite donnée aléatoire. 5. LISTE DES FIGURES D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description suivante, donnée à titre d'exemple indicatif et non limitatif, et des dessins annexés, dans lesquels : la figure 1 présente un procédé de détermination, à partir d'une donnée d'entrée masquée, de la sortie d'une table de substitution (notée S) qui est elle- aussi masquée, selon l'état de la technique; la figure 2 présente un procédé sécurisé de détermination de la sortie d'une pluralité de table de substitution (S,) masquée de manière booléenne, à partir d'une donnée d'entrée masquée de manière arithmétique, selon l'état de la technique; la figure 3 présente une étape de transformation selon un premier mode de réalisation de l'invention; la figure 4 présente une étape de transformation selon un deuxième mode de réalisation de l'invention; La figure 5(a) représente, schématiquement, un dispositif de traitement de données dans lequel la présente invention est mise en oeuvre ; La figure 5(b) représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 5(a). 6. DESCRIPTION DÉTAILLÉE Sur toutes les figures du présent document, les éléments et étapes identiques sont désignés par une même référence numérique. La figure 1 présente un procédé de détermination, à partir d'une donnée d'entrée masquée, de la sortie d'une table de substitution (notée S) qui est elle-aussi masquée, selon l'état de la technique. Plus précisément, la fonction intitulée « SecureSBox » est une implémentation d'un accès sécurisé à une table de substitution S à partir d'une donnée d'entrée masquée, d'un premier masque m, et d'un autre masque En effet, la fonction « SecureSBox » a pour paramètre d'entrée : une table de substitution, notée S; une première opération * qui est une application de F121><P21- dans F72I (Où F2 est le corps fini à deux éléments). Une telle opération peut être par exemple soit une opération de ou exclusif, e, soit une opération d'addition modulaire, EE1 sur n-bits) un premier masque, m; une donnée d'entrée masquée, EL, selon l'opération *, inversible, qui a été appliquée à une donnée d'entrée utile a, et au premier masque, m; une deuxième opération o qui est une application de F721><F721 dans F72I (Où F2 est le corps fini à deux éléments). Cette deuxième opération peut, elle-aussi, être par exemple soit une opération de ou exclusif, e, soit une opération d'addition modulaire, [1] sur n-bits) ; un autre masque m'. La fonction « SecureSBox » permet de déterminer de manière sécurisée la valeur de ti = S(a) m La fonction « SecureSBox » est résistante aux attaques par canaux cachés car elle comprend un traitement itératif d'une étape de démasquage 101 (i.e l'opération inverse de l'opération *, notée *-1) pour toutes les valeurs de masquage possibles (via la valeur k) pour un masque de n-bits, puis une étape d'accès 102 à la table de substitution S. Ainsi, un attaquant n'est pas capable de déterminer quand la détermination de la valeur de la variable b est réalisée. En effet, on considère qu'un attaquant n'est pas capable de distinguer via des mesures dans quel registre du composant électronique (entre R1 et R0) la valeur de b est stockée (le choix du registre étant fonction du résultat d'une étape de comparaison 103).
La figure 2 présente un procédé sécurisé de détermination de la sortie d'une pluralité de table de substitution (Si) masquée de manière booléenne, à partir d'une donnée d'entrée masquée de manière arithmétique, selon l'état de la technique. Ainsi, la fonction intitulée « SecureSimSBox » est une implémentation d'un accès sécurisé à une pluralité de table de substitution Si à partir d'une donnée d'entrée masquée de manière arithmétique, d'un premier masque m, et d'un autre masque m'.
Une telle fonction comprend l'utilisation d'une fonction « AMtoBM » 201 qui est une fonction de conversion d'une donnée masquée de manière arithmétique à un une donnée masquée de manière booléenne telle que rappelée au paragraphe 2, en p. 3, I. 22 à 29 du présent document, pour laquelle on utilise le même masque d'entrée et de sortie, ainsi qu'un appel répétitif 202 à la fonction « SecureSBox » décrite en lien avec la figure 1. Un inconvénient de cette technique est qu'elle est relativement peu performante en terme d'utilisation de ressources mémoire et de temps d'exécution. La présente invention permet d'obtenir de meilleures performances.
La figure 3 présente une étape de transformation selon un premier mode de réalisation de l'invention. Dans ce mode de réalisation, il est proposé un procédé sécurisé de détermination de la sortie d'une pluralité de table de substitution (S,) masquée de manière booléenne, à partir d'une donnée d'entrée masquée de manière arithmétique. La fonction intitulée « SecureSimSBox » est une implémentation d'un accès sécurisé à une pluralité de tables de substitution S à partir d'une donnée d'entrée masquée de manière arithmétique, d'un premier masque m, et d'un autre masque m'. Plus précisément, la fonction « SecureSimSBox » a pour paramètre d'entrée : une pluralité de tables de substitution, notée Si; un premier masque, m, comprenant N mots de I bits ; une donnée d'entrée masquée, à, selon l'opération ES sur n-bits (où n = qui est inversible (l'opération inverse étant notée correspondant à une soustraction modulaire), qui a été appliquée à une donnée d'entrée utile a, comprenant N mots de I bits, et au premier masque, m; un autre masque m', comprenant N mots de / bits. La fonction « SecureSimSBox » permet de déterminer de manière sécurisée la valeur de 6 = Il hi II ---Il 6rsi_.1 avec h; = Si(ai) La présente technique permet de réaliser cet objectif via une étape de gestion sécurisée d'une retenue (cf. étapes 304, 305 et 306 de la figure 2), réalisée de manière concomitante à une étape de détermination de manière sécurisée des mots de sortie El, (étape 306). Plus précisément, en remarquant que l'on a la relation suivante qui est vérifiée quelque soit la valeur de z (égal à 0 ou 1) : (a m ) e(-z), (a 6)(-z) ) (m E(-z)) EE] z, il est possible de réaliser un démasquage de la donnée d'entrée masquée, Et, (cf. étape 305 de la figure 3) en prenant en compte une valeur de retenue provenant de l'opération de masquage arithmétique (une telle retenue est gérée via un registre ci), et de réaliser un accès aux tables de substitution Si de manière sécurisée via l'utilisation d'une donnée aléatoire (à savoir un bit, noté z, obtenu d'un générateur 10 d'aléa non-biaisé via un appel à une fonction notée « Random » en figure 2) (cf. étapes 301, 302 et 303 de la figure 2). Ainsi, les étapes 301 et 302 sont des étapes de modification de la donnée d'entrée masquée et du premier masque en fonction d'une donnée aléatoire, à savoir le bit z. Il convient de noter que l'opération « <- » utilisée en figure 3, et dans les autres 15 figures, consiste à affecter à une zone mémoire (un registre) une valeur obtenue soit par un calcul, soit déjà stockée dans un autre registre. La figure 4 présente une étape de transformation selon un deuxième mode de réalisation de l'invention. Dans ce mode de réalisation, il est propos un procédé sécurisé de 20 détermination de la sortie d'une pluralité de table de substitution (Si) masquée de manière arithmétique, à partir d'une donnée d'entrée masquée de manière arithmétique. La fonction intitulée « SecureSimSBox-2 » est une implémentation d'un accès sécurisé à une pluralité de tables de substitution S à partir d'une donnée d'entrée 25 masquée de manière arithmétique, d'un premier masque m, et d'un autre masque m'. Plus précisément, la fonction « SecureSimSBox-2 » a pour paramètre d'entrée : une pluralité de tables de substitution, notée S,; un premier masque, m, comprenant N mots de I bits ; une donnée d'entrée masquée, Et, selon l'opération El sur n-bits (où n = 30 qui est inversible (l'opération inverse étant notée 8 correspondant à une soustraction modulaire), qui a été appliquée à une donnée d'entrée utile a, comprenant N mots de I bits, et au premier masque, m; un autre masque comprenant N mots de / bits. La fonction « SecureSimSBox-2 » permet de déterminer de manière sécurisée la valeur de b = bo iirhIl---Il bN_i avec r), = Si(ai) m'i avec c'0 = 0 et pour les nombre i entier compris dans l'intervalle [1; N-1 ], on a : c'1 = 1 si Si(ai) E m'i c'1 21; et ei= 0 sinon, où la variable ei correspond à la propagation d'une retenue du masquage arithmétique pour obtenir des mots de sorties vérifiant un masquage arithmétique.
La présente technique permet de réaliser cet objectif via la mise en oeuvre de deux étapes de gestion sécurisée de retenues réalisées de manière concomitante à une étape de détermination de manière sécurisée des mots de sortie b. La première étape de gestion sécurisée d'une retenue est identique à celle divulguée en lien avec la description de la figure 3. La deuxième étape de gestion sécurisée d'une retenue correspond aux étapes 401, 402, 403, 404 et 405. La figure 5(a) représente, schématiquement, un dispositif de traitement de données 540 dans lequel la présente invention est mise en oeuvre. Ce dispositif 540 comprend un microprocesseur 510, auquel est associée d'une part une mémoire vive 560, par exemple au moyen d'un bus 570, et d'autre part une mémoire non volatile 520 (par exemple du type EEPROM), par exemple à travers un bus 550. Le dispositif de traitement de données 540, et précisément le microprocesseur 510 qu'il incorpore, peuvent échanger des données avec des dispositifs extérieurs au moyen d'une interface de communication 530. On a schématiquement représenté sur la figure 5(a) la transmission d'une donnée d'entrée X reçue d'un dispositif extérieur (non représenté) et transmise de l'interface de communication 530 au microprocesseur 510. De manière similaire, on a représenté la transmission d'une donnée de sortie Y du microprocesseur 510 vers l'interface de communication 530 à destination d'un dispositif extérieur. Cette donnée de sortie Y est issue d'un traitement de données par le microprocesseur 510, généralement sur la donnée d'entrée X à l'aide d'une donnée secrète 580 interne au système, par exemple une clé privée, ou un nombre aléatoire.
Les données d'entrée X sont par exemple des commandes APDU, et les données de sortie des réponses APDU. Bien que, pour l'illustration, les données d'entrée et les données de sortie figurent sur deux flèches différentes, les moyens physiques qui permettent la communication entre le microprocesseur 510 et l'interface 530 pourront être réalisés par des moyens uniques, par exemple un port de communication série ou un bus. Le microprocesseur 510 est apte à exécuter un logiciel (ou programme d'ordinateur) qui permet au dispositif de traitement de données 540 d'exécuter un procédé conforme à l'invention dont des exemples sont donnés en regard des figures 3 et 4. Ce procédé est par exemple exécuté par 540 sur réception des données d'entrée X. Les données du procédé selon l'invention peuvent être obtenus à partir des données d'entrée ou, pour certains paramètres comme une liste de nombre premiers à partir de la mémoire non volatile 520. Les données de sorties sont par exemple obtenues à partir du résultat du procédé selon l'invention. Une telle donnée de sortie peut être soit une information relative à la réussite de la génération d'un nombre premier, ou la transmission du nombre premier généré lui-même, dans le cas de figure où le dispositif extérieur est considéré comme sûr. Le logiciel est composé d'une série d'instructions de commande du microprocesseur 510 qui sont par exemple stockées dans la mémoire 520.
Dans une variante, l'ensemble microprocesseur 510 - mémoire non-volatile 520 - mémoire vive 560 peut être remplacé par un circuit à application spécifique qui comprend alors des moyens de mise en oeuvre des différentes étapes du procédé de traitement de données. Plus généralement, le dispositif de traitement est un circuit intégré.
La figure 5(b) représente une carte à microcircuit qui constitue un exemple de dispositif de traitement de données conforme à l'invention tel que représenté à la figure 5(a). L'interface de communication 530 est dans ce cas réalisée au moyen des contacts de la carte à microcircuit ou bien d'une antenne logée dans le corps de carte. La carte à microcircuit incorpore un microprocesseur 510, une mémoire vive 560 et une mémoire non volatile 520 comme cela est représenté sur la figure 5(a).
Cette carte à microcircuit est par exemple conforme à la norme ISO 7816 et munie d'un microcontrôleur sécurisé qui regroupe le microprocesseur (ou CPU) 520 et la mémoire vive 560. Les données d'entrée X sont par exemple des commandes APDU, et les données de sortie des réponses APDU. Dans une variante, le dispositif de traitement de données peut être une clef USB, un document ou un support d'informations papier comportant dans l'une de ses feuilles un microcircuit associé à des moyens de communication sans contact. Il s'agit de manière préférée d'une entité électronique portable ou de poche.
Le dispositif est par exemple sécurisé. Par exemple, le dispositif comporte des moyens aptes à le protéger contre des attaques visant à obtenir frauduleusement les données secrètes qu'il mémorise (par exemple, une clé cryptographique) telle que les attaques par fautes et/ou par analyse de canaux cachés (en anglais , « side channel attacks »). En particulier, le dispositif est conforme à la norme FIPS ou aux critères communs.

Claims (10)

  1. REVENDICATIONS1. Procédé de traitement cryptographique, mis en oeuvre par un dispositif électronique, comprenant une étape de transformation de manière sécurisée d'une donnée d'entrée masquée arithmétiquement (ei = a Ba m) en une donnée de sortie masquée soit de manière booléenne, soit de manière arithmétique, ladite donnée d'entrée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une donnée d'entrée utile (a) et un premier masque (m), ladite donnée d'entrée utile et ledit premier masque comprenant chacun au moins deux mots d'entrée (a = ao Il al Il--- Il aN_i), ledit procédé étant caractérisé en ce que ladite donnée de sortie masquée de manière booléenne ou arithmétique correspond à une concaténation d'au moins deux mots de sortie, chacun desdits au moins deux mots de sortie correspondant au résultat d'une opération booléenne ou arithmétique entre une sortie d'une table de substitution indexée à partir d'un desdits au moins deux mots d'entrée de la donnée d'entrée utile, et d'un mot de masquage (S (a) ED , avec S (a) = S0(a0) II Mai) II ... Il SN_1(aN_1)), et en ce que ladite étape de transformation comprend en outre au moins une étape de gestion sécurisée de retrait d'une retenue provenant de ladite opération arithmétique entre ladite donnée d'entrée utile et ledit premier masque, ladite étape de gestion sécurisée étant réalisée de manière concomitante à une étape de détermination de manière sécurisée desdits au moins deux mots de sortie.
  2. 2. Procédé selon la revendication 1, caractérisé en ce que ladite étape de transformation comprend une étape de modification de ladite donnée d'entrée masquée et dudit premier masque en fonction d'une donnée aléatoire, et en ce que ladite étape de transformation comprend en outre une étape de traitement itératif sur chacun des mots de la donnée d'entrée masquée arithmétiquement, modifié suite à ladite étape de modification, ladite étape de traitement itératif comprenant ladite étape de gestion sécurisée et ladite étape de détermination de manière sécurisée réalisées de manière concomitante.
  3. 3. Procédé selon la revendication 2, caractérisé en ce que ladite étape de modification comprend :- une étape d'obtention d'un bit aléatoire correspondant à ladite donnée aléatoire; - une étape de modification d'une valeur de ladite donnée d'entrée masquée en fonction dudit bit aléatoire; - une étape de modification d'une valeur dudit premier masque en fonction dudit bit aléatoire ; et en ce que ladite étape de transformation comprend en outre une étape d'instanciation d'une variable à utiliser dans ladite étape de gestion sécurisée de retrait d'une retenue, en fonction dudit bit aléatoire, ladite étape d'instanciation étant réalisée préalablement à ladite étape de traitement itératif.
  4. 4. Procédé selon l'une quelconque des revendications 2 et 3, caractérisé en ce que ladite étape de traitement itératif sur chacun des mots de la donnée d'entrée masquée comprend en outre une étape de traitement itératif d'accès à une table de substitution indexée à partir d'une donnée obtenue suite à une étape de soustraction réalisée pour toutes les valeurs possibles d'un mot dudit premier masque, et fonction de ladite donnée aléatoire.
  5. 5. Produit programme d'ordinateur, comprenant des instructions de code de programme pour la mise en oeuvre du procédé selon au moins une des revendications 1 à 4 lorsque ledit programme est exécuté sur un ordinateur.
  6. 6. Médium de stockage lisible par ordinateur et non transitoire, stockant un programme d'ordinateur comprenant un jeu d'instructions exécutables par un ordinateur ou un processeur pour mettre en oeuvre le procédé selon au moins une des revendications 1 à 4.
  7. 7. Dispositif électronique comprenant des moyens de traitement cryptographique comprenant des moyens permettant de réaliser une transformation de manière sécurisée d'une donnée d'entrée masquée arithmétiquement (à = a ) en une donnée de sortie masquée soit de manière booléenne, soit de manière arithmétique, ladite donnée d'entrée masquée arithmétiquement correspondant au résultat d'une opération arithmétique entre une donnée d'entrée utile (a) et un premier masque (m), ladite donnée d'entrée utile et ledit premier masque comprenant chacun au moins deux mots d'entrée (a = 120 II ai Il ..- Il aN_i), ledit dispositif étant caractérisé en ce que lesdits moyens permettant de réaliser une transformation fournissent laditedonnée de sortie masquée de manière booléenne ou arithmétique représentée sous la forme d'une concaténation d'au moins deux mots de sortie, chacun desdits au moins deux mots de sortie correspondant au résultat d'une opération booléenne ou arithmétique entre une sortie d'une table de substitution indexée à partir d'un desdits au moins deux mots d'entrée de la donnée d'entrée utile, et d'un mot de masquage (S (a) e mi, avec S(a) = S0(a0) II Si(ai) II ---II SN_1(aN_1)), et en ce que lesdits moyens permettant de réaliser une transformation comprennent en outre au moins des moyens de gestion sécurisée de retrait d'une retenue provenant de ladite opération arithmétique entre ladite donnée d'entrée utile et ledit premier masque, lesdits moyens de gestion sécurisée étant utilisés de manière concomitante à des moyens de détermination de manière sécurisée desdits au moins deux mots de sortie.
  8. 8. Dispositif selon la revendication 7, caractérisé en ce que lesdits moyens permettant de réaliser une transformation comprennent des moyens de modification de ladite donnée d'entrée masquée et dudit premier masque en fonction d'une donnée aléatoire, et en ce que lesdits moyens permettant de réaliser une transformation comprennent en outre des moyens permettant de réaliser un traitement itératif sur chacun des mots de la donnée d'entrée masquée arithmétiquement, modifié suite à l'utilisation des moyens de modification, les moyens permettant de réaliser un traitement itératif comprenant les moyens de gestion sécurisée et les moyens de détermination de manière sécurisée utilisés de manière concomitante.
  9. 9. Dispositif selon la revendication 8, caractérisé en ce que les moyens de modification comprennent : - des moyens d'obtention d'un bit aléatoire correspondant à ladite donnée aléatoire; - des moyens de modification d'une valeur de ladite donnée d'entrée masquée en fonction dudit bit aléatoire; - des moyens de modification d'une valeur dudit premier masque en fonction dudit bit aléatoire ; et en ce que lesdits moyens permettant de réaliser une transformation comprennent en outre des moyens d'instanciation d'un registre utilisé par les moyens de gestion sécurisée de retrait d'une retenue, en fonction dudit bit aléatoire, lesdits moyensd'instanciation étant utilisés préalablement à l'utilisation des moyens permettant de réaliser un traitement itératif.
  10. 10. Dispositif selon l'une quelconque des revendications 8 et 9, caractérisé en ce que les moyens permettant de réaliser un traitement itératif sur chacun des mots de la donnée d'entrée masquée comprennent en outre des moyens permettant de réaliser un traitement itératif d'accès à une table de substitution indexée à partir d'une donnée obtenue suite à l'utilisation de moyens de soustraction, utilisés pour toutes les valeurs possibles d'un mot dudit premier masque, et fonction de ladite donnée aléatoire.10
FR1257837A 2012-08-16 2012-08-16 Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants. Expired - Fee Related FR2994608B1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1257837A FR2994608B1 (fr) 2012-08-16 2012-08-16 Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1257837A FR2994608B1 (fr) 2012-08-16 2012-08-16 Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants.

Publications (2)

Publication Number Publication Date
FR2994608A1 true FR2994608A1 (fr) 2014-02-21
FR2994608B1 FR2994608B1 (fr) 2015-09-04

Family

ID=47739368

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1257837A Expired - Fee Related FR2994608B1 (fr) 2012-08-16 2012-08-16 Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d'ordinateur correspondants.

Country Status (1)

Country Link
FR (1) FR2994608B1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112955864A (zh) * 2018-10-29 2021-06-11 密码研究公司 恒定时间的安全的算术到布尔掩码转换

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070058800A1 (en) * 2003-09-05 2007-03-15 Giesecke & Devrient Gmbh Transition between masked representations of a value during cryptographic calculations
US20110044450A1 (en) * 2009-08-21 2011-02-24 Electronics And Telecommunications Research Institute Method and apparatus for processing f-function in seed encryption system
EP2410503A1 (fr) * 2009-03-10 2012-01-25 Kabushiki Kaisha Toshiba Dispositif et programme de calcul

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070058800A1 (en) * 2003-09-05 2007-03-15 Giesecke & Devrient Gmbh Transition between masked representations of a value during cryptographic calculations
EP2410503A1 (fr) * 2009-03-10 2012-01-25 Kabushiki Kaisha Toshiba Dispositif et programme de calcul
US20110044450A1 (en) * 2009-08-21 2011-02-24 Electronics And Telecommunications Research Institute Method and apparatus for processing f-function in seed encryption system

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CORON J-S ET AL: "A New Algorithm for Switching from Arithmetic to Boolean Masking", LECTURE NOTES IN COMPUTER SCIENCE/COMPUTATIONAL SCIENCE, SPRINGER, DE, vol. 2779, 1 January 2003 (2003-01-01), pages 89 - 97, XP002340677, ISBN: 978-3-540-24128-7 *
EMMANUEL PROUFF ET AL: "A Generic Method for Secure SBox Implementation", 28 August 2006, INFORMATION SECURITY APPLICATIONS; [LECTURE NOTES IN COMPUTER SCIENCE], SPRINGER BERLIN HEIDELBERG, BERLIN, HEIDELBERG, PAGE(S) 227 - 244, ISBN: 978-3-540-77534-8, XP019086242 *
OLAF NEIÃ E ET AL: "Switching Blindings with a View Towards IDEA", 8 July 2004, CRYPTOGRAPHIC HARDWARE AND EMBEDDED SYSTEMS - CHES 2004; [LECTURE NOTES IN COMPUTER SCIENCE;;LNCS], SPRINGER-VERLAG, BERLIN/HEIDELBERG, PAGE(S) 230 - 239, ISBN: 978-3-540-22666-6, XP019009367 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112955864A (zh) * 2018-10-29 2021-06-11 密码研究公司 恒定时间的安全的算术到布尔掩码转换
US11822704B2 (en) 2018-10-29 2023-11-21 Cryptography Research, Inc. Constant time secure arithmetic-to-Boolean mask conversion

Also Published As

Publication number Publication date
FR2994608B1 (fr) 2015-09-04

Similar Documents

Publication Publication Date Title
EP2893431B1 (fr) Protection contre canaux auxiliaires
EP2296086B1 (fr) Protection d&#39;une génération de nombres premiers contre des attaques par canaux cachés
FR2950721A1 (fr) Procede d&#39;execution d&#39;un algorithme de protection d&#39;un dispositif electronique par masquage affine et dispositif associe
FR3056789A1 (fr) Procede de chiffrement ou de dechiffrement symetrique par bloc
FR2902252A1 (fr) Systemes cryptographiques pour chiffrer des donnees d&#39;entree en utilisant une adresse associee aux donnees d&#39;entree, circuits de detection d&#39;erreur et procedes pour les faire fonctionner.
FR3056322A1 (fr) Procede de chiffrement ou de dechiffrement protege contre des attaques par canaux caches
EP1904921A1 (fr) Procede cryptographique pour la mise en oeuvre securisee d&#39;une exponentiation et composant associe
EP2284748B1 (fr) Procédé de contremesure pour protéger des données mémorisées
FR2994608A1 (fr) Procede de traitement cryptographique comprenant un acces securise a une pluralite de tables de substitution, dispositifs et produit programme d&#39;ordinateur correspondants.
FR3005186A1 (fr) Projet de validation d&#39;un parametre cryptographique, et dispositif correspondant
EP1119939B1 (fr) Procede de contre-mesure dans un composant electronique mettant en oeuvre un algorithme de cryptographie a cle secrete
EP3482524B1 (fr) Procédé de génération des paramètres caractérisant un protocole cryptographique
EP2153575B1 (fr) Obtention de valeurs dérivées dépendant d&#39;une valeur maîtresse secrète
FR3004042A1 (fr) Procedes de generation et d&#39;utilisation de cles cryptographiques privees pour le rsa-crt ou les variantes du rsa-crt
FR2969875A1 (fr) Procede et systeme pour l&#39;authentification multi-modale multi-seuil utilisant le partage de secret
FR3047327A1 (fr) Procede d&#39;execution de calcul cryptographique et application a la classification par machines a vecteurs de support
FR2985337A1 (fr) Procede de calcul cryptographique resilient aux attaques par injection de fautes, produit programme d&#39;ordinateur et composant electronique correspondant.
WO2009122095A2 (fr) Protection en boite-blanche d&#39;algorithmes cryptographiques comprenant le calcul d&#39;une forme quadratique
WO2007116140A1 (fr) PROCÉDÉ DE TRAITEMENT CRYPTOQRAPHIQυE DE DONNÉES, DISPOSITIF ET PROGRAMME ASSOCIÉS
FR3045883A1 (fr) Procede de traitement cryptographique de donnees, programme d&#39;ordinateur et entite electronique associes
FR2998692A1 (fr) Procede de traitement cryptographique comprenant des operations booleennes sur des donnees masquees de maniere arithmetique, dispositifs et produit programme d&#39;ordinateur correspondants
EP3340096A1 (fr) Procédé de configuration d&#39;un programme cryptographique destiné à être exécuté par un terminal
FR2995110A1 (fr) Optimisation memoire cryptographique
FR2997772A1 (fr) Procede de comparaison de donnees, produit programme d&#39;ordinateur et dispositif correspondants
WO2022013072A1 (fr) Dispositif, méthode et programme pour une communication sécurisée entre boîtes blanches

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

CA Change of address

Effective date: 20200826

CJ Change in legal form

Effective date: 20200826

ST Notification of lapse

Effective date: 20220405