FR 2906380 A1 20080328 FR 0608451 A 20060927 SYSTEME ET PROCEDE DE SECURISATION DE DONNEES L'invention concerne un système et un procédé de sécurisation de données stockées sur un support physique. Elle concerne plus particulièrement un tel système et un tel procédé, dans lequel les données sont: sécurisées contre, d'une part, le rejeu et, d'autre part, les altérations ou modifications induites notamment par des interruptions brutales de service. Le rejeu permet d'accéder frauduleusement à des données par copie illicite du contenu antérieur d'un système de gestion de données. Par exemple, si l'on suppose, qu'à un instant t0, un système So possède des droits en lecture d'un fichier F, qu'à l'instant t ultérieur à t0, ces droits sont consommés avec un contenu dudit système égal à s, alors le rejeu permet d'accéder frauduleusement au fichier F en lecture au temps t en recopiant le contenu du système S, dans le système S pour obtenir un système contenant Sa reconnu valide au temps t. De manière classique, on protège les données des systèmes de l'état de la technique contre le rejeu en utilisant l'envoi d'aléas changeant à chaque session, un horodatage, ou alors, des compteurs monotones. Les interruptions brutales de service sont susceptibles d'altérer les données contenues dans un support physique par exemple lors de la lecture ou de l'écriture de ces données. Ces interruptions brutales de service sont généralement occasionnées par l'extinction brutale du système de gestion des données, essentiellement, dans le cas d'une coupure du courant d'alimentation électrique ou dans le cas d'un redémarrage intempestif de ce système. Des altérations dans les données écrites ou lues sont par ailleurs susceptibles d'être occasionnées par des attaques, lorsqu'un individu malfaisant modifie intentionnellement le comportement de la lecture ou de l'écriture dans le système de gestion de 2906380 2 données, ou alors, dans le cas d'erreurs accidentelles qui surviennent, en particulier, à la suite de la détérioration de la tête de lecture d'un disque dur ou du mécanisme assurant son déplacement. 5 De manière classique, on protège les données des systèmes de l'état de la technique contre les interruptions brutales de service en organisant des sauvegardes desdites données et en permettant la récupération des données sauvegardées. Par exemple, 10 lorsque le support de données est un disque dur, ce disque est monté en RAID (Redundant Array of Independent Disks ; groupe de disques indépendants) en utilisant un ou plusieurs disques additionnels. On citera en particulier l'arrangement de disques en RAID 1. 15 Toutefois, cumuler, d'une part, une récupération de données à la suite d'altérations dues à des interruptions brutales de service avec, d'autre part, une protection de ces données contre le rejeu, n'est pas évident. En effet, pour la récupération de données, on souhaite restaurer 20 des données qui ont subi des altérations, alors que, pour interdire le rejeu, on souhaite interdire toute restauration de ces données. Aussi, le cumul d'un système de sauvegarde d'une partition contenant des données et d'une protection de cette partition contre le rejeu 25 incluant des compteurs monotone semble incompatible. Dans le cas contraire, la récupération d'une ancienne partition sauvegardée serait en contradiction avec le système de protection contre le rejeu puisqu'il utiliserait une valeur antérieure du compteur monotone. 30 Compte tenu de l'état de la technique exposé ci-dessus, un problème que se propose de résoudre l'invention est de réaliser un système et un procédé de sécurisation de données contre, d'une part, le rejeu et, d'autre part, les modifications de données dues notamment 35 à une dernière interruption de service. 2906380 3 La solution proposée de l'invention à ce problème posé a pour premier objet un système de sécurisation de données, caractérisé en ce qu'il comprend : - un compteur monotone ; 5 - une entité de calcul ; - un support physique de données comportant - un ou une pluralité de blocs de données sécurisées, -un premier bloc maître comprenant la 10 dernière valeur récupérée du compteur monotone, un identifiant du dernier bloc de données écrit sur ledit support, un premier code d'authentification garantissant l'authenticité du ou des blocs de données écrits, un second code d'authentification calculé à partir du 15 dernier bloc de données écrit, ces données étant fixées à une valeur neutre, et un troisième code d'authentification garantissant l'authenticité du premier bloc maître, et - un second bloc maître formant une réplique 20 du premier bloc maître ; et - une clé d'authentification. Elle a pour second objet un procédé de sécurisation de données, caractérisé en ce qu'il comporte les étapes suivantes de : 25 fourniture d'un compteur monotone, d'une entité de calcul, d'un support physique de données et d'une clé d'authentification ; et de écriture, sur ledit support de données, d'un ou d'une pluralité de blocs de données, d'un premier bloc 30 maître comportant la dernière valeur récupérée du compteur monotone, un identifiant du dernier bloc de données écrit sur ledit support, un premier code d'authentification garantissant l'authenticité du ou des blocs de données écrits, un second code 35 d'authentification calculé à partir du dernier bloc de données écrit, ces données étant fixées à une valeur neutre, et un troisième code d'authentification 2906380 4 garantissant l'authenticité du premier bloc maître, et d'un second bloc maître formant une réplique du premier bloc maître. L'invention sera mieux comprise à la lecture de la 5 description non limitative qui va suivre, et au regard des dessins ci-joints, dans lesquels : - la figure lA présente, de manière schématique, les différents composants d'un système selon l'invention ; - la figure 1B présente, de manière schématique, un 10 ensemble de bloc de données enregistrés sur un support physique, ainsi que deux blocs maîtres associés à ces données, pour leur sécurisation selon l'invention ; - la figure 2 présente les différentes étapes conduisant à la vérification de la cohérence d'un système 15 selon l'invention, lors du démarrage dudit système ; - la figure 3 présente les différentes étapes conduisant à l'écriture de nouvelles données sur le support physique du système selon l'invention ; -la figure 4A illustre, de manière schématique, les 20 étapes conduisant à la vérification d'un code d'authentification d'un bloc maître selon l'invention ; - la figure 4B illustre, de manière schématique, les étapes conduisant au calcul d'un code d'authentification d'un bloc maître selon l'invention ; 25 - la figure 5 présente les différentes étapes conduisant à la lecture de données écrites sur un support de données d'un système selon l'invention ; - la figure 6 présente les différentes étapes d'une procédure de récupération de données selon l'invention ; 30 et - la figure 7 présente les différentes étapes d'une procédure de récupération d'un bloc maître selon l'invention. Dans la présente invention, on considère qu'une 35 donnée quelconque est authentique si il est permis de garantir que cette donnée n'a pas été illicitement modifiée ou remplacée par un tiers. L'authenticité de la 2906380 5 donnée est assurée notamment par un algorithme cryptographique conduisant à l'obtention d'une donnée chiffrée appelée MAC (Message Authentication Code - code d'authentification de message). Un tel algorithme utilise 5 une clé secrète et opère sur une donnée à protéger. Il ne peut être vérifié qu'en fournissant la clé secrète adéquate. Il produit un code d'authentification, généralement court, qui garantit l'origine et. l'intégrité de la donnée. Une seule modification dans la donnée et le 10 code change. L'invention concerne un système 10 de sécurisation de données. Dans un exemple, ce système est un système embarqué dans un dispositif du type téléphone portable, comportant notamment un boîtier muni d'un clavier, d'un 15 écran, d'un microphone, d'un haut-parleur, d'une carte électronique, d'un module pour l'émission et la réception de données, d'un module d'identification abonné (SIM) et d'une batterie pour l'alimentation électrique. La carte électronique comporte au moins un microcontrôleur, une 20 mémoire de type RAM, une mémoire de type :Flash, et un système de bus. L'exploitation du téléphone est gérée par un système d'exploitation et un ensemble d'applications chargées par exemple dans une mémoire de ce téléphone. Ainsi que cela est montré à la figure 1A, le système 25 selon l'invention comprend un compteur monotone 11, une entité de calcul 12, une clé système 13 et un support physique 14 de données. Le système 10 est notamment un système de gestion de partitions ou un système de gestion de fichiers. 30 Le compteur monotone 11 est un compteur qui ne peut que s'incrémenter d'une seule unité. La valeur courante V, de ce compteur peut être récupérée. On notera cependant que la récupération de cette valeur courante n'incrémente pas le compteur 11. Ainsi, le compteur 11 35 est susceptible de répondre à une première instruction d'incrémentation et à une seconde instruction, différente de la première instruction, de récupération de sa valeur 2906380 6 courante. On notera que la valeur courante du compteur monotone il est, selon un mode de réalisation préférentiel de l'invention, stockée chiffrée dans ce compteur. Dans ce cas, cette valeur ne peut être 5 récupérée que par une entité dûment authentifiée du système. L'entité de calcul 12 est une entité physique ou une entité logique. Lorsqu'il s'agit d'une entité physique, il s'agit par exemple d'un microprocesseur ou d'un 10 microcontrôleur éventuellement dédié à des applications de calcul tel qu'un crypto-processeur. Lorsqu'il s'agit d'une entité logique, il s'agit par exemple d'un logiciel capable d'effectuer des calculs sur un processeur générique. C'est cette entité 12 qui effectue les calculs 15 notamment de MAC, ou les autres chiffrements et déchiffrements, ainsi que les vérifications requises selon la présente invention. Cette entité utilise éventuellement des ressources système non présentées telles que des ressources en mémoire vive. Selon un mode 20 de réalisation préférentiel de l'invention, l'entité de calcul 12 calcule des MACs sur des groupes d'un ou de plusieurs blocs de données. Elle conserve les résultats de ces calculs en mémoire vive. Les codes d'authentification Auth A et Auth B correspondent à un 25 MAC de ces résultats. Plus précisément, il s'agit d'un MAC d'un ensemble de MAC du 1er groupe de blocs de données concaténé à un MAC du 2ème groupe de blocs de données, etc..., jusqu'à ce que tous les groupes soient pris en compte. L'entité de calcul 12 utilise donc les 30 résultats précités pour le calcul des MAC des codes d'authentification Auth A et Auth B, la taille des groupes étant notée dans le bloc maître. La clé système 13 est une clé cryptographique accessible aux seules entités autorisées par le système 35 10. Typiquement, elle n'est accessible que depuis ce système. 2906380 7 Le support physique 14 de données est un support assurant le stockage persistant de données informatiques. Il s'agit par exemple d'un disque dur, d'une mémoire de type flash, voire de disques amovibles de type disquette. 5 Ainsi que cela est montré à la figure 1B, le support 14 comporte un ou une pluralités de blocs de données DBk et deux blocs maîtres, un premier MBkl et un second MBk2 blocs maîtres, lesdits blocs maîtres étant associés auxdits blocs de données, le bloc maître MBk2 étant une 10 réplique du bloc maître MBkl. La taille des blocs de données DBk est configurable. Par exemple, elle est de 256 octets. Le nombre de blocs de données présents, contenant les données sécurisées selon l'invention, est quelconque. Dans l'exemple de la 15 figure 1B, on a représenté quatre blocs DBkl, DBk2, DBk3 et DBk4. Les blocs maîtres MBkl et MBk2 ont une taille minimale suffisante pour contenir les champs de données qui vont être décrits dans la suite du présent exposé de 20 l'invention. En pratique, cette taille minimale est de l'ordre de 100 octets. Chaque bloc maître MBk comporte les champs suivants la dernière valeur Viast récupérée (ou retournée) du compteur monotone 11, l'identifiant IDiast du dernier bloc 25 de données DBk écrit sur le support de données 14, une clé d'authentification 15 chiffrée par la clé système 13, un code d'authentification Auth A garantissant l'authenticité et l'intégrité des blocs de données DBkl, DBk4, un code d'authentification Auth_l3 calculé à 30 partir du dernier bloc de données écrit et dont les données sont fixées à une valeur neutre, ladite valeur neutre étant par exemple égale à une suite de zéros, et à partir des données des autres blocs de données, qui sont conservées telle qu'elles, et un code d'authentification 35 Auth C garantissant l'authenticité et l'intégrité du bloc maître MBk. En outre, chaque bloc maître MBk comporte éventuellement d'autres informations relatives par 2906380 8 exemple à sa taille, ou son nombre de secteurs, ces informations n'étant pas montrées à la figure 1B. Selon l'invention, les blocs de données DBk sont susceptibles d'être chiffrés par une clé de chiffrement. 5 Certains calculs de MAC, effectués par l'entité de calcul 12, sont alors mis en œuvre sur des blocs de données chiffrés. La clé de chiffrement est susceptible d'être stockée dans les blocs maîtres, ou alors, directement sur le système lui-même. Elle peut alternativement être 10 chiffrée par la clé système. Dans ce cas, seule la clé système est sur le système. La cohérence du système selon l'invention est vérifiée lors de son démarrage. Ainsi que cela est présenté à la figure 2, pour la vérification de la 15 cohérence du système selon l'invention, on vérifie tout d'abord le format du premier bloc maître MBkl. Cette vérification de format comprend par exemple des étapes de vérification de la licéité de l'identifiant IDiast, de la dernière valeur Viast retournée du compteur monotone 11, 20 de la présence des codes d'authentification Auth_A, AuthB et AuthC et de la présence de la clé d'authentification 15 chiffrée par la clé système 13. Dans le cas où le format du premier bloc maître MBkl est illicite, on vérifie le format du second bloc maître 25 MBk2. Dans le cas où le format du second bloc maître MBk2 est illicite, on considère que le ;système est définitivement corrompu, les données n'étant pas sûres, ledit système ayant par exemple subit une attaque. Une alarme peut alors être présentée à l'utilisateur du 30 système et l'accès aux données est classiquement interdit. Par contre, dans le cas où le format du second bloc maître MBk2 est licite, on remplace le premier block maître MBkl par le second bloc maître MBk2. Lorsque le format du bloc MBkl est licite ou lorsque 35 le format du bloc MBkl est illicite mais que le format du bloc MBk2 est licite et que, ainsi que cela a été indiqué précédemment, le bloc MBkl a été remplacé par le bloc 2906380 9 MBk2, on vérifie, selon une étape ultérieure du procédé selon l'invention, le code d'authentification C. Cette vérification, schématisée à la figure 4A, consiste à invoquer la fonction cryptographique MAC en lui 5 fournissant, d'une part, la clé d'authentification 15 déchiffrée à l'aide de la clé système 13 et, d'autre part, le contenu du bloc maître MBkl dont le champ de la valeur compteur monotone est mis à jour par la valeur courante V,, contenue dans ce compteur 11. On compare 10 alors le résultat obtenu avec le code d'authentification Auth_C du bloc maître MBkl. Si ce résultat est identique au code d'authentification Auth C du bloc MK1, alors le bloc MBkl est authentique. Dans le cas contraire, il n'est pas considéré comme authentique est la procédure de 15 récupération du bloc maître et déclenchée (figure 2). Si le bloc MBkl est authentique, on vérifie alors, selon une autre étape du procédé selon l'invention, le code d'authentification Auth A. Cette vérification fait également appel à un MAC qui est calculé sur l'ensemble 20 des données contenues dans les blocs de données DBk du système, éventuellement chiffrés. Avantageusement, ce MAC peut être calculé, dans un premier temps, sur des groupes de blocs de données puis, dans un deuxième temps, sur les codes d'authentification ainsi calculés des groupes de 25 données. Dans le cas où la vérification du code Auth A est correcte, le système est considéré comme cohérent. Dans le cas contraire, la procédure de récupération des données est déclenchée. Après la vérification de la cohérence du système, 30 pour l'écriture de nouvelles données dans le système, on procède, selon l'invention, comme suit. Tout d'abord, ainsi que cela est montré à la figure 3, on vérifie le format du bloc MBkl et, le cas échéant, du bloc MBk2, à la manière décrite précédemment pour la 35 vérification de la cohérence du système. De même que précédemment, si ces vérifications échouent, alors le système est définitivement corrompu. 2906380 10 Puis, dans une étape ultérieure, on vérifie le code Auth C. De même que précédemment, si ce code n'est pas vérifié, on lance la procédure de récupération du bloc maître. Par contre, si ce code est vérifié, alors le bloc 5 MBkl est authentique et un nouveau bloc maître MBkl' est généré, sans que le code Auth_A soit vérifié. En effet, on suppose que, pendant que le système est en cours d'exécution, des tiers malfaisants n'interagiront pas avec ce système. l0 Pour générer le nouveau bloc maître MBkl', les étapes suivantes sont mises en oeuvre. Tout d'abord, l'identifiant IDiast du dernier bloc de données écrit est mis à jour. Ensuite, la valeur courante V, du compteur monotone 11 est récupérée et la valeur V~+l est écrite 15 dans le nouveau bloc maître MBk1'. Les éventuelles autres informations du bloc maître sont alors mises à jour. Dans le nouveau bloc maître MBkl', on calcule alors, à l'emplacement prévu pour les codes d'authentification Auth A et Auth B, une valeur prédéfinie, par exemple une 20 suite de zéros, et on met à jour le bloc maître MBkl'. On calcule enfin le nouveau code d'authentification AuthC puis on note la valeur correspondante dans le bloc maître MBkl'. Les étapes de ce calcul sont schématisées à la figure 4B. Il est effectué à partir du nouveau bloc 25 maître ainsi constitué, c'est-à-dire avec, notamment, le nouvel identifiant de données, la valeur de compteur monotone égale à Vc+l, et les codes d'authentification A et B des nouvelles données. Une fois et seulement une fois que le nouveau bloc 30 maître MBkl' a été généré, on incrémente la valeur du compteur monotone à Vc+l, puis on écrit le bloc maître MBkl' dans le système, on écrit également le deuxième bloc maître MBk2', qui est une duplication du bloc maître MBkl et, finalement, on écrit les nouvelles données. 35 Pour la lecture des données, ainsi que cela est montré à la figure 5, on procède comme suit. De même que précédemment, on vérifie le format du bloc maître MBkl. 2906380 11 Si celui-ci est illicite, on vérifie le format du bloc maître MBk2. Si cette seconde vérification échoue, on considère le système comme définitivement corrompu. Par contre, dans le cas où la vérification du format 5 de l'un des blocs maîtres MBkl ou MBk2 est achevée avec succès, on procède aux étapes suivantes. Tout d'abord, on vérifie le code AuthC en utilisant la valeur courante V, du compteur monotone 11. Dans le cas où le bloc maître MBkl n'est pas authentique, on lance la procédure de 10 récupération du bloc maître. Dans le cas contraire, on vérifie le code Auth A. Si cette vérification échoue, on lance la procédure de récupération des données. Dans le cas contraire, on lit les données correspondant à l'identifiant de données fourni. Optionnellement, si le 15 chiffrement est activé, on lit les données puis on les déchiffre et on renvoie les données déchiffrées. La procédure de récupération des données est présentée à la figure 6. Cette procédure s'effectue automatiquement, sans qu'il soit nécessaire de rebouter 20 le système. Elle comporte les étapes suivantes. Tout d'abord, on calcule un code d'authentification en remplissant les dernières données écrites par une valeur neutre prédéfinie, par exemple une suite de zéros. Ces dernières données écrites sont identifiées par un 25 identifiant noté dans le bloc maître. Si le résultat du calcul précité est égal au code d'authentification Auth B, alors on procède comme suit. Tout d'abord, on remplit les données effectivement de la valeur neutre. Ensuite, on duplique le code 30 d'authentification Auth B dans le code Auth A. On calcule une nouvelle fois le code Auth C ainsi modifié en utilisant la valeur courante du compteur monotone V, + 1, ce calcul s'effectuant sur un bloc maître MBk dont l'emplacement du code d'authentification du bloc maître 35 est préalablement rempli de la valeur neutre. On incrémente enfin le compteur monotone, et on duplique le bloc maître. 2906380 12 Si le résultat du calcul précité n'est pas égal au code d'authentification Auth B, le système de données doit être considéré comme définitivement corrompu. La procédure de récupération automatique d'un bloc 5 maître est présentée à la figure 7. Elle est activée lorsque le code Auth_C indique que du bloc maître MBk n'est pas authentique. Cette procédure est mise en oeuvre de la manière suivante. Tout d'abord, on récupère la valeur courante du compteur monotone V. Si 1a valeur du 10 compteur monotone indiquée dans le bloc maître est égale à la valeur V,+l, on vérifie le code d'authentification C en supposant que la valeur du compteur monotone est égale à la valeur courante Vc+l. Si cette vérification est réalisée avec succès, on 15 incrémente la valeur Vc du compteur monotone 11. En pratique, ce cas survient lorsque qu'il y a une interruption brutale de l'écriture juste avant l'incrémentation du compteur monotone 11. Par contre, si cette vérification n'est pas réalisée 20 avec succès, on vérifie le code Auth C du second bloc MBk2. Dans le cas où cette ultime vérification est réalisée avec succès, alors on remplace le bloc MBkl par le bloc MBk2. Dans le cas, contraire, le système est corrompu et non récupérable. 25 De manière générale, on notera que, dans le cas où les blocs de données sont chiffrés par une clé de chiffrement contenue dans les blocs maîtres, l'écriture des blocs de données est précédée d'une étape de chiffrement de ces données. Pour la lecture, lesdits 30 blocs sont également préalablement déchiffrés. Le système de récupération des données est également: légèrement modifié puisque le code d'authentification Auth_A est défini à partir de données chiffrées. Il en va de même pour le code d'authentification Auth_B qui est défini à 35 partir d'un dernier bloc contenant des valeurs neutres chiffrées. 2906380 13 Ainsi que cela est expliqué dans les exemples de mise en oeuvre ci-après, le système selon l'invention est résistant aux rejeux. Supposons que le système comporte deux blocs maîtres 5 authentiques MBkl et MBk2, des données de contenu DBk, avec une valeur courante de compteur monotone égale à V. Plus tard, le système est modifié, avec des blocs maîtres authentique MBkl' et MBk2', des données de contenu DBk' et une valeur de compteur monotone égale à V,+l. 10 Si un attaquant remplace les données DBk' par les données DBk, et les blocs maîtres MBkl' et MBk2' par les blocs MBkl et MBk2, respectivement, alors la vérification du code d'authentification C des blocs MBkl et MBk2 échoue car ces blocs ont été calculés avec la valeur V, 15 alors que la valeur courante actuelle du compteur monotone est V,+l. Si un attaquant remplace uniquement les données DBk' par les données DBk, mais conserve les blocs maîtres MBkl' et MBk2', alors le bloc MBkl' est authentique mais 20 le code d'authentification Auth A de ces données ne l'est pas puisqu'il porte sur les données DBk' alors que ce bloc est maintenant associé aux données DBk. Si les modifications de l'attaquant portent sur le dernier bloc de données écrit, alors une récupération du système aura 25 lieu et le dernier bloc de données sera rempli par la valeur neutre. Enfin, si un attaquant remplace les données DBk' par des données par exemple DBk et forge un bloc maître DBkl" identique au bloc maître MBkl' sauf qu'il indique une 30 valeur de compteur monotone Viast égale à v, et non pas V,+1, le code d'authentification Auth_C du bloc maître MBkl' ne sera pas valide puisque la valeur courante du compteur monotone est Vc+l. De même, et ainsi que cela est expliqué dans les 35 exemples de mise en oeuvre ci-après, le système selon l'invention est résistant aux modifications notamment dues à des interruptions brutales de service te=_les que 2906380 14 le redémarrage du système ou une coupure d'alimentation électrique. Supposons que le système selon l'invention comporte deux blocs maîtres MBkl et MBk2, des données DBk et une 5 valeur de compteur monotone égale à V,. Si on souhaite écrire de nouvelles données DBk' mais qu'une coupure de courant intervient après l'écriture du bloc maître et avant l'incrémentation du compteur monotone, le système est alors dans un état tel qu'il 10 comporte un bloc maître MBkl', un bloc maître MBk2, des données DBk et un compteur monotone à une valeur V,. La vérification du code d'authentification Auth C du bloc MBkl' échoue alors car celui-ci a été calculé avec une valeur de compteur à Vc+1 alors que la valeur courante 15 est V,. La procédure de récupération du bloc maître est alors activée. Il se trouve que la valeur de compteur notée dans MBkl' est bien la valeur courante + 1. On vérifie alors le bloc maître MBkl' en supposant que le compteur est égal à la valeur courante +1, ce qui 20 fonctionne. On incrémente donc le compteur monotone et le système est de nouveau cohérent. Si, de même que précédemment, on souhaite écrire de nouvelles données DBk' et qu'une coupure de courant intervient juste après l'incrémentation du compteur 25 monotone, on obtient alors un système avec des blocs maîtres MBkl', MBk2, DBk et une valeur de compteur égale à V,+l. La vérification du code d'authentification C de MBkl' réussit puisque le compteur est à Vc+l. Toutefois, la vérification du code d'authentification A écroue car 30 on s'attend aux données DBk' et non pas DBk. La procédure de récupération des données est alors activée. On vérifie le code d'authentification B en utilisant des valeurs neutres pour le dernier bloc de données écrit. Il apparaît que cela correspond à DBk. La vérification 35 réussit donc. On rétablit enfin le système dans un état correct en utilisant des valeurs neutres dans le dernier 2906380 15 bloc écrit et en rectifiant le bloc maître. Le système est, dans cet exemple aussi, de nouveau cohérent. On notera que, si la coupure d'alimentation électrique du système intervient après l'écriture du 5 deuxième bloc maître, le traitement est identique au cas précédent. On notera enfin que, si la coupure du courant d'alimentation électrique du système intervient après l'écriture du dernier bloc de données, le système est 10 alors dans un état cohérent et aucune correction n'est à apporter. En définitive, la récupération de la dernière donnée écrite est possible selon l'invention grâce aux trois mécanismes suivants. 15 Premièrement, l'écriture suit de manière stricte les quatre étapes successives suivantes le calcul et l'écriture du bloc maître à l'aide de la valeur courante du compteur monotone + 1 ; l'incrémentation de la valeur du compteur monotone ; l'écriture du second bloc maître ; 20 et l'écriture du dernier bloc dedonnées. Deuxièmement, le bloc maître contient un code d'authentification Auth B et l'identifiant du dernier bloc de données écrit. Troisièmement, le bloc maître est lui-même dupliqué 25 dans le cas où l'erreur survient au moment même de l'écriture du bloc maître. Le système selon l'invention, tel qu'exposé dans le mode de réalisation ci-dessus, permet de récupérer uniquement la dernière erreur survenue notamment suite à 30 une interruption de service. Toutefois, l'homme du métier pourra, en ajoutant d'autres blocs maîtres, récupérer des erreurs antérieures. Par ailleurs, le système selon l'invention, tel qu'exposé dans le mode de réalisation ci-dessus, ne permet pas de récupérer une pluralité 35 d'erreurs affectant plusieurs blocs distincts de données. Toutefois, là encore, l'homme du métier pourra, en ajoutant, dans les blocs maîtres, des champs additionnels 2906380 16 de codes d'authentification Auth B, procéder à la récupération de données affectées par des erreurs dans une pluralité de blocs de données. 5 REVENDICATIONS 1. Système (10) de sécurisation de données (DBk), caractérisé en ce qu'il comprend : un compteur monotone (11) ; une entité de calcul (12) ; un support physique (14) de données comportant un ou une pluralité de blocs de données (DBkl, DBk2, DBk3, DBk4), un premier bloc maître (MBkl) comprenant la dernière valeur (Vlast) récupérée du compteur monotone (11), un identifiant (IDiast) du dernier bloc de données (DBk) écrit sur ledit support (14), un premier code d'authentification (Auth_A) garantissant l'authenticité du ou des blocs de données écrits, un second code d'authentification (Auth B) calculé à partir du dernier bloc de données écrit, ces données étant fixées à une valeur neutre, et un troisième code d'authentification (Auth_C) garantissant l'authenticité du premier bloc maître (MBkl), et un second bloc maître (MBk2) formant une 20 réplique du premier bloc maître (MBkl) ; et une clé d'authentification (15). 2. Système (10) selon la revendication 1, caractérisé en ce que la taille des blocs de données 25 (DBkl, DBk2, DBk3, DBk4) est configurable. 3. Système (10) selon l'une des revendications 1 ou 2, caractérisé en ce que le premier code d'authentification (Auth_A) garantit en outre l'intégrité 30 du ou des blocs de données écrits et en. ce que le troisième code d'authentification (Auth_C) garantit en outre l'intégrité du bloc maître. 4. Système (10) selon l'une des revendications 1, 2 35 ou 3, caractérisé en ce que le second code 2906380 18 d'authentification (Auth B) est calculé à partir du dernier bloc de données écrit, les données de ce dernier bloc étant fixées à une valeur neutre, et à partir des données des autres blocs de données, qui sont conservées 5 telles qu'elles. 5. Système selon l'une des revendications 1 à 4, caractérisée en ce que la clé d'authentification (15) est contenue dans le premier (MBkl) et le second (MBk2) blocs 10 maîtres. 6. Système (10) selon la revendication 5, caractérisé en ce qu'il comprend en outre une clé système (13) et en ce que la clé d'authentification (15) est 15 chiffrée par ladite clé système (13). 7. Système (10) selon l'une des revendications 1 à 6, caractérisé en ce que les blocs de données (DBkl, DBk2, DBk3, DBk4) sont chiffrés par une clé de chiffrement. 8. Système (10) selon la revendication 7, caractérisée en ce que la clé de chiffrement est chiffrée par la clé système (13). 9. Procédé de sécurisation de données, caractérisé en ce qu'il comporte les étapes suivantes de : fourniture d'un compteur monotone (11), d'une entité de calcul (12), d'un support physique (14) de données et 30 d'une clé d'authentification (15) ; et de écriture, sur ledit support (14), d'un ou d'une pluralité de blocs de données (DBkl, DBk2, DBk3, DBk4), d'un premier bloc maître (MBkl) comprenant la dernière valeur (Viast) récupérée du compteur monotone (11), un 35 identifiant (IDiast) du dernier bloc de données (DBk) écrit sur ledit support (14), un premier code d'authentification (Auth A) garantissant l'authenticité 2906380 19 du ou des blocs de données écrits, un second code d'authentification (Auth B) calculé à partir du dernier bloc de données écrit, ces données étant fixées à une valeur neutre, et un troisième code d'authentification 5 (Auth C) garantissant l'authenticité du premier bloc maître (MBkl), et d'un second bloc maître (MBk2) formant une réplique du premier bloc maître (MBkl). 10. Procédé selon la revendication 9, caractérisé en 10 ce que la cohérence du système (10) est vérifiée à son démarrage. 11. Procédé selon la revendication 10, caractérisé en ce que, pour la vérification de la cohérence du 15 système (10), on vérifie la licéité du format du premier bloc maître (MBkl) et, dans le cas où ledit premier bloc maître (MBkl) est illicite, on vérifie la licéité du second bloc maître (MBk2) sachant que, dans le cas où le format du second bloc maître (MBk2) est licite, on 20 remplace le premier bloc maître (MBkl) par le second bloc maître (MBk2) et, dans le cas où le format du second bloc maître (MBk2) est illicite, on considère le système comme définitivement corrompu. 25 12. Procédé selon l'une des revendications 10 ou 11, caractérisé en ce que, pour la vérification de la cohérence du système (10), on vérifie le troisième code d'authentification (Auth C) puis, dans le cas cù ledit troisième code d'authentification (Auth C) est vérifié avec succès, on vérifie le premier code d'authentification (Auth A), sachant que, dans le cas où la vérification du troisième code d'authentification (Auth C) échoue, on déclenche une procédure de récupération du bloc maître (MBkl) et que, si la vérification du premier code d'authentification (Auth_A) échoue, on déclenche une procédure de récupération des données. 2906380 20 13. Procédé selon l'une des revendications 9 à 12, caractérisé en ce que, pour l'écriture de nouvelles données, on vérifie la licéité du format du bloc maître 5 (MBkl) puis on vérifie le troisième code d'authentification (Auth C). 14. Procédé selon l'une des revendications 9 à 13, caractérisé en ce que, pour l'écriture de nouvelles 10 données, on génère un nouveau premier bloc maître (MBkl'), on incrémente le compteur monotone (:L1), on écrit le nouveau premier bloc maître (MBkl'), on écrit le nouveau second bloc maître (MBk2') puis on écrit les nouvelles données. 15 15. Procédé selon la revendication 14, caractérisé en ce que, pour générer le nouveau premier bloc maître (MBkl'), on met à jour l'identifiant du dernier bloc de données, on récupère la valeur courante du compteur 20 monotone (11), on note la valeur courante (Va) plus 1 de ce compteur dans le nouveau premier bloc maître (MBkl'), puis on calcule les codes d'authentification à partir du nouveau premier bloc maître (MBkl') ainsi constitué. 25 16. Procédé selon l'une des revendications 9 à 15, caractérisé en ce que, pour la lecture de données, on vérifie la licéité du premier bloc maître (MBk1) puis on vérifie le troisième code d'authentification (Auth C). 30 17. Procédé selon l'une des revendications 9 à 16, caractérisé en ce qu'il comporte une étape de récupération des données, cette étape s'effectuant automatiquement, sans que le système (10) soit rebouté. 35 18. Procédé selon la revendication 17, caractérisé en ce que, pour la récupération des données, on calcule un code d'authentification en remplissant les dernières 2906380 21 données écrites par une valeur neutre prédéfinie et, si le résultat de ce calcul est égal au second code d'authentification (Auth B), on remplit les données de la valeur neutre et on duplique le second code 5 d'authentification (Auth B) dans le premier code d'authentification (Auth A), on calcule le troisième code d'authentification (Ruth C) en utilisant la valeur courante du compteur monotone plus 1, puis on incrémente le compteur monotone et on duplique le bloc maître. 10 19. Procédé selon l'une des revendications 9 à 18, caractérisé en ce qu'il comporte une étape de récupération automatique d'un bloc maître. 15 20 Procédé selon la revendication 19, caractérisé en ce que, pour la récupération d'un bloc maître, on récupère la valeur courante du compteur monotone, et si la valeur du compteur monotone indiquée dans le bloc maître est égale à cette valeur plus 1, on vérifie le 20 troisième code d'authentification (Auth C) en supposant que la valeur du compteur monotone est égale à la valeur courante plus 1. 21. Procédé selon la revendication 20, caractérisé 25 en ce que, dans le cas où la vérification est réalisée avec succès, on incrémente la valeur du compteur monotone alors que dans le cas où cette vérification échoue, on vérifie le code d'authentification (Ruth C) du second bloc maître (MBk2). 30 22. Procédé selon l'une des revendications 9 à 21, caractérisé en ce qu'il comporte les étapes successives suivantes de calcul et d'écriture d'un bloc maître à l'aide de la valeur courante du compteur monotone plus 1, 35 d'incrémentation de la valeur successive du compteur monotone ; d'écriture du second bloc maître (MBk2) puis d'écriture du dernier bloc de données. 2906380 22 23. Procédé selon l'une des revendications 9 à 22, caractérisé en ce que l'entité de calcul (:L2) effectue des calculs de MAC de blocs de données, lesdits blocs de 5 données étant éventuellement chiffrés. 24. Procédé selon l'une des revendications 9 à 23, caractérisé en ce que l'entité de calcul (12) conserve en mémoire vive les résultats des calculs effectués sur les 10 groupes de données et utilise les résultats de ces calculs pour le calcul des MAC des premier (Auth_A) et second (Auth B) codes d'authentification, la taille des groupes étant notée dans le bloc maître. 15 25. Utilisation d'un système selon l'une des revendications 1 à 8 et/ou d'un procédé selon l'une des revendications 9 à 24, pour la sécurisation des données contre, d'une part, le rejeu et, d'autre part, des interruptions brutales de service. 20