Brevet FR2566938A1 — publié le 19860103

La présente invention est relative à une mémoire et à un procédé de mémorisation/lecture permettant de transformer un flot de mots de données en un autre flot de mots de données dont le contenu dépend du premier flot en fonction d'une clé de transformation prédéterminée. Plus précisément, 1 invention concerne une mémoire et un procédé d'utilisation de celle-ci pour permettre le chiffrage et/ou le décryptage de données se présentant sous la forme de mots binaires. L invention a donc pour objet une mémoire comportant une matrice de cellules de mémorisation adressables agencées selon des colonnes et des ran gées, caractérisée en ce qu'elle comprend des moyens d'adressage de ladite matrice, sélectivement selon deux directions d'adressage perpendiculaires, définies respectivement par les colonnes et les rangées. ainsi que des moyens de lecture/écriture des données également sélectivement selon lesdites deux directions perpendiculaires. Une telle mémoire permet de mémoriser des données en les écrivant dans la mémoire selon une direction avec un adressage prédéterminé, puis de les lire selon une direction perpendiculaire à la premiére avec un autre adressage prédéterminé. L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés sur lesquels - la Fig1 est un schéma général d'un systéme de chiffrage/décryptage de données utilisant une mémoire suivant l'invention; - la Fig.2 est un schéma d'un exemple de réalisation d'une cellule de cette mémoire en version cablée, avec les multiplexeurs d'adresse; - la Fig.3 est un schéma d'une unité de commande de la mémoire; - la Fig.4 est un chronogramme illustrant un cycle d'écriture dans la mémoire; - la Fig.5 représente un organigramme d'un cycle de chiffrage exécuté à l'aide de la mémoire suivant l'invention, Sur la Fig.1. on a représenté un schéma de la mémoire suivant l'invention. appliquée à titre d'exemple dans un système de chiffrage/décryptage de données. La mémoire 1 comprend un réseau de cellules de mémoire 2 agencées selon une matrice X-Y composée ici de rangées et de colonnes de 16 cellules. Dans cet exemple, la mémoire est donc, de préférence. utilisée dans un système base sur des mots de 16 bits, tout autre format pouvant être utilisé. Le réseau 2 est raccordé à un bloc de commande 3 qui permet d'y appliquer des adresses X et Y respectivement selon deux directions perpendiculaires, les données appartenant à ces adresses pouvant être écrites dans la mémoire ou en être extraites selon ces deux directions. Arbitrairement, on suppose ici pour la clarté de l'exposé que la direction X est horizontale (comme vu sur la Fig.1) et la direction Y verticale étant entendu que le bit de poids le plus fort des données est toujours situé soit dans la rangée supérieure pour les données Y soit dans la colonne extrême gauche pour les données X. Les données circulent sur les bus s et 5 d'entrée/sortie en Y et X, ces bus communiquant rescpectivement: avec deux registres de transfert.6. 7 qui sont reliés à un bus général 8 du système. ce bus fonctionnant par exemple en multiplexage temporel pour les adresses et les données. Les données mémorisées verticalement à des adresses X à X15 peuvent être appliquées, par un bus o de sortie 9 à une unité logique 10 qui permet d'effectuer des opérations logiques sur ces données et sur celles qui sont présentées sur le bus de données 5 éventuellement à l'aide d'un registre de masque 11 auquel est relié le bus 4 par une dérivation 12. Le bloc de commande 3 comporte deux circuits 13, 14 d'élaboration d'adresses respectivement d'adresses X et Y, un circuit 15 de sélection lecture/écriture, un circuit 16 de sélection X/Y. un circuit 17 de sélection du sens d'adressage et deux circuits 18 et 19 d'établissement de bornes d'adressage. (Voir aussi Fig. 2 et 3). Dans le mode de réalisation de la Fig.1. il est suppose que des données sont reçues à partir d'une source quelconque (non représentée) dans un circuit de réception 20 dans lequel elles peuvent être mises en attente pour être utilisées dans le système representé. Ce circuit de réception 20 est connecté au bus multiplexé 8 qui est également relié à un microprocesseur de gestion 21 auquel est associé une mémoire ROM 22 dans laquelle est mémorisé le programme du microprocesseur 21. Ce dernier, grâce å ce programme. est destiné à fournir à la mémoire 1 les données et les adresses nécessaires à son fonctionnement et à un certain décryptage des données d'entre qui sont ici supposées chiffrées. Ainsi, le microprocesseur 21 peut charger les circuits 13 à 19, commander l'unité logique 11 et commander le chargement et l'extraction des données par l'intermédiaire des registres de transfert 6 et 7 qui sont reliés entre les bus 4, 5 et 8. Le bus 8 est également relié à un microprocesseur 23 auquel est associé une mémoire morte 24 contenant un programme et qui est destiné à traiter les données décryptées dans la mémoire 1 pour les utiliser dans un circuit quelconque d'utilisation (non représenté). Pour fixer les idées et à titre d'exemple le circuit 20 peut être raccordé par une liaison hertzienne à une source de données qui doivent rester confidentielles et qui ont été brouillées selon un programme connu par le microprocesseur 21. Les données peuvent ainsi entre décryptées aisément pour reprendre leur format et leur forme lisibles et exploitables par le microprocesseur 23. Un autre application consisterait à rendre confidentiel un programme à partir de données "en clair" env#oyées sur le circuit 20 et de chiffrer ces données dans la mémoire 1 à l'aide du microprocesseur 21 utilisé ici comme organe de commande de chiffrage.Dans cette hypothèse le microprocesseur 23 et ses organes périphériques (non repre- sentes) pourraient reproduire ce programme sous forme chiffré incompréhensible pour les non-inities. La Fig.2 montre à titre d'exemple non limitatif, une cellule de mémorisation m du réseau 2 en version câblée. Les spécialistes comprendront qu'un tel réseau peut être réalisé également en version intégré en conférant à ses cellules les mêmes pro piétés L'organe de base de chaque cellule m est une bascule 25 de type "D" par exemple celle vendue sous le n'7474 par la Demanderese. Cette bas-cule comporte une borne d'entrée E. une borne de sortie S et une borne d'horloge Cl. Ces entrées peuvent être raccordées sélectivement, par des portes 26 à des lignes AxmEc AxmL A , au L pour l'adressage et des lignes E/Sxm et ymL E/S pour l'extraction et le chargement des données. ym Les lignes d'adressage sont raccordées à un multiplexeur d'adresses 27 de la façon représentée sur la Fig.2. Ce multiplexeur forme partie des circuits 13 et 14 de la Fig.3. Les blocs respectifs de ce multiplexeur peuvent être validés par le signal L/Ec du circuit 15. Le transfert des données est commande à l'apparition du signal Cl sur une ligne 28. Les données peuvent être traitées par bloc de mots successifs, le nombre maximal de mots dans chaque bloc pouvant être seize. Pour cela, les mots sont placés successivement dans le réseau 2 selon la direction préalablement choisie a l'aide du circuit 16. Les adresses auxquelles les données doivent être rangées peuvent augmenter ou diminuer entre deux "bornes" préalablement fixées, l'écart entre ces bornes étant le nombre de mots dans un bloc considéré, Par exemple, si on souhaite traiter successivement des blocs de cinq mots, on peut ranger ces mots à partir de l'adresse Y5 jusqu'à l'adresse Yg, (sens croissant) ou å partir de l'adresse Y11 jusqu'à l'adresse Y7 (sens décroissant?. toute autre valeur des bornes, et tout autre nombre de mots (jusqu'à concurence de 16) pouvant naturellement être utilisés. Il est à noter que ces paramètres peuvent varier d'un groupe de-mots au suivant, le tout étant fonction du chiffrage ou du décryptage requis. Pour déterminer les valeurs d'adressage ou bornes lors du traitement de chaque bloc de mots, on utilise les circuits de "paramétres" 18 et 19 qui peuvent être chargés préalablement au traitement du bloc de mots considérés à partir du microprocesseur de commande. Ces circuits 18 et 19 (Fig.3) sont associés à un montage composé d'un registre 29, d'un compteur 30 et d'un comparateur 31. Le registre 29 et le compteur 30 peuvent être chargés par les circuits 18 et 19, l'entrée comptageidécomptage du compteur 30 étant reliés au circuit 17 de commande du sens de progression des adresses. La sortie d'égalité 32 du comparateur 31 est relié au microprocesseur 21 pour pouvoir signaler à celui-ci que la valeur de borne des adresses en progression a été atteinte. Les considérations qui précédent sont naturellement applicables aussi bien en lecture qu'en écriture des données. Le chiffrage et le décryptage consistent à procéder selon le cas à un chargement ou une lecture dans une direction puis à un chargement ou une lecture dans une autre direction de blocs de mots successifs, La Fig.5 représente un organigramme d'un cycle de chiffrage d'un bloc de 16 mots exploitant la capacité totale de la mémoire 1. La première opération (rectangle 32) consiste, sous la commande temporelle du microprocesseur 21 à charger dans le circuit de commande 3 les paramètres qui sont nécessaires à l'écriture du bloc de données. Ces paramètres sont l'axe choisi (ici Y), les bornes d'adressage (A = O et B = 15) et le sens de progression des adresses (Y15 à Y0 > c'est-à-dire ici un decomptage par le compteur 30. A la fin de ce chargement le premier mot est prélevé du circuit d'entrée 20 par le microprocesseur 21 (en 33) et placé à l'a dresse Y15 de la mémoire 1 (opération 34), Ce processus se répéte jusqu'à ce que l'adresse devient égale å zéro (test des opérations 35 et 36). Lorsque cette condition. est satisfaite, le comparateur constate l'égalité entre le contenu du registre 29 (ici égal à zéro) et le contenu du compteur 30, décompté jusqu'à zéro de sorte que le signal fin de cycle est appliqué au microprocesseur 1 (rectangle 37). Dans l'exemple que l'on vient de décrire, on suppose que le réseau 2 est rempli entièrement avec seize mots de données sur seize adresses. En programment le registre 28 avec une valeur différente et/ou en commençant par une adresse autre que l'adresse de début du réseau on peut stocker des blocs ayant un nombre de mots inférieur à seize. Lorsque le signal de fin de cycle est engendré, le microprocesseur 21 commande l'arrêt de la fourniture des mots de données au circuit d'entrée 20 et charge le circuit de commande 3 avec d'autres paramètres (opération 38). Dans ce cas, on a choisi une lecture des données mémorisées dans la mémoire 1 selon l'axe X avec des bornes A = 0, B = 15 et un sens de progression des adresses de X15 à X0 Ensuite, le microprocesseur 23 est activé (opération 39) pour recevoir un bloc de mots (ici au nombre de seize) dont les données correspondent respectivement au contenu des cellules du réseau 2 lues dans la direction de l'axe X, après quoi le microprocesseur 20 exécute la boucle d'adressage constituée par les opérations 40, 41 et 42 pour que les données correspondantes puissent être envoyées successivement vers le microprocesseur 23. Le cycle en cours est arrêté lorsque en 43 le comparateur 31 fournit le signal fin de cycle après quoi un nouveau cycle peut être déclenché (44). Bien entendu, ce bloc de données est chiffré et sa simple lecture (par exemple à partir d'une mémoire dans laquelle le microprocesseur 23 les a mémorisés) donne un ensemble d'information à ##priori inintelligible 'les données ainsi conservées étant chiffréées selon la clé de chiffrage consistant à écrire seize mots selon l'axe X. On comprend que la clé de chiffrage peut avoir une grande variété de formes selon l'adressage choisi au moyen du programme du microprocesseur 21. Les données chiffrées peuvent être utilisées de toute manière voulue. par exemple pour la transmission sur câble, par faisceau herzien ou autre, pour le stockage dans une mémoire, pour le chiffrage d un programme etc. Les nombreuses applications de l'invention apparaitront clairement aux spécialistes. Bien entendu, le décryptage des données peut se dérouler d'une manière tout à fait analogue à l'aide d'un programme utilisant la mémoire t de la même façon que pour le chiffrage. Dans la description qui précède, on n'a pas évoqué l'unité logique 10. Or, cette unité permet d'obtenir une possibilité de chiffrage ou de décryp- tage supplémentaire pour le traitement logique qu'elle permet d'effectuer entre des données stockées dans la mémoire 1 et des données d'entrée du système. L'unité logique qui, en soi, est de-conception classique peut comporter des circuits logiques OU, ET, NON-ET, NI etc.. dont les fonctions peuvent être commandées par le- bloc de commande 3, fonctions qui sont introduites dans le système par le microprocesseur 21 après le remplissage du réseau 2 et avant la lecture de ces données. REVENDICATIONS 1. Mémoire comportant une matrice (2) de cellules m de mémorisation adressables agencées selon des colonnes et des rangées. caractérisée en ce qu'elle comprend des moyens d'adressage (3) de ladite matrice (2), sélectivement selon deux directions d'adressage perpendiculaires (X,Y) définies respectivement par les colonnes et les rangées, ainsi que des moyens de lecture/ écriture (3) des données également sélectivement selon lesdites deux directions perpendiculaires. 2. Mémoire selon la revendication 1, carac térisée en ce qu'à chaque colonne et à chaque rangée de cellules (m) de ladite matrice (2) sont associées, en tant que moyens d'adressage, une ligne d'adressage lecture (AXmL, Aym), une ligne d'adressage écriture (AxmEc AymEC) et une ligne d'entrée/sortie de données YmEc (E/S xm' E/Sym) qui sont raccordées respectivement à des moyens de transfert (26) sous condition de bits d'adresse et de donnée vers les cellules (m) de la matrice. 3. Mémoire selon la revendication 2, caractérisée en ce que chaque cellule (m) de la matrice (2) est une bascule (25) avec une borne d'entrée (E) et une borne de sortie (S), en ce que la borne d'entrée est raccordée par une première porte de transfert (26) à une ligne d'entrée/sortie de colonne (E/Sym) )et par ym une seconde porte de transfert (26) à une ligne d'entrée/sortie de rangée (E/SXm), lesdites première et seconde portes de transfert (26) ayant leur borne de commande de transfert raccordée respectivement aux lignes d'adressage écriture de colonne (AymEC) et de ymEc rangée (AXmEc) et en ce que la borne de sortie (S) de chaque cellule de mémoire est raccordée par. une tro sième porte de transfert (26) à une ligne d'entrée/ sortie de colonne (E/Sym) ) et par une quatrième porte ym de transfert (26) å une ligne d'entrée/sortie de rangée (E/SXm), xm > 'lesdites troisième et quatrième portes de transfert ayant leurs bornes de commande et de transfert raccordées respectivement aux lignes d'adressage de lecture de colonne et de rangée (A mLw A xmL > ' 4.Mémoire selon l'une quelconque des revendications 2 et 3, caractérisée en ce qu'elle comprend un multiplexeur d'adresses 127) raccordé auxdites lignes d'adressage colonne et rangée et com prenant une entrée de validation (VaLx'V ) pour la aLy sélection de l'adressage de colonne ou de rangée et une entrée de validation (L/E) pour la sélection de l'adressage en lecture ou en écriture. 5. Mémoire suivant l'une quelconque des revendications 1 à 4, caractérisée en ce qu'elle comprend des moyens (29,30,31 > pour définir en adressage colonne ou en adressage rangée des bornes d'adressage limitant les cycles de lecture/ecriture à certaines rangées etrou colonnes contigües seulement parmi les rangées et/ou colonnes de ladite matrice (2). 6. Mémoire suivant la revendication 5, caractérisée en ce que lesdits moyens définissant les bornes d'adressage comprennent un registre (29) destiné à mémoriser une valeur d'adresse constituant l'une des bornes d'adressage d'un cycle de lecture/ écriture considéré, un circuit de comptage (30) pour suivre la progression des valeurs d'adresse à partir de ladite valeur d'adresse mémorisée ainsi qu'un comparateur (31) pour comparer les contenus du registre et du circuit de comptage et fournir un signal de fin de cycle en cas d'égalité de ces contenus. 7. Mémoire suivant la revendication 6, caractérisée en ce que le circuit de comptage (30) est un compteur/décomptour et en ce qu'il est prévu en outre un circuit (17) de commande de sens de progression des valeurs d'adresse raccordé à l'entrée de commande comptage/décomptage dudit compteur (30). 8. Mémoire suivant l'une quelconque des revendications 1 à 7, caractérisé en ce qu'il est prévu au moins un circuit logique de traitement (10, 11) pour soumettre les données extraites de la mémoire à une opération logique avec des données entrantes.