FR 2880442 A1 20060707 FR 0500085 A 20050105 PROCEDE DE VERIFICATION DU BON FONCTIONNEMENT D'UN DISPOSITIF DE TRAITEMENT, DISPOSITIF DE VERIFICATION ET DISPOSITIF DE TRAITEMENT INCLUANT LE DISPOSITIF DE VERIFICATION L'invention se rapporte à des dispositifs de traitement sécurisés qui vérifient le bon déroulement d'un programme qu'ils exécutent. Plus particulièrement l'invention se rapporte à un dispositif de traitement sécurisé qui est un dispositif de commande pour un véhicule, ainsi que le procédé de vérification de son bon fonctionnement. Dans ce document, les dispositifs de traitement de données sécurisées sont ceux qui vérifient leur bon fonctionnement, notamment dans les transports ferroviaires afin d'assurer la sécurité des passagers. Un exemple de dispositif de traitement de données sécurisé est décrit dans la demande de brevet français publiée sous le numéro 2 799 018. Cette demande de brevet français décrit un système qui comporte un périphérique de sécurité vérifiant le bon fonctionnement d'un programme effectué par un microprocesseur. Le dispositif de sécurité fournit ensuite une séquence d'entrée à un contrôleur dynamique qui va la valider et décider de couper ou non l'alimentation d'une interface de sortie. Pour qu'un tel système fonctionne de manière optimum, il est impératif que lorsqu'une erreur est détectée, celle-ci se répercute dans toute la chaîne de vérification du bon fonctionnement de manière sûre. Ainsi, l'invention propose un procédé de vérification du bon fonctionnement d'un dispositif de traitement sécurisé dans lequel la transmission des données vérifiées s'effectue d'une manière la plus sûre possible. A cet effet, il est utilisé dans l'invention une séquence de bits pseudo aléatoire dans laquelle on introduit des données représentatives du déroulement du programme. Ces données représentatives du déroulement du programme sont prédictibles et doivent être compensées pour que la séquence de bits pseudo aléatoire soit correcte. En cas de défaillance du système, la séquence de bits pseudo aléatoire ne peut être compensée de manière correcte et la séquence de bits pseudo aléatoire va se mettre à diverger dès lors qu'une erreur est introduite. Une telle séquence permet de sécuriser la transmission d'une erreur de manière fiable. Ainsi, l'invention est un procédé de vérification du bon fonctionnement d'un dispositif de traitement sécurisé mettant en oeuvre un programme. Le procédé comporte les étapes: d'élaboration d'un traceur de déroulement de programme dont la valeur est prédictible si le programme se déroule correctement; de production d'une séquence pilote de bits pseudo aléatoire à l'aide d'un générateur pseudo aléatoire, ladite séquence étant représentative du bon déroulement du programme; d'ajout, de manière régulière, du traceur au contenu du générateur pseudo aléatoire; et de compensation, de manière régulière, dans le générateur pseudo aléatoire d'un effet prédictible produit par le traceur. Selon différents modes de réalisation, le procédé peut comporter en outre et régulièrement une étape d'ajout au contenu du générateur pseudo aléatoire d'une ou plusieurs valeurs représentatives d'au moins une sortie du programme et d'au moins une sortie réelle qui sort dudit dispositif de traitement, et de compensation dans le générateur pseudo aléatoire d'un effet prédictible du à l'ajout des valeurs. Au moins une date est établie de manière régulière au cours du déroulement du programme, et le procédé réalise en outre et régulièrement des étapes d'ajout de la date au contenu du générateur pseudo aléatoire, et de compensation dans le générateur pseudo aléatoire de l'effet produit par l'ajout de la date au contenu du générateur pseudo aléatoire. Préférentiellement, les traceurs, les différences entre les sorties, les dates et les compensations sont ajoutés au contenu du générateur pseudo aléatoire de manière cyclique. Les étapes d'ajout sont réalisées à des fréquences multiples les unes des autres. Les étapes sont en phase. L'invention vise aussi un procédé de mise en sécurité d'un dispositif de traitement par suppression d'une tension d'alimentation dans lequel on produit deux séquences de bits pseudo aléatoires pour produire des signaux de commande d'un circuit d'alimentation. Dans ces deux séquences, on introduit la séquence de bits pseudo aléatoire incluant des données représentatives d'un programme exécuté dans le dispositif de traitement. Ainsi lorsque la séquence de bits pseudo aléatoire représentative du déroulement du programme diverge, les deux autres séquences de bits pseudo aléatoires se mettent également à diverger. Les deux séquences de bits pseudo aléatoires étant utilisées pour produire des signaux de commande pour un circuit d'alimentation, la divergence des séquences de bits pseudo aléatoires entraîne la désynchronisation du circuit d'alimentation et celui-ci va couper une tension d'alimentation. L'invention est également un procédé de mise en sécurité d'un dispositif de traitement par suppression d'une tension d'alimentation en cas de dysfonctionnement. Le procédé de vérification du bon fonctionnement précédemment décrit est mis en oeuvre pour obtenir une séquence pilote de bits pseudo aléatoire. On produit deux signaux d'horloge à deux fréquences différentes. On produit deux séquences de bits pseudo aléatoires cadencées par les signaux d'horloge. On recale périodiquement l'une des deux séquences pseudo aléatoires à l'aide de l'autre des deux séquences pseudo aléatoires. On introduit régulièrement dans l'une des deux séquences pseudo aléatoires des bits de la séquence pilote de bits pseudo aléatoire en les compensant avec des valeurs complémentaires qui correspondent au bon fonctionnement du dispositif. On compense les bits des deux séquences pseudo aléatoires pour les transformer en signaux de commande d'un circuit d'alimentation. Cette mise en sécurité du dispositif de traitement permet également de mettre en sécurité le dispositif en cas de dérive trop important d'un signal d'horloge par rapport à l'autre. Cela permet de détecter un dysfonctionnement provenant de la base de temps du système. Selon un autre aspect, l'invention se rapporte directement au dispositif de contrôle du bon fonctionnement d'un dispositif de traitement sécurisé qui comporte un générateur pseudo aléatoire destiné à fournir une séquence pilote de bits pseudo aléatoire représentative du bon fonctionnement du dispositif, une borne d'entrée destinée à recevoir au moins une donnée qui est prédictible si le dispositif fonctionne correctement, un moyen de mémorisation destiné à mémoriser au moins une donnée de compensation représentative de la donnée prédictible, et des moyens d'addition et/ou de soustraction apte à additionner et/ou soustraire au contenu du générateur pseudo aléatoire une donnée provenant de la borne d'entrée et/ou du moyen de mémorisation. L'invention se rapporte également à un générateur de signaux de commande pour un dispositif d'alimentation de sécurisation comportant au moins un onduleur, le dispositif d'alimentation étant apte à produire une tension d'alimentation en réponse à des signaux appropriés. Le générateur de signaux comporte deux générateurs de signaux pilotant respectivement deux générateurs pseudo aléatoires, les générateurs pseudo aléatoires étant apte à produire deux séquences pseudo aléatoires de bits, des moyens pour synchroniser périodiquement les deux générateurs pseudo aléatoires, un premier moyen de compensation apte à compenser les deux séquences pour les transformer en signaux de commande appropriés. Préférentiellement, le générateur comporte en outre des moyens pour introduire des données pilotes dans les générateurs pseudo aléatoires, les données pilotes devant correspondre à des données attendues, et un deuxième moyen de compensation apte à compenser les données pilotes pour que les générateurs pseudo aléatoires fournissent deux séquences transformable en signaux de commande appropriés. L'invention se rapporte également à un dispositif sécurisé de traitement qui comporte une unité de traitement principale apte à produire des signaux de sortie, une unité de traitement sécurisé apte à produire un traceur représentatif du bon déroulement d'un programme réalisé par l'unité de traitement principale et apte à fournir une signature représentative des sorties attendues, une interface de sortie apte à amplifier des signaux de sortie reçus de l'unité de traitement à l'aide d'une tension d'alimentation sécurisée, et apte à fournir une signature représentative de l'état réel des sorties, un dispositif de contrôle comme précédemment défini, apte à recevoir les signatures représentatives, et apte à fournir une séquence pilote de bits pseudo aléatoire, un générateur de signaux comme précédemment défini, apte à recevoir la séquence pilote et apte à fournir des signaux de commande appropriés si ladite séquence pilote correspond à la séquence attendue, et un dispositif d'alimentation apte à produire la tension d'alimentation sécurisée pour la fournir à l'interface de sortie, en réponse aux signaux de commande appropriés. L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux figures annexées parmi lesquelles: - la figure 1 représente un dispositif de traitement sécurisé selon l'invention, - la figure 2 représente l'élément de contrôle de sécurité qui génère une séquence pilote de bits pseudo aléatoire, - la figure 3 représente un exemple schématique de fonctionnement du circuit de la figure 2, - la figure 4 détaille le fonctionnement du dispositif de la figure 2, - la figure 5 représente un circuit d'horloge contrôlant une alimentation visant à sécuriser le dispositif de la figure 1 - la figure 6 représente un exemple de train de bit servant à contrôler une alimentation. La figure 1 représente un système de commande sécurisé qui comporte un circuit d'entrée sécuritaire 1, une unité de traitement 2, un coprocesseur sécuritaire 3, un contrôleur de sécurité 4, un circuit de génération d'horloge 5, un circuit d'alimentation sécuritaire 6 et un circuit de sorties sécuritaires 7. Dans un exemple préféré, le circuit de traitement sécurisé est le circuit de commande d'un véhicule de transport de personnes, tel qu'un train ou un métro. Le circuit d'entrées sécuritaires 1 sert à recevoir toutes les entrées et à vérifier si celles-ci sont bien des entrées valides. Les entrées sont ensuite mises en forme et fournies à l'unité de traitement 2. L'unité de traitement 2 est une unité de traitement conventionnelle qui comporte, par exemple, un processeur, une mémoire et d'autres périphériques. L'unité de traitement 2 va fournir des sorties Sf au circuit de sorties sécuritaires 7, mais va également fournir au coprocesseur sécuritaire 3 les données Xf, Yf et Zf sur lesquelles le traitement est effectué ainsi que les adresses @, les opérations Op réalisées sur ces données, et les données de compensation Comp propres à certaines parties du programme. Le coprocesseur sécuritaire 3 est un coprocesseur qui réalise des traitements sur les signatures de données afin de vérifier si les données et les opérations effectuées sur les données sont conformes au bon déroulement du programme. A cet effet, le coprocesseur 3 effectue des calculs redondants sur les signatures de données pour élaborer un traceur T représentatif du déroulement du programme et qui est prédictible lorsque le programme se déroule correctement. Le coprocesseur sécuritaire 3 va fournir une signature des sorties ES, ainsi qu'un traceur T et une date Dcp, de manière régulière, au contrôleur de sécurité 4. Le contrôleur de sécurité 4 va régulièrement tester si les signatures des sorties ES, le traceur T et la date Dcp fournis par le coprocesseur 3 sont conformes à ce qui est prédictible lors d'un bon fonctionnement du programme. Le contrôleur de sécurité 4 va également fournir des dates Dcs au circuit de sorties sécuritaires 7 pour recevoir en retour une signature des sorties ESr datée avec la date Dcs. Préférentiellement, la signature des sorties ESr correspond à l'inverse de la signature des sorties ES. Cela permet d'effectuer la comparaison entre les deux signatures ES et ESr à l'aide d'une simple addition. Le contrôleur de sécurité 4 compare régulièrement la signature des sorties ES fournies par le coprocesseur sécuritaire 3 avec la signature des sorties ESr fournies par le circuit de sorties sécuritaires 7. Le contrôleur de sécurité 4 contrôle également la conformité du traceur T, la conformité des dates Dcp et Dcs fournies par le coprocesseur 3 et par le circuit de sorties sécuritaires 7 afin de générer une séquence de bits pseudo aléatoire Sbpa à un circuit d'horloge 5. Le circuit d'horloge 5 produit différents signaux de pilotage pour piloter le circuit d'alimentation 6 qui comporte par exemple au moins un onduleur. Un exemple de circuit d'alimentation 6 est décrit dans le brevet US-A-5 510 971. La séquence de bits pseudo aléatoire Sbpa est validée par le circuit d'horloge 5 pour que celui-ci fournisse les bons signaux de pilotage au circuit d'alimentation 6. Le circuit de sorties sécuritaires 7 valide les sorties Sf fournies par l'unité de traitement et vérifie leur bonne application. Le circuit de sorties sécuritaires 7 fournit au contrôleur de sécurité 4 une signature ESr représentative des sorties effectivement appliquées Ssec. Dans le cas d'un défaillance du système, le contrôleur de sécurité 5 va générer une séquence de bits pseudo aléatoire Sbpa modifiée par l'une des données de sécurité reçues, à savoir les signatures des sorties ES ou ESr fournies par le coprocesseur sécuritaire 3 ou par le circuit de sorties sécuritaires 7 ou par le traceur T ou une incohérence dans les dates Dcp et Dcs. Si la séquence de bits pseudo aléatoire Sbpa n'est pas conforme à celle attendue par le circuit d'horloge 5, celui-ci va se désynchroniser et envoyer des signaux de cadencement au circuit d'alimentation 6 qui ne permettront pas de synchroniser correctement l'onduleur et vont ainsi abaisser la tension d'alimentation, ne permettant plus d'alimenter le circuit de sorties sécuritaires 7. Toutes les sorties sécurisées Ssec seront ainsi mises à un état de basse énergie considéré comme un état sécuritaire. La figure 2 représente de manière schématique les éléments vérifiant le bon déroulement du programme dans le contrôleur de sécurité 4. Un registre 10 mémorise un mot représentatif d'un état de la séquence de bits pseudo aléatoire Sbpa. Un générateur de bits pseudo aléatoire 11 va incrémenter ce mot selon un polynôme générateur qui correspond à un entier de grande dimension différent de A. Un multiplexeur 12 permet de transférer ce mot du générateur de bit pseudo aléatoire 11 au registre 10. En fonctionnement pseudo aléatoire, tous les cycles d'horloge, un nouveau mot provenant du générateur de bits pseudo aléatoire 11 est fourni au registre 10. Le générateur de bits pseudo aléatoire reçoit le mot courant dans le registre 10 afin de l'incrémenter, c'est-à-dire de lui donner la valeur suivante générée par le polynôme générateur. A titre d'exemple, le mot du générateur de bits fourni par le générateur de bits pseudo aléatoire est codé par exemple sur 32 bits. La séquence de bits pseudo aléatoire Sbpa correspond dans notre exemple au bit de poids le plus fort du registre 10. Un circuit d'addition et de soustraction Modulo A 13 sert à additionner ou à soustraire des données au contenu du registre 10. Les données représentatives du déroulement du programme, à savoir les signatures des sorties ES et ESR, le traceur T et les dates Dcp et Dcs, sont préalablement additionnées dans un circuit d'addition 15 puis mémorisées dans un registre tampon 16. Une sortie du registre 16 est reliée à une entrée du circuit d'addition et de soustraction pour pouvoir additionner ou soustraire au contenu du registre 10 les données représentatives du déroulement du programme ES, ESR, T, Dcp et Dcs. Une mémoire de compensation 14, par exemple une mémoire ROM, mémorise des données de compensation correspondant à des données servant à compenser des données prédictibles du bon déroulement du programme. Cette mémoire 14 est également reliée au circuit d'addition et de soustraction 13 afin de pouvoir additionner également une donnée de compensation au contenu du registre 10. Lorsque l'on désire introduire des données représentatives du bon déroulement du programme dans le générateur pseudo aléatoire, le multiplexeur 12 relie la sortie du circuit d'addition et de soustraction 13 au registre 10 afin que celui-ci mémorise non pas la prochaine valeur fournie par le générateur de bits pseudo aléatoire 11 mais une valeur correspondant à la valeur du registre 10 additionnée d'une donnée propre au déroulement du programme et/ou éventuellement accompagnée d'une donnée de compensation provenant de la mémoire de compensation 14. Selon une variante de réalisation, le circuit d'addition et de soustraction est par exemple un circuit d'addition bit à bit à base de OUExclusif. L'addition 15 et la soustraction correspondant alors à une même opération. Le circuit de la figure 2 fonctionne de manière cyclique. Un exemple de cycle global de fonctionnement est représenté sur la figure 3. Au cours d'une étape de démarrage 20, le contenu du registre 10 est chargé à une valeur d'initialisation SbpaO, valeur qui est évidemment non nulle. Le contenu du registre 10 est ensuite incrémenté pendant un certain nombre d'itérations à l'aide du générateur de bits pseudo aléatoire 11. Au bout d'un certain nombre d'itérations, par exemple i cycles, on effectue un premier contrôle au cours d'une étape 21. Ce premier contrôle correspond à un premier contrôle absolu, il sera expliqué par la suite ce qu'est un contrôle absolu. A l'issu de cette étape 21, le contenu du registre 10 se trouve mémorisé en une valeur de début de cycle. Il est choisi d'attendre i cycles lors d'une initialisation du dispositif avant d'effectuer un contrôle absolu à l'étape 21. La séquence Sbpa est initialisées à une valeur telle qu'un certain temps doit s'écouler pour arriver dans un état qui correspond à une première introduction de bits ou de données dans lesdites séquences. Cette attente de i itérations sert principalement à laisser suffisamment de temps au système pour que celui-ci ait le temps de s'initialiser correctement. Il peut être choisi de ne faire démarrer la séquence Sbpa qu'après l'initialisation du système mais dans ce cas là, la valeur d'initialisation devra être adaptée pour correspondre à la valeur de début de cycle après réalisation du contrôle absolu de l'étape 21. Cette valeur de début de cycle est ensuite incrémentée pendant un certain nombre d'itérations, par exemple n itérations puis une étape 22 de contrôle différentiel est effectuée. Il sera expliqué par la suite ce qu'est un contrôle différentiel. On incrémente ensuite le contenu du registre 10 de n itérations à l'aide du générateur pseudo aléatoire 11. Et on effectue une étape 23 de contrôle différentiel. Suite à l'étape 23, on effectue encore une incrémentation de n itérations du contenu de registre 10 à l'aide du générateur 11. On effectue en un troisième contrôle différentiel au cours d'une étape 24, puis on incrémente de n itérations le contenu du registre 10 à l'aide du générateur pseudo aléatoire 11 et enfin on effectue une étape 25 de contrôle différentiel avec compensation qui ramène la valeur du registre 10 à une valeur de début de cycle puis on recommence le cycle de manière indéfinie tant que le programme fonctionne sur le dispositif de traitement. Le cycle global de fonctionnement représenté sur la figure 3 va à présent être un peu plus détaillé conjointement avec la figure 4. La figure 4 représente de manière plus concrète les différents états pris par le contenu du registre 10. Au cours de l'étape de démarrage 20 le contenu du registre 10 est positionné dans l'état 30 correspondant à la valeur Sbpa(0). L'incrémentation du registre va tout d'abord faire passer le contenu du registre à l'état 31 qui correspond à la valeur Sbpa(1) qui est en fait la valeur suivant la valeur Sbpa(0) mais qui ne correspond nullement à une simple incrémentation de 1 mais à une incrémentation par le polynôme générateur. A titre d'exemple une façon d'incrémenter un générateur pseudo aléatoire est de multiplier le contenu de ce générateur pseudo aléatoire par deux et de diviser le résultat obtenu par le polynôme générateur qui se trouve être un entier donné de grande dimension, par exemple codé sur 32 bits et ayant un bit de poids le plus fort égal à 1. Le registre 10 est incrémenté i fois jusqu'à ce qu'il arrive dans l'état 32 correspondant à la valeur Sbpa(i). Un premier contrôle absolu est effectué au cours de l'étape 21. Ce premier contrôle absolu est un peu particulier étant donné qu'il consiste à intégrer de manière directe la valeur du traceur T, la valeur des dates Dcp et Dcs ainsi que les signatures de sortie ES et ESr. Ces valeurs sont envoyées au circuit d'addition 15, puis mémorisées dans le registre 16 avant d'être envoyées au circuit d'addition et de soustraction 13 qui les additionne au contenu du registre 10. A l'issu de toutes ces additions, le contenu du registre 10 se trouve positionné à la valeur Sbpa(j) qui correspond à l'état 33. Il est à noté que cette valeur de positionnement Sbpa(j) correspond à une valeur de début de cycle. Comme indiqué précédemment, le traceur T, les dates Dcp et Dcs ainsi que les signatures de sortie ES et ESr sont prédictibles et notamment lors de la mise en route du programme. Ces valeurs sont additionnées au contenu du registre 10 pour obtenir la valeur Sbpa(j). II convient pour arriver à cette valeur que la valeur Sbpa(0) ait été convenablement choisie afin que après avoir été incrémentée i fois, et lorsque l'on additionne ces valeurs prédictibles, on obtienne la valeur Sbpa(j). Le contenu du registre 10 est ensuite incrémenté n fois ce qui correspond tout d'abord à l'état 34 où le contenu du registre 10 devient égal à Sbpa(j+1)... etc. jusqu'à l'état 35 où le contenu du registre 10 devient égal à la valeur Sbpa(j+n). Un contrôle différentiel est ensuite réalisé au cours de l'étape 22 et positionne le contenu du registre dans un état 36 qui correspond à la valeur Sbpa(k). Le contrôle différentiel est appelé différentiel car celui-ci soustrait d'abord les données représentatives du déroulement du programme utilisées lors du précédent contrôle avant d'additionner les données correspondant à l'instant du contrôle en cours. Pour ce faire, le contenu du registre 16 correspondant au contrôle précédent est d'abord soustrait du contenu du registre 10. Puis, le circuit d'addition 15 additionne les données représentatives du déroulement du programme ES, ESr, T, Dcp et Dcs dont la somme est mémorisée dans le registre 16. Le contenu du registre 16 correspondant alors au contrôle courant est ensuite additionné au contenu du registre 10. En cas de bon fonctionnement, la signature des sorties ES fournies par le coprocesseur sécuritaire 3 correspond à la signature des sorties ESr fournie par le circuit de sortie sécuritaire 7 et les deux signatures ES et ESr se compensent mutuellement, éventuellement à une constante près. Cependant, ces signatures de sorties sont accompagnées des dates Dcp pour le coprocesseur sécuritaire 3 et Dcs pour le circuit de sorties sécuritaires 7. Or ces dates ne sont pas rigoureusement égales mais correspondent à une différence constante par rapport au précédent contrôle. Ainsi, le contenu du registre 10 est incrémenté d'une valeur connue correspondant à la valeur de T et d'une constante liée à l'incrémentation des dates Dcp et Dcs et éventuellement d'une constante liée à la compensation des signatures ES et ESr. Cela correspond à faire réaliser un saut dans le déroulement de l'incrémentation du contenu du registre 10. La valeur Sbpa(k) correspond à la valeur résultante sur laquelle l'incrémentation peut alors continuer. Au cours de l'incrémentation, le contenu du registre 10 passe dans état 37 correspondant à la valeur Sbpa(k+1) puis est incrémenté n fois jusqu'à la valeur Sbpa(k+n) correspondant à l'état 38. Un nouveau contrôle différentiel correspondant à l'étape 23 est réalisé de manière identique à l'étape 22. Le contenu du registre 10 se trouve alors positionné à la valeur Sbpa(l) correspondant à l'état 39. On incrémente à nouveau le contenu du registre 10 à l'aide du circuit générateur pseudo aléatoire 11 pour positionner le compteur dans un état 40 correspondant à Sbpa(1+1) et ainsi de suite jusqu'à un état 41 correspondant à Sbpa(l+n) après n itérations. Un nouveau contrôle différentiel correspondant à l'étape 24 est réalisé de manière identique à l'étape 22. Le contenu du registre 10 se trouve alors positionné à la valeur Sbpa(m) correspondant à l'état 42. On incrémente à nouveau le contenu du registre 10 à l'aide du circuit générateur pseudo aléatoire 11 pour positionner le compteur dans un état 43 correspondant à Sbpa(m+1) et ainsi de suite jusqu'à un état 44 correspondant à Sbpa(m+n) après n itérations. Au cours de l'étape 25 on effectue un contrôle différentiel avec compensation. Au cours de ce contrôle 25, on réalise tout d'abord un contrôle différentiel tel que décrit pour les étapes 22 à 24. Mais en plus de cela, on ajoute ou on soustrait au contenu du registre 10 au moins une valeur de compensation issue de la mémoire de compensation 14. Cette valeur de compensation est destinée à ramener le contenu du registre 10 à l'état 45 correspondant à la valeur Sbpa(j). Cette valeur de compensation est obtenue en déterminant l'écart subit par la valeur Sbpa(j) au cours d'un cycle. Elle est déterminée pour compenser les effets prédictibles liés à l'ajout des valeurs représentatives du déroulement programme et des 4 * n incrémentations de la valeur de Sbpa réalisées par le polynôme générateur. Dans l'exemple décrit, il est préféré de réaliser l'ajout de toutes les données représentatives du bon déroulement du programme en même temps au cours des étapes 22 à 25. Cela correspond à la réalisation en phase et à la même fréquence de ces données dans le contenu du générateur pseudo aléatoire. Il aurait été possible que chaque étape n'effectue pas la totalité des ajouts de données mais si les ajouts des différentes données s'effectuent séparément, il est préféré de réaliser des étapes d'ajout à des fréquences multiples les unes des autres pour garder un caractère cyclique au cycle de contrôle. La valeur de compensation du traceur est obtenue par une analyse du programme lors de la conception du programme. Cette valeur correspond en partie à l'inverse de l'effet produit par l'addition des états attendus du traceur T qui sont prédictibles. Pour obtenir plus de détail sur un exemple de mise en oeuvre du traceur T, l'homme du métier peut se reporter à la demande de brevet français déposé le 21 décembre 2004 sous le numéro 04 13659. Une valeur de compensation de l'incrémentation des dates est obtenue en déterminant les sauts réalisés par le générateur pour ces incrémentations de dates. Il en va de même pour l'éventuelle constante rajoutée lors de la compensation des signatures ES et ESr. Enfin, unevaleur de compensation pour ramener le contenu du registre de la valeur Sbpa(j+4n) à Sbpa(j) est obtenue à l'aide du polynôme générateur. La compensation peut se faire à l'aide de valeurs calculées correspondant respectivement à la compensation des données attendues représentatives du déroulement du programme et de l'incrémentation du registre 10 à l'aide du générateur pseudo aléatoire 11. Il va de soit qu'une compensation peut être réalisée avec une valeur globale correspondant à la somme des compensations précédemment citées. La valeur globale peut être obtenue plus simplement par émulation des valeurs attendues. Il suffit alors de réaliser une simulation de fonctionnement du dispositif, en garantissant le bon déroulement du fonctionnement. Puis lors de chaque fin de cycle, on effectue la différence entre la valeur Sbpa obtenu après le contrôle différentiel réalisé lors de l'étape 25 et la valeur Sbpa(j). La valeur ainsi obtenue correspond à la compensation à réaliser et est ensuite mémorisée pour être stockée dans la mémoire 14. A titre d'exemple, la valeur i est égale à 512 de sorte que 512 itérations sont nécessaires pour la remise à zéro de tout le dispositif de traitement. La valeur n est par exemple égale à 214 et cela permet d'effectuer un contrôle du programme tous les seize milles cycles d'horloge. Avec une fréquence d'horloge égale à 1 Mhz cela correspond à contrôler le programme environ toutes les 16 ms. Les valeurs de compensation mémorisées correspondent à différentes valeurs échelonnées tous les 216 cycles d'horloge, environ 64 ms. Dans le cas où le dispositif de traitement est un circuit de commande d'un véhicule ferroviaire, le programme effectué par le dispositif de traitement tourne de manière cyclique. Le nombre de cycles d'horloge d'un programme peut ne pas être un multiple du nombre de cycles d'horloge d'un cycle de contrôle. Cependant, le traceur T dispose préférentiellement d'une valeur prédictible indépendante des valeurs de données et des itérations du programme pour pouvoir reboucler une séquence de compensation du cycle de contrôle. Ainsi, au bout d'un certain nombre de fois où le programme est exécuté, au plus égal au nombre de cycles d'horloge du cycle de contrôle, les valeurs de compensation à utiliser se répètent. Astucieusement, on peut avoir un programme dont le nombre de cycles d'horloge dispose d'un diviseur commun avec le nombre de cycles d'horloge du cycle de contrôle afin de mémoriser un nombre plus réduit de valeur de compensation. Plus le diviseur commun est grand moins le nombre de données de compensation à mémoriser est important. Si le programme et le cycle de contrôle disposent d'un même nombre de cycles d'horloge, il est possible de n'avoir qu'une unique donnée de compensation à mémoriser. L'introduction des données de sécurité dans la séquence de bits pseudo aléatoire Sbpa et la compensation qui est faite de ces données permet d'obtenir une séquence de bits pseudo aléatoire stable Sbpa, par exemple d'une longueur de 216 bits. Cependant, si jamais une de ces données ne correspond pas à une donnée attendue, la séquence de bits pseudo aléatoire va prendre à un moment donné une valeur non prévue. Cette valeur étant non prévue, quelles que soient les autres valeurs réintroduites dans cette séquence de bits pseudo aléatoire et quelles que soient les compensations effectuées sur cette séquence de bits pseudo aléatoire, la séquence de bits va diverger. C'est-à-dire qu'il sera impossible de retomber sur une séquence de bits attendue. De même, si jamais le contrôleur de sécurité 4 a une défaillance, la séquence de bits Sbpa qu'il fournira ne sera pas la bonne, ce qui augmente la sûreté dans la détection d'une erreur d'exécution par le dispositif de traitement global. Ainsi, une faute ou une erreur commise par le dispositif de traitement ne peut pas être ignorée. Comme il a été expliqué précédemment, l'avantage est d'utiliser un générateur pseudo aléatoire et de fournir une séquence dynamique qui change en permanence et qui permet de répercuter une erreur dès qu'une erreur s'est produite. Afin de sécuriser également le circuit d'horloge 5, on propose le circuit d'horloge préféré de la figure 5, qui utilise deux générateurs pseudo aléatoires. Ce circuit d'horloge présente en outre l'avantage de vérifier en sécurité la stabilité des bases de temps. Le circuit d'horloge 5, représenté sur la figure 5, comporte deux générateurs de signaux 100 et 101, fournissant chacun un signal de fréquence propre. Deux diviseurs de fréquence 102 et 103 sont respectivement connectés aux deux générateurs de signaux 100 et 101 afin de diviser la fréquence de ces signaux en deux signaux respectivement de 1 Mhz et de 1,2 Mhz. Le signal de 1 Mhz est par exemple fourni par le diviseur 102 et correspond également au signal d'horloge Ck qui est fourni au contrôleur de sécurité 4 pour cadencer le circuit décrit sur la figure 2. Deux registres à décalage 104 et 105 sont cadencés respectivement par les signaux d'horloge fournis par les diviseurs 102 et 103. Ces deux registres à décalage 104 et 105 sont utilisés comme générateurs pseudo aléatoires. Le bit de poids le plus fort noté Msb sur les figures correspond à une séquence de bits pseudo aléatoire fournit par chacun des registres. Pour transformer chaque registre à décalage 104 et 105 en générateur pseudo aléatoire, au moins un OU-exclusif 106 et 107 relie l'entrée de poids faible de chaque registre à décalage à son bit de poids fort en combinant celui-ci avec au moins un bit dudit registre à décalage selon une technique connue. La combinaison de bits additionnée à l'aide de OU-exclusif au bit de poids le plus fort correspond à un polynôme générateur propre à chacun des registres. Afin d'assurer une bonne stabilité de fréquence et de garantir que le circuit fonctionne avec une bonne stabilité de fréquence, des portes de transfert 108, 109 et 110 permettent d'échanger des bits à des instants donnés entre le registre à décalage 104 et le registre à décalage 105 d'une part et entre le diviseur 103 et le diviseur 102 d'autre part. La porte 108 permet de synchroniser le diviseur 102 à une même valeur que le diviseur 103 à un instant donné. L'instant donné est choisi comme correspondant à une fréquence égale à une période multiple commune des signaux fournis par les diviseurs de fréquence 102 et 103. Simultanément, le bit de poids fort du registre 105 est fourni par la porte de transfert 109 et par l'intermédiaire d'une série de porte de type OU-exclusif 111, 112 et 113 à l'entrée du registre à décalage 104. Les portes OU-exclusif 111, 112 et 113 permettent d'additionner d'une part le bit provenant du registre à décalage 105 avec le bit correspondant à la nouvelle valeur provenant de la porte OU-exclusif 106 mais permettent également d'additionner la séquence de bits Sbpa et d'additionner cette séquence de bits Sbpa à une autre séquence de bits provenant d'une mémoire morte 114 visant à compenser d'une part la séquence de bits Sbpa, d'autre part la valeur du bit fourni par le registre à décalage 105. La porte de transfert 110 relie le bit de poids fort du registre 104 à l'entrée de poids faible du registre 105 par l'intermédiaire de portes OU 115 et 116 en additionnant d'une part le bit provenant de la porte OU 107 et d'autre part un bit provenant de la mémoire morte 117. La mémoire morte 117 mémorise une séquence de bits visant à compenser la séquence de bits fournie par le registre 104. Les trois portes de transfert 108, 109 et 110 sont synchronisées entre elles afin de n'effectuer le transfert de bits que à des instants donnés. Les instants donnés sont définis comme correspondant à une période multiple des périodes des signaux à 1 Mhz et à 1,2 Mhz. La mémoire morte 114 fourni un bit à chaque cycle du signal fourni par l'horloge 102 afin de compenser la séquence de bits Sbpa. Par contre, la mémoire morte 117 peut être de taille plus réduite étant donné que celle-ci ne compense que le bit provenant du registre 104 par l'intermédiaire de la porte de transfert 110 et uniquement à des instants prédéfinis. Les deux mémoires mortes 114 et 117 comportent également des bits de compensation qui permettent de reboucler chaque séquence de bits pseudo aléatoire correspondant à chacun des registres afin que chacun de ces registres ne prennent qu'un nombre d'état réduit inférieur au nombre d'état que chacun peut effectivement prendre compte tenu de leur polynôme générateur propre. Les registres à décalage 104 et 105 sont des registres de grande taille par exemple de l'ordre de la vingtaine de bits et peuvent générer des séquences importantes par exemple de l'ordre de 220 bits. Cependant, à l'aide des mémoires mortes 114 et 117, le nombre d'états effectifs peut être limité à quelques milliers d'états. Afin de transformer les deux séquences de bits pseudo aléatoires fournies par les registres 104 et 105 en signaux de commande pour un circuit d'alimentation, deux registres à décalage 121 et 122 reçoivent les séries de bits provenant respectivement des registres à décalage 105 et 107 pour les transformer en mots de 4 bits. Deux mémoires mortes 123 et 124 contiennent des mots de 4 bits visant à transformer les mots de 4 bits fournis par les registres à décalage 121 et 122 en signaux de commande pour un circuit d'alimentation. La transformation des mots des registres 121 et 122 à l'aide des mémoires mortes 123 et 124 se fait à l'aide de circuits d'addition de type OU-exclusif 125 à 132. Les signaux sortant des portes OU-exclusif 125 à 132 peuvent être filtrés à l'aide de filtres passe-bas (non représentés) afin de supprimer les parasites liés à la commutation desdites portes 125 à 132. Il est montré sur la figure 5 une borne S1 correspondant à une sortie du registre 121 compensée par une sortie de la mémoire morte 123 marquée par la borne S2 à l'aide du OU-exclusif 125 pour obtenir un signal de commande sur une borne S3. Les signaux correspondants à ces bornes SI, S2, S3 sont représentés sur la figure 6 pour expliquer la compensation effectuée afin d'obtenir des signaux de commande pour un circuit d'alimentation. Sur la figure 6, on peut voir une séquence de bits SI correspondant à un échantillonnage 1 sur 4 de la séquence de bits pseudo aléatoire fournie par le registre à décalage 105. Cette séquence de bit se fait à une fréquence égale à 1,2 Mhz divisé par 4, à savoir 300 kHz. Dans notre exemple, le circuit d'alimentation est composé de quatre onduleurs nécessitant chacun deux signaux de commande par exemple des signaux carrés à une fréquence de 25 kHz. II convient alors de diviser la fréquence par 12 tout en transformant les signaux correspondants à ceux de la borne SI afin d'obtenir un signal de commande, par exemple un signal carré de fréquence 25 kHz. Sur la figure 6, on peut voir que la séquence de bits correspondant à la borne S3 est une séquence régulière de 0 et de 1 qui correspond effectivement à un signal de 25 kHz échantillonnés à 300 kHz. La séquence de compensation qui doit être alors mémorisée dans la mémoire morte 123 correspond soit à la même séquence que celle fournie par le registre 121 lorsque l'on désire obtenir un 0, soit à une séquence complémentaire lorsque l'on désire obtenir un 1. Cette séquence est montrée sur la figure 6 pour la borne S2. Un tel système permet en outre de prendre en compte comme erreur de fonctionnement une dérive trop importante de l'un des deux générateurs de signaux 100 ou 101. En effet, s'il l'un des générateurs de signaux dérive un peu trop dans le temps, l'échange de bit entre les registres 104 ou 105 va se trouver être décalé d'au moins un bit au bout d'un certain temps. La compensation de ce bit va forcément entraîner une mauvaise compensation, cela introduira alors une divergence dans la séquence pseudo aléatoire fournit par l'un des registres 104 ou 105. La divergence de l'un des registres provoque la divergence de l'autre registre lors d'un échange de bit suivant, ce qui fait que les séquences pseudo aléatoires fournies par les registres 104 et 105 ne sont pas conformes aux séquences à compenser à l'aide des mémoires 123 et 124. Egalement, toute erreur de fonctionnement d'un quelconque élément constituant le circuit d'horloge va entraîner la modification d'un bit d'une des séquences pseudo aléatoire, faisant diverger celle-ci qui entraîne la divergence de l'autre séquence. Dans le cas d'une erreur détectée à l'aide du signal Sbpa ou dans le cas d'une défaillance du circuit d'horloge 5, les séquences de bits pseudo aléatoires fournies par les registres 104 et 105 ne peuvent nullement être conformes aux séquences de bits attendus correspondants aux séquences de bits des mémoires 123 et 124. Cela a pour effet de produire des signaux de commande à destination de l'alimentation qui ne correspondront en rien aux signaux attendus. Dans le cas d'une alimentation à onduleurs, les signaux de synchronisation ne permettront pas de synchroniser correctement les onduleurs et donc d'obtenir en sortie de chaque onduleur la tension désirée. Ce phénomène sera d'autant plus aggravé que la fréquence des signaux attendus par les onduleurs sera faible par rapport à la fréquence des bits fournis par les registres à décalage. Plus la différence de fréquence est élevée entre les fréquences de synchronisation des onduleurs et les fréquences des trains de bit, plus le filtrage passe-bas réalisé sur les signaux de commande peut effectuer un lissage. Dans notre exemple, quatre onduleurs sont utilisés dans le circuit d'alimentation. Ces quatre onduleurs sont cascadés en anneaux. C'est-àdire que la tension produite par le premier onduleur, à partir d'une alimentation externe, sert à alimenter le deuxième onduleur qui sert à alimenter le troisième onduleur qui sert lui-même à alimenter le quatrième onduleur et le quatrième onduleur sert à alimenter les commandes des quatre onduleurs. Mis à part une étape de mise sous tension, pour alimenter temporairement les commandes des quatre onduleurs, le dispositif s'autoalimente. Dans le cas d'une mauvaise synchronisation, l'un des onduleurs va commencer par avoir une tension de sortie qui va baisser. La tension de sortie d'un onduleur baissant, la tension d'entrée de l'onduleur suivant va baisser. La tension d'entrée d'un onduleur suivant baissant, la tension de sortie de l'onduleur suivant va également baisser et cette baisse de tension de sortie est aggravée par la mauvaise synchronisation de l'onduleur suivant. Ce phénomène de baisse successive d'un onduleur lié d'une part à sa mauvaise synchronisation et d'autre part à sa tension d'entrée en baisse provoque un abaissement rapide de la tension fournie par les onduleurs jusqu'au moment ou les onduleurs ne reçoivent plus une tension suffisante pour pouvoir produire une tension de sortie. Les quatre onduleurs se trouvent alors arrêtés et plus aucune tension n'est fournie. Le système de traitement se trouve alors dans un état sécurisé par coupure d'alimentation. REVENDICATIONS 1. Procédé de vérification du bon fonctionnement d'un dispositif de traitement sécurisé mettant en oeuvre un programme, caractérisé en ce qu'il comporte les étapes de: - élaboration d'un traceur (T) de déroulement de programme dont la valeur est prédictible si le programme se déroule correctement, - production d'une séquence pilote (Sbpa) de bits pseudo aléatoire à l'aide d'un générateur pseudo aléatoire, ladite séquence étant représentative du bon déroulement du programme, - ajout (22-25), de manière régulière, du traceur au contenu du générateur pseudo aléatoire, et - compensation (25), de manière régulière, dans le générateur pseudo aléatoire d'un effet prédictible produit par l'ajout du traceur. 2. Procédé selon la revendication 1, qui comporte en outre et régulièrement une étape d'ajout (22, 23, 24, 25) au contenu du générateur pseudo aléatoire d'une ou plusieurs valeurs représentatives d'au moins une sortie du programme (ES) et d'au moins une sortie réelle (ESr) qui sort dudit dispositif de traitement, et compensation dans le générateur pseudo aléatoire d'un effet prédictible du à l'ajout des valeurs. 3. Procédé selon l'une des revendications 1 ou 2, dans lequel au moins une date est établie de manière régulière au cours du déroulement du programme, et dans lequel le procédé réalise en outre et régulièrement des étapes de: ajout de la date au contenu du générateur pseudo aléatoire, et - compensation dans le générateur pseudo aléatoire d'un effet prédictible produit par l'ajout de la date au contenu du générateur pseudo aléatoire. 4. Procédé selon l'une des revendications 1 à 3, dans lequel les traceurs, les valeurs de sorties, les dates et les compensations sont ajoutés au contenu du générateur pseudo aléatoire de manière cyclique. 5. Procédé selon la revendication 4, dans lequel les étapes d'ajout sont réalisées à des fréquences multiples les unes des autres. 6. Procédé selon la revendication 5, dans lequel les étapes sont en phase. 7. Procédé de mise en sécurité d'un dispositif de traitement par suppression d'une tension d'alimentation en cas de dysfonctionnement, caractérisé en ce que: on réalise le procédé de l'une des revendications 1 à 6 pour obtenir la séquence pilote de bits pseudo aléatoire, on produit deux signaux d'horloge à deux fréquences différentes, - on produit deux séquences de bits pseudo aléatoires cadencées par les signaux d'horloge, on recale périodiquement l'une des deux séquences pseudo aléatoires à l'aide de l'autre des deux séquences pseudo aléatoires, - on introduit régulièrement dans l'une des deux séquences pseudo aléatoires des bits de la séquence pilote de bits pseudo aléatoire en les compensant avec des valeurs complémentaires qui correspondent au bon fonctionnement du dispositif, - on compense les bits des deux séquences pseudo aléatoires pour les transformer en signaux de commande d'un circuit d'alimentation. 8. Procédé selon la revendication 7, dans lequel, lors d'une initialisation du procédé, la séquence pilote et les deux séquences de bits sont initialisées à des valeurs telles qu'un certain temps doit s'écouler pour arriver dans un état qui correspond à une première introduction de bits ou de données dans lesdites séquences. 9. Dispositif de contrôle d'un bon fonctionnement d'un dispositif de traitement sécurisé qui comporte: - un générateur pseudo aléatoire (10, 11) destiné à fournir une séquence pilote (Sbpa) de bits pseudo aléatoire représentative du bon fonctionnement du dispositif, - une borne d'entrée destinée à recevoir au moins une donnée (T) qui est prédictible si le dispositif fonctionne correctement, - un moyen de mémorisation (14) destiné à mémoriser au moins une donnée de compensation représentative de la donnée prédictible, - des moyens d'addition et/ou de soustraction (13, 15) apte à additionner et/ou soustraire au contenu du générateur pseudo aléatoire une donnée provenant de la borne d'entrée et/ou du moyen de mémorisation. 10. Générateur de signaux de commande pour un dispositif d'alimentation de sécurisation comportant au moins un onduleur, le dispositif d'alimentation étant apte à produire une tension d'alimentation en réponse à des signaux appropriés, caractérisé en ce que le générateur de signaux comporte: deux générateurs de signaux (100, 101) pilotant respectivement deux générateurs pseudo aléatoires (104, 105, 106, 107, 111, 115), les générateurs pseudo aléatoires étant apte à produire deux séquences pseudo aléatoires de bits, - des moyens (108, 109, 110) pour synchroniser périodiquement les deux générateurs pseudo aléatoires, un premier moyen de compensation (121, 122) apte à compenser les deux séquences pour les transformer en signaux de commande appropriés. 11. Générateur selon la revendication 10, qui comporte en outre: des moyens (113) pour introduire des données pilotes dans les générateurs pseudo aléatoires, les données pilotes devant correspondre à des données attendues, un deuxième moyen de compensation (112, 114) apte à compenser les 30 données pilotes pour que les générateurs pseudo aléatoires fournissent deux séquences transformable en signaux de commande appropriés. 12. Dispositif sécurisé de traitement qui comporte: une unité de traitement principale (2) apte à produire des signaux de sortie, - une unité de traitement sécurisé (3) apte à produire un traceur (T) représentatif du bon déroulement d'un programme réalisé par l'unité de traitement principale (2) et apte à fournir une signature (ES) représentative des sorties attendues, une interface de sortie (7) apte à amplifier des signaux de sortie (Sf) reçus de l'unité de traitement à l'aide d'une tension d'alimentation sécurisée, et apte à fournir une signature représentative de l'état réel des sorties (ESr), - un dispositif de contrôle (4) selon la revendication 9, apte à recevoir les signatures représentatives, et apte à fournir une séquence pilote (Sbpa) de bits pseudo aléatoire, - un générateur de signaux (5) selon la revendication 11, apte à recevoir la séquence pilote et apte à fournir des signaux de commande appropriés si ladite séquence pilote correspond à la séquence attendue, et un dispositif d'alimentation (6) apte à produire la tension d'alimentation sécurisée pour la fournir à l'interface de sortie, en réponse aux signaux de commande appropriés.