Brevet FR3000826A1 — publié le 20140711

La présente invention concerne un procédé d'accès à l'ensemble des cellules d'une zone mémoire à des fins d'écriture ou de lecture de blocs de données dans lesdites cellules. La présente invention trouve un intérêt particulier, par exemple, dans tout type de cartes, carte à puce, carte SIM, etc. qui comprennent une unité de traitement, telle qu'un microcontrôleur, pour manipuler des données cryptographiques servant à l'identification et/ou l'authentification d'un utilisateur d'une telle carte. De manière générale, un procédé d'accès aux cellules d'une zone mémoire est utilisé à chaque fois qu'une unité de traitement effectue une opération d'écriture ou de lecture de blocs de données dans les cellules de ladite zone mémoire. Cette opération d'accès consiste, pour l'unité de traitement, à chaque temps d'accès, à générer une adresse qui est alors fournie sur le bus d'adressage d'une mémoire et, soit à lire le bloc de données stocké dans la cellule à l'adresse ainsi générée, soit à écrire un bloc de données dans ladite cellule. Les blocs de données lus dans les cellules de la zone mémoire peuvent être manipulés, c'est-à-dire traités, recopiés après traitement, etc. par l'unité de traitement ou être transmis après traitement à une unité de traitement extérieure. De même, les blocs de données qui sont stockés dans les cellules de ladite zone mémoire peuvent être des blocs de données qui ont fait l'objet de manipulations de la part de ladite unité de traitement, ou des blocs de données qui ont été reçus d'une unité de traitement extérieure. Les manipulations de blocs de données, qui concernent des informations confidentielles, doivent être opérées par l'unité de traitement en toute sécurité. Or, il existe des techniques d'analyse, dites d'analyse des canaux cachés, comme par exemple l'analyse de la consommation électrique ou de l'émission de radiations électromagnétiques, effectuées lors d'opérations spécifiques qui peuvent permettre de connaître ces informations confidentielles, si des précautions ne sont pas prises. Des contre-mesures sont généralement donc prises. Parmi celles-ci, des techniques consistent à intégrer une composante aléatoire dans l'accès à la zone mémoire qui contient les blocs de données correspondant à ces informations confidentielles, différente à chaque fois qu'un accès est réalisé afin qu'une analyse par canaux cachés ne puisse pas permettre de remonter à l'information confidentielle. Une technique consiste à choisir un indice aléatoire préalablement à l'opération d'accès à la zone mémoire, puis à accéder aux cellules de la zone mémoire considérée de manière que les adresses d'accès soient dans un ordre décalé de cet indice aléatoire par rapport à l'ordre des temps d'accès. Ainsi, à chaque manipulation des blocs de données de la zone mémoire considérée, la combinaison des adresses d'accès est dans un ordre différent de celle d'une manipulation précédente, ordre simplement décalé de l'indice aléatoire. Cette technique peut s'avérer insuffisante à l'encontre d'attaques répétées et statistiques, car le nombre de combinaisons d'adresses d'accès possibles qui est égal à la taille maximale de la zone mémoire à accéder s'avère relativement restreint. Une autre technique consiste à générer un indice par application d'un masque de brouillage, par exemple pour l'utilisation d'une méthode d'addition dans le corps de Gallois GF(2n) où les coefficients sont des éléments de GF(2). Si cette technique s'avère plus efficace à l'encontre des attaques répétées et statistiques que la technique précédente, elles présentent néanmoins l'inconvénient que l'application directe d'un masque est dépendante de la taille de la zone mémoire à adresser, notamment si celle-ci n'est pas une puissance de 2. Pour remédier à cet inconvénient, il est nécessaire de découper la zone mémoire à accéder en sous-zones de tailles puissance de 2 et d'effectuer les accès sur chacune de ces sous-zones. Les sous-zones de plus petite taille ne sont cependant pas brouillées convenablement. Il en résulte que le nombre de combinaisons d'adresses d'accès possibles est encore trop faible et qu'il n'est pas possible de choisir le dernier indice pour une taille de la zone mémoire impaire. Il s'avère donc que les techniques connues de l'état de la technique ne sont pas suffisamment résistantes à des attaques par analyse des canaux cachés du fait que le nombre possible de combinaisons des adresses d'accès dans des ordres différents n'est pas assez important et ne résistent donc pas à des attaques dans un temps relativement long. Le but de l'invention est donc de remédier aux inconvénients mentionnés ci- dessus des techniques de l'état de la technique et de proposer un procédé d'accès à l'ensemble des cellules d'une zone mémoire à des fins d'écriture ou de lecture de blocs de données dans lesdites cellules dont le nombre possible de combinaisons des adresses d'accès est suffisamment élevé pour rendre inefficace l'analyse dans un temps raisonnable des informations obtenues par les techniques d'analyse des canaux cachés. A cet effet, l'invention concerne un procédé d'accès à l'ensemble des cellules d'une zone mémoire à des fins d'écriture ou de lecture de blocs de données dans lesdites cellules, ledit procédé incluant, pour chacun des temps d'accès Ti avec i = 0 à N auxdites cellules de ladite zone mémoire à accéder, un processus de détermination de l'adresse ADRj, avec j = 0 à N, de la cellule de la zone mémoire à accéder audit temps d'accès Ti, une adresse ADRj déterminée pour un temps d'accès Ti n'étant pas de nouveau déterminée pour un autre temps d'accès Tk. Selon l'invention, ledit processus de détermination de chaque adresse ADRj est un processus pseudo aléatoire. Selon un mode de réalisation de l'invention, ledit processus de détermination d'adresse pseudo aléatoire comprend, mises en oeuvre pour chaque temps d'accès Ti : - une étape de détermination aléatoire d'un bit d'aléa qui peut ainsi prendre soit une première valeur, soit une seconde valeur, - une étape de test de la valeur prise par ledit bit d'aléa qui branche ledit processus, - soit vers une étape de détermination d'un index comme étant égal à la valeur d'un premier indice, suivie d'une étape d'incrémentation d'une unité dudit premier indice, - soit vers une étape de détermination dudit index comme étant égal à la valeur d'un second indice, suivie d'une étape de décrémentation d'une unité dudit second indice, la valeur dudit index étant la valeur de ladite adresse de la cellule de la zone mémoire à accéder audit temps d'accès Ti. Selon un premier mode de réalisation, ladite étape de détermination aléatoire consiste à choisir aléatoirement la valeur dudit bit d'aléa. Selon un second mode de réalisation, ladite étape de détermination aléatoire consiste à extraire d'un registre le bit de poids correspondant au rang du temps d'accès considéré, ledit registre stockant un nombre préalablement déterminé de manière pseudo aléatoire. Dans une application particulière, le nombre stocké dans ledit registre a été déterminé lors d'une précédente instance de mise en oeuvre du procédé d'accès selon l'invention par concaténation de tous les bits d'aléa de manière que le bit d'aléa déterminé lors de la précédente instance pour un temps d'accès de rang i soit stocké dans le bit dudit registre dont le poids est égal audit rang i. Avantageusement, ladite zone mémoire étant de taille N+1, la valeur initiale du premier indice est comprise entre 0 et N et la valeur initiale du second indice est égale à la valeur initiale du premier indice à laquelle est ajoutée la taille de ladite zone mémoire moins un. Par exemple, la valeur initiale du premier indice est déterminée de manière aléatoire ou pseudo aléaloire. Selon une variante de réalisation, ledit procédé consiste, lors d'une étape d'initialisation, à déterminer la valeur d'un nombre aléatoire. Le processus de détermination d'adresse comprend en outre, après détermination de la valeur de l'index pour le temps d'accès Ti, une étape d'application à l'index ainsi déterminé d'une opération logique de OU Exclusif bit à bit avec ledit nombre aléatoire, la valeur résultant de ladite opération étant la valeur de l'adresse d'accès à la cellule de la zone mémoire à accéder audit temps d'accès Ti. Selon une autre variante, ledit procédé d'accès consiste lors d'une étape d'initialisation, à déterminer la valeur d'un nombre aléatoire, et ledit processus pseudo aléatoire comprend en outre, après détermination de la valeur de l'index pour le temps d'accès Ti, une étape de calcul d'une valeur de masque, une étape d'application à ladite valeur dudit nombre aléatoire d'une opération logique ET bit à bit avec ledit masque, et une étape d'application à l'index déterminé pour le temps d'accès Ti considéré d'une opération logique de OU Exclusif bit à bit avec le résultat de ladite opération logique ET, la valeur résultant de l'opération de OU Exclusif étant la valeur de l'adresse d'accès à la cellule de la zone mémoire à accéder audit temps d'accès Ti. Avantageusement, ladite étape de calcul d'une valeur de masque consiste à: - positionner le bit de poids fort dudit masque à zéro, puis pour chaque bit de poids i prenant successivement les valeurs de S-1 à 1, S étant la taille en nombre de bits des variables utilisées pour les opérations logiques, - à appliquer au bit de poids i de l'index déterminé une opération logique de OU Exclusif avec le bit de poids i de la taille de ladite zone mémoire, - à appliquer audit résultat de ladite opération logique de OU Exclusif, une opération logique de OU avec le bit de poids i du masque, - à positionner le bit de poids i-1 du masque à la valeur du résultat de ladite opération logique de OU. Avantageusement, ledit procédé d'accès comprend en outre une étape de décalage des adresses par addition ou soustraction à la valeur de l'index IDX de la valeur d'un nombre préalablement tiré de manière aléatoire. La présente invention concerne également un dispositif du type carte à puce comprenant une unité de traitement pouvant accéder à une mémoire, soit en écriture, soit en lecture qui est caractérisé en ce que ladite unité de contrôle est prévue pour pouvoir mettre en oeuvre un procédé d'accès selon l'invention tel qu'il vient d'être décrit. La présente invention concerne également un programme implémenté sur un support mémoire, susceptible d'être mis en oeuvre au sein d'une unité de traitement et comprenant des instructions pour la mise en oeuvre d'un procédé d'accès tel qu'il vient d'être décrit. Les caractéristiques de l'invention mentionnées ci-dessus, ainsi que d'autres, apparaîtront plus clairement à la lecture de la description suivante d'un exemple de réalisation, ladite description étant faite en relation avec les dessins joints, parmi lesquels : Les Figs. la et lb sont des schémas simplifiés illustrant respectivement le procédé d'accès à une zone mémoire respectivement à des fins de lecture et d'écriture, La Fig. 2 est un diagramme illustrant les différentes étapes par un procédé de l'invention, Les Figs. 4 et 5 sont des diagrammes illustrant les différentes étapes constituant l'étape de traitement du procédé d'accès de la Fig. 2. A la Fig. la, on a illustré une opération de lecture de tous les blocs de données BO à BN (ici N=3) respectivement stockés dans une zone-mémoire 21 d'une mémoire 20 aux N+1 adresses consécutives ADRO à ADRN. Cette opération de lecture consiste, pour chaque temps Ti avec i = 0 à N, d'une séquence de lecture de la zone mémoire 21, pour l'unité de contrôle 10, à déterminer une adresse ADRj avec j = 0 à N et à lire le bloc de données Bj stocké à cette adresse ADRj. Chaque adresse ADRj est déterminée selon un processus de détermination d'adresse qui est telle qu'une adresse ADRj déterminée pour un temps d'accès Ti ne puisse pas être de nouveau déterminée pour un autre temps d'accès Tk, avec k i. De plus, selon l'invention, ledit processus de détermination d'adresse est un processus pseudo aléatoire, c'est-à-dire que pour chaque Ti, l'adresse ADRj est déterminée de manière aléatoire ou pseudo aléatoire. Il en résulte que l'ordre de lecture des blocs de données BO à BN lus par l'unité de traitement 10 ne correspond pas à l'ordre temporel TO à TN. Dans le cas illustré à la Fig. la, cet ordre de lecture est Bl, B2, BO et B3. A la Fig. lb, on a illustré une opération d'écriture de blocs de données BO à BN en des adresses ADRO à ADRN d'une zone-mémoire 22 d'une mémoire 20. Cette opération d'écriture consiste, à chaque temps Ti avec i = 0 à N d'une séquence d'écriture de la zone mémoire 22, pour l'unité de contrôle 10, à générer une adresse ADRj et à écrire le bloc Bi à cette adresse ADRj. Comme précédemment, chaque adresse ADRj est déterminée selon un processus de détermination d'adresse qui est telle qu'une adresse ADRj déterminée pour un temps d'accès Ti ne puisse pas être de nouveau déterminée pour un autre temps d'accès Tk, avec k i. De plus, selon l'invention, ledit processus de détermination d'adresse est un processus pseudo aléatoire, c'est-à-dire que pour chaque Ti, l'adresse ADRj est déterminée de manière aléatoire ou pseudo aléatoire. A la Fig. lb, l'ordre des blocs de données qui sont écrits par l'unité de traitement est BO, B 1, B2 et B3 alors que l'ordre des adresses où sont respectivement écrits 10 ces blocs de données est BO à B3 est ADR3, ADRO, ADR2 et ADR1. A la Fig. la, les blocs de données lus peuvent être transmis dans leur ordre de lecture à une unité distante (non représentée). Ils peuvent également être stockés dans cet ordre ou dans un autre ordre dans une autre zone-mémoire de la mémoire 20 comme cela est représenté à la Fig. lb. De même, à la Fig. lb, les blocs de données qui sont stockés dans la zone mémoire 22 peuvent avoir été reçus d'une unité distante (non représentée). L'ordre temporel de leur écriture dans la zone mémoire 22 correspond alors à leur ordre temporel de réception. Ils peuvent également avoir été lus dans cet ordre ou un autre dans une autre zone mémoire de la mémoire 20, selon un processus tel que celui qui est décrit en relation avec la Fig. la. On a représenté à la Fig. 2 un diagramme illustrant les étapes qui sont mises en oeuvre lors d'une opération de lecture ou une opération d'écriture telles qu'elles viennent d'être décrites en relation avec les Figs. la et lb pour déterminer les adresses consécutives ADRj, avec j = 0 à N, respectivement aux temps Ti, avec i = 0 à N. L'ensemble de ces étapes forme un procédé d'accès à l'ensemble des cellules d'une zone mémoire. Ce procédé est un processus itératif à N+1 itérations, N+1 étant la taille de la zone mémoire à adresser. Chaque itération est exécutée à un temps Ti, avec i = 0 à N. Dans une première étape El, un bit d'aléa Ai est déterminé qui peut prendre soit une première valeur, par exemple 0, soit une seconde valeur, par exemple 1. Selon un premier mode de réalisation, la valeur du bit d'aléa Ai est déterminée de manière aléatoire ou pseudo aléatoire. A l'étape E2, si la valeur du bit d'aléa Ai est une première valeur, par exemple 0, alors, à l'étape E3, un index IDX prend la valeur d'un premier indice UP et, à la suite à l'étape E4, la valeur dudit premier indice UP est incrémentée de un. L'opération d'incrémentation est, par exemple, réalisée modulo N+1. Par exemple, si N+1 = 8, l'incrémentation de l'indice UP qui aurait la valeur 7 donnera la valeur 7+1=0. De manière générale, l'incrémentation de l'indice UP qui aurait la valeur N donnera la valeur 0. A l'étape E2, si la valeur de Ai est une seconde valeur, par exemple 1, alors, a l'étape E5, l'index IDX prend la valeur d'un second indice DOWN et, à la suite à l'étape E6, la valeur dudit second indice DOWN est décrémentée de un. L'opération de décrémentation est aussi, par exemple, réalisée modulo N+1. Par exemple, si N+1 = 8, la décrémentation de l'indice DOWN qui aurait la valeur 0 donnera la valeur 0-1=7. De manière générale, la décrémentation de l'indice DOWN qui aurait la valeur 0 donnera la valeur N. Les étapes E4 et E6 sont suivies d'une étape optionnelle E7 de traitement de l'index IDX qui sera décrite ultérieurement. Si aucune étape E7 n'est mise en oeuvre, ce que l'on considère pour le moment, la valeur de l'index IDX au temps Ti, IDX(i) constitue la valeur ADRj de l'adresse qui servira à une opération de lecture ou d'écriture de la zone mémoire considérée. On peut ainsi écrire : IDX(i) = ADRj Les étapes El à E7 sont répétées à chacune des N+1 itérations du procédé d'accès. Lorsque le nombre d'itérations exécutées a donc été de N+1, le procédé de d'accès est interrompu. Par exemple, une étape de contrôle E8 vérifie si toutes les itérations ont été effectuées. Si ce n'est pas le cas, le procédé est de nouveau branché à l'étape El pour l'exécution de la prochaine itération (i = i+1). Sinon, il est arrêté. L'étape de contrôle E8 peut par exemple effectuer le branchement vers l'étape El tant que l'indice DOWN est inférieur à l'indice UP et effectuer le branchement vers la fin du processus lors que l'indice DOWN devient égal ou supérieur à l'indice UP. On pourra remarquer que, si les étapes d'incrémentation E3 et de décrémentation E5 sont réalisées modulo N+1, toutes les valeurs prises par l'index IDX sont comprises entre 0 et N. De plus, une valeur de IDX n'est jamais prise deux fois lors de l'exécution des étapes du processus itératif Ainsi, toute la zone mémoire de taille N+1 a été adressée, non pas dans l'ordre des adresses ADRO à ADRN mais dans un ordre pseudo-aléatoire dont l'aléa global est donné par chacune des valeurs des bits d'aléa Ai. A une étape E9, peut être calculé cet aléa global, que l'on note AG, construit par concaténation des bits d'aléa Ai. Le nième bit de l'aléa AG correspond au bit Ai dont i = n. Cet aléa global AG, comme on le montrera dans la suite de la description, permettra de mener un procédé d'accès dual du procédé d'accès tel qu'il vient d'être décrit. A l'étape E0 d'initialisation du procédé d'accès de l'invention, l'indice UP est initialisé à une valeur aléatoire comprise entre 0 et N, référencée ORG, et l'indice DOWN à cette valeur augmentée de la taille de la zone à adresser moins un, soit ORG + N. Nous donnons ci-dessous un exemple de mise en oeuvre du procédé d'accès de l'invention dans ce premier mode de réalisation. Supposons N = 7 et ORG = 5. Alors, à l'étape E0, UP = 5 et DOWN = 12 modulo 8, soit 4. Au temps t = 0, supposons que l'étape El donne 0. Alors à l'étape E3, l'index IDX prend la valeur 5, et à l'étape E4, l'indice UP est incrémenté pour prendre la valeur 6. On suppose qu'aucune étape E7 n'est mise en oeuvre. La première valeur d'adressage ADR est donc 5. Le tableau ci-dessous donne les différentes valeurs respectivement prises par les bits d'aléa Ai, par l'indice UP, par l'indice DOWN et par l'index IDX pour des temps d'accès Ti d'indice i = 0 à N. i 0 1 2 3 4 5 6 7 Ai 0 0 1 0 1 1 0 1 UP 5 6 6 7 7 7 0 0 DOWN 4 4 4 4 4 3 2 1 IDX 5 6 4 7 3 2 0 1 La valeur de l'aléa global AG calculé à l'étape E9 est dans ce cas = 10110100 en binaire, soit B4 en hexadécimal ou 180 en décimal. On remarquera que les toutes valeurs comprises entre 0 et 7 sont prises par l'index IDX, et une seule fois. Par exemple, il pourrait s'agir d'une opération d'écriture dans une zone mémoire de taille 8, de 8 blocs de données Bi, i = 0 à 7, chacun à un temps Ti. Alors cette zone mémoire aurait l'apparence donnée dans le tableau Adresse/Données suivant : Adresse Données 0 B6 1 B7 2 B5 3 B4 4 B2 5 BO 6 B1 7 B3 Selon un second mode de réalisation de l'invention, ladite étape El de détermination de la valeur du bit d'aléa Ai pour le temps d'accès Ti consiste à extraire d'un registre, dit registre d'aléa, dont la valeur a été préalablement déterminée le bit dont le poids correspond au rang i du temps d'accès Ti. La taille de ce registre est égale à la taille de la zone mémoire à adresser. Selon un mode particulier de ce mode de réalisation, le nombre stocké dans le registre d'aléa a été déterminé lors d'une précédente instance de mise en oeuvre du procédé d'accès selon l'invention, en particulier de son étape E9 comme cela vient d'être expliqué. Ce nombre est donc la valeur de l'aléa global AG. Ainsi, on dispose, préalablement, d'une part, de l'aléa global AG et, d'autre part, de l'origine ORG, dont les valeurs sont celles qui ont été déterminées lors d'un procédé d'accès précédent. Nous donnons ci-dessous un exemple de mise en oeuvre d'un second mode de réalisation d'un procédé d'accès selon l'invention. Supposons N = 7. La valeur ORG est égale à 5 et celle de l'aléa global AG est égal à B4 en hexadécimal. Ces deux valeurs sont par exemple égales à celles déterminées lors du procédé d'accès précédent. A l'étape EO, comme précédemment, 25 UP est déterminé égal à 5 et DOWN à 4. Pour le temps d'accès TO, le bit d'aléa extrait AO est le bit de poids faible de AG soit 0. Alors à l'étape E3, UP devient égal à 6 et, à l'étape E4, l'index IDX devient égal à 6. On suppose qu'aucune étape E7 n'est mise en oeuvre. La première valeur d'adresse est donc 5. Le tableau ci-dessous donne les différentes valeurs respectivement prises par les bits d'aléa Ai, par l'indice UP, par l'indice DOWN et par l'index IDX pour des temps d'accès Ti d'indice i = 0 à N. On remarquera qu'elles sont identiques à celles prises par l'exemple d'exécution du procédé d'accès de l'invention précédemment décrit. I 0 1 2 3 4 5 6 7 Ai 0 0 1 0 1 1 0 1 UP 5 6 6 7 7 7 0 0 DOWN 4 4 4 4 4 3 2 1 IDX 5 6 4 7 3 2 0 1 Par exemple, il pourrait s'agir d'une opération de lecture effectuée par adressage d'une zone mémoire, telle que celle qui est donnée dans le tableau Adresse-Données ci-dessus et qui résulte d'un procédé d'accès à des fins d'une opération de lecture effectuée précédemment. On pourra aisément vérifier que les blocs de données lus seront maintenant, dans l'ordre temporel : BO, Bi, B2, B3, B4, B5, B6 et B7. Dans un autre mode de réalisation, une étape de traitement E7 est mise en oeuvre, laquelle consiste à appliquer à l'index IDX une opération de OU Exclusif bit à bit avec un nombre aléatoire, noté RND, tiré au hasard avant le lancement du procédé de détermination d'adresses de la zone mémoire : IDX = IDX XOR RND. On rappelle que la table de vérité de la fonction logique XOR (OU Exclusif) est o 1 O o 1 1 1 0 Supposons, à titre d'exemple, que RND soit égal 5 et que pour IDX on ait obtenu les valeurs du tableau précédent. IDX 5 6 4 7 3 2 0 1 IDX XOR RND 0 3 1 2 6 7 5 4 Prenons un autre exemple. La zone mémoire à adresser est dans cet exemple de taille 6. On a donc N+1 = 6. Supposons que l'on ait obtenu les valeurs d'index IDX données dans le tableau suivant. RND est toujours égal à 5. IDX 1 0 2 5 4 3 IDX XOR RND 4 5 7 0 1 6 On remarque que, dans ce cas, les adresses 7 et 6 sont supérieures aux adresses de la zone mémoire considérée. Pour résoudre ce problème de débordement d'adresses, conformément à la 15 Fig. 3, l'étape E7 inclut les étapes E71, E72 et E73. L'étape E71 est une étape de calcul d'une valeur de masque MSK. Si on appelle S la taille en bits des variables, MSK.bit[0] le bit de poids faible de MSK, MSK.bit[i] le ième bit de MSK et MSK.bit[S-1] le bit de poids fort de MSK. Selon l'invention, le masque MSK est obtenu comme suit : 20 Pour i prenant successivement les valeurs de S-1 à 1, MSK.bit[i-1] = MSK.bit[i] OU (MAX.bit[i] XOR IDX.bit[i]) et MSK.bit[S-1] = 0. On rappelle que la fonction logique OU a pour table de vérité : 25 o 1 o o 1 1 1 1 10 Pour les valeurs de IDX données dans le tableau précédent, les valeurs du masque MSK sont les suivantes : IDX 1 0 2 5 4 3 MSK 3 3 3 1 1 3 A l'étape E72, à la valeur du nombre aléatoire RND est appliqué le masque MSK par une opération de ET bit à bit, pour donner un nouveau nombre aléatoire RNDI. RNDI = RND ET MASK On rappelle que la table de vérité de la fonction logique ET est la suivante : o 1 o o o 1 o 1 A l'étape E73, à la valeur de l'index IDX est appliqué, par un OU Exclusif bit à bit, le nombre aléatoire RNDI ainsi calculé : IDX = IDX XOR RNDI Dans le tableau ci-dessous, sont données les valeurs prises par ces différentes 20 variables. IDX 1 0 2 5 4 3 MSK 3 3 3 1 1 3 RNDI = MSK ET RND 1 1 1 1 1 1 IDX = IDX XOR RNDI 0 1 3 4 5 2 On remarquera que toutes les valeurs de l'index IDX ainsi calculées sont maintenant comprises entre 0 et 5 et donc qu'elles adressent la zone mémoire initiale 25 sans débordement de celle-ci. Par l'utilisation des étapes E71, E72 et E73, des zones mémoire de toute taille peuvent être manipulées selon l'invention. Dans un troisième mode de réalisation illustré à la Fig. 4, l'étape de traitement E7 inclut une étape E74 de décalage des adresses par addition ou soustraction à la valeur de l'index IDX issu de l'étape E73 de la valeur d'un décalage DEC. Les valeurs d'initialisation des indices UP et DOWN peuvent alors être respectivement 0 et N. REVENDICATIONS1) Procédé d'accès à l'ensemble des cellules d'une zone mémoire à des fins d'écriture ou de lecture de blocs de données dans lesdites cellules, ledit procédé comprenant, pour chacun des temps d'accès (Ti avec i = 0 à N) auxdites cellules de ladite zone mémoire à accéder, un processus de détermination de l'adresse (ADRj, avec j = 0 à N), de la cellule de la zone mémoire à accéder audit temps d'accès (Ti), une adresse (ADRj) déterminée pour un temps d'accès (Ti) n'étant pas de nouveau déterminée pour un autre temps d'accès (Tk, k j), caractérisé en ce que ledit processus de détermination de chaque adresse (ADRj) est un processus pseudo aléatoire. 2) Procédé d'accès selon la revendication 1, caractérisé en ce que ledit processus de détermination pseudo aléatoire comprend, mises en oeuvre pour chaque temps d'accès (Ti, i= 0 à N) : - une étape (El) de détermination aléatoire d'un bit d'aléa (Ai) qui peut ainsi prendre soit une première valeur, soit une seconde valeur, - une étape (E2) de test de la valeur prise par ledit bit d'aléa (Ai) qui branche ledit processus, - soit vers une étape (E3) de détermination d'un index (IDX) comme étant égal à la valeur d'un premier indice (UP), suivie d'une étape (E4) d'incrémentation d'une unité dudit premier indice (UP), - soit vers une étape (E5) de détermination dudit index (IDX) comme étant égal à la valeur d'un second indice (DOWN), suivie d'une étape (E6) de décrémentation d'une unité dudit second indice (DOWN), la valeur dudit index (IDX) étant la valeur de ladite adresse de la cellule de la zone mémoire à accéder audit temps d'accès (Ti). 3) Procédé d'accès selon la revendication 2, caractérisé en ce que ladite étape de détermination aléatoire (El) consiste à choisir aléatoirement la valeur dudit bit d'aléa. 4) Procédé d'accès selon la revendication 2, caractérisé en ce que ladite étape de détermination aléatoire (El) consiste à extraire d'un registre le bit de poidscorrespondant au rang du temps d'accès considéré, ledit registre stockant un nombre préalablement déterminé de manière pseudo aléatoire. 5) Procédé d'accès selon la revendication 4, caractérisé en ce que le nombre stocké dans ledit registre a été déterminé lors d'une précédente instance de mise en oeuvre du procédé d'accès selon la revendication 3 par concaténation de tous les bits d'aléa (Ai) de manière que le bit d'aléa déterminé lors de la précédente instance pour un temps d'accès de rang (i) soit stocké dans le bit dudit registre dont le poids est égal audit rang (i). 6) Procédé d'accès selon une des revendications 2 à 5, caractérisé en ce que ladite zone mémoire étant de taille N+1, la valeur initiale du premier indice (UP) est comprise entre 0 et N et la valeur initiale du second indice (DOWN) est égale à la valeur initiale du premier indice à laquelle est ajoutée la taille de ladite zone mémoire moins un. 7) Procédé d'accès selon la revendication 6, caractérisé en ce que la valeur initiale du premier indice est déterminée de manière aléatoire ou pseudo aléaloire. 8) Procédé d'accès selon une des revendications 2 à 7, caractérisé en ce qu'il consiste lors d'une étape (EO) d'initialisation, à déterminer la valeur d'un nombre aléatoire (RND), et en ce que ledit processus de détermination comprend en outre, après détermination de la valeur de l'index (IDX) pour le temps d'accès (Ti), une étape d'application à l'index ainsi déterminé d'une opération logique de OU Exclusif bit à bit avec ledit nombre aléatoire (RND), la valeur résultant de ladite opération étant la valeur de l'adresse d'accès à la cellule de la zone mémoire à accéder audit temps d'accès (Ti). 9) Procédé d'accès selon une des revendications 2 ou 7, caractérisé en ce qu'il consiste, lors d'une étape d'initialisation (EO), à déterminer la valeur d'un nombre aléatoire (RND), et en ce que ledit processus de détermination d'adresse comprend en outre, après détermination de la valeur de l'index (IDX) pour le temps d'accès (Ti), une étape (E71) de calcul d'une valeur de masque (MSK), une étape (E72) d'application à ladite valeur dudit nombre aléatoire d'une opération logique ET bit àbit avec ledit masque (MSK), et une étape (E73) d'application à l'index déterminé pour le temps d'accès (Ti) considéré d'une opération logique de OU Exclusif bit à bit avec le résultat de ladite opération logique ET, la valeur résultant de l'opération de OU Exclusif étant la valeur de l'adresse d'accès à la cellule de la zone mémoire à accéder audit temps d'accès (Ti). 10) Procédé d'accès selon la revendication 9, caractérisé en ce que ladite étape (E71) de calcul d'une valeur de masque consiste à: - positionner le bit de poids fort dudit masque à zéro, puis pour chaque bit de poids i prenant successivement les valeurs de S-1 à 1, S étant la taille en nombre de bits des variables utilisées pour les opérations logiques, - à appliquer au bit de poids i de l'index déterminé une opération logique de OU Exclusif avec le bit de poids i de la taille de ladite zone mémoire, - à appliquer audit résultat de ladite opération logique de OU Exclusif, une opération logique de OU avec le bit de poids i du masque, - à positionner le bit de poids i-1 du masque à la valeur du résultat de ladite opération logique de OU. 11) Procédé d'accès selon une des revendications 6 à 10, caractérisé en ce qu'il comprend en outre une étape (E74) de décalage des adresses par addition ou soustraction à la valeur de l'index (IDX) de la valeur d'un nombre préalablement tiré de manière aléatoire. 12) Dispositif du type carte à puce comprenant une unité de traitement (10) pouvant accéder à une mémoire (20), soit en écriture, soit en lecture, caractérisée en ce que ladite unité de contrôle (10) est prévue pour pouvoir mettre en oeuvre un procédé d'accès selon une des revendications 1 à 11. 13) Programme implémenté sur un support mémoire, susceptible d'être mis en oeuvre au sein d'une unité de traitement (10) et comprenant des instructions pour la mise en oeuvre d'un procédé selon l'une des revendications 1 à 11.