FR 2661532 A1 19911031 FR 9005320 A 19900426 MEMOIRE A ACCES PROTEGE MOT PAR MOT L'invention concerne les mémoires, et plus spécialement celles dont les données doivent être protégées, c'est-à-dire que certaines opérations sur les mots de la mémoire sont interdites à un utilisateur non autorisé mais possibles pour d'autres utilisateurs, d'autres opérations étant éventuellement autorisées pour le premier utilisateur. Par exemple, dans certaines zones de la mémoire, un utilisateur autorisé pourra lire et écrire, un autre ne pourra que lire, et un troisième ne pourra ni lire ni écrire, etc. Ce problème de contrôle d'accès aux données de la mémoire se pose fréquemment dans les circuits intégrés pour cartes à puces lorsque ces cartes sont utilisées comme monnaie d'échange ou comme clef d'accès ou comme moyen d'identification ou encore comme banque de données portative, etc. Dans ces cas, mais aussi dans d'autres, il est important de gérer avec beaucoup de soin les possibilités d'accès des utilisateurs à des informations écrites dans la carte, ou aux emplacements d'écriture dans la mémoire; c'est tout particulièrement vrai lorsque la carte contient des zones de mémoire effaçables et réinscriptibles (mémoires EEPROM notamment) qui contienne des données sensibles. Pour donner un exemple, une banque ou un prestataire de services doit pouvoir réapprovisionner un crédit monétaire sur une carte, mais il est hors de question que le titulaire de la carte puisse le faire lui-même. Avec la complexité croissante des circuits présents dans les cartes, on s'aperçoit qu'on a besoin de possibilités plus nombreuses de contrôles d'accès variés, que ce soit en lecture ou en écriture, pour des utilisateurs habilités à des niveaux différents les uns des autres. Dans l'état de la technique, le contrôle d'accès à des mots de mémoire consiste essentiellement à définir des zones de mémoire spécifiques pour chaque niveau d'habilitation, et à filtrer les adresses à l'entrée de la mémoire en fonction du niveau d'habilitation de l'utilisateur. Un utilisateur ayant un niveau d'habilitation déterminé se verra par exemple autoriser l'accès à certaines zones de mémoire en lecture, et interdire l'accès à ces mêmes zones en écriture; et il se verra autoriser l'accès en écriture et en lecture à d'autres zones de mémoire; et encore interdire tout accès en lecture ou écriture à d'autres zones encore. Pour d'autres utilisateurs, ayant un niveau d'habilitation différent, les conditions seront différentes, ou bien ce seront les données faisant l'objet de restrictions d'accès qui seront différentes. Les zones sont des zones prédéterminées pour chaque niveau d'habilitation et pour chaque type d'autorisation ou d'interdiction. La mémoire est ainsi prédécoupée en portions bien définies. On s'est rendu compte selon l'invention que ce partage de la mémoire en zones prédéterminées pouvait aboutir à une mauvaise utilisation de la place de mémoire disponible : dans certaines applications certaines zones seront très peu utilisées alors que d'autres zones s'avèreront trop petites par rapport aux besoins. Ce problème devient d'autant plus critique qu'il y a plus de types de niveaux d'habilitation différents; il devient aussi plus critique lorsqu'on veut qu'un même circuit intégré serve à plusieurs applications différentes n'ayant pas les mêmes contraintes de contrôle d'accès. Un but de l'invention est de faciliter la gestion des contrôles d'accès dans une mémoire en fonction du type d'opérations à effectuer (lecture, écriture, effacement ...) et en fonction des différents niveaux d'habilitation des utilisateurs. Selon l'invention, on propose un circuit intégré contenant une mémoire organisée en mots de n bits susceptibles d'être transmis au moins partiellement en série, dans laquelle chaque mot de n bits comprend p bits qui peuvent être transmis avant les n-p bits restants, ces p bits servant à définir au moins un type d'autorisation d'accès individuel pour le mot considéré, des moyens étant prévus pour autoriser un traitement sur un emplacement de mot donné en fonction des p bits inscrits à l'emplacement de ce mot. Cela revient à dire que chaque mot est affecté de l'autorisation qui convient (ou des autorisations qui conviennent), et les possibilités d'autorisation - sont inscrites dans le mot lui-même (dans les p premiers bits). Il n'y a donc pas des zones entières de mémoire réservées à tel ou tel type d'autorisation. Un mot à un emplacement, affecté d'autorisations de type déterminé, peut très bien être adjacent à des mots dont les types d'autorisation sont très différents. On peut donc utiliser de manière optimale toute la mémoire disponible quel que soit l'application. Les p premiers bits du mot sont lus et décodés pour définir l'autorisation; ce n'est qu'ensuite que les n-p bits utiles du mot seront traités, en fonction des autorisations données. Dans la plupart des applications, ce qui importe c'est que les mots dont la lecture n'est pas autorisée ne soient pas transmis à l'extérieur du circuit intégré. Par conséquent, il faut bien comprendre que lorsqu'on dit ici que les p premiers bits du mot sont transmis, après quoi une autorisation est donnée, cela ne veut pas dire nécessairement qu'il y a deux opérations de lecture à l'intérieur de la mémoire elle-même. Il peut très bien y avoir une seule opération de lecture des n bits, un traitement des p premiers bits du mot et une interdiction de transmission du reste du mot à la sortie du circuit intégré si les p bits impliquent cette interdiction. En autorisation d'écriture ou d'effacement de la mémoire, il y a cependant nécessairement une opération de lecture des p premiers bits préalablement à une opération d'écriture ou d'effacement puisque ce sont les p bits présents à l'emplacement du mot qui définissent les possibilités d'écriture et d'effacement dans cet emplacement. L'invention est tout particulièrement adaptée aux circuits intégrés dans lesquels la transmission des données est faite en série, car alors il est facile de traiter les p premiers bits qui arrivent pour autoriser ou interdire la transmission des n-p bits restants. Elle est intéressante en particulier pour les mémoires à accès séquentiel des mots, dans lesquels les bits de chaque mot sont lus séquentiellement et non en parallèle. Les p bits de contrôle d'accès sont alors les p premiers bits dans l'ordre où sont lus les bits d'un mot. L'invention est applicable au cas où les types d'autorisation sont parfaitement déterminés pour un mot et ne varient pas dans le temps. Elle est applicable aussi au cas où ces autorisations peuvent varier dans le temps : on réinscrit les p bits à un emplacement de mot en fonction des nouvelles autorisations sur ce mot. Enfin, ce qui est particulièrement intéressant, l'invention est applicable au cas où les autorisations sur un mot donné dépendent du niveau d'habilitation de l'utilisateur, ce dernier étant reconnu par un code d'accès : la reconnaissance de la validité du code d'accès va servir à compléter l'établissement des autorisations d'accès au mot considéré, en ce sens que les p bits comportent une information sur les différentes autorisations à donner selon l'habilitation du titulaire; dans ce cas, il n'y a pas une seule autorisation liée à un emplacement de mot, mais autant d'autorisations que de types d'habilitation différents. Non seulement la souplesse d'utilisation de la mémoire selon l'invention est bien plus grande que dans l'art antérieur, mais aussi la construction est plus simple. En effet, lorsque les zones étaient figées en fonction du type d'autorisation, il fallait prévoir un premier réseau logique programmable pour recevoir l'adresse d'un mot et en déduire la zone donc le type d'autorisation; un deuxième réseau logique programmable pour définir les autorisations en fonction des zones; et un troisième réseau programmable pour déterminer les commandes à exécuter en fonction de l'ordre demandé par l'utilisateur et de l'autorisation donnée. Dans l'invention, un seul réseau programmable permet de déterminer une interdiction ou une autorisation de transmission de données en fonction du contenu des p premiers bits d'un mot. Il n'y a pas à décoder les adresses pour déterminer un type d'autorisation en fonction de l'adresse reçue puisque l'autorisation n'est pas liée à une adresse. Seul le contenu du mot définit l'autorisation. On peut prévoir qu'il y a, parmi les p bits définissant les conditions d'accès, des bits qui servent à reconnaître si le mot contenu dans l'emplacement de mémoire est ou non un code d'habilitation, et même des bits définissant le niveau d'habilitation correspondant à ce code. Cela permet de faire intervenir un paramètre supplémentaire de condition d'accès : les conditions d'accès, liées à l'emplacement du mot, dépendront en outre du fait que le contenu du mot doit être considéré comme un code d'habilitation ou non. Pour assurer une sécurité de traitement on prévoit soit que les p bits définissant les conditions d'accès sont rendus définitivement non effaçables, soit qu'ils ne peuvent être effacés que par une procédure spéciale. Enfin, dans une variante de réalisation, on peut prévoir que l'un au moins des p premiers bits d'un mot sert à la définition des conditions d'accès non pas pour le mot lui-même mais pour un mot adjacent. Parmi les avantages de l'invention, il y a le fait qu'on peut très bien avoir dans la mémoire des zones dont l'accès est en lecture seulement, tout en gardant la-possibilité que la première écriture de ces mots soit faite hors de l'usine de fabrication; dans l'art antérieur, s'il y avait des zones pour lesquelles le seul accès possible pour tout le monde était une autorisation de lecture, le fabricant du circuit intégré était le seul à pouvoir inscrire un contenu dans ces zones. Avec l'invention, on peut très bien prévoir que le premier client ou utilisateur inscrit lui-même le contenu et inscrit en même temps des conditions d'accès telles que plus personne, y compris ce premier client ou utilisateur lui-même, ne pourra modifier le contenu. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels - la figure 1 représente un agencement classique de données dans une mémoire à accès protégé de l'art antérieur; - la figure 2 représente une organisation de données dans une mémoire à accès protégé selon l'invention; - la figure 3 représente une constitution de mémoire selon un mode de réalisation de l'invention. Sur la figure 1, on a représenté l'agencement des données dans une mémoire classique à accès protégé. La mémoire est supposée organisée en mots de n bits. Il y a des zones réservées à chaque type d'autorisation d'accès. Par exemple, pour une mémoire programmable et effaçable électriquement, il peut y avoir - une zone Z0 dans laquelle toute écriture est interdite, - une zone Z1 dans laquelle l'écriture est autorisée pour un utilisateur habilité de niveau 1, la lecture est interdite pour les utilisateurs d'autres niveaux; - une zone Z2 dans laquelle seule la lecture est autorisée pour un utilisateur de niveau d'habilitation 1 mais la lecture reste interdite pour un utilisateur de niveau d'habilitation 2; - une zone Z3 dans laquelle seule l'écriture est autorisée mais pas l'effacement, pour un utilisateur d'un niveau d'habilitation déterminé, - etc... on peut multiplier très vite le nombre de zones différentes dès qu'il y a plusieurs autorisations différentes à donner (écriture, lecture, effacement) et plusieurs niveaux d'habilitation différents pour ces opérations.Le nombre de combinaisons possibles est très élevé et le nombre de zones différentes à prévoir est aussi très élevé. Les zones ont des dimensions qui sont figées; mais alors, pour certaines applications, certaines zones risquent d'avoir des tailles insuffisantes alors que d'autres seraient inutilement trop grandes. A la figure 2, on a représenté symboliquement l'organisation d'un mot de la mémoire selon l'invention. Tous les mots comportent une première partie (p bits) servant à définir des conditions d'accès et une deuxième partie de n-p bits constituant la partie utile du mot mémorisé. Ainsi, il n'y a pas de zones de dimensions figées correspondant à un type d'autorisation. Dans la pratique, on pourra juxtaposer des mots ayant le même type de conditions d'accès, c'est-à-dire ayant les mêmes p bits, mais ce n'est pas obligatoire. Si on le fait, on constitue des zones comme à la figure 1, mais la différence essentielle est que ces zones n'ont pas des tailles prédéterminées. On peut passer à n'importe quel endroit d'une zone à une autre, car la définition de la zone n'est pas liée à une adresse de zone mais au contenu des p premiers bits des mots de la zone. On va maintenant décrire, pour mieux illustrer l'invention, un mode de réalisation préférentiel (figure 3) dans lequel - la mémoire est une mémoire à accès séquentiel, c'est-à-dire que les bits d'un mot sont lus les uns après les autres, dans l'ordre où ils sont rangés dans la mémoire; - il s'agit d'une mémoire EEPROM, c'est-à-dire programmable et effaçable électriquement; - il y a trois niveaux d'habilitation permettant des opérations de lecture ou d'écriture ou d'effacement différentes selon les mots considérés; - certains mots contenus dans la mémoire sont des codes d'accès et on veut les distinguer des autres mots. En pratique, dans cet exemple, on considérera aussi que la mémoire peut recevoir cinq ordres de commande différents qui peuvent être, pour un mot déterminé - incrémentation de l'adresse d'un bit du mot et lecture du bit correspondant; - incrémentation de l'adresse et comparaison du bit lu avec un bit présenté pour validation (cas de la présentation d'un code d'habilitation); - programmation (écriture) d'un bit; - effacement d'un mot (l'écriture se fait bit par bit, l'effacement se fait mot par mot); - remise à zéro du compteur d'adresse de bit. La mémoire MEM est représentée à la figure 3. Les circuits classiques de lecture et écriture ne sont pas représentés pour ne pas alourdir le dessin. Les données de la mémoire entrent et sortent du circuit intégré par un plot P. Si les données entrant à un moment donné représentent un code d'habilitation, ce code est comparé bit par bit, dans un circuit de validation de code, VAL, à un code d'accès contenu à une adresse de mémoire qui a été préalablement indiquée. Selon le niveau d'habilitation de l'utilisateur (niveau qui peut résulter d'un seul code ou de plusieurs codes successivement vérifiés par le circuit VAL), des bits sont placés par le circuit VAL dans un registre RN qui gardera en mémoire, pendant toute la durée d'utilisation, une information sur le niveau d'habilitation de l'utilisateur. Cette information est indiquée symboliquement, en sortie du registre RN par des fils N1, N2, N3 correspondant par exemple chacun à un niveau respectif d'habilitation. Les niveaux ne sont pas forcément hiérarchisés, mais chaque niveau donne certains droits sur certains mots. Un utilisateur peut être habilité pour un ou deux ou trois niveaux par exemple. Les sorties N1, N2, N3 du registre RN, qui restent constantes jusqu'à une nouvelle utilisation, sont appliquées aux entrées d'un circuit logique, de préférence un réseau logique programmable RLP qui reçoit par ailleurs deux autres groupes de signaux d'entrée - d'une part les p bits de contrôle d'accès qui sont les p premiers bits du mot enregistré dans la mémoire à une adresse de mot déterminée sur laquelle on doit effectuer un traitement particulier; ces p bits sont contenus dans un registre RP qui est remis à jour chaque fois qu'on modifie le type de traitement effectué ou l'emplacement de mot sur lequel on fait un traitement; - d'autre part les ordres de commande correspondant aux traitements souhaités par l'utilisateur sur un mot ou un emplacement de mot déterminé; l'ordre de commande est un ordre parmi les cinq ordres possibles indiqués ci-dessus; ces ordres de commande sont figurés par cinq conducteurs : IAL pour l'incrementation et lecture d'un bit; IAC pour l'incrémentation et comparaison d'un bit lu avec un bit présenté pour validation; W pour la programmation (écriture) d'un bit; E pour l'effacement d'un mot; RAZ pour remise à zéro du compteur d'adresse de bit. A partir des trois séries de signaux reçus par le réseau logique programmable RLP - p bits du registre RP qui indiquent quelles sont les autorisations de traitement valables pour chaque niveau d'habilitation, pour un mot déterminé, - les sorties du registre RN qui indiquent le niveau d'habilitation actuel de l'utilisateur présent, - et l'ordre de traitement désiré, le réseau logique programmable RLP élabore les signaux d'autorisation et/ou d'inhibition du traitement sur le mot de la mémoire. Les signaux précisément élaborés dépendent de la constitution précise de la mémoire; ils ont été représentés ici schématiquement par trois signaux qui sont respectivement un signal d'autorisation de lecture AR (pour la lecture de la partie utile du mot), un signal d'autorisation d'écriture AW et un signal d'autorisation d'effacement AE. Ces signaux sont transmis aux circuits de lecture, d'écriture et d'effacement de la mémoire pour permettre ou interdire, selon leur état, les traitements demandés par l'utilisateur. Ces circuits, classiques, sont désignés par la référence CMD sur la figure 3. Le remplissage puis la remise à zéro du registre RP de p bits est commandé par un séquenceur SEQ; le séquenceur SEQ contrôle également les circuits de lecture, d'écriture, et d'effacement CMD, pour que l'apparition de chaque nouvel ordre de commande sur une adresse de mot déterminé (ou le changement de mot pour un ordre donné) déclenche les opérations suivantes - remise à zéro du registre RP au changement de mot - opération de lecture des p premiers bits du mot adressé - remplissage du registre RP avec ces p bits - traitement par le réseau RLP pour déterminer les autorisations et interdictions de traitement sur le mot considéré - exécution des ordres de traitement donnés, en fonction des autorisations données, et en particulier, lecture des n-p bits utiles non encore lus (ou autorisation de transmission de ces bits à la sortie du circuit intégré s'ils ont été déjà lus mais non encore transmis), ou encore écriture ou effacement des n-p bits utiles. Les explications qui viennent d'être données montrent que le réseau RLP doit bien entendu être construit de manière que si le registre RP est remis à zéro, la lecture de la mémoire soit possible, sans quoi on ne pourrait pas lire les p premiers bits des mots. Dans l'exemple de réalisation décrit ici, on peut prévoir qu'il y a 12 bits de contrôle d'accès (p = 12) qui se répartissent comme suit Bits O à 2 : Contrôle d'autorisation de lecture, 000 : lecture autorisée 001 : lecture si niveau 1 d'habilitation reconnu (N1=1). 010 : lecture si niveau 2 reconnu (N2=1) 011 : lecture si niveau 3 reconnu (N3=1) 100 : lecture si niveaux 1 et 2 reconnus (Nî=l et N2=1) 101 : lecture si niveaux 1 et 3 reconnus (Nl=1 et N3=1) 110 : lecture si niveaux 2 et 3 reconnus (N2=1 et N3=1) 111 : lecture toujours interdite Bits 3 à 5 : Contrôle d'écriture 000 : écriture autorisée 001 : écriture si niveau 1 reconnu (N1=l). 010 : écriture si niveau 2 reconnu (N2=1) 011 : écriture si niveau 3 reconnu (N3=1) 100 : écriture si niveaux 1 et 2 reconnus (Nl=l et N2=1) 101 : écriture si niveaux 1 et 3 reconnus (N1=1 et N3=1) 110 : écriture si niveaux 2 et 3 reconnus (N2=1 et N3=1) 111 : écriture toujours interdite Bits 6 à 8 : Contrôle d'effacement selon les même codes que ci-dessus. Bit 9 : Fonctionnement en mode boulier : dans certaines applications, on souhaite que l'un des bits de contrôle, ici le bit 9, serve à agir sur un mot adjacent. Par exemple ici, 0 : actif : la programmation d'un bit 0 à la position 9 autorise ou même provoque l'effacement de la partie utile du mot immédiatement suivant; 1 : inactif : aucun effet Bits 10 et 11 : repérage des mots qui sont des codes d'habilitation 00 : le mot n'est pas un code 01 : le mot est un code d'habilitation de niveau 1 10 : le mot est un code d'habilitation de niveau 2 11 : ce mot est un code d'habilitation pour le niveau 3. Ces deux derniers bits du groupe de bits sont utiles puisqu'ils permettent de reconnaître si un mot dans la mémoire est un code d'habilitation qui doit être comparé avec un code introduit par un utilisateur. REVENDICATIONS 1. Circuit intégré à mémoire, comportant des moyens de contrôle d'accès aux mots de la mémoire, caractérisé en ce que la mémoire est organisée en mots de n bits susceptibles d'être transmis au moins partiellement en série, dans laquelle chaque mot de n bits comprend p bits qui peuvent être transmis avant les n-p bits restants, ces p bits servant à définir au moins un type d'autorisation d'accès individuel pour le mot considéré, des moyens (RP, RN, RLP) étant prévus pour autoriser un traitement sur un emplacement de mot donné en fonction des p bits inscrits à l'emplacement de ce mot. 2. Circuit selon la revendication 1, caractérisé en ce que les p bits des mots de la mémoire sont inscrits de manière non effaçables. 3. Circuit selon l'une des revendications 1 et 2, caractérisé en ce que la mémoire est à accès séquentiel, les mots étant lus et écrits bit par bit dans un ordre déterminé et les p bits étant les p premiers bits du mot. 4. Circuit selon l'une des revendications précédentes, caractérisé en ce que, parmi les p bits, au moins un bit établit une autorisation de lecture. 5. Circuit selon l'une des revendications précédentes, caractérisé en ce que, parmi les p bits, au moins un bit établit une autorisation d'écriture. 6. Circuit selon l'une des revendications précédentes, caractérisé en ce que, parmi les p bits, au moins un bit établit une autorisation d'effacement. 7. Circuit selon l'une des revendications précédentes, caractérisé en ce qu'il comporte un réseau logique programmable (RLP) recevant en entrée les p bits d'un mot présents à un emplacement de mot déterminé de la mémoire et définissant les autorisations de traitement de la partie utile de ce mot. 8. Circuit selon la revendication 7, caractérisé en ce que le réseau logique programmable comporte des entrées supplémentaires provenant des sorties d'un registre (RN) dont l'état définit le niveau d'habilitation d'un utilisateur. 9. Circuit selon la revendication 8, caractérisé en ce que les p bits sont divisés en groupes de bits, chaque groupe définissant les autorisations pour une opération donnée et pour les différents niveaux d'habilitation possibles. 10. Circuit selon l'une des revendications 7 à 9, caractérisé en ce que le réseau logique programmable comporte des entrées supplémentaires recevant des signaux correspondant aux ordres de traitement donnés par un utilisateur sur un emplacement de mot déterminé. 11. Circuit selon l'une des revendications précédentes, caractérisé en ce que l'un au moins des p bits définit une autorisation de traitement sur un mot à un emplacement adjacent à l'emplacement considéré.