Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD AND DEVICE FOR UPDATING A SEED ESTABLISHED BY A DETERMINISTIC FUNCTION IN A DIGITAL PROCESSING COMMUNICATIONS DEVICE
Document Type and Number:
WIPO Patent Application WO/2006/029960
Kind Code:
A1
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.

Inventors:
OHANIAN HENRI (FR)
AILLAUD CHRISTOPHE (FR)
Application Number:
PCT/EP2005/054292
Publication Date:
March 23, 2006
Filing Date:
September 01, 2005
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
GEMPLUS CARD INT (FR)
OHANIAN HENRI (FR)
AILLAUD CHRISTOPHE (FR)
International Classes:
G06F7/58; G07F7/10; G06F11/14
Foreign References:
US20040162864A12004-08-19
US6061703A2000-05-09
US20030034388A12003-02-20
US5715431A1998-02-03
FR2730833A11996-08-23
Download PDF:
Claims:
REVENDICATIONS
1. 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 (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 : 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) .
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) .
3. Procédé selon la revendication 1 ou 2, caractérisé en ce que : la fonction déterministe est une fonction croissante ; la première graine est sélectionnée par comparaison des valeurs des graines valides .
4. Procédé selon la revendication 1 ou 2, caractérisé en ce que : la fonction déterministe est une fonction décroissante ; la première graine est sélectionnée par comparaison des valeurs des graines valides .
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.
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 .
7. Dispositif selon la revendication 6, caractérisé en ce qu'il présente une interface de communication sans contact avec d'autres appareils.
8. Dispositif selon la revendication 6 ou 1, caractérisé en ce que le dispositif est une carte à puce.
Description:
PROCEDE ET DISPOSITIF DE MISE A JOUR D' UNE GRAINE ETABLIE PAR UNE FONCTION DETERMINISTE DANS UN DISPOSITIF DE COMMUNICATION A TRAITEMENT NUMERIQUE

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.

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. 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é. 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. 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 ; -génération d'une seconde graine par une fonction déterministe appliquée à la première graine ; -génération d'un indicateur de validité d'écriture associé à la seconde graine ; -é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 ; -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. 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 . 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. 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 . Selon encore une variante, le dispositif est une carte à puce.

L'invention sera mieux comprise à la lecture de la description qui suit, accompagnée des dessins annexés qui représentent : -Figure 1, un algorithme de mise à jour d'une graine mis en œuvre selon l'invention ; -Figure 2, un diagramme des étapes d'incrémentation d'une graine ; -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. 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. 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.

La figure 1 illustre différentes étapes dans un exemple de procédé de mise à jour d'une graine selon 1' 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. Trois cas se présentent alors : -ni GrI, ni Gr2 ne sont valides. Le procédé passe alors à l'étape 103 ; -GrI et Gr2 sont valides. Le procédé passe alors à l'étape 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.

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. 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.

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.

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.

La figure 2 illustre plus précisément le déroulement des étapes 111 et 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.

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. 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.

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. 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 .

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.

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. 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.

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.