B8666 - 13872 1 PROCEDE SECURISE DE MISE A JOUR D'UN PROGRAMME DE DEMARRAGE OU D'UN SYSTEME D'EXPLOITATION D'UN DISPOSITIF INFORMATIQUE
Domaine de l'invention La présente invention vise un procédé sécurisé de mise à jour d'un programme d'un dispositif informatique, et plus particulièrement d'un programme exécuté lors du démarrage du dispositif informatique. Exposé de l'art antérieur Les dispositifs informatiques, par exemple les termi- naux de paiement électroniques, comprennent un ou plusieurs processeurs qui fonctionnent à partir d'instructions fournies par des logiciels ou programmes informatiques. De façon sché- matique, on peut classer les programmes informatiques selon plu- sieurs catégories. Une première catégorie correspond aux pro- grammes de démarrage (Boot Programms). Il s'agit des premiers programmes exécutés par un microprocesseur d'un dispositif informatique à la mise sous tension du dispositif informatique. Plusieurs programmes de démarrage peuvent être exécutés succes- sivement par un même processeur lors du démarrage d'un dispositif informatique. Chaque programme de démarrage peut alors assurer des fonctions particulières, telles que le test et l'initialisation de composants matériels du dispositif informatique, et commander l'appel du programme de démarrage suivant. Une seconde catégorie B8666 - 13872
2 correspond aux programmes applicatifs qui assurent la réalisation de fonctions particulières telles que le traitement de données, etc., et qui ne peuvent généralement être exécutés qu'une fois que le démarrage du dispositif informatique s'est achevé correctement. Une troisième catégorie correspond aux systèmes d'exploitation (Operating Systems). Un système d'exploitation est un ensemble de programmes responsables de la liaison entre les ressources matériels, ou périphériques, du dispositif informatique et les programmes applicatifs du dispositif. En particulier, le système d'exploitation fournit aux programmes applicatifs des points d'entrée génériques pour les périphériques. Le système d'exploitation comprend un programme principal, ou noyau (en anglais kernel) et des programmes ou fichiers secondaires (notamment des bibliothèques). Dans la suite de la description, on pourra utiliser l'expression système d'exploitation pour désigner plus particulièrement le noyau du système d'exploitation. De façon générale, les programmes informatiques sont stockés dans une ou plusieurs mémoires non volatiles du dispositif informatique. Les programmes qui sont susceptibles d'être modifiés doivent être stockés dans des mémoires non volatiles programmables. Une phase de démarrage d'un dispositif informatique se déroule schématiquement de la façon suivante. A la mise sous tension du dispositif informatique, le microprocesseur appelle successivement le ou les programmes de démarrage. Le dernier programme de démarrage commande l'appel du noyau du système d'exploitation. L'exécution du noyau du système d'exploitation permet l'installation complète du système d'exploitation, le dispositif informatique étant alors prêt à être utilisé.
Lorsqu'un prograitutte informatique stocké dans une mémoire d'un dispositif informatique doit être modifié, un procédé de mise à jour du programme est mis en oeuvre. La mise à jour d'un programme applicatif peut généralement être réalisée de façon simple en remplaçant l'ancienne version du programme applicatif stockée dans le dispositif informatique par une nouvelle version B8666 - 13872
3 du programme applicatif. Ceci peut être obtenu en écrivant directement les instructions de la nouvelle version du programme applicatif aux emplacements de la mémoire non volatile où les instructions de l'ancienne version du programme applicatif sont stockées. Si une interruption se produit avant la fin de la mise à jour, par exemple dans le cas d'une coupure de l'alimentation du dispositif informatique, il suffit de redémarrer le dispositif informatique et de recommencer le procédé de mise à jour. Un tel procédé de mise à jour ne peut pas être utilisé pour la mise à jour d'un programme de démarrage ou d'un système d'exploitation. En effet, il n'est pas possible de remplacer directement l'ancienne version du programme de démarrage ou du système d'exploitation par une nouvelle version. En effet, si une interruption se produit avant la fin du remplacement du programme de démarrage ou du système d'exploitation, le dispositif informatique ne pourra pas être redémarré, le programme de démarrage ou le système d'exploitation étant partiellement modifié et ne pouvant donc pas s'exécuter correctement. Il est alors généralement nécessaire de renvoyer le dispositif infor- matique vers un site de maintenance pour réinstaller le prograitutte de démarrage ou le système d'exploitation au moyen d'outils spécialisés. Une possibilité consiste à stocker dans une mémoire non volatile du dispositif informatique une copie de la nouvelle version du programme de démarrage ou du système d'exploitation, sans effacer l'ancienne version du programme de démarrage ou du système d'exploitation. La copie de la nouvelle version est alors recopiée à l'emplacement de l'ancienne version puis est effacée. De ce fait, si une interruption se produit au cours de la recopie de la nouvelle version à la place de l'ancienne version, le dispositif informatique pourra néanmoins être démarré. En effet, lors du prochain démarrage du dispositif informatique, le microprocesseur exécutera la copie de la nouvelle version du programme de démarrage ou du système d'exploitation et recommencera l'opération de mise à jour.
B8666 - 13872
4 Toutefois, il est nécessaire de prévoir une mémoire ayant une capacité suffisante pour pouvoir stocker simultanément l'ancienne et la nouvelle versions du programme de démarrage ou du système d'exploitation. Dans le cas d'un système d'exploitation dont la taille est généralement de plusieurs centaines de kilooctets, ceci nécessite l'utilisation d'une mémoire non volatile de grande capacité, ce qui présente un coût élevé. Par ailleurs, le programme de démarrage et le système d'exploitation étant des programmes informatiques participant directement au bon fonctionnement d'un dispositif informatique, il est souhaitable qu'une opération de mise à jour soit réalisée avec des conditions de sécurité suffisantes. Résumé de l'invention La présente invention vise un procédé sécurisé de mise à jour d'un programme d'un dispositif informatique, notamment d'un programme de démarrage ou d'un système d'exploitation, qui permet de recommencer l'opération de mise à jour si celle-ci est interrompue, sans nécessiter l'utilisation d'une mémoire non volatile de grande capacité.
Dans ce but, un aspect de la présente invention pré-voit un procédé de mise à jour d'une ancienne version d'un programme d'un dispositif informatique, le dispositif informatique comprenant une mémoire non volatile programmable à un premier emplacement de laquelle est stockée l'ancienne version du programme. Le procédé comprend les étapes suivantes : (a) lors d'une phase de fonctionnement normal du dispositif informatique, copier, à un second emplacement de la mémoire différent du premier emplacement, un fichier, correspondant à une nouvelle version du programme, compressé et signé par l'intermédiaire d'un algorithme de cryptage ; (b) au cours de la prochaine phase de démarrage du dispositif informatique, vérifier que la signature du fichier est valide ; et (c) décompresser le fichier et recopier dans la mémoire 35 la nouvelle version du programme obtenue au premier emplacement.
B8666 - 13872
Selon un exemple de réalisation, l'étape (b) est précédée d'une étape de recherche du fichier dans la mémoire (16), les étapes (b) et (c) étant réalisées si le fichier est trouvé, l'ancienne version du programme étant exécutée si le 5 fichier n'est pas trouvé. Selon un exemple de réalisation, à l'étape (c), la décompression est réalisée au fil de l'eau, les parties décompressées au fil de l'eau du fichier étant copiées au fur et à mesure au premier emplacement.
Selon un exemple de réalisation, l'étape (c) est suivie de l'étape consistant à effacer le fichier dans la mémoire au deuxième emplacement. Selon un exemple de réalisation, le programme est signé par l'intermédiaire de l'algorithme de cryptage ou d'un autre algorithme de cryptage et, à chaque démarrage du dispositif informatique, la signature du programme est vérifiée avant son exécution. Selon un exemple de réalisation, la capacité de la mémoire est inférieure au double de la taille du système 20 d'exploitation. Selon un exemple de réalisation, ledit programme correspond à un système d'exploitation ou à un programme de démarrage du dispositif informatique. Selon un exemple de réalisation, un système d'exploi- 25 tation et au moins un programme de démarrage sont stockés dans la mémoire, le programme de démarrage étant exécuté avant le système d'exploitation lors de la phase de démarrage du dispositif informatique, les étapes (b) et (c) étant réalisées par l'exécution du programme de démarrage. 30 Selon un exemple de réalisation, le dispositif informatique comprend, en outre, une mémoire volatile. Au moins une portion du programme de démarrage est copiée dans la mémoire volatile, ladite au moins une portion du programme de démarrage copiée dans la mémoire volatile étant exécutée depuis la mémoire 35 volatile pour réaliser les étapes (b) et (c).
B8666 - 13872
6 Selon un exemple de réalisation, le programme de démarrage comprend au moins une partie de code dépendant de la position, l'ancienne version du programme de démarrage étant stockée à un troisième emplacement de la mémoire non volatile, le procédé comprenant, en outre, les étapes suivantes : (d) copier, à un quatrième emplacement de la mémoire non volatile différent du troisième emplacement, une première nouvelle version du programme de démarrage signée par l'intermédiaire de l'algorithme de cryptage ou d'un algorithme de cryptage supplémentaire, la partie de code de la première nouvelle version étant adaptée à être exécutée au troisième emplacement ; (e) copier, à un cinquième emplacement de la mémoire non volatile différent des troisième et quatrième emplacements, une seconde nouvelle version du programme de démarrage, la partie de code de la seconde nouvelle version étant adaptée à être exécutée au cinquième emplacement ; (f) vérifier que la signature de la première nouvelle version du programme de démarrage est valide ; (g) recopier la première nouvelle version du programme de démarrage au troisième emplacement ; et (h) si l'étape (g) est interrompue avant d'être achevée, exécuter la seconde nouvelle version du programme de démarrage au prochain démarrage du dispositif informatique (10) pour réaliser les étapes (f) et (g). Brève description des dessins Ces objets, caractéristiques et avantages, ainsi que d'autres seront exposés en détail dans la description suivante de modes de réalisation particuliers faite à titre non-limitatif en relation avec les figures jointes parmi lesquelles : la figure 1 représente, de façon schématique, certains éléments d'un exemple de dispositif informatique ; la figure 2 illustre les programmes stockés dans une mémoire du dispositif informatique de la figure 1 à une étape B8666 - 13872
7 préalable de la mise à jour du système d'exploitation du dispositif informatique de la figure 1 ; la figure 3 illustre les programmes stockés dans une mémoire du dispositif informatique de la figure 1 à une étape préalable de la mise à jour d'un programme de démarrage du dispositif informatique de la figure 1 ; et la figure 4 représente, sous la forme d'un schéma par blocs, un exemple de procédé de mise à jour selon l'invention du système d'exploitation ou d'un programme de démarrage du dispo- sitif informatique de la figure 1. Description détaillée Par souci de clarté, de mêmes éléments ont été désignés par de mêmes références aux différentes figures. Seuls les éléments nécessaires à la compréhension de la présente invention seront décrits. La figure 1 représente un exemple de réalisation d'un dispositif informatique 10, par exemple un terminal de paiement électronique. Le dispositif informatique 10 comprend un micro-processeur 12 adapté à lire des données stockées dans une mémoire non volatile non programmable 14 (ROM). Le micro-processeur 12 est, en outre, adapté à lire et à écrire des données stockées dans une mémoire non volatile programmable 16 (Flash). La mémoire 16 peut correspondre à une mémoire non volatile effaçable et programmable électriquement ou mémoire EEPROM (Electrically-Erasable Programmable Read-Only Memory), par exemple une mémoire Flash. De plus, le microprocesseur 12 est adapté à lire et à écrire des données dans une mémoire volatile 18 (RAM) et à transmettre des données par des bornes d'accès 20 et à recevoir des données depuis les bornes d'accès 20 par l'intermédiaire d'un module d'entrée/sortie 22 (I/O). Dans le présent exemple de réalisation, un programme de démarrage, qui correspond au premier programme de démarrage appelé par le microprocesseur 12 lors du démarrage du dispositif informatique 10, est stocké au niveau de la mémoire non volatile 14. Le premier programme de démarrage ne peut donc pas être B8666 - 13872
8 modifié. Un second programme de démarrage 24 (Boot) et un système d'exploitation 26 (OS) du dispositif 10 sont stockés dans la mémoire non volatile 16. Le programme de démarrage 24 comprend une entête 25 qui est égale à une donnée caractéristique indiquant que le programme qui suit est un pro-gramme de démarrage. De façon analogue, le système d'exploitation 26 comprend une entête 27 qui est égale à une donnée caractéristique indiquant que le programme qui suit est un système d'exploitation. Le programme de démarrage 24 peut être stocké en tête de la mémoire 16 et le système d'exploitation peut être stocké dans la mémoire 16 après le programme de démarrage 24. Le programme de démarrage 24 et le système d'exploitation 26 sont susceptibles d'être modifiés lors d'une opération de mise à jour.
A titre d'exemple, le programme de démarrage 24 occupe une taille de quelques kilooctets, par exemple de 1 à 16 kilooctets. Le système d'exploitation 26 occupe généralement une taille de plusieurs centaines de kilooctets, par exemple supérieure à 256 kilooctets. La taille de la mémoire 16 est, par exemple, supérieure de quelques dizaines de kilooctets à la taille du système d'exploitation 26. A titre d'exemple, la mémoire 16 est une mémoire Flash de 512 kilooctets. Le programme de démarrage 24 et le système d'exploi- tation 26 sont signés par un procédé de signature. Un exemple de procédé de signature d'un programme consiste à appliquer une fonction de hachage à l'ensemble des données constituant le programme pour obtenir un condensé qui est crypté, selon un algorithme de cryptage, par exemple un algorithme de cryptage de type RSA. Le résultat du cryptage correspond à la signature, ou sceau, du programme, et est par exemple stocké à la suite du programme proprement dit. En figure 1, la référence 28 désigne la signature (Signature Boot) du programme de démarrage 24 et la référence 29 désigne la signature (Signature OS) du système d'exploitation 26. Les fonctions de hachage et les algorithmes de cryptage utilisés pour obtenir les signatures 28 et 29 B8666 - 13872
9 peuvent être les mêmes. Lorsque le microprocesseur 12 appelle un programme, il vérifie tout d'abord sa signature. Pour ce faire, le microprocesseur 12 peut appliquer au programme la fonction de hachage associée pour obtenir un premier condensé. D'autre part, le programme peut décrypter la signature du programme à partir de l'algorithme de cryptage associé au programme pour obtenir un second condensé. Le programme est alors considéré comme étant valide si les premier et second condensés sont identiques. Une vérification de la validité du programme de démarrage 24 et du système d'exploitation 26 est réalisée à chaque démarrage du dispositif informatique 10 lorsque le microprocesseur 12 appelle ces programmes. Dans la suite de la description, on appelle premier procédé de signature les étapes mises en oeuvre pour obtenir les signatures 28 et 29. Dans la suite de la descrip- tion, on désigne par la référence 30, le fichier comprenant le système d'exploitation 26 et la signature associée 29. Un exemple de procédé de mise à jour selon l'invention du système d'exploitation 26 ou du programme de démarrage 24 comprend une étape préalable qui consiste, lorsque le dispositif informatique 10 fonctionne normalement, à copier des fichiers particuliers, comme cela sera décrit en détail par la suite, dans la mémoire 16 à des emplacements différents de ceux occupés par le programme de démarrage 24 et le système d'exploitation 26. La mise à jour proprement dite est réalisée au démarrage suivant du dispositif informatique 10 au moyen des fichiers stockés dans la mémoire 16. La figure 2 représente un exemple de fichiers stockés dans la mémoire 16 à l'étape préalable d'une mise à jour du système d'exploitation 26. Lorsque le dispositif informatique 10 fonctionne normalement, on copie dans la mémoire non volatile 16, un fichier 32 comprenant un premier fichier 34 et une signa- ture 36. Le fichier 32 peut être stocké dans la mémoire 16 après le système d'exploitation 26 (et sa signature 29). Le fichier 34 correspond à la nouvelle version du système d'exploitation signée selon le premier procédé de signature et ensuite compressé B8666 - 13872
10 selon un algorithme de compression, par exemple l'algorithme désigné par l'appellation LZSS. Le fichier compressé 34 est, en outre, signé par l'intermédiaire d'un second procédé de signature permettant d'obtenir une signature 36 accolée au fichier 34. L'algorithme de cryptage et la fonction de hachage du second procédé de signature peuvent être différentes de la fonction de hachage et de l'algorithme de cryptage du premier procédé de signature. L'algorithme de cryptage du second procédé de signature est, par exemple, un algorithme asymétrique du type RSA. Le fichier 34 comprend une entête 37 qui est égale à une donnée caractéristique indiquant que le fichier qui suit correspond à une nouvelle version du système d'exploitation. Le fichier 32 compressé et signé a une taille inférieure à celle du système d'exploitation 26, de sorte qu'il soit possible de stocker dans la mémoire 16 à la fois l'ancienne version du système d'exploitation 26 et le fichier 32 compressé et signé de la nouvelle version du système d'exploitation. Par exemple, si le taux de compression est de 30 %, on peut avoir 270 kilooctets pour le fichier 30 non compressé et 189 kilooctets pour le fichier compressé 32. Ce qui fait au total 459 kilooctets pour l'ensemble des deux fichiers. Ceci permet d'éviter qu'un échec de la mise à jour empêche un nouveau démarrage du dispositif 10, comme cela sera décrit par la suite, sans requérir l'utilisation d'une mémoire 16 de grande capacité.
La figure 3 représente les fichiers stockés dans la mémoire 16 à l'étape préalable d'une mise à jour du programme de démarrage 24. Lorsque le dispositif informatique 10 fonctionne normalement, on copie dans la mémoire non volatile 16 un fichier 52 comprenant un fichier 54 et une signature 56. Le fichier 54 correspond à la nouvelle version du programme de démarrage signée selon le premier procédé de signature et ensuite compressé selon un algorithme de compression, par exemple l'algorithme désigné sous l'appellation LZSS. Le fichier compressé 54 est signé par l'intermédiaire du second procédé de signature (ou éventuellement d'un troisième procédé de signature) permettant B8666 - 13872
11 d'obtenir une signature 56 accolée au fichier 54. Le fichier 52 comprend une entête 58 qui est égale à une donnée caractéristique indiquant que le fichier qui suit est une nouvelle version du programme de démarrage à utiliser pour faire la mise à jour. Il est, en outre, copié dans la mémoire 16, un fichier 60 comprenant un premier fichier 62 et une signature 64. Le fichier 62 correspond à la nouvelle version du programme de démarrage signée selon le premier procédé de signature. Le fichier 62 n'est pas compressé et comprend une entête 65.
L'entête 65 est égale à une donnée caractéristique indiquant que le programme qui suit est un programme de démarrage utilisable. Le fichier 62 est signé par l'intermédiaire du second procédé de signature permettant d'obtenir une signature 64 accolée au fichier 62. Le fichier 60 peut être stocké après le système d'exploitation 26 (et sa signature 29) et le fichier 52 peut être stocké après le fichier 60. Le programme de démarrage 24 selon le présent exemple de réalisation permet de rechercher lors d'un démarrage du dispositif informatique 10 si une nouvelle version du système d'exploitation ou du programme de démarrage doit être installée. Il permet, en outre, de réaliser la décompression des fichiers compressés contenant la nouvelle version du système d'exploitation ou du programme de démarrage et de la recopier à la place de l'ancienne version.
La figure 4 représente un exemple de procédé de démarrage du dispositif informatique 10 de la figure 1 permet-tant la réalisation d'une mise à jour du système d'exploitation 26 ou du programme de démarrage 24. Si l'on souhaite mettre à jour le système d'exploitation 26, le fichier 32 est stocké au préalable dans la mémoire 16. Si l'on souhaite mettre à jour le programme de démarrage 24, les fichiers 52 et 60 sont stockés au préalable dans la mémoire 16. Si l'on ne souhaite pas réaliser de mise à jour, la mémoire 16 n'est pas modifiée. A l'étape 70, à la mise sous tension du dispositif 10, 35 le microprocesseur 12 appelle le premier programme de démarrage B8666 - 13872
12 stocké dans la mémoire 14. Le premier programme de démarrage commande le microprocesseur 12 pour réaliser diverses fonctions, telles que, par exemple, le test de composants matériels du dispositif 10. Le procédé se poursuit à l'étape 72 à laquelle le premier programme de démarrage stockée dans la mémoire 14 commande le microprocesseur 12 pour rechercher le programme de démarrage 24, par exemple en recherchant l'entête 25 dans la mémoire 16 depuis le début de la mémoire 16. Lorsque le programme de démarrage 24 est trouvé, le procédé se poursuit à l'étape 74. A l'étape 74, le microprocesseur 12 vérifie la validité du programme de démarrage 24 comme cela a été décrit précédemment. Si le programme de démarrage 24 est considéré comme étant valide, il est alors recopié dans la mémoire volatile 18 et le microprocesseur 12 exécute la copie du pro-gramme de démarrage 24 stockée dans la mémoire volatile 18. Le procédé se poursuit alors à l'étape 76. Selon un exemple de réalisation, le programme de démarrage 24 est recopié en totalité dans la mémoire vive 18 et la copie du programme de démarrage stockée dans la mémoire vive 18 est exécutée. Selon un autre exemple de réalisation, le programme de démarrage 24 stocké dans la mémoire non volatile 16 est constitué de deux parties : une première partie qui est exécutée sur place et qui n'est pas destinée à être recopiée dans la mémoire volatile 18 et une seconde partie qui est destinée à être copiée dans la mémoire volatile 18. Lors de son exécution, la première partie du programme de démarrage 24 commande le microprocesseur 12 de façon à recopier la seconde partie du programme de démarrage 24 dans la mémoire volatile 18 et c'est la copie de la seconde partie du programme de démarrage dans la mémoire volatile 18 qui est alors exécutée. Dans la suite de la description, sauf indication contraire, une copie du programme de démarrage 24 dans la mémoire 18 correspondra indifféremment à une copie complète ou partielle du programme de démarrage 24 dans la mémoire 18.
B8666 - 13872
13 A l'étape 76, le microprocesseur 12, exécutant les instructions de la copie du programme de démarrage stockée dans la mémoire 18, recherche la présence d'une nouvelle version du système d'exploitation ou du programme de démarrage dans la mémoire 16. A titre d'exemple, la nouvelle version peut être recherchée seulement dans la partie de la mémoire 16 où le système d'exploitation 26 n'est pas présent. A titre d'exemple, le microprocesseur 12 recherche l'entête 27 ou l'entête 58. Si aucune mise à jour n'est présente, le procédé se poursuit à l'étape 78. Si la nouvelle version 32 du système d'exploitation est découverte, le procédé se poursuit à l'étape 80. Si la nouvelle version 52 du programme de démarrage est découverte, le procédé se poursuit à l'étape 86. A l'étape 78, la copie du programme de démarrage 24 commande le microprocesseur 12 pour appeler le système d'exploitation 26. Le microprocesseur 12 vérifie alors la validité du système d'exploitation 26 comme cela a été décrit précédemment. Si le système d'exploitation 26 est considéré comme étant valide, il est exécuté. Une fois que le système d'exploitation 26 est installé, le dispositif informatique 10 est prêt à fonctionner. A l'étape 80, le microprocesseur 12, exécutant les instructions de la copie du programme de démarrage stockée dans la mémoire 18, vérifie la signature 36 du nouveau système d'exploitation compressé 34. Pour ce faire, le microprocesseur 12 peut utiliser la fonction de hachage et l'algorithme de cryptage du second procédé de signature. Dans le cas d'un algorithme de cryptage du type RSA, le microprocesseur 12 peut utiliser une clé publique stockée au niveau du programme de démarrage 24 ou stockée dans la mémoire 14. Si la signature 36 n'est pas valide, le microprocesseur 12 interrompt le procédé de mise à jour, émet éventuellement un signal d'alarme (par exemple un signal sonore), et appelle le système d'exploitation 26. Le démarrage du dispositif 10 se poursuit alors à l'étape 78. Si la signature 36 est valide, le procédé se poursuit à l'étape 82.
B8666 - 13872
14 A l'étape 82, le microprocesseur 12, exécutant les instructions de la copie du programme de démarrage stockée dans la mémoire 18, réalise une décompression au fil de l'eau du fichier 34 dans la mémoire volatile 18 et effectue une recopie des instructions décompressées de la mémoire volatile 18 vers la mémoire non volatile 26 à l'emplacement de l'ancienne version du système d'exploitation 16. Une fois que la nouvelle version du système d'exploitation a été entièrement recopiée à la place de l'ancienne version du système d'exploitation, le procédé se poursuit à l'étape 84. A l'étape 84, le microprocesseur 12, exécutant les instructions de la copie du programme de démarrage stockée dans la mémoire 18, efface le fichier 32. Le démarrage du dispositif 10 se poursuit alors à l'étape 78 par l'appel de la nouvelle version du système d'exploitation. Si l'étape 82 est interrompue avant l'achèvement de la recopie de la nouvelle version du système d'exploitation, par exemple en raison d'une interruption de l'alimentation du dispositif informatique 10, le présent exemple de procédé permet néanmoins d'assurer un démarrage convenable du dispositif informatique 10. En effet, le fichier 32 étant toujours présent dans la mémoire 18, au prochain démarrage du dispositif informatique 10, le microprocesseur 12, exécutant les instructions de la copie du programme de démarrage stockée dans la mémoire 18, considère qu'une nouvelle version du système d'exploitation est présente et recommence la mise à jour. A l'étape 86, lorsqu'une nouvelle version 52 du pro- gramme de démarrage a été trouvée, le microprocesseur 12, exécutant les instructions de la copie de l'ancienne version du programme de démarrage stockée dans la mémoire 18, vérifie la signature 56 de la nouvelle version compressée 54. Pour ce faire, le microprocesseur 12 peut utiliser la fonction de hachage et l'algorithme de cryptage du second procédé de signa- ture. Si la signature 56 n'est pas valide, le microprocesseur 12 interrompt le procédé de mise à jour, émet éventuellement un B8666 - 13872
15 signal d'alarme (par exemple un signal sonore) et appelle le système d'exploitation 26. Le démarrage du dispositif 10 se poursuit alors à l'étape 78. Si la signature 56 est valide, le procédé se poursuit à l'étape 88.
A l'étape 88, le microprocesseur 12, exécutant les instructions de la copie de l'ancienne version du programme de démarrage stockée dans la mémoire 18, réalise une décompression au fil de l'eau du fichier 54 dans la mémoire volatile 18 et une recopie des instructions décompressées de la mémoire volatile 18 vers la mémoire non volatile 16 à l'emplacement de l'ancienne version du programme de démarrage 24. Au début de la copie, une valeur temporaire est attribuée à l'entête 25. Cette valeur temporaire n'indique pas que le programme qui suit est un programme de démarrage. Une fois que la nouvelle version du programme de démarrage a entièrement été recopiée à la place de l'ancienne version du programme de démarrage, l'entête 25 est modifiée pour avoir la valeur souhaitée et le procédé se poursuit à l'étape 90. A l'étape 90, le microprocesseur 12, exécutant les instructions de la copie de l'ancienne version du programme de démarrage stockée dans la mémoire 18, efface les fichiers 52 et 60. Le procédé se poursuit à l'étape 70 par un redémarrage du dispositif informatique 10 de façon que la nouvelle version du programme de démarrage stockée dans la mémoire 16 à l'emplacement de l'ancienne version du programme de démarrage soit exécutée. Selon une variante du procédé de mise à jour du programme de démarrage 24 décrite précédemment, le fichier 54 n'est pas un fichier compressé. Dans ce cas, à l'étape 88, le microprocesseur 12 exécutant les instructions de la copie de l'ancienne version du programme de démarrage stockée dans la mémoire 18, copie directement le fichier 54 à l'emplacement de l'ancienne version du programme de démarrage 24 dans la mémoire 16.
B8666 - 13872
16 Si l'étape de recopie 88 est interrompue, par exemple par une interruption de l'alimentation du dispositif informatique 10, le présent exemple de procédé permet néanmoins d'assurer un démarrage convenable du dispositif informatique 10.
En effet, au prochain démarrage du dispositif informatique 10, le microprocesseur 12 ne reconnaît pas l'entête 25 qui n'a alors pas la valeur attendue. Le microprocesseur 12 poursuit sa recherche jusqu'à trouver l'entête 65 de la nouvelle version non compressée du programme de démarrage 62 qui a la valeur attendue. Le microprocesseur 12 réalise une copie de la nouvelle version du programme de démarrage dans la mémoire 18 et l'exécute. La copie de la nouvelle version du programme de démarrage stockée dans la mémoire 18 commande alors le microprocesseur 12 et le démarrage se poursuit à l'étape 76. Une mise à jour du programme de démarrage (le fichier 52) étant disponible, le procédé se poursuit à l'étape 86. Le présent exemple de mise à jour du programme de démarrage 24 est particulièrement avantageux dans le cas où une partie du programme de démarrage 24 est exécutée sur place depuis la mémoire 16 lors du démarrage du dispositif informatique 10 et dans le cas où le programme de démarrage 24 n'est pas un programme indépendant de la position ou PIC (Position-Independant Code). Un programme indépendant de la position est un programme susceptible de s'exécuter convenablement indépen- damment de la position du programme dans la mémoire dans laquelle il est stocké. Un programme dépendant de la position est un programme qui pour s'exécuter convenablement doit être stocké à un emplacement particulier d'une mémoire. Les programmes stockés dans la mémoire 16 dépendant de la position, la nouvelle version du programme de démarrage 62 n'est pas identique à la nouvelle version du programme de démar- rage obtenue à partir de la décompression du fichier 54. En effet, la première partie de la nouvelle version du programme de démarrage 62 est adaptée à être exécutée à partir de son emplacement effectif dans la mémoire 16 (le fichier 60 ne se B8666 - 13872
17 trouvant pas à la même place que le programme 24) alors que la première partie du programme de démarrage obtenu à partir de la décompression du fichier 54 est adaptée à être exécutée lors-qu'elle se trouve à la place du programme 24.
Des modes de réalisation particuliers de la présente invention ont été décrits. Diverses variantes et modifications apparaîtront à l'homme de l'art. En particulier, dans les exemples de réalisation décrits précédemment, l'exécution d'un programme stocké dans la mémoire 16 comprend une étape préalable de copie, au moins partielle, de ce programme dans la mémoire volatile 18. Toutefois, l'exemple de procédé de mise à jour du système d'exploitation décrit précédemment peut également être mis en oeuvre dans le cas où le programme de démarrage 24 est exécuté sur place depuis la mémoire 16.