WO2006029960A1 - Method and device for updating a seed established by a deterministic function in a digital processing communications device - Google Patents

Method and device for updating a seed established by a deterministic function in a digital processing communications device Download PDF

Info

Publication number
WO2006029960A1
WO2006029960A1 PCT/EP2005/054292 EP2005054292W WO2006029960A1 WO 2006029960 A1 WO2006029960 A1 WO 2006029960A1 EP 2005054292 W EP2005054292 W EP 2005054292W WO 2006029960 A1 WO2006029960 A1 WO 2006029960A1
Authority
WO
WIPO (PCT)
Prior art keywords
seed
valid
value
seeds
volatile memory
Prior art date
Application number
PCT/EP2005/054292
Other languages
French (fr)
Inventor
Henri Ohanian
Christophe Aillaud
Original Assignee
Gemplus
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 Gemplus filed Critical Gemplus
Publication of WO2006029960A1 publication Critical patent/WO2006029960A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/409Device specific authentication in transaction processing
    • G06Q20/4097Device specific authentication in transaction processing using mutual authentication between devices and transaction partners
    • G06Q20/40975Device specific authentication in transaction processing using mutual authentication between devices and transaction partners using encryption therefor
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system

Definitions

  • the invention generally relates to communication devices and in particular the updating of a value evolving deterministically in such devices.
  • the updating of a deterministically evolving value is used in particular for the generation of random numbers, the synchronization of messages or the incrementation of a counter.
  • the generation of a random number by the circuits of a smart card is relatively imperfect. Indeed, the different numbers do not have the same probability of being generated.
  • the number generated by the circuits is combined with a number undergoing a deterministic evolution. Such a number is commonly referred to as seed (referred to as Seed in English).
  • seed Such a number is commonly referred to as Seed in English).
  • the value of the seed is thus modified iteratively by a deterministic algorithm during an update.
  • the random numbers generated are then used for different applications, in particular for the generation of encryption keys.
  • an external interruption of contactless communication between a card and a terminal may alter the iteration algorithm.
  • the stored seed can then be truncated.
  • an interruption in communication or power may truncate other values on the card while they are being updated.
  • a smart card as described in document EP-A-0 756 746 uses generic backup functions (function called backup) to save data in non-volatile memory.
  • the initial value of a data item before it is updated is read in a location of use of the non-volatile memory, and then this initial value is copied to a reserved place in the non-volatile memory.
  • An updated value is calculated in RAM.
  • the updated value is stored in the usage location by overwriting the initial value.
  • the process of restoring the valid initial value is as follows: the initial value is read in the reserved slot. The initial value is copied to the usage location and overwrites the updated value. The updating of a seed is also carried out according to this method.
  • Such a smart card has disadvantages.
  • certain applications of the smart card for example, a card used as a transport ticket detected by a terminal
  • the start phase of the smart card (the ISO 14443-3 and ISO 14443-4 standards define the establishment of contactless communication between the card and a terminal) is too long important for the transaction duration to be respected.
  • the update steps require multiple writes in memory. These operations are relatively long to implement.
  • the possible phases of restoration of a seed are also relatively long to implement.
  • the first seed is generated randomly.
  • the deterministic function is an increasing function and the first seed is selected by comparison of valid seed values.
  • the deterministic function is a decreasing function and the first seed is selected by comparing valid seed values.
  • the invention also relates to a method for generating a random number, comprising the steps of such an update method and further comprising the step of generating a random number according to the second seed stored.
  • the invention also relates to a digital processing device having a non-volatile memory and a processing unit, capable of implementing such methods.
  • the device has a communication interface without contact with other devices.
  • the device is a smart card.
  • FIG. 1 an algorithm for updating a seed implemented according to the invention
  • FIG. 2 a diagram of the steps of incrementing a seed
  • FIG. 3 an example of evolution of the seed values according to the invention.
  • seed will subsequently designate a value evolving deterministically from an initial value. This initial value is either generated randomly by the device, or registered in the factory in nonvolatile memory of the device.
  • the invention proposes to update a seed in a digital processing device, by reading a first seed, by applying a deterministic function to generate a second seed, generating an indicator of validity of the second seed, and then entering the seed. second seed and its indicator in a single operation in a non-volatile memory of the device.
  • write validity indicators make it possible to determine the valid seeds.
  • the first seed is selected from these valid seeds. If no seed is valid, the first seed is randomly generated. The value of the first seed is retained to allow the recovery of a valid value if the writing of the second seed is still found to be faulty.
  • FIG. 1 illustrates different steps in an exemplary method of updating a seed according to
  • the steps 101 to 103 aim to determine the validity of two seeds stored in the nonvolatile memory of the device. For a given seed, a write validity flag is calculated and then the indicator obtained is compared with the associated write validity flag of the non-volatile memory. The seed is considered valid if and only if the compared indicators are equal.
  • step 101 the validity of a GrI seed is tested by means of its validity indicator. If GrI is invalid, the process proceeds to step 102. If GrI is valid, the process proceeds to step 104. In steps 102 and 104, it is determined whether a seed Gr2 is valid by means of its flag. validity. At the end of steps 102 and 104, the valid seeds were thus determined from seeds Gr1 and Gr2.
  • GrI is valid the process proceeds to step 112 where GrI is selected as the first seed. If Gr2 is valid, the process proceeds to step 111 where Gr2 is selected as the first seed.
  • the write validity flags are determined by a cyclic redundancy check (CRC) algorithm. Any other validity verification algorithm may also be used: it will be possible in particular to perform a parity test on the seed bits.
  • Step 105 determines the last valid value among the different valid values identified. The first seed selected is then the last valid value. For each valid value found, the deterministic function is applied. The last valid value will be the one for which the result of the function will not match another valid value. This seed will be used as the first seed for the update. In the example, if GrI and Gr2 are valid and if Gr2 is the result of applying the deterministic function on GrI, Gr2 is the last valid value and will be used as the first seed.
  • the deterministic function can, in a simplified case, be an increasing function, for example an incrementation of one unit.
  • the last valid seed is in this case the one with the greatest value.
  • the deterministic function can also be a decreasing function, for example a decrementation of a unit.
  • the last valid seed is in this case the one with the smallest value.
  • Step 103 takes place when no valid seed has been identified. This case may especially occur during the initialization of the device.
  • the seed values in the non-volatile memory are then indeterminate.
  • a first seed is generated randomly or with the aid of an appropriate algorithm.
  • its validity indicator is also calculated.
  • This first seed and its indicator are written in a single operation in the non-volatile memory, overwriting the previous values of the seed GrI.
  • the process then proceeds to step 112: the second seed is calculated from the generated GrI seed.
  • Steps 111 and 112 are steps for calculating the second seed.
  • the deterministic function is applied to the first selected seed.
  • Figure 2 illustrates more precisely different phases that can be implemented during the calculation of the second seed.
  • Figure 2 illustrates more precisely the progress of steps 111 and 112.
  • step 121 the first seed is copied to RAM.
  • step 122 the value of the second seed is calculated in random access memory.
  • step 123 the write validity flag of the second seed is calculated in random access memory.
  • step 124 the calculated second seed and the flag are written in a single operation in the nonvolatile memory.
  • the seeds are preferably written in separate pages of the non-volatile memory.
  • the security of saving the seed is thus increased: if the page of a seed is attacked or damaged, the probability that a page containing another seed is attacked or damaged is then reduced.
  • the second seed and its indicator crush a seed and an indicator that have not been selected as the first seed.
  • the second seed generated and its indicator will crush the Gr2 seed and its indicator.
  • FIG. 3 represents the evolution of the seed values in an exemplary method according to the invention.
  • the left columns show the values of a GrI seed and its validity indicator.
  • the columns on the right indicate the values of a seed Gr2 and its validity indicator.
  • the values shown correspond to the values present in the non-volatile memory when the device is turned on.
  • GrI has the hexadecimal value FFFF
  • its indicator is a CRC whose value is correct.
  • Gr2 has any value and the associated CRC has an incorrect value.
  • the deterministic function is therefore applied to GrI.
  • the second seed and its CRC are then written in the location of the volatile memory dedicated to Gr2. In the example, the deterministic function increments the seed value by 1.
  • the result of the deterministic function is therefore 0000.
  • the sequence is an arithmetic sequence of reason 1. Since the number of coding bits of a seed is predefined, the sequence applied to the maximum coded value results in the minimum coded value: thus, the double-byte value FFFF results in the value 0000. In this case, exceptions are made for the extreme values: when a seed reaches the maximum value, it will be considered as less than the minimum value. In the above example, exception 0000 will be considered greater than FFFF. Errors in the selection of the first seed are thus avoided.
  • Gr2 is selected as the first seed because it is identified as the last valid seed.
  • the seed Gr2 is therefore incremented.
  • the resulting value (0001) and the associated CRC are written to the location of the GrI memory. These values are present in the non-volatile memory during the third power up at time t3.
  • GrI and Gr2 are valid.
  • GrI is identified as the last valid seed.
  • the value GrI is incremented in RAM. A disturbance occurs during the writing of the incremented value in the location of Gr2.
  • the value of GrI is still 0001 and the value of Gr2 is any value. Because of the write error, Gr2 is determined to be invalid because of its CRC. GrI is therefore selected as the first seed. GrI is incremented in RAM. The value 00 02 and its CRC are then registered instead of Gr2 in the non-volatile memory. During the fifth power-up at time t5, these seed values are thus present in the non-volatile memory.

Abstract

The invention relates to method for updating a seed, comprising the following steps: determining the valid seeds among a number of seeds by means of respective writing validity indicators (101, 102, 104); selecting a first seed among the valid seeds by means of a deterministic function (105); reading the first seed into a non-volatile memory (121); generating a second seed by the function applied to the first seed (122); generating an indicator associated with the second seed (123), and; writing the second seed and the indicator in a single operation into a non-volatile memory while preserving the value of the first seed (124). The invention makes it possible to reduce the time for updating the seed for contactless applications.

Description

PROCEDE ET DISPOSITIF DE MISE A JOUR D' UNE GRAINE ETABLIE PAR UNE FONCTION DETERMINISTE DANS UN DISPOSITIF DE COMMUNICATION A TRAITEMENT NUMERIQUEMETHOD AND DEVICE FOR UPDATING A SEED ESTABLISHED BY A DETERMINISTIC FUNCTION IN A DIGITAL PROCESSING COMMUNICATION DEVICE
L'invention concerne de façon générale les dispositifs de communication et en particulier la mise à jour d'une valeur évoluant de façon déterministe dans de tels dispositifs. La mise à jour d'une valeur évoluant de façon déterministe est notamment utilisée pour la génération de nombres aléatoires, la synchronisation de messages ou l'incrémentation d'un compteur.The invention generally relates to communication devices and in particular the updating of a value evolving deterministically in such devices. The updating of a deterministically evolving value is used in particular for the generation of random numbers, the synchronization of messages or the incrementation of a counter.
La génération d'un nombre aléatoire par les circuits d'une carte à puce est relativement imparfaite. En effet, les différents nombres n'ont pas la même probabilité d'être générés. Pour pallier à cet inconvénient, le nombre généré par les circuits est combiné avec un nombre subissant une évolution déterministe. Un tel nombre est couramment désigné par le terme graine (désigné par le terme Seed en langue anglaise) . La valeur de la graine est ainsi modifiée de façon itérative par un algorithme déterministe lors d'une mise à jour. Les nombres aléatoires générés sont ensuite utilisés pour différentes applications, notamment pour la génération de clés de cryptage.The generation of a random number by the circuits of a smart card is relatively imperfect. Indeed, the different numbers do not have the same probability of being generated. To overcome this disadvantage, the number generated by the circuits is combined with a number undergoing a deterministic evolution. Such a number is commonly referred to as seed (referred to as Seed in English). The value of the seed is thus modified iteratively by a deterministic algorithm during an update. The random numbers generated are then used for different applications, in particular for the generation of encryption keys.
Lors de la phase de démarrage, une interruption extérieure de la communication sans contact entre une carte et un terminal peut altérer l'algorithme d'itération. La graine stockée peut alors être tronquée. De même, pour une communication par contact, une interruption de la communication ou de l'alimentation peut tronquer d'autres valeurs de la carte durant leur mise à jour. Afin de pallier à cet inconvénient, une carte à puce telle que décrite dans le document EP-A-O 756 746 utilise des fonctions de sauvegarde génériques (fonction appelée backup) pour sauvegarder des données en mémoire non volatile. La valeur initiale d'une donnée avant sa mise à jour est lue dans un emplacement d'usage de la mémoire non volatile, puis cette valeur initiale est recopiée dans un emplacement réservé dans la mémoire non volatile. Une valeur mise à jour est calculée en mémoire vive. La valeur mise à jour est mémorisée dans l'emplacement d'usage en écrasant la valeur initiale. Si la valeur mise à jour est déterminée comme défaillante, le processus de restauration de la valeur initiale valide est le suivant : la valeur initiale est lue dans l'emplacement réservé. La valeur initiale est copiée dans l'emplacement d'usage et écrase la valeur mise à jour. La mise à jour d'une graine est également effectuée selon ce procédé.During the start-up phase, an external interruption of contactless communication between a card and a terminal may alter the iteration algorithm. The stored seed can then be truncated. Similarly, for contact communication, an interruption in communication or power may truncate other values on the card while they are being updated. In order to overcome this drawback, a smart card as described in document EP-A-0 756 746 uses generic backup functions (function called backup) to save data in non-volatile memory. The initial value of a data item before it is updated is read in a location of use of the non-volatile memory, and then this initial value is copied to a reserved place in the non-volatile memory. An updated value is calculated in RAM. The updated value is stored in the usage location by overwriting the initial value. If the updated value is determined to be faulty, the process of restoring the valid initial value is as follows: the initial value is read in the reserved slot. The initial value is copied to the usage location and overwrites the updated value. The updating of a seed is also carried out according to this method.
Une telle carte à puce présente cependant des inconvénients. En mode de communication sans contact, certaines applications de la carte à puce (par exemple, une carte utilisée comme titre de transport détecté par une borne) exigent par exemple une durée de transaction inférieure à 100 millisecondes entre le terminal et la carte. La phase de démarrage de la carte à puce (les standards ISO 14443-3 et ISO 14443-4 définissent l'établissement de la communication sans contact entre la carte et un terminal) présente une durée trop importante pour que la durée de transaction soit respectée. Les étapes de mise à jour nécessitent plusieurs écritures en mémoire. Ces opérations sont relativement longues à mettre en œuvre. Les éventuelles phases de restauration d'une graine sont également relativement longues à mettre en œuvre.Such a smart card, however, has disadvantages. In contactless communication mode, certain applications of the smart card (for example, a card used as a transport ticket detected by a terminal) require, for example, a transaction duration of less than 100 milliseconds between the terminal and the card. The start phase of the smart card (the ISO 14443-3 and ISO 14443-4 standards define the establishment of contactless communication between the card and a terminal) is too long important for the transaction duration to be respected. The update steps require multiple writes in memory. These operations are relatively long to implement. The possible phases of restoration of a seed are also relatively long to implement.
Il existe donc un besoin pour un procédé de mise à jour d'une graine dans un dispositif de traitement numérique, comprenant les étapes de : -lecture d'une première graine dans une mémoire non volatile du dispositif ;There is therefore a need for a method for updating a seed in a digital processing device, comprising the steps of: reading a first seed in a nonvolatile memory of the device;
-génération d'une seconde graine par une fonction déterministe appliquée à la première graine ;-generation of a second seed by a deterministic function applied to the first seed;
-génération d'un indicateur de validité d'écriture associé à la seconde graine ;generating a write validity indicator associated with the second seed;
-écriture de la seconde graine et de l'indicateur de validité d'écriture associé en une seule opération dans la mémoire non volatile, en conservant la valeur de la première graine ; -détermination de graines valides parmi plusieurs graines de la mémoire non volatile au moyen d'indicateurs de validité d'écriture respectifs de la mémoire non volatile ;writing the second seed and the associated write validity flag in a single operation into the non-volatile memory, retaining the value of the first seed; determining seeds valid among several seeds of the non-volatile memory by means of respective write validity indicators of the non-volatile memory;
-si au moins une graine est déterminée valide, sélection de la première graine parmi les graines valides au moyen de ladite fonction déterministe.if at least one seed is determined valid, selecting the first seed from among the valid seeds by means of said deterministic function.
Dans le cas où aucune desdites graines n'est déterminée valide, la première graine est générée aléatoirement. Selon une variante, la fonction déterministe est une fonction croissante et la première graine est sélectionnée par comparaison des valeurs des graines valides. Selon une autre variante, la fonction déterministe est une fonction décroissante et la première graine est sélectionnée par comparaison des valeurs des graines valides .In the case where none of said seeds is determined valid, the first seed is generated randomly. According to one variant, the deterministic function is an increasing function and the first seed is selected by comparison of valid seed values. According to another variant, the deterministic function is a decreasing function and the first seed is selected by comparing valid seed values.
L'invention porte également sur un procédé de génération d'un nombre aléatoire, comprenant les étapes d'un tel procédé de mise à jour et comprenant en outre l'étape de génération d'un nombre aléatoire en fonction de la seconde graine mémorisée.The invention also relates to a method for generating a random number, comprising the steps of such an update method and further comprising the step of generating a random number according to the second seed stored.
L'invention porte encore sur un dispositif de traitement numérique présentant une mémoire non volatile et un organe de traitement, susceptible de mettre en œuvre de tels procédés. Selon une variante, le dispositif présente une interface de communication sans contact avec d'autres appareils .The invention also relates to a digital processing device having a non-volatile memory and a processing unit, capable of implementing such methods. Alternatively, the device has a communication interface without contact with other devices.
Selon encore une variante, le dispositif est une carte à puce.According to another variant, the device is a smart card.
L'invention sera mieux comprise à la lecture de la description qui suit, accompagnée des dessins annexés qui représentent :The invention will be better understood on reading the description which follows, accompanied by the appended drawings which represent:
-Figure 1, un algorithme de mise à jour d'une graine mis en œuvre selon l'invention ;FIG. 1, an algorithm for updating a seed implemented according to the invention;
-Figure 2, un diagramme des étapes d'incrémentation d'une graine ;FIG. 2, a diagram of the steps of incrementing a seed;
-Figure 3, un exemple d'évolution des valeurs de graine selon l'invention. Le terme graine désignera par la suite une valeur évoluant de façon déterministe à partir d'une valeur initiale. Cette valeur initiale est soit générée aléatoirement par l'appareil, soit inscrite en usine dans une mémoire non volatile de l'appareil.FIG. 3, an example of evolution of the seed values according to the invention. The term seed will subsequently designate a value evolving deterministically from an initial value. This initial value is either generated randomly by the device, or registered in the factory in nonvolatile memory of the device.
L'invention propose de mettre à jour une graine dans un dispositif de traitement numérique, en lisant une première graine, en y appliquant une fonction déterministe pour générer une seconde graine, en générant un indicateur de validité de la seconde graine, puis en inscrivant la seconde graine et son indicateur en une seule opération dans une mémoire non volatile du dispositif.The invention proposes to update a seed in a digital processing device, by reading a first seed, by applying a deterministic function to generate a second seed, generating an indicator of validity of the second seed, and then entering the seed. second seed and its indicator in a single operation in a non-volatile memory of the device.
Parmi plusieurs graines de la mémoire non volatile, des indicateurs de validité d'écriture permettent de déterminer les graines valides . La première graine est sélectionnée parmi ces graines valides . Si aucune graine n'est valide, la première graine est générée aléatoirement. La valeur de la première graine est conservée pour permettre la récupération d'une valeur valide si l'écriture de la seconde graine se révélait malgré tout défaillante.Among several seeds of the non-volatile memory, write validity indicators make it possible to determine the valid seeds. The first seed is selected from these valid seeds. If no seed is valid, the first seed is randomly generated. The value of the first seed is retained to allow the recovery of a valid value if the writing of the second seed is still found to be faulty.
La figure 1 illustre différentes étapes dans un exemple de procédé de mise à jour d'une graine selonFIG. 1 illustrates different steps in an exemplary method of updating a seed according to
1' invention.The invention.
Les étapes 101 à 103 visent à déterminer la validité de deux graines mémorisées dans la mémoire non volatile du dispositif. Pour une graine donnée, un indicateur de validité d'écriture est calculé puis l'indicateur obtenu est comparé à l'indicateur de validité d'écriture associé de la mémoire non volatile. La graine est considérée valide si et seulement si les indicateurs comparés sont égaux. A l'étape 101, la validité d'une graine GrI est testée au moyen de son indicateur de validité. Si GrI est non valide, le procédé passe à l'étape 102. Si GrI est valide, le procédé passe à l'étape 104. Aux étapes 102 et 104, il est déterminé si une graine Gr2 est valide au moyen de son indicateur de validité. A la fin des étapes 102 et 104, les graines valides ont ainsi été déterminées parmi les graines GrI et Gr2.The steps 101 to 103 aim to determine the validity of two seeds stored in the nonvolatile memory of the device. For a given seed, a write validity flag is calculated and then the indicator obtained is compared with the associated write validity flag of the non-volatile memory. The seed is considered valid if and only if the compared indicators are equal. In step 101, the validity of a GrI seed is tested by means of its validity indicator. If GrI is invalid, the process proceeds to step 102. If GrI is valid, the process proceeds to step 104. In steps 102 and 104, it is determined whether a seed Gr2 is valid by means of its flag. validity. At the end of steps 102 and 104, the valid seeds were thus determined from seeds Gr1 and Gr2.
Trois cas se présentent alors :Three cases then arise:
-ni GrI, ni Gr2 ne sont valides. Le procédé passe alors à l'étape 103 ;Neither GrI nor Gr2 are valid. The process then proceeds to step 103;
-GrI et Gr2 sont valides. Le procédé passe alors à l'étape 105 ;-GrI and Gr2 are valid. The process then proceeds to step 105;
-Une seule valeur est valide. Si GrI est valide le procédé passe à l'étape 112 où GrI est sélectionnée comme première graine. Si Gr2 est valide, le procédé passe à l'étape 111 où Gr2 est sélectionnée comme première graine.-A single value is valid. If GrI is valid the process proceeds to step 112 where GrI is selected as the first seed. If Gr2 is valid, the process proceeds to step 111 where Gr2 is selected as the first seed.
Dans l'exemple, les indicateurs de validité d'écriture sont déterminés par un algorithme de test de redondance cyclique (CRC pour Cyclic Redundancy Check en langue anglaise) . Tout autre algorithme de vérification de validité peut également être utilisé : on pourra notamment prévoir de réaliser un test de parité sur les bits des graines . L'étape 105 détermine la dernière valeur valide parmi les différentes valeurs valides identifiées. La première graine sélectionnée est alors la dernière valeur valide. Pour chaque valeur valide trouvée, la fonction déterministe est appliquée. La dernière valeur valide sera celle pour laquelle le résultat de la fonction ne correspondra pas à une autre valeur valide. Cette graine sera utilisée comme première graine pour la mise à jour. Dans l'exemple, si GrI et Gr2 sont valides et si Gr2 est le résultat de l'application de la fonction déterministe sur GrI, Gr2 est la dernière valeur valide et sera utilisée comme première graine.In the example, the write validity flags are determined by a cyclic redundancy check (CRC) algorithm. Any other validity verification algorithm may also be used: it will be possible in particular to perform a parity test on the seed bits. Step 105 determines the last valid value among the different valid values identified. The first seed selected is then the last valid value. For each valid value found, the deterministic function is applied. The last valid value will be the one for which the result of the function will not match another valid value. This seed will be used as the first seed for the update. In the example, if GrI and Gr2 are valid and if Gr2 is the result of applying the deterministic function on GrI, Gr2 is the last valid value and will be used as the first seed.
La fonction déterministe peut, dans un cas simplifié, être une fonction croissante, par exemple une incrémentation d'une unité. La dernière graine valide est dans ce cas celle qui présente la plus grande valeur. La fonction déterministe peut également être une fonction décroissante, par exemple une décrémentation d'une unité. La dernière graine valide est dans ce cas celle qui présente la plus petite valeur.The deterministic function can, in a simplified case, be an increasing function, for example an incrementation of one unit. The last valid seed is in this case the one with the greatest value. The deterministic function can also be a decreasing function, for example a decrementation of a unit. The last valid seed is in this case the one with the smallest value.
L'étape 103 se déroule lorsque aucune graine valide n'a été identifiée. Ce cas peut notamment se présenter lors de l'initialisation du dispositif. Les valeurs des graines dans la mémoire non volatile sont alors indéterminées. Dans ce cas, une première graine est générée aléatoirement ou à l'aide d'un algorithme adéquat. Lors d'une génération aléatoire de la première graine, son indicateur de validité est également calculé. Cette première graine et son indicateur sont écrits en une seule opération dans la mémoire non volatile, en écrasant les valeurs précédentes de la graine GrI. Le procédé passe alors à l'étape 112 : la seconde graine est calculée à partir de la graine GrI générée.Step 103 takes place when no valid seed has been identified. This case may especially occur during the initialization of the device. The seed values in the non-volatile memory are then indeterminate. In this case, a first seed is generated randomly or with the aid of an appropriate algorithm. During a random generation of the first seed, its validity indicator is also calculated. This first seed and its indicator are written in a single operation in the non-volatile memory, overwriting the previous values of the seed GrI. The process then proceeds to step 112: the second seed is calculated from the generated GrI seed.
Les étapes 111 et 112 sont des étapes de calcul de la seconde graine. La fonction déterministe est appliquée à la première graine sélectionnée. La figure 2 illustre plus précisément différentes phases pouvant être mises en œuvre lors du calcul de la seconde graine.Steps 111 and 112 are steps for calculating the second seed. The deterministic function is applied to the first selected seed. Figure 2 illustrates more precisely different phases that can be implemented during the calculation of the second seed.
La figure 2 illustre plus précisément le déroulement des étapes 111 et 112.Figure 2 illustrates more precisely the progress of steps 111 and 112.
A l'étape 121, la première graine est copiée en mémoire vive. A l'étape 122, la valeur de la seconde graine est calculée en mémoire vive. A l'étape 123, l'indicateur de validité d'écriture de la seconde graine est calculé en mémoire vive. A l'étape 124, la seconde graine et l'indicateur calculés sont écrits en une seule opération dans la mémoire non volatile.In step 121, the first seed is copied to RAM. In step 122, the value of the second seed is calculated in random access memory. In step 123, the write validity flag of the second seed is calculated in random access memory. In step 124, the calculated second seed and the flag are written in a single operation in the nonvolatile memory.
Les graines sont de préférence écrites dans des pages distinctes de la mémoire non volatile. La sécurité de la sauvegarde de la graine est ainsi accrue : si la page d'une graine est attaquée ou abîmée, la probabilité qu'une page contenant une autre graine soit attaquée ou abîmée est alors réduite.The seeds are preferably written in separate pages of the non-volatile memory. The security of saving the seed is thus increased: if the page of a seed is attacked or damaged, the probability that a page containing another seed is attacked or damaged is then reduced.
Pour réduire le nombre de graines mémorisées dans la mémoire non volatile, on peut également prévoir que la seconde graine et son indicateur écrasent une graine et un indicateur qui n'ont pas été sélectionnés comme première graine. Par exemple, avec GrI comme première graine, la seconde graine générée et son indicateur vont écraser la graine Gr2 et son indicateur. Afin d'éviter une génération de graines aléatoire lors d'une initialisation de l'appareil, on peut également prévoir que des valeurs de graine par défaut avec des indicateurs correspondants soient écrites en usine dans la mémoire non volatile de l'appareil.To reduce the number of seeds stored in the non-volatile memory, it is also possible that the second seed and its indicator crush a seed and an indicator that have not been selected as the first seed. For example, with GrI as the first seed, the second seed generated and its indicator will crush the Gr2 seed and its indicator. In order to avoid random seed generation during initialization of the apparatus, it is also possible to provide for default seed values with corresponding indicators to be written in the factory in the nonvolatile memory of the apparatus.
La figure 3 représente l'évolution des valeurs de graine dans un exemple de procédé selon l'invention. Les colonnes de gauche indiquent les valeurs d'une graine GrI et de son indicateur de validité. Les colonnes de droite indiquent les valeurs d'une graine Gr2 et de son indicateur de validité. Les valeurs représentées correspondent aux valeurs présentes dans la mémoire non volatile lors d'une mise sous tension de 1'appareil. Lors de la première mise sous tension illustrée à l'instant tl, GrI présente la valeur hexadécimale FFFF, son indicateur est un CRC dont la valeur est correcte. Gr2 présente une valeur quelconque et le CRC associé présente une valeur non correcte. Lors de la mise à jour, seule GrI est déterminée comme valide. GrI est donc sélectionnée comme première graine pour la mise à jour. La fonction déterministe est donc appliquée à GrI . La seconde graine et son CRC sont alors écrits dans l'emplacement de la mémoire volatile dédié à Gr2. Dans l'exemple, la fonction déterministe incrémente la valeur de graine de 1. Le résultat de la fonction déterministe est donc 0000.FIG. 3 represents the evolution of the seed values in an exemplary method according to the invention. The left columns show the values of a GrI seed and its validity indicator. The columns on the right indicate the values of a seed Gr2 and its validity indicator. The values shown correspond to the values present in the non-volatile memory when the device is turned on. During the first power-up illustrated at time t1, GrI has the hexadecimal value FFFF, its indicator is a CRC whose value is correct. Gr2 has any value and the associated CRC has an incorrect value. When updating, only GrI is determined to be valid. GrI is therefore selected as the first seed for day. The deterministic function is therefore applied to GrI. The second seed and its CRC are then written in the location of the volatile memory dedicated to Gr2. In the example, the deterministic function increments the seed value by 1. The result of the deterministic function is therefore 0000.
Ces valeurs sont donc présentes dans la mémoire non volatile lors de la seconde mise sous tension à l'instant t2. Lors de la mise à jour, GrI et Gr2 sont déterminées valides .These values are therefore present in the non-volatile memory during the second power up at time t2. When updating, GrI and Gr2 are valid.
Dans l'exemple simplifié de la figure 3, la suite est une suite arithmétique de raison 1. Le nombre de bits de codage d'une graine étant prédéfini, la suite appliquée à la valeur maximum codée aboutit à la valeur minimum codée : ainsi, la valeur FFFF codée sur deux octets aboutit à la valeur 0000. On prévoit dans ce cas des exceptions pour les valeurs extrêmes: lorsqu'une graine atteint la valeur maximum codée, elle sera considérée comme inférieure à la valeur minimum codée. Dans l'exemple précédent, par exception 0000 sera considérée comme supérieure à la valeur FFFF. Des erreurs lors de la sélection de la première graine sont ainsi évitées.In the simplified example of FIG. 3, the sequence is an arithmetic sequence of reason 1. Since the number of coding bits of a seed is predefined, the sequence applied to the maximum coded value results in the minimum coded value: thus, the double-byte value FFFF results in the value 0000. In this case, exceptions are made for the extreme values: when a seed reaches the maximum value, it will be considered as less than the minimum value. In the above example, exception 0000 will be considered greater than FFFF. Errors in the selection of the first seed are thus avoided.
Selon le mécanisme précédemment décrit, Gr2 est sélectionnée comme première graine car elle est identifiée comme la dernière graine valide. La graine Gr2 subit donc une incrémentation. La valeur obtenue (0001) et le CRC associé sont écrits dans l'emplacement de la mémoire GrI . Ces valeurs sont présentes dans la mémoire non volatile lors de la troisième mise sous tension à l'instant t3. Lors de la mise à jour, GrI et Gr2 sont déterminées valides . GrI est identifiée comme la dernière graine valide. La valeur GrI est incrémentée en mémoire vive. Une perturbation intervient durant l'écriture de la valeur incrémentée dans l'emplacement de Gr2.According to the previously described mechanism, Gr2 is selected as the first seed because it is identified as the last valid seed. The seed Gr2 is therefore incremented. The resulting value (0001) and the associated CRC are written to the location of the GrI memory. These values are present in the non-volatile memory during the third power up at time t3. When updating, GrI and Gr2 are valid. GrI is identified as the last valid seed. The value GrI is incremented in RAM. A disturbance occurs during the writing of the incremented value in the location of Gr2.
Lors de la quatrième mise sous tension à l'instant t4, la valeur de GrI est encore 0001 et la valeur de Gr2 est une valeur quelconque. Du fait de l'erreur d'écriture, Gr2 est déterminée comme non valide du fait de son CRC. GrI est donc sélectionnée comme première graine. GrI est incrémentée en mémoire vive. La valeur 00 02 et son CRC sont alors inscrits en remplacement de Gr2 dans la mémoire non volatile. Lors de la cinquième mise sous tension à l'instant t5, ces valeurs de graine sont ainsi présentes dans la mémoire non volatile.At the fourth power up at time t4, the value of GrI is still 0001 and the value of Gr2 is any value. Because of the write error, Gr2 is determined to be invalid because of its CRC. GrI is therefore selected as the first seed. GrI is incremented in RAM. The value 00 02 and its CRC are then registered instead of Gr2 in the non-volatile memory. During the fifth power-up at time t5, these seed values are thus present in the non-volatile memory.
Bien que les exemples décrits n'utilisent que deux graines, l'homme du métier peut également utiliser un plus grand nombre de graines en fonction des applications souhaitées . Les tailles des graines et des indicateurs de validité d'écriture sont également fournies à titre d'exemple. Although the described examples use only two seeds, the skilled person can also use a larger number of seeds depending on the desired applications. Seed sizes and write validity flags are also provided as examples.

Claims

REVENDICATIONS
1. Procédé de mise à jour d'une graine dans un dispositif de traitement numérique, comprenant les étapes de :A method of updating a seed in a digital processing device, comprising the steps of:
-lecture d'une première graine dans une mémoire non volatile du dispositif (121) ;reading a first seed in a nonvolatile memory of the device (121);
-génération d'une seconde graine par une fonction déterministe appliquée à la première graine (122) ; -génération d'un indicateur de validité d'écriture associé à la seconde graine (123) ; -écriture de la seconde graine et de l'indicateur de validité d'écriture associé en une seule opération dans la mémoire non volatile, en conservant la valeur de la première graine (124) ; caractérisé en ce qu'il comprend en outre les étapes suivantes :-generating a second seed by a deterministic function applied to the first seed (122); generating a write validity flag associated with the second seed (123); writing the second seed and the associated write validity flag in a single operation to the nonvolatile memory, retaining the value of the first seed (124); characterized in that it further comprises the following steps:
-détermination de graines valides parmi plusieurs graines de la mémoire non volatile au moyen d'indicateurs de validité d'écriture respectifs de la mémoire non volatile (101, 102, 104) ; -si au moins une graine est déterminée valide, sélection de la première graine parmi les graines valides au moyen de ladite fonction déterministe (105) .determining seeds valid among several seeds of the non-volatile memory by means of respective write validity indicators of the non-volatile memory (101, 102, 104); if at least one seed is determined valid, selecting the first seed among the valid seeds by means of said deterministic function (105).
2. Procédé selon la revendication 1, caractérisé en ce que, si aucune desdites graines n'est déterminée valide, la première graine est générée aléatoirement (103) .2. Method according to claim 1, characterized in that, if none of said seeds is determined valid, the first seed is randomly generated (103).
3. Procédé selon la revendication 1 ou 2, caractérisé en ce que :3. Method according to claim 1 or 2, characterized in that:
-la fonction déterministe est une fonction croissante ;the deterministic function is a growing function;
-la première graine est sélectionnée par comparaison des valeurs des graines valides .the first seed is selected by comparing valid seed values.
4. Procédé selon la revendication 1 ou 2, caractérisé en ce que :4. Method according to claim 1 or 2, characterized in that:
-la fonction déterministe est une fonction décroissante ; -la première graine est sélectionnée par comparaison des valeurs des graines valides .the deterministic function is a decreasing function; the first seed is selected by comparing valid seed values.
5. Procédé de génération d'un nombre aléatoire, comprenant les étapes d'un procédé de mise à jour selon l'une quelconque des revendications précédentes, et comprenant en outre l'étape de génération d'un nombre aléatoire en fonction de la seconde graine mémorisée.A method for generating a random number, comprising the steps of an updating method according to any one of the preceding claims, and further comprising the step of generating a random number according to the second seed stored.
6. Dispositif de traitement numérique présentant une mémoire non volatile et un organe de traitement, caractérisé en ce qu'il est susceptible de mettre en œuvre un procédé selon l'une quelconque des revendications précédentes . 6. Digital processing device having a non-volatile memory and a processing member, characterized in that it is capable of implementing a method according to any one of the preceding claims.
7. Dispositif selon la revendication 6, caractérisé en ce qu'il présente une interface de communication sans contact avec d'autres appareils.7. Device according to claim 6, characterized in that it has a communication interface without contact with other devices.
8. Dispositif selon la revendication 6 ou 1, caractérisé en ce que le dispositif est une carte à puce. 8. Device according to claim 6 or 1, characterized in that the device is a smart card.
PCT/EP2005/054292 2004-09-09 2005-09-01 Method and device for updating a seed established by a deterministic function in a digital processing communications device WO2006029960A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR04/09585 2004-09-09
FR0409585A FR2875080B1 (en) 2004-09-09 2004-09-09 OPTIMIZED UPDATING OF A DETERMINISTIC VALUE IN A COMMUNICATION DEVICE

Publications (1)

Publication Number Publication Date
WO2006029960A1 true WO2006029960A1 (en) 2006-03-23

Family

ID=34949398

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2005/054292 WO2006029960A1 (en) 2004-09-09 2005-09-01 Method and device for updating a seed established by a deterministic function in a digital processing communications device

Country Status (2)

Country Link
FR (1) FR2875080B1 (en)
WO (1) WO2006029960A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2730833A1 (en) * 1995-02-16 1996-08-23 Gemplus Card Int SECURE UPDATE OF EEPROM MEMORY
US5715431A (en) * 1993-04-13 1998-02-03 Mondex International Limited Tamper proof security measure in data writing to non-volatile memory
US6061703A (en) * 1997-05-15 2000-05-09 International Business Machines Corporation Pseudorandom number generator with normal and test modes of operation
US20030034388A1 (en) * 2000-05-15 2003-02-20 Larry Routhenstein Method for generating customer secure card numbers subject to use restrictions by an electronic card
US20040162864A1 (en) * 2002-07-08 2004-08-19 Globespan Virata Inc. System and method for generating pseudo-random numbers

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715431A (en) * 1993-04-13 1998-02-03 Mondex International Limited Tamper proof security measure in data writing to non-volatile memory
FR2730833A1 (en) * 1995-02-16 1996-08-23 Gemplus Card Int SECURE UPDATE OF EEPROM MEMORY
US6061703A (en) * 1997-05-15 2000-05-09 International Business Machines Corporation Pseudorandom number generator with normal and test modes of operation
US20030034388A1 (en) * 2000-05-15 2003-02-20 Larry Routhenstein Method for generating customer secure card numbers subject to use restrictions by an electronic card
US20040162864A1 (en) * 2002-07-08 2004-08-19 Globespan Virata Inc. System and method for generating pseudo-random numbers

Also Published As

Publication number Publication date
FR2875080B1 (en) 2006-10-27
FR2875080A1 (en) 2006-03-10

Similar Documents

Publication Publication Date Title
EP2786253B1 (en) Datum reading error detection method
EP0261162B1 (en) Method for qualitative saving of digitized data
CA2034002C (en) Method and system for checking the integrity of a software or of data
EP2842232B1 (en) Cyclic redundancy check method with protection from side channel attacks
FR2906926A1 (en) ITERATIVE ERROR CORRECTION CODE (ECC) DEVICE AND METHOD WITH COMBINED RELEASE AND ERROR-ERASE INFORMATION
EP1573541A2 (en) Data storage method with error correction
EP2100250B1 (en) System and method for securing data
WO2007009847A1 (en) Detection of fault by long perturbation
US20100194609A1 (en) Method and Device For Coding Data Words
WO2006029960A1 (en) Method and device for updating a seed established by a deterministic function in a digital processing communications device
EP1904928A2 (en) Permanent data hardware integrity
EP3502899A1 (en) Method for determining a checksum, associated computer program and electronic entity
FR2838580A1 (en) Methods and devices of low cost for decoding the codes products
EP3552346B1 (en) Method of sending a message, method of reception, sending device, reception device and communication system associated therewith
EP1609326A2 (en) Method of protecting a mobile-telephone-type telecommunication terminal
EP2786497B1 (en) Method for maximising the decoding capacity of an error correcting code using supplementary syndromes
EP3284206A1 (en) Method of securing the execution of a program
WO2017060495A1 (en) Dynamically distributed backup method and system
EP2343663A1 (en) Method for multiform protection of an executable code
WO1998029844A1 (en) Method for ensuring the security of an information in a rewritable memory
WO2017087950A1 (en) Methods and apparatus to detect and correct errors in destructive read non-volatile memory
FR2847398A1 (en) Two-fold sequi-RS codes and their decoding, comprise more adjustable parameters than the Miura codes, larger minimum distance and decoding with erasings
FR3082333A1 (en) METHOD FOR DETERMINING MODULAR REVERSE AND ASSOCIATED CRYPTOGRAPHIC PROCESSING DEVICE
Assanovich et al. Information Encoding for Flow Watermarking and Binding Keys to Biometric Data
FR3122753A1 (en) METHOD FOR EXECUTING A BINARY CODE BY A MICROPROCESSOR

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase