INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
Suivant un autre aspect de l’invention, il est proposé un procédé pour produire de l’énergie électrique au sein d’un véhicule en mouvement, comprenant une étape pour convertir une ou plusieurs formes d’énergie disponibles localement en énergie électrique, une étape pour stocker localement cette énergie électrique en vue de son transfert pour une utilisation différée dans une installation fixe à usage domestique ou professionnel, une étape pour contrôler les flux d’énergie ainsi générée et stockée, une étape pour collecter localement des données relatives aux flux d’énergie ainsi générée et stockée, et une étape pour traiter ces données collectées en vue de produire des informations d’estimation des émissions de dioxyde de carbone générées pour la production de l’énergie électrique transférée dans l’installation fixe.
Le procédé de production selon l’invention peut avantageusement comprendre les étapes suivantes : au sein dudit véhicule, générer de l’énergie électrique, par conversion d’une partie de l’énergie mécanique produite par ce moteur thermique, stocker cette énergie électrique ainsi générée dans un ou plusieurs unités de stockage, contrôler les flux d’énergie électrique ainsi générée et stockée, dans ladite installation fixe, recevoir l’énergie électrique préalablement stockée au sein du véhicule, convertir cette énergie électrique ainsi collectée de façon à la rendre injectable dans le réseau local d’énergie électrique,
caractérisé en ce qu’il comprend en outre au sein dudit véhicule, une étape de collecte de données représentatives des flux d’énergie générée et stockée, une étape de traitement desdites données ainsi collectées en relation avec des données de tracking et des données représentatives du régime moteur du véhicule, une étape pour transmettre lesdites données ainsi collectées et traitées localement à un site distant programmé pour traiter lesdites données transmises en provenance dudit véhicule et procurer en retour à un utilisateur dudit véhicule et/ou de ladite installation fixe des données d’estimation des émissions de dioxyde de carbone générées pour la production de l’énergie électrique transférée au réseau local d’énergie électrique.
Le procédé de production selon l’invention peut en outre comprendre, dans l’installation fixe, une étape pour recevoir les données collectées et une étape pour traiter les données ainsi reçues en relation avec des données relatives à d’autres sources d’énergie utilisées dans ladite installation.
Il s’agit d’un exemple d’attaque extrêmement difficile à contrer dans la mesure où l’attaquant remplace par des instructions nulles ( nops ) dans le registre d’instructions 12 toutes les instructions lues en mémoire, par le forçage de la remise à zéro du registre d’instructions 12.
Par ailleurs, les codes des circuits sécurisés sont généralement chiffrés. Cependant, cela ne les protège pas pour autant contre l’extraction linéaire par sondage, car il faut bien que le code soit déchiffré avant son exécution.
La est une vue similaire à la , illustrant schématiquement un circuit de décryptage 16 des instructions du code. Comme montré sur la figure, les sondes 200, 201, 202 sont placées en aval du circuit de décryptage 16, ce qui permet à l’attaquant de lire les instructions déjà décryptées.
La est une vue analogue à la représentant schématiquement un premier exemple de circuit 1 selon l’invention.
Le circuit 1 possède la même architecture que celle décrite ci-avant, à savoir une mémoire 10, un cœur de microprocesseur 14, un bus d’instructions 11, un bus de lecture 13, un bus d’adresse 15 et un registre d’instructions 12 pour le stockage des instructions commandé par un signal d’horloge clk et un signal de réinitialisation reset pour une remise à zéro du contenu du registre d’instructions 12. Le circuit de décryptage 16 reste optionnel et il est présent dans le cas où les instructions sont stockées dans la mémoire sous forme chiffrée. La illustre le circuit de la sans circuit de décryptage 16.
Dans un mode de réalisation représenté à la , le registre d’instructions 12 fait partie du cœur de microprocesseur 14.
La mémoire 10 est par exemple de type Flash, ROM, RAM ou DRAM. Dans ce dernier cas représenté à la , la mémoire 10 est externe, c’est-à-dire non embarquée dans le même circuit électronique 1 que le cœur de microprocesseur 14 exécutant les instructions.
Le code du programme enregistré dans la mémoire 10 est modifié pour comprendre des instructions de protection dites « marqueurs de sécurité » insérées parmi les instructions de programme de manière à être lues au cours de l’exécution du programme. Par exemple, les marqueurs de sécurité sont insérés dans le code avec une périodicité variable pour rendre difficile leur détection et/ou identification. Afin de tromper un observateur et rendre encore plus compliquée la détection et/ou l’identification des marqueurs de sécurité, il est possible qu’ils soient différents les uns des autres, notamment par leur charge utile.
Le cœur du microprocesseur 14 comporte un circuit de protection 18 contre une tentative d’extraction linéaire, apte à déclencher une action prédéfinie d’alerte 300 en cas de non-détection d’un marqueur de sécurité selon une règle de surveillance prédéfinie.
La règle de surveillance prédéfinie peut être la non-détection d’un marqueur de sécurité pendant une durée prédéfinie et/ou après qu’un nombre prédéfini d’instructions de programme ont été lues.
Le circuit de protection 18 comprend par exemple, comme illustré, un compteur de chargement d’instructions ou de cycles d’horloge 20 décroissant, configuré pour être décrémenté à chaque chargement d’instruction dans le registre d’instructions 12 ou à chaque cycle d’horloge, et qui est périodiquement réinitialisé à une valeur positive paramétrable.
La réinitialisation du compteur de chargement d’instructions ou de cycles d’horloge 20 est régulièrement effectuée par un marqueur de sécurité avant d’atteindre zéro. Si le compteur de chargement d’instructions ou de cycles d’horloge 20 atteint zéro, le circuit de protection 18 est configuré pour déclencher l’action prédéfinie d’alerte 300.
Le compteur de chargement d’instructions ou de cycles d’horloge 20 peut alternativement être incrémenté à partir de zéro auquel cas, l’action prédéfinie d’alerte 300 est déclenchée lorsque le compteur de chargement d'instructions ou de cycles d’horloge 20 atteint une valeur prédéfinie (paramétrable en option). La valeur prédéfinie paramétrable peut être une valeur contenue dans la charge utile du marqueur de sécurité précédemment exécuté.
L’action prédéfinie d’alerte 300 peut être : la réinitialisation du circuit 1, l’effacement de la mémoire 10, la remise à zéro de l’adresse de lecture en mémoire (auquel cas l’attaquant lit indéfiniment la même séquence courte d’instruction initiale), l’assignation à l’adresse de lecture en mémoire de valeurs non consécutives incohérentes, notamment par le chargement à chaque cycle d’horloge d’une valeur aléatoire dans le registre d’adresse en mémoire (auquel cas l’extraction de code devient non linéaire), le saut d’une section de code, notamment d’une section sensible à protéger (auquel cas l’attaquant extrait un code inutile), etc.
Dans l’exemple illustré, la validité d’une condition suivant l’instruction 8 fait reboucler la lecture à l’adresse de l’instruction 5 (ce qui correspond à un saut de 4 adresses en arrière).
En fait, la boucle est exécutée tant que la condition est vérifiée, à chaque fois les instructions 5 à 8 sont exécutées une nouvelle fois entraînant l’accroissement du nombre d’instructions exécutées (et donc du nombre de cycles d’horloge écoulés) entre deux marqueurs de sécurité au risque de déclencher l’action prédéfinie d’alerte 300 sans raison.
Une solution à ce problème est illustrée à la où un marqueur de sécurité est ajouté en tête de la boucle. Le saut vers le début de la boucle correspond dans ce cas à 5 adresses en arrière.
Le marqueur de sécurité peut alternativement être ajouté en fin de la boucle.
Sans avoir à ajouter de marqueurs de sécurité dans le code, il est également possible de détecter l’absence d’instructions de discontinuité, selon le même principe.
En effet, au lieu d’avoir un compteur de chargement d’instructions ou de cycles d’horloge 20, le circuit 1, notamment le circuit de protection 18 du microprocesseur 14, peut comporter un compteur d’instructions de continuité 21, comme illustré à la . Ce compteur 21 peut être configuré pour être décrémenté à chaque exécution d’une instruction de continuité, le compteur d’instructions de continuité 21 étant préférentiellement configuré pour être périodiquement réinitialisé à une valeur paramétrable, la réinitialisation du compteur d’instructions de continuité 21 étant régulièrement effectuée par l’exécution d’une instruction de discontinuité avant d’atteindre un seuil d’alarme, notamment zéro, le circuit de protection 18 étant configuré pour déclencher l’action prédéfinie d’alerte 300 lorsque le compteur d’instructions de continuité 21 atteint le seuil d’alarme.
Si l’on considère l’exemple de la portion de code représentée à la et que l’on prend comme exemple un compteur d’instructions de continuité 21 décroissant, initialisé à 4 et ayant un seuil d’alarme à zéro, ce compteur sera réinitialisé par l’instruction de discontinuité à exécution linéaire à l’adresse 6. Il va décroître lorsque les instructions 7 à 10 seront exécutées, et arrivera à zéro à l’exécution de l’instruction 10, ce qui va déclencher une fausse alerte puisqu’il n’y a aucune attaque. Pour éviter cela, il est utile soit d’augmenter la valeur initiale du compteur 21, soit d’insérer une instruction de discontinuité à exécution linéaire entre les instructions de programme 7 à 10 dont l’exécution correspond à un nombre de cycles d’horloge pouvant entraîner le déclenchement de l’action prédéfinie d’alerte, sans raison. En l’occurrence, l’instruction de discontinuité à exécution linéaire est insérée entre les instructions 9 et 10.
La montre deux possibilités pour l’insertion d’une instruction de discontinuité à exécution linéaire dans la portion de code de la : soit lors de la compilation du code ( à droite), soit hors de la mémoire et avant le chargement des instructions dans le registre d’instructions ( à gauche).
Lorsque l’instruction de discontinuité à exécution linéaire est insérée lors de la compilation du code, elle est stockée dans la mémoire et possède une adresse mémoire. Dans l’exemple illustré sur la à droite, l’instruction de discontinuité à exécution linéaire est insérée entre les instructions 9 et 10. Elle prend alors l’adresse mémoire 10 et entraîne dans ce cas une incrémentation unitaire de l’adresse mémoire des instructions qui la suivent, comme montré sur la de droite.
Lorsque l’instruction de discontinuité à exécution linéaire est insérée hors de la mémoire et avant le chargement des instructions dans le registre d’instructions, elle ne possède alors dans ce cas pas d’adresse mémoire, et engendre un maintien des adresses mémoire des instructions qui la suivent. Sur la de gauche, l’instruction de discontinuité à exécution linéaire est insérée entre les instructions 9 et 10 au moment où le cœur du microprocesseur attend de recevoir l’instruction 10. Il reçoit donc l’instruction de discontinuité au lieu de l’instruction 10, afin d’éviter le déclenchement intempestif d’une alarme. Il se déclenche alors un mécanisme qui fait que le cœur continue de demander l’instruction 10. Le cœur est par exemple configuré pour reconnaître une instruction de discontinuité à exécution linéaire et renouveler la demande de lecture de l’instruction 10 qui a été décalée par l’insertion de l’instruction de discontinuité à exécution linéaire. Le cœur finit par recevoir l’instruction 10 afin de l’exécuter. Dans ce cas, les différentes instructions gardent leurs adresses mémoires. L’instruction de discontinuité a été insérée dans le flot des instructions lues depuis la mémoire en vue d’être exécutées par le cœur.
La représente schématiquement un bloc d’insertion d’instructions de discontinuité à exécution linéaire 400 qui est un circuit situé hors de la mémoire 10, communiquant avec celle-ci et avec le registre d’instructions 12. Cette variante permet de ne pas modifier le compilateur, et de ne pas augmenter la surface mémoire.
La représente schématiquement un exemple de séquence d’instructions à exécuter à la suite d’une attaque de mémorisation dans le registre d’instructions d’une instruction de discontinuité engendrant une exécution linéaire. En l’occurrence, il s’agit d’une instruction de branchement dont la condition n’est jamais remplie : beq r0, r1, imm (beq signifiant « branch if equal »). Les registres r0 et r1 étant différents, le branchement vers l’adresse imm n’aura jamais lieu. Ce type d’attaque désactive le signal d’autorisation d’écriture ( write_enable ) du registre d’instructions 12 pour que l’instruction contenue dans le registre ( beq r0, r1, imm , qui est dans ce cas une instruction de discontinuité à exécution linéaire) y soit mémorisée tant que dure la désactivation du signal d’autorisation d’écriture. Le compteur d’instructions de continuité 21 seul ne pourra pas détecter ce genre d’attaques, étant donné qu’il est réinitialisé en permanence par l’instruction de discontinuité (beq r0, r1, imm) mémorisée.
Ainsi, un compteur d’instructions de discontinuité à exécution linéaire 22 (représenté à la ) permet entre autres de détecter ce genre d’attaques consistant à injecter dans le cœur uniquement des instructions de discontinuité engendrant une exécution linéaire. En plus du compteur d’instructions de continuité 21, le circuit 1, en particulier le circuit de protection 18, peut comporter un compteur d’instructions de discontinuité à exécution linéaire 22 configuré pour être décrémenté à chaque exécution d’une instruction de discontinuité à exécution linéaire, le compteur d’instructions de discontinuité à exécution linéaire 22 étant préférentiellement configuré pour être périodiquement réinitialisé à une valeur paramétrable, la réinitialisation du compteur d’instructions de discontinuité à exécution linéaire 22 étant régulièrement effectuée par l’exécution d’une instruction de discontinuité à exécution non linéaire avant d’atteindre un seuil d’alarme, notamment zéro, le circuit de protection 18 étant configuré pour déclencher l’action prédéfinie d’alerte 300 lorsque le compteur d’instructions de discontinuité à exécution linéaire 22 atteint le seuil d’alarme.
Prenons un exemple avec la portion de code de la , un compteur d’instructions de continuité 21 décroissant, initialisé à 4, et un compteur d’instructions de discontinuité à exécution linéaire 22 décroissant, initialisé à 8, les seuils d’alarme des deux compteurs étant à zéro. Le compteur 21 sera réinitialisé à 4 à chaque instruction « beq r0, r1, imm » et ne décroîtra pas, alors que le compteur 22 va se décrémenter à chaque instruction jusqu’à celle d’adresse 9 où il atteindra son seuil d’alarme, provoquant le déclenchement de l’action prédéfinie d’alerte.
La combinaison des compteurs 21 et 22 permet également de contrer un autre type d’attaque consistant à forcer l’adresse d’instructions à varier linéairement. La illustre schématiquement un exemple d’une telle attaque. Le signal de pilotage 203 d’un multiplexeur 25 contenu dans le cœur 14 et fournissant l’adresse d’instructions est forcé de manière à sélectionner l’entrée engendrant une variation linéaire de l’adresse d’instructions.
Ainsi, quelle que soit l’instruction (de continuité ou de discontinuité), elle sera toujours à exécution linéaire. Le compteur d’instructions de continuité 21 seul ne peut détecter une telle attaque, étant réinitialisé à chaque instruction de discontinuité entrant dans le cœur. Cependant, le compteur d’instructions de discontinuité à exécution linéaire 22 ne sera jamais réinitialisé et se décrémentera à chaque instruction de discontinuité (à exécution linéaire), donc l’attaque sera détectée.
Dans un exemple de réalisation, ledit dispositif de réglage comporte un actionneur piézoélectrique. Cet exemple trouve une application avantageuse lorsqu’aucun filtre optique additionnel n’est prévu en amont du filtre optique. En effet, la longueur de cohérence est telle qu’il est nécessaire de pouvoir régler la distance séparant les lames semi-réfléchissantes avec un pas de l’ordre du nanomètre. On notera qu’il peut être alors particulièrement avantageux, dans ce cas, de monter le filtre optique sur le photodétecteur, les rayons lumineux d’un faisceau lumineux incident étant focalisés au niveau du photodétecteur, ce qui rend plus aisé le réglage.
Dans un autre mode de réalisation, ledit dispositif de réglage comporte un moteur électrique. Cet exemple trouve une application avantageuse lorsqu’un filtre optique additionnel, comme le premier filtre, est prévu en amont du filtre optique. Dans ce cas, la longueur de cohérence est augmentée et la tolérance requise pour le réglage de la distance est de l’ordre du micromètre, voire du millimètre. On peut ainsi utiliser un moteur électrique de type pas à pas ou de type continu.
Avantageusement, le module d’émission comporte une unité de modulation apte à recevoir une séquence de données et agencée pour moduler ledit faisceau lumineux émis à partir de la séquence de données reçues et le module de réception comporte une unité de démodulation reliée au photodétecteur et agencée pour extraire une séquence de données depuis un signal électrique converti par ce photodétecteur.
représente, schématiquement et partiellement, une vue d’un système d’un véhicule automobile selon un exemple de réalisation de l’invention ; et
représente, schématiquement et partiellement, un exemple de réalisation du module de réception du système de la .
La illustre un organigramme des différentes étapes d’un procédé de communication pour véhicule, selon un exemple de réalisation particulier et non limitatif de la présente invention. Le procédé est par exemple mis en œuvre par un système de communication comprenant un véhicule et un dispositif distant, le véhicule et le dispositif distant étant reliés en communication sans fil, ou par un ensemble de dispositifs 2 reliés en communication sans fil.
Dans une première étape 31, le premier véhicule reçoit un message émis par un deuxième véhicule via une connexion sans fil selon un mode de communication véhicule vers tout, dit V2X, un identifiant pseudonyme du deuxième véhicule étant associé au message
Dans une deuxième étape 32, le premier véhicule transmet, selon le mode de communication V2X, une requête d’identification du deuxième véhicule à destination d’un dispositif distant, la requête comprenant des premières données représentatives d’identification du premier véhicule et l’identifiant pseudonyme.
Dans une troisième étape 33, le dispositif distant vérifie à partir des premières données les droits d’accès du premier véhicule à des deuxièmes données représentatives d’identification du deuxième véhicule.
Dans une quatrième étape 34, le premier véhicule reçoit, selon le mode de communication V2X, les deuxièmes données en fonction d’un résultat de la vérification de la troisième étape 33.
Bien entendu, la présente invention ne se limite pas aux exemples de réalisation décrits ci-avant mais s’étend à un procédé de détermination d’une identité d’un véhicule émettant un ou plusieurs messages pseudonymes qui inclurait des étapes secondaires sans pour cela sortir de la portée de la présente invention. Il en serait de même d’un dispositif configuré pour la mise en œuvre d’un tel procédé.
Le procédé peut prévoir de déterminer une position angulaire de référence par tour de corps d’épreuve, afin de pouvoir initier et/ou terminer la procédure de calibration en fonction de la détermination de ladite position angulaire de référence.
Pour ce faire, au moins un codeur peut porter une piste de référence apte à émettre un signal une fois par tour, le capteur disposé à distance de lecture de ladite piste délivrant la position angulaire de référence lors de la détection dudit signal émis.
De façon avantageuse, la détermination du couple peut être obtenue, pour un angle de rotation donné, notamment déterminé grâce à une position angulaire de référence, en soustrayant la valeur de calibration à la différence de positions angulaires calculée par les moyens de soustraction.
Selon une réalisation, les valeurs de calibration sont définies dans une table comprenant les différences DIFF calculées lors de la procédure de calibration en fonction d’un nombre de fronts comptés par au moins un moyen de comptage. En particulier, la table débute avec l’angle de référence.
Les valeurs DIFF de calibration peuvent être définies pour chaque front compté, ou pour un nombre entier de fronts comptés pour limiter le nombre de valeurs à calculer.
La table peut être enregistrée sous la forme d’une courbe, notamment en ayant été filtrée au préalable, par exemple par une moyenne mobile afin de la lisser. En variante, la table peut être utilisée telle quelle.
La courbe peut être enregistrée telle quelle, point par point, ou en étant divisée en sections angulaires pour limiter la place nécessaire en mémoire. En particulier, 360 sections correspondant chacune à 1° d’angle peuvent être envisagées, ou avantageusement 4 sections par paire de pôles magnétiques de la piste du codeur.
Chacune de ces sections peut être approximée par un segment de droite, représenté par deux paramètres, la pente et le décalage, permettant ensuite de calculer facilement la correction en fonction de l’angle sur la section concernée : erreur à corriger = (pente x angle) – décalage.
La courbe obtenue va ensuite servir à la correction de l’écart angulaire déterminé, en y retranchant, à un angle donné, notamment déterminé grâce à une position angulaire de référence, la valeur enregistrée à l’issue de la procédure de calibration.
Ainsi, cette procédure de calibration est simple à réaliser en ne nécessitant notamment pas de capteur angulaire et/ou de couple de référence ni de faire tourner le corps d’épreuve à vitesse constante. La correction apportée en fonctionnement est elle aussi simple à implémenter, notamment en ce qu’elle n’apporte aucun retard sur la détermination du couple en temps réel.
Selon une réalisation, la détermination du couple appliqué est réalisée dans un sens de rotation des organes, le couple de calibration résultant de la rotation des organes dans le sens de rotation inverse.
Cette solution est particulièrement avantageuse en relation avec la transmission d’un vélo, en ce qu’il est facile de faire un tour de pédalier sous couple nul grâce à la roue libre, en rétropédalage. Par ailleurs, la détermination en temps réel du couple appliqué est importante dans cette application en relation avec l’asservissement du moteur électrique d’assistance utilisant cette détermination.
La procédure de calibration peut être initiée au moyen d’une interface avec un utilisateur, par exemple au niveau du contrôleur de l’assistance d’un vélo électrique.
Selon une réalisation, la procédure de calibration est initiée, directement ou en demandant une action de l’utilisateur, par détection d’un état de rotation des organes.
L’état à détecter peut correspondre à une rotation sous un couple de calibration, connu ou sensiblement nul, par exemple correspondant à un sens de rotation des organes en détectant le rétropédalage pour un vélo. L’état peut également correspondre à un temps (depuis la dernière calibration ou après une révision), à un défaut de détermination du couple ou à une combinaison de ces paramètres.
PROCEDE DE DETECTION D’UN LIQUIDE INDESIRABLE DANS UN ENSEMBLE ELECTRIQUE. Cette invention s’applique par exemple à un véhicule automobile comprenant une batterie électrique de traction, mais peut s’appliquer à d’autres domaines techniques concernant un ensemble électrique.
Ce mode de réalisation est représenté à la où la mémoire 10 contient une logique de contrôle dotée d’un bloc logique 100 insérant périodiquement un marqueur de sécurité parmi les instructions de programme lorsqu’elles sont lues. Dans ce cas, le code stocké dans la mémoire 10 ne comprend pas de marqueur de sécurité et la logique de contrôle de la mémoire est modifiée de sorte à insérer les marqueurs de sécurité à la volée lors de la lecture des instructions de programme depuis la mémoire.