Brevet FR2828299A1 — publié le 20030207

PROCEDE DE CONTROLE DES ATTRIBUTS D'ACCES A LA MEMOIRE PAGINEE D'UNE UNITE DE MEMOIRE ET SA STRUCTURE L'invention concerne un procédé de contrôle des attributs d'accès à la mémoire paginée d'une unité de mémoire et sa structure, et plus particulièrement une configuration d'attribut pour contrôler le fonctionnement de la mémoire paginée, permettant non seulement aux pages mémoire d'effectuer de manière plus complète le stockage des données à partir de l'unité centrale de traitement (CPU) ou d'un disque dur, mais également de contrôler et gérer le flux de donnée pour assurer la sécurité du système comme un dispositif de protection courant. La mémoire vive dynamique (ci-après DRAM) apparaît sous la forme de mémoire paginée. La DRAM est composée de pages mémoire continues ou de cellules de stockage continues, la taille de chaque page mémoire étant, par exemple, de 4 Kb, 16 Mo de DRAM pouvant alors être divisés en 4000 unités de pages mémoire (de 000 à FFF) de taille unitaire 4Kb. La CPU exécute les opérations de lecture/écriture sur la DRAM au moyen du processeur. Les instructions prévues pour être exécutées sur un disque dur doivent d'abord être écrites sur la DRAM, puis la CPU lira ces instructions sur la DRAM en vue du traitement, ou après traitement des instructions par la CPU, les données traitées seront écrites sur la DRAM et le disque dur lira en retour les instructions sur la DRAM. L'opération de stockage dans la DRAM est décomptée dans la mémoire paginée. Autrement dit, au regard du fonctionnement système d'un ordinateur en général, la DRAM effectue les actions primaires de stockage et de récupération. L'humanité s'est orientée progressivement vers l'informatisation et la numérisation et beaucoup de comportements commerciaux se sont portés vers des applications en matière de technologie de l'information. Dans le contexte de l'efficacité, de la facilité et des opportunités d'affaire fournies par les réseaux Internet et Intrant, la question de la sécurité des ordinateurs et des réseaux s'est posée. Par ailleurs, en matière de criminalité informatique, quelque soit la technologie, le niveau de sécurité ou celui de l'infraction, la tendance est à l'accroissement des compétences et des dommages. Pour cette raison, de nombreuses personnes choisissent des systèmes de cryptage pour protéger leurs données essentielles. Cependant, quelque soient le système de cryptage, la clé publique, la clé personnelle ou le mot de passe seront chargés dans la DRAM puis vérifiés après activation du système de cryptage. Comme la DRAM est un point de passage obligé pour les données système, et qu'elle reçoit sans discernement les données provenant de la CPU ou du disque dur, toutes les données peuvent facilement être interceptées et lues, par des moyens légaux (système) ou par intrusion extérieure. Par exemple, un pirate peut s'introduire dans la DRAM pour extraire la clé publique, la clé personnelle et le mot de passe du système de cryptage pour modifier la procédure de vérification et générer une autorisation ou une inertie au moyen de certains programmes, le système pouvant ainsi être pénétré aisément. De plus, si un virus présent sur une disquette ou un disque optique est chargé dans la DRAM pour être exécuté par la CPU, et endommage ou modifie les paramètres système importants, ceux-ci pourront influer sur la configuration de la mémoire dans la DRAM, la division de pilotes de disque et les droits d'accès d'un utilisateur etc. et provoquer la fermeture du système, son endommagement ou rendre impossible son fonctionnement ou provoquer des comportements anormaux. Les programmes anti-virus classiques sont basés sur la comparaison du code du virus sur une disquette ou un disque optique. Si l'utilisateur oublie de se mettre à jour, des virus inconnus peuvent accéder à la DRAM et provoquer la fermeture du système lors de l'exécution de la CPU. Les virus ainsi enregistrés dans la DRAM ne peuvent pas être combattus et donc aucune méthode de protection efficace ne peut être mise en oeuvre. Dans ce cadre, l'objet principal de la présente invention est de proposer un procédé de contrôle des attributs d'accès à la mémoire paginée d'une unité de mémoire, et particulièrement pour contrôler les pilotes de bas-niveaux ou les processeurs effectuant des séquences de lecture/écriture dans certaines parties de la mémoire, essentiellement en utilisant des procédures de configuration de registre pour traiter la zone opérationnelle de la mémoire, et par des procédures pratiques de confirmation du mode de fonctionnement desdites zones, pour ainsi contrôler ces zones en lecture seule, écriture seule, écriture unique, lecture unique, etc. pour garantir que les données chargées en mémoire, qui incluent les programmes à exécuter et le mot de passe à vérifier, soient préservées de toute intrusion de pirate, des virus etc. et procurer une protection courante du système. L'objectif essentiel de la présente invention est de proposer une protection courante du système pour garantir que les données chargées en mémoire, qui incluent les programmes à exécuter et le mot de passe à vérifier, soient préservées de toute intrusion de pirate, des virus etc. L'invention sera décrite ci-après, en référence aux dessins annexés, dans lesquels : - la figure 1 est un schéma de structure de la mémoire vive dynamique (DRAM) selon la présente invention, - la figure 2 est l'organigramme de traitement selon la présente invention, - la figure 3 est le diagramme logique de la configuration d'attribut selon la présente invention, - la figure 4 est l'organigramme de traitement de la procédure d'attribut de renvoi lecture selon la présente invention, et - la figure 5 est l'organigramme de traitement de la procédure d'attribut renvoi écriture selon la présente invention. En référence à la figure 1, la structure de mémoire vive dynamique (DRAM) selon la présente invention comprend un module DRAM 10, un contrôleur de mémoire 20, chaque module DRAM 10 étant composé d'une série de DRAM 11 comportant chacune une série de page mémoire 12. Dans la figure 1, seule une DRAM 11 a été indiquée pour les besoins de l'explication. Le contrôleur de mémoire 20 comporte un contrôleur 21 de l'accès à chaque page mémoire 11, au sein duquel une mémoire 22 (de type flash dans l'exemple décrit) est agencée pour stocker les résultats de la procédure de configuration (dont le mode de fonctionnement sera détaillé ci-après), une mémoire vive statique (SRAM) 23 qui stocke une table de recherche rapide de page comportant une série de bits d'attribut qui marquent les pages mémoire pour indiquer si les pages mémoire 12 fonctionnent en mode normal ou en mode pagination (qui sera détaillé ciaprès). La SRAM 23 peut également être remplacée par un registre de fichier (non représenté). Le registre de fichier a pour inconvénient de comporter un nombre élevé de portes logiques occupant plus de place sur le circuit intégré, et de ne pas être utilisable avec des capacités importantes, son accès étant toutefois plus souple et pouvant être choisi en fonction des exigences du système. La présente invention effectue les séquences de lecture/écriture sur une partie de la zone de la DRAM 11 au travers de pilote de bas niveau ou du processeur 30 du système (comme représenté à la figure 3), lequel est utilisé pour contrôler ladite DRAM 11, comme représenté à la figure 2, et inclue deux parties, à savoir une procédure de configuration de registre A et une procédure de traitement B. La procédure de configuration de registre A est destinée à préparer avant traitement la zone de pagination 12 de la DRAM 11 que l'on souhaite contrôler. Après le démarrage de l'ordinateur, le BIOS est exécuté dans un premier temps, et la procédure de configuration de registre A est activée à ce stade, alors même qu'aucun contrôle n'est encore appliqué au système d'exploitation et à l'unité centrale de traitement (CPU) 40. Cette procédure de configuration de registre ne peut donc pas être modifiée une fois la configuration achevée. La procédure de configuration de registre comporte les étapes suivantes : - Al : configuration de la zone de la DRAM 11 pour définir les attributs des pages mémoire 12, y compris le point de départ et la fin de ladite zone, le nombre et la taille des pages, etc. et définir la zone partielle de la DRAM 11 qui sera sous le contrôle direct du pilote de bas niveau. - A2 : détermination des attributs des pages mémoire 12 et élaboration d'une table de registre associatif (TLB) en fonction des résultats de ladite configuration pour identifier la table d'attribut d'une page mémoire 12 (003, 008 dans le tableau 1) ou d'un segment d'une page mémoire (de A02 à A08 dans le tableau 1) à sauvegarder dans la mémoire flash 22 de la DRAM 11. - A3 : en fonction des résultats de la configuration ci-dessus, création d'une table de recherche rapide de page (FPLT) qui sera stockée dans la mémoire vive statique SRAM 23 de la DRAM 11. Ladite FPLT est destinée à commander le fonctionnement des pages mémoire 12 en mode d'accès normal ou en mode pagination. Tableau 1 Numéro Attribut de page page Erreur Lecture Lecture Lecture Ecriture Ecriture Ecriture Lecture Ecriture Renvoi seule unique double seule unique double renvoi renvoi 003 FFD Non Non Non Non Non Non Non Non 008 Non Oui Oui Non Non Oui Non Non Non A02 FFE Non Non Non Oui Oui Oui Non Non La procédure de traitement B comporte les étapes suivantes : - 81 : inspection de la table de recherche rapide de page (FPLT) stockée dans la SRAM 23 pour confirmer que les pages mémoire 12 fonctionnent en mode d'accès normal ou en mode pagination sous les attributs de configuration de page. - B2 : inspection de la table de registre associatif (TLB) stockée dans la mémoire flash 22 pour confirmer l'attribut de mode des pages mémoire 12, - B3 : exécution de l'opération correspondant à l'attribut. Par exemple, un module DRAM de 16Mo peut être divisé en 4000 segments représentant chacun une page mémoire de 4Kb (de 000 à FFF). La SRAM 23 comporte également 4000 bits redirigés vers les pages mémoire 12 de chaque DRAM 11, pour en commander le fonctionnement en mode d'accès normal ou en mode pagination. Si la valeur du bit de la SRAM 23 redirigé vers une page mémoire 12 donnée est 0 , cela signifie que ladite page mémoire est en mode d'accès normal. Si la valeur du bit de la SRAM 23 est 1 , cela signifie que ladite page mémoire est en mode pagination. Ensuite, le système vérifiera la table de registre associatif (TLB) pour confirmer l'attribut de cette page (comme représenté dans le tableau 2). Par exemple, si la FPLT de la page 008 est 1 , il vérifiera la TLB pour confirmer l'attribut de mode de la page 008. A partir de la table 1, on sait que les pages mémoire 12 sont configurées en attribut de lecture seule et donc, la page mémoire 008 ne permettra que des opérations de lecture mais pas d'écriture. Tableau 2 Page 000 001 002 003 ... 008 ... A02 A03 ... FFC FFD FFE FFF FPLT 1 0 0 1 1 1 1 Le pilote de bas niveau est destiné essentiellement à contrôler la DRAM pour exécuter des fonctions telles que lecture seule, écriture seule, écriture unique etc. La configuration et la fonction de chaque attribut sont décrites séparément ci-après. [A] Lecture seule Lorsque la zone est configurée en lecture seule, on génère un filtre de bus de donnée (DQM) ou on marque la fonction d'écriture. Autrement dit, on change la marque du cycle d'écriture en cycle de lecture, et plus aucune donnée ne peut être écrite dans la zone. Même si le processus normal de la CPU 40 comporte encore des instructions d'écriture, celles-ci seront invalidées parce que le DQM ou l'écriture sont masqués. Par conséquent, ceci n'interférera pas dans le fonctionnement normal de la CPU 40. En cycle d'écriture, le processeur renvoie à l'unité centrale (CPU) 40 un signal prêt, indiquant que l'opération d'écriture est achevée, inhibant le cycle d'écriture en cours de la CPU 40, et l'instruction d'écriture ne sera pas exécutée. La fonction lecture seule peut être appliquée à des systèmes de sécurité. La position du mot de passe lu par la CPU 40 sur la DRAM 11 est configurée en lecture seule. Ainsi, les pirates seront incapables de pénétrer dans le système en l'altérant ou le modifiant. Les virus sont un autre exemple. Lorsqu'un programme est chargé dans la zone configurée de la DRAM 11 en attente d'exécution, le code du virus ne pourra pas être écrit pendant l'exécution, puisque la zone a été configurée en lecture seule. Ceci empêche l'infection du fichier exécutable. Autrement dit, l'invention bloque l'intrusion du virus au début du programme d'exécution. Que le système possède ou non le code du virus, il ne sera jamais exécuté. [B] Ecriture seule En référence à la figure 3, le terminal de donnée de la DRAM 11 est connecté à une des bornes d'entrée d'un interrupteur 50 et un générateur aléatoire 60 est connecté à l'autre borne d'entrée de l'interrupteur 50. Ledit interrupteur 50 est soumis au contrôle d'un signal d'écriture seule wo. ctl. Si la valeur de wo. ctl est 0 , l'interrupteur 50 commutera vers la CPU 40 et transmettra les données à la DRAM 11. Si la valeur de wo. ctl est 1 , l'interrupteur 50 transmettra à la CPU 40 les données aléatoires produites par le générateur aléatoire 60. L'attribut de cette zone étant configuré en écriture seule, le signal wo. ctl du contrôle d'écriture seule sera configuré à la valeur 1 . A cet instant, l'opération d'écriture ne présentera pas de différence par rapport à la DRAM 11 en général. Si on souhaite lire des données à partir de cette zone, l'interrupteur 50 transmettra des données aléatoires à la CPU 40 pour obtenir les données invalides. Les instructions de lecture de la CPU 40 restent sous traitement normal, mais formeront une opération de lecture invalide sans interférer avec le fonctionnement normal de la CPU 40 parce que les données lues sont aléatoires. [C] Lecture unique En référence à la figure 3, la zone étant configurée en lecture unique, l'interrupteur 50 est sous le contrôle d'un compteur 70. Lors de sa première exécution, l'opération de lecture est classique. Si on envoie à nouveau une instruction de lecture, le compteur 70 (dont l'attribut de configuration est de valeur dz interdit l'exécution de cette opération et en commutant l'interrupteur vers le générateur aléatoire 60, les données lues seront un nombre aléatoire invalide. [D] Ecriture unique Si la zone est configurée en écriture unique, le pilote de bas niveau vérifiera d'abord les adresses de début et de fin de la zone. Si l'intervalle a déjà été écrite, ledit pilote ne permettra pas que des données y soient à nouveau écrites. En référence à la figure 3, le compteur 70 enregistrera les actions d'écriture. Si il détecte qu'il y a déjà eu des écritures, le pilote de bas niveau ne permettra pas que des données soient à nouveau écrites. Le nombre peut être configuré au moyen du pilote de bas niveau. Le nombre d'écriture dans la zone peut ainsi être configuré de manière souple et former un attribut du type écriture N fois (N étant la valeur de configuration) ou lecture N fois. [E] Renvoi Lecture (en référence à la figure 4) Si la zone est configurée en renvoi lecture, au moins une page mémoire 12 sera configurée en premier pour servir de zone de protection (étape a), et on effectuera une copie de la page mémoire conservant des données importantes telles que droits d'accès, clé publique, clé personnelle, etc. (ci après désignée comme la zone de stockage) dans la zone de protection (étape 2). Si on détecte une instruction d'écriture dans la zone de stockage, le système n'acceptera pas immédiatement l'instruction mais vérifiera d'abord la légalité de la modification de contenu (étape c). Dans l'affirmative, la zone de stockage modifiée sera copiée dans la zone de protection et le système pourra lire les données à partir de la zone de protection, en vue de l'exécution (étape d). Si l'instruction se révèle illégale, l'information fausse, l'action d'écriture ne devant pas être exécutée, le système renverra les données de la zone de protection à la zone de stockage, le système retrouvant son état initial (étape e) et l'instruction d'écriture étant invalidée de telle sorte que les données importantes ne puissent pas être modifiées. [F] Renvoi Ecriture (en référence à la figure 5) Si la zone est configurée en renvoi écriture, au moins une page mémoire sera configurée en premier pour servir de zone de protection (étape a), et chaque information destinée à être écrite sur la DRAM sera d'abord sauvegardée dans la zone de protection (étape b), afin de vérifier si les données présentent un risque d'endommagement du système (étape c). Dans la négative, le système transférera l'information vers la page mémoire concernée qui la stockera (étape d). Si par contre il y a risque, la donnée d'écriture sera retenue indéfiniment dans la zone de protection sans action (étape e). La DRAM ne pourra accomplir de manière immédiate aucune fonction sur la base du contenu modifié, qui génère un chemin de revérification des données. Par exemple, en considérant que la page mémoire 2 sert de zone de stockage pour les droits d'accès (ou les clés publiques ou personnelles), le contenu des droits d'accès révisés sera restauré dans la zone 2, de telle sorte que le système puisse rendre les ressources concernées accessibles à l'utilisateur en fonction des droits nouvellement configurés. En général, la modification des droits d'accès peut découler d'une autorisation du système, d'un virus ou d'un ver implanté par un pirate. Un code de virus ou un pirate s'introduisent normalement au moyen d'une modification de la pile du système, l'état modifié de la pile pouvant commander une interruption, la vérification des droits d'accès de l'utilisateur etc. Après modification et duplication dans la seconde page mémoire, le système répondra immédiatement et acceptera les nouveaux droits d'accès. Ainsi, un pirate peut accéder à toutes les ressources du système, ou modifier le signal d'interruption des requêtes existantes pour l'accès aux données du disque dur afin de les effacer, ou formater le disque dur etc. de manière à endommager l'intégrité des données du disque dur et empêcher le système de fonctionner normalement. Avec l'attribut de renvoi lecture selon la présente invention, les données des droits d'accès des utilisateurs habilités peuvent être placées dans la zone de protection (ici, la page mémoire 10). En cas de modification des droits d'accès, les données sont sauvegardées dans la zone de protection de la page mémoire 10 afin de vérifier au préalable la légalité de la modification (par exemple, apprécier si les commandes d'inversion ou de remontage de la pile sont en équilibre ou en dépassement). Si la modification est légale, les données dans la zone de protection de la page mémoire 10 seront transférées vers la page 2 et l'ordinateur acceptera le contenu modifié et réagira en conséquence. Dans le cas contraire, les données seront conservées dans la zone de protection et séparées du système pour éliminer le risque d'une modification illégale ou d'une infection virale. De plus, sous les différentes configurations d'attribut, l'interrupteur une fois commuté vers le générateur aléatoire 60 pour transmettre le nombre aléatoire invalide à la CPU empêche cette dernière d'exécuter sur la DRAM des fonctions contraires aux attributs configurés (par exemple, sous l'attribut de lecture seule, la CPU ne peut pas effectuer de fonction d'écriture etc.). Autrement dit, pendant cet intervalle de temps, la CPU et la DRAM sont sous état de ségrégation, mais peuvet continuer d'effectuer les opérations normales d'accès vers les autres unités de contrôle du système. En conclusion, le procédé de contrôle des attributs d'accès à la mémoire paginée d'une unité de mémoire proposé par la présente invention permet d'effectuer la configuration d'attribut et donc de confirmer les attributs des page mémoire. Il permet d'accroître les fonctions opérationnelles de la DRAM, de ne plus recevoir aveuglément les données stockées de la CPU ou du disque dur et de contrôler et gérer le flux de données pour fournir une protection courante du système. Il apporte une solution valable en regard des inconvénients des systèmes de sécurité traditionnels qui sont incapables d'assurer une protection exhaustive de la DRAM. REVENDICATIONS 1. Procédé de contrôle des attributs d'accès à la mémoire paginée d'une unité de mémoire, comportant deux étapes : - une procédure de configuration de registre, comportant la configuration de la zone de la DRAM pour définir les attributs de la mémoire, y compris le point de départ et la fin de ladite zone, le nombre et la taille des pages, et définir la zone partielle de la DRAM qui sera sous le contrôle direct d'un pilote de bas niveau ; la détermination des attributs des pages mémoire et l'élaboration d'une table de registre associatif (TLB) en fonction des résultats de ladite configuration pour identifier la table d'attribut d'une page mémoire ou d'un segment d'une page mémoire ; la création d'une table de recherche rapide de page (FPLT) pour indiquer si les pages mémoire fonctionnent en mode d'accès normal ou en mode pagination, - une procédure de traitement comportant l'inspection de la table de recherche rapide de page (FPLT) et de la table de registre associatif (TLB) et la configuration de la DRAM en fonction des attributs de page mémoire enregistrés dans lesdites tables pour exécuter des fonctions telles que lecture seule, écriture seule, configuration des nombre de lecture et d'écriture, renvoi lecture, renvoi écriture. 2. Procédé selon la revendication 1, dans lequel la fonction lecture seule génère un filtre de bus de donnée (DQM) ou masque la fonction d'écriture en modifiant la marque du cycle d'écriture en cycle de lecture, pour empêcher toute écriture dans la zone. 3. Procédé selon la revendication 2, dans lequel on prévoit, pour contrôler la fonction lecture seule, le renvoi par le processeur à l'unité centrale d'un signal, inhibant le cycle d'écriture en cours de la CPU. 4. Procédé selon la revendication 1, dans lequel la configuration d'attribut en renvoi lecture comporte les étapes suivantes : a. configuration d'au moins une page mémoire pour servir de zone de protection, b. copie des données importantes telles que droits d'accès, clé publique, clé personnelle, dans la zone de protection, c. vérification de la légalité des actions exécutées sur les pages mémoire. 5. Procédé selon la revendication 1, dans lequel la configuration d'attribut en renvoi lecture comporte les étapes suivantes : a. configuration d'au moins une page mémoire pour servir de zone de protection, b. sauvegarde des données à écrire dans la zone de protection, c. vérification du risque d'endommagement du système par les données. 6. Structure pour la mise en oeuvre du procédé selon la revendication 1, comportant une DRAM et une série de page mémoire, dans laquelle : - l'accès à chaque page mémoire est contrôlé par une unité de contrôle et les résultats de la procédure de configuration sont sauvegardés dans une mémoire interne, - la table de recherche rapide de page est sauvegardée au moyen d'une SRAM et une série de bits d'instruction redirigés vers les pages mémoire indiquant si celles-ci fonctionnent en mode normal d'accès ou en mode pagination, - l'une des bornes d'entrée d'un interrupteur est connectée au terminal de donnée de la DRAM, un générateur aléatoire étant connecté à l'autre borne d'entrée, ledit interrupteur étant contrôlé par un compteur ou un signal d'écriture seule. 7. Structure selon la revendication 6, dans lequel la table de recherche rapide de page est stockée dans le registre. 8. Procédé selon la revendication 1, dans lequel l'attribut de fonction d'écriture seule est contrôlé par un signal d'écriture seule pour commuter vers le générateur de nombre aléatoire, et transmettre les nombres aléatoires générés à la CPU et rendre invalides les données lues. 9. Structure selon la revendication 6, dans laquelle l'attribut de fonction d'écriture seule est contrôlé par un signal d'écriture seule pour commuter vers le générateur de nombre aléatoire, et transmettre les nombres aléatoires générés à la CPU et rendre invalides les données lues. 10. Procédé selon la revendication 1, dans lequel l'attribut de fonction lecture unique est contrôlé par un compteur permettant de générer une fonction de lecture normale à la première utilisation et d'interdire l'exécution de cette opération si la commande est à nouveau invoquée en commutant l'interrupteur vers le générateur aléatoire, les données lues étant un nombre aléatoire invalide. 11. Structure selon la revendication 6, dans laquelle l'attribut de fonction lecture unique est contrôlé par un compteur permettant de générer une fonction de lecture normale à la première utilisation et d'interdire l'exécution de cette opération si la commande est à nouveau invoquée en commutant l'interrupteur vers le générateur aléatoire, les données lues étant un nombre aléatoire invalide. 12. Procédé selon la revendication 1, dans lequel un pilote de bas niveau vérifie les adresses de début et de fin de zone en fonction d'écriture unique et interdit l'écriture de nouvelles données si l'intervalle a déjà été écrit. 13. Structure selon la revendication 6, dans laquelle un pilote de bas niveau vérifie les adresses de début et de fin de zone en fonction d'écriture unique et interdit l'écriture de nouvelles données si l'intervalle a déjà été écrit. 14. Procédé selon la revendication 1, dans lequel on utilise un compteur en fonction d'écriture unique pour enregistrer le nombre d'écritures, le pilote de bas niveau n'autorisant pas l'écriture de données si des écritures ont déjà été effectuées. 15. Structure selon la revendication 6, dans laquelle on utilise un compteur en fonction d'écriture unique pour enregistrer le nombre d'écritures, le pilote de bas niveau n'autorisant pas l'écriture de données si des écritures ont déjà été effectuées. 16. Structure selon la revendication 6, dans laquelle le compteur peut être configuré par un pilote de bas niveau pour normaliser le nombre de lectures et d'écritures, et effectuer la configuration d'attribut d'un nombre déterminé de lectures ou d'écritures.