FR 2881905 A1 20060811 FR 0501358 A 20050210 2881905 1 La présente invention concerne un système de téléchargement d'un fichier dans un calculateur embarqué à bord d'un véhicule automobile et un procédé de téléchargement pour la mise en oeuvre de ce système. On connaît déjà dans l'état de la technique, des procédés et des 5 systèmes de téléchargement de ce type. On pourra par exemple se reporter au document FR-A-2 719 924 au nom de la demanderesse. Ce document décrit effectivement un procédé de déverrouillage de l'accès d'un outil de téléchargement d'un fichier à un calculateur de pilotage du fonctionnement d'au moins un organe fonctionnel d'un véhicule automobile, dans lequel le fichier à télécharger comprend notamment des informations d'indentification du calculateur dans lequel il doit être téléchargé et une clef d'accès à celui-ci. Le calculateur comporte une unité à microprocesseur associée à des moyens de mémorisation de données dans lesquels sont stockées des informations d'identification du calculateur et une clef d'accès à celui-ci. Ce procédé comporte alors différentes étapes de transmission d'informations entre l'outil de téléchargement et le calculateur, de calcul de premier et de second codes de déverrouillage de l'accès au calculateur et de comparaison de ces codes, pour autoriser l'accès de l'outil de téléchargement au calculateur en cas de correspondance entre ces codes. Cependant, une telle fonction de téléchargement qui est utilisée par exemple aujourd'hui dans les réseaux après-vente de certains constructeurs de véhicules automobiles, peut être directement concernée par un conflit potentiel résultant des exigences qui vont apparaître contradictoires entre le nouveau règlement européen relatif à la concurrence concernant la maintenance automobile et l'obligation faite aux constructeurs de garantir l'intégrité des logiciels embarqués à bord des véhicules, comme par exemple ceux liés aux dispositifs d'antivol, aux systèmes de sécurité et de dépollution, etc... On sait en effet par exemple que la directive CE n 1400/2002 entrée en vigueur en octobre 2002 dans le but de favoriser la concurrence dans le domaine de la maintenance automobile, fixe un certain nombre d'exigences pour les constructeurs automobiles, qui les obligent notamment à autoriser tous les réparateurs indépendants intéressés à avoir un accès complet à toutes les 2881905 2 informations techniques, à tous les systèmes de diagnostic et autres, nécessaires à la réparation et à l'entretien des véhicules automobiles. Pour bien comprendre la problématique posée, il convient de préciser de manière succincte les différentes étapes nécessaires lors d'une opération de téléchargement d'un fichier dans un calculateur. Dans un premier temps, l'outil de téléchargement pointe sur le fichier à télécharger après avoir identifié le calculateur. L'outil demande alors au calculateur de générer un nombre aléatoire. En fonction de ce nombre, de la clef disponible dans le fichier à télécharger et des algorithmes de protection codés dans l'outil, ce dernier calcule un résultat qu'il transmet au calculateur pour contrôle. En parallèle, le calculateur calcule le résultat attendu en fonction du nombre aléatoire qu'il a transmis vers l'outil, des algorithmes de protection internes et de la clef inscrite à la fabrication du produit, dans une partie de sa mémoire non lisible depuis un outil externe. Puis le calculateur compare le résultat calculé en interne à celui reçu de l'outil et autorise le téléchargement du code uniquement dans le cas d'une égalité. La mémoire du calculateur est ensuite effacée et le code logiciel est téléchargé. Enfin, une étape de contrôle et de marquage de cette opération est effectuée dans le calculateur. Mais si l'on analyse cette façon de procéder, on constate que l'ensemble des constituants de la fonction, c'est-à-dire le fichier à télécharger, les clefs et les algorithmes de protection du code, de même que les procédures, sont disponibles dans l'outil de téléchargement. On imagine aisément que l'accès à ce type d'informations peut entraîner une prolifération des manipulations de fichiers, permettant notamment de modifier les performances du moteur en changeant la calibration du logiciel. De telles manoeuvres peuvent alors avoir des conséquences sur la longévité du moteur, mais également avoir des répercutions autres concernant par exemple la conformité des véhicules. Le but de l'invention est donc de résoudre ces problèmes. A cet effet, l'invention a pour objet un système de téléchargement d'un fichier dans un calculateur embarqué à bord d'un véhicule automobile, 2881905 3 caractérisé en ce qu'il comporte un serveur distant sécurisé, dans lequel est stocké le fichier à télécharger, raccordé par un réseau de transmission d'informations à un outil de téléchargement local, adapté pour être raccordé au calculateur du véhicule et muni de moyens d'échange d'informations avec le calculateur et le serveur distant. Suivant d'autres caractéristiques: - le réseau de transmission d'informations est un réseau de type Internet; - l'outil de téléchargement local est adapté pour être raccordé au 10 calculateur à travers un réseau multiplexé de transmission d'informations embarqué à bord du véhicule; l'outil de téléchargement est adapté pour être raccordé au calculateur à travers une ligne série K du véhicule. Selon un autre aspect, l'invention a également pour objet un procédé de téléchargement d'un fichier dans un calculateur embarqué à bord d'un véhicule automobile, pour la mise en oeuvre du système selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte les étapes suivantes: a) initialisation de la communication entre l'outil et le calculateur et 20 émission par l'outil d'une demande d'identification du calculateur; b) transmission par le calculateur à destination de l'outil de son identification; c) initialisation de la communication entre l'outil et le serveur et transmission par l'outil à destination du serveur, de l'identification du calculateur 25 et de la signature de l'outil; d) requête adressée par le serveur à l'outil pour faire générer un nombre aléatoire au calculateur; e) requête par l'outil au calculateur de génération de ce nombre aléatoire; f) génération et transmission par le calculateur à destination de l'outil du nombre aléatoire; g) transmission par l'outil à destination du serveur du nombre aléatoire généré par le calculateur; 2881905 4 h) génération et transmission par le serveur à destination de l'outil d'un premier code de déverrouillage correspondant; i) transmission par l'outil à destination du calculateur de ce premier code; j) comparaison par le calculateur de ce premier code avec un second code généré par celui-ci pour valider ou invalider le téléchargement du fichier, en cas de concordance ou de discordance entre les codes; k) transmission d'une information de validation ou d'invalidation du téléchargement du calculateur vers l'outil! local; I) transmission de cette information correspondante de l'outil local vers le serveur; m) si le téléchargement est validé, transmission par le serveur du fichier à télécharger sur l'outil et traçage de cette opération de téléchargement; n) envoi d'un accusé de réception du fichier par l'outil à destination du 15 serveur; o) émission par l'outil d'une requête d'effacement de la mémoire du calculateur et émission du fichier à télécharger; p) acquittement par le calculateur de la requête d'effacement et de chaque requête de données reçues vers l'outil après contrôle de l'intégrité des 20 données; q) transmission par l'outil à destination du calculateur d'une demande d'autocontrôle des données reçues; r) mise en oeuvre de l'autocontrôle par le calculateur et transmission par celui-ci à destination de l'outil de la réponse correspondante; et s) transmission par l'outil de données de marquage de cette opération de téléchargement et acquittement par le calculateur de la réception de celles-ci. L'invention sera mieux comprise à la lecture de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés, sur lesquels: - la Fig.1 représente un schéma synoptique illustrant la structure et le fonctionnement d'un système de téléchargement de l'état de la technique; - la Fig.2 illustre la structure et le fonctionnement d'un système de téléchargement selon l'invention; et 2881905 5 - la Fig.3 illustre un chronogramme représentant les différentes étapes d'un procédé de téléchargement selon l'invention. On a en effet illustré sur la figure 1, un système de téléchargement de l'état de la technique, utilisant un outil de téléchargement désigné par la référence générale 1, pour charger des données dans un calculateur désigné par la référence générale 2, embarqué par exemple à bord d'un véhicule automobile. L'outil de téléchargement est alors relié au calculateur à travers un réseau multiplexé de transmission d'informations embarqué à bord du véhicule de type CAN par exemple ou une ligne série K de ce véhicule, désigné par la référence générale 3. L'outil de téléchargement stocke alors le fichier à télécharger désigné par la référence générale 4, celui-ci contenant des informations d'identification du calculateur et une clef, de même que le code à télécharger. Des moyens de téléchargement 5 de cet outil sont associés à des algorithmes de protection du code désignés par la référence générale 6, pour permettre de transmettre le fichier vers des moyens correspondants 7 du calculateur, également associés à des algorithmes de protection du code 8 et à une clef prédéterminée 9, pour permettre de récupérer le code téléchargé. Des renseignements complémentaires concernant la procédure mise en oeuvre pour assurer le téléchargement d'un fichier grâce à un tel système, pourront être trouvés dans le document FR-A-2 719 924, mentionné précédemment. Pour résoudre les problèmes décrits précédemment, on utilise un système de téléchargement tel qu'illustré sur la figure 2. Ce système de téléchargement comporte alors un serveur distant sécurisé désigné par la référence générale 10, dans lequel est stocké le fichier à télécharger désigné par la référence générale 11 et qui est raccordé par un réseau de transmission d'informations désigné par la référence générale 12, par exemple de type Internet, à un outil de téléchargement local, désigné par la référence générale 13, adapté pour être raccordé au calculateur du véhicule désigné par la référence générale 14 et muni de moyens d'échanges d'informations avec le calculateur et le serveur distant. On notera que l'outil de téléchargement local 13 est adapté pour être raccordé au calculateur 14 à travers par exemple un réseau multiplexé de transmission d'informations embarqué à bord du véhicule comme par exemple de type CAN ou autres ou une ligne série K, désigné par la référence générale 15 sur cette figure. En fait, ce système permet die scinder les moyens de téléchargement en deux parties, à savoir une première partie dans le serveur sécurisé 10 contenant les éléments sensibles tels que par exemple la clef et une seconde partie dans l'outil de téléchargement local 13 contenant les organes non sensibles nécessaires à la communication avec le calculateur 14 à télécharger, et qui peut alors être accessible librement. Le procédé de téléchargement mis en oeuvre dans un tel système est illustré sur la figure 3, dans laquelle les transitions sont décrites dans le tableau suivant. TRANSITION ACTION REALISEE COMMENTAIRES Transition 1 L'outil local initialise la communication avec le calculateur et lui demande de s'identifier Transition 2 Le calculateur transmet à l'outil Le calculateur possède son local son identification identification dans sa mémoire (il s'agit de références de type constructeur). Le numéro VIN véhicule sera également transmis pour la traçabilité de l'opération. Transition 3 L'outil local initialise la Chaque outil dispose d'une communication avec le serveur signature propre afin de et lui transmet l'identification permettre la traçabilité de reçue du calculateur ainsi que l'opération sa propre signature Transition 4 Le serveur demande à l'outil local de faire générer un nombre aléatoire au calculateur 2881905 7 Transition 5 L'outil local demande au calculateur de générer un nombre aléatoire Transition 6 Le calculateur retourne à l'outil local le nombre aléatoire généré Transition 7 L'outil local transmet au serveur le nombre aléatoire reçu de la part du calculateur Transition 8 Le serveur transmet à l'outil En fonction du nombre aléatoire local le résultat d'un calcul reçu, des algorithmes de protection de l'accès au code et de la CLEF présente dans le fichier à télécharger, le serveur calcule le résultat attendu par le calculateur Transition 9 L'outil local transmet le résultat reçu au calculateur Transition 10 Le calculateur transmet vers Le calculateur a effectué en l'outil local la réponse à la parallèle, le même calcul (mais demande de téléchargement en fonction de ses algorithmes, du nombre aléatoire généré et de la CLEF dont il dispose en mémoire). Il compare le résultat calculé en interne avec le résultat reçu et transmet: - une autorisation de télécharger le code applicatif si les deux résultats sont identiques. 2881905 8 - Un refus de téléchargement si les deux résultats sont différents. Transition 11 L'outil local transmet au serveur la réponse du calculateur Transition 12 Le serveur transfère le fichier à Par rapport à l'état de la télécharger dans l'outil local et technique, le fichier transmis trace cette opération. ne contient pas la CLEF permettant de calculer le résultat attendu par le calculateur après génération du nombre aléatoire. Transition 13 L'outil local envoie un accusé Le mécanisme de traçabilité est de réception au serveur. détaillé par la suite. Transition 14 L'outil local émet les requêtes Ces transitions (14 et 15) se d'effacement de la mémoire et répètent jusqu'à ce que la de transfert du code logiciel totalité du fichier ait été vers le calculateur transmis. Transition 15 Le calculateur acquitte les requêtes vers l'outil local' après contrôle de l'intégrité des données. Transition 16 L'outil local transmet vers le Le calculateur vérifie la calculateur la demande mémoire dans laquelle il a d'autocontrôle du code reçu stocké les données reçues Transition 17 Le calculateur transmet vers - Si la vérification est l'outil local la réponse à la correcte, le calculateur demande d'autocontrôle donne son accord pour exécuter la suite de la 2881905 9 procédure - Si la vérification n'est pas correcte, il interrompt la procédure (le code reçu reste inactif). Transition 18 L'outil local transmet les Ces données vont constituer la données de marquage de nouvelle identification du l'opération contenu logiciel du calculateur (pour un éventuel autre téléchargement) Transition 19 Le calculateur acquitte la trame Le calculateur déclare que le de données reçues code reçu est valide et effectue un Reset pour le prendre en compte. On conçoit alors que grâce à un tel procédé, la clef nécessaire au déverrouillage du composant donnant accès au code, ne circule jamais sur les différents supports, à savoir le réseau Internet, le réseau multiplexé embarqué ou la liaison série K, ce qui garantit que celle-ci ne puisse pas être interceptée. Il en est de même pour les algorithmes de protection du code. Ainsi, un fichier temporaire créé sur l'outil local ne contient pas la clef, ce qui permettrait par exemple à ce logiciel d'être téléchargé sur un calculateur après altération du code, comme ce serait le cas par une personne qui aurait intercepté le fichier et qui souhaiterait le réinjecter après modification par exemple de paramètres. De plus, ce procédé et ce système permettent d'améliorer la traçabilité des opérations. En effet, ils permettent de pouvoir toujours fournir le bon fichier à 15 télécharger à une demande client. Le mécanisme est alors le suivant: - en fonction de l'identification du logiciel en mémoire dans le calculateur, tel que déterminé par les informations d'identification, le serveur est toujours capable de savoir s'il dispose dans sa base de données, d'un logiciel plus récent strictement compatible. Il est alors parfaitement capable de sélectionner et de distribuer ce fichier. En analysant ce procédé et ce système, on s'aperçoit également qu'il 5 n'existe plus d'échange entre le serveur et l'outil local à partir des transitions 12 et 13 de la figure 3. Ainsi, si le processus de téléchargement est interrompu lors des transitions suivantes, le serveur ne dispose plus de moyens de s'en apercevoir. De façon légitime, ce serveur va alors considérer que le logiciel embarqué à bord du véhicule en est à la version n+1, alors que le processus a été interrompu et qu'il n'existe plus de logiciel applicatif valide dans la mémoire du calculateur à ce moment là. Dans un tel cas, le calculateur n'est plus fonctionnel et la seule fonction qu'il soit en mesure de réaliser est de se télécharger à nouveau. En effet, tant que le calculateur n'a pas reçu les données de marquage de l'opération liée à la transition 18, avec les transitions précédentes franchies avec succès, il ne considère pas les données comme valides et ne peut donc pas utiliser ces données de marquage comme prochaine identification de la version logicielle n+1. Ainsi, en cas de connexion ultérieure, l'identification du calculateur laisse apparaître une version logicielle à l'état n, qui est le dernier état valide connu et inscrit en mémoire, autorisant de ce fait le téléchargement de la version n+1. Ceci permet alors de garantir que l'on est donc bien toujours en mesure de livrer le bon logiciel attendu par le calculateur d'un véhicule. Un autre aspect de la traçabilité d'un tel procédé et d'un tel système est de permettre aux constructeurs de véhicules de tracer ce qui est assemblé sur les véhicules qu'ils produisent. Ceci n'est pas toujours le cas aujourd'hui. En effet, du fait que la mise à jour des logiciels est aujourd'hui réalisée en local, il :30 n'existe pas de réelle traçabilité archivée par les constructeurs. Avec le procédé selon l'invention, un constructeur est en mesure de tracer par véhicule, à partir du numéro d'identification identifiant un véhicule unique, un historique de mise à jour dans une base de données et d'en tirer ainsi un retour d'expérience utilisable sans retraitement manuel. 2881905 11 Le constructeur peut alors fournir sur demande la composition logicielle d'un véhicule en circulation comme cela peut par exemple être exigé dans le cadre de l'application de la législation de certains pays. De plus, il n'est pas non plus nécessaire de modifier la procédure de téléchargement déjà codée dans les calculateurs de véhicules, ceci ayant pour principal avantage de permettre de fonctionner avec l'ensemble des véhicules déjà commercialisés et ne pas imposer de surcoût de développement lié à la déstandardisation de la procédure connue des fournisseurs de calculateurs. Cependant, ceci permet également de fonctionner avec l'ensemble des véhicules déjà commercialisés. En effet, dans le cas où une nouvelle application serait mise en service pour les organes en développement, celle-ci ne pourrait bénéficier aux anciens véhicules vendus, que dans la mesure où l'on déciderait de les moderniser. Le coût associé à une telle opération risquerait en effet d'être dissuasif compte-tenu du fait que la procédure de téléchargement d'un calculateur n'est pas contenue dans le logiciel applicatif (celui qui est justement mis à jour par l'opération de téléchargement et qui sert par exemple, à faire fonctionner le moteur), mais dans le BOOT du calculateur qui n'est pas modifiable par des outils de constructeurs. Bien entendu, d'autres modes de réalisation de l'invention encore peuvent être envisagés. 2881905 12 REVENDICATIONS 1. Système de téléchargement d'un fichier (11) dans un calculateur (14) embarqué à bord d'un véhicule automobile, caractérisé en ce qu'il comporte un serveur distant sécurisé (10), dans lequel est stocké le fichier à télécharger (11), raccordé par un réseau de transmission d'informations (12) à un outil de téléchargement local (13), adapté pour être raccordé au calculateur (14) du véhicule et muni de moyens d'échange d'informations avec le calculateur et le serveur distant. 2. Système selon la revendication 1, caractérisé en ce que le réseau de transmission d'informations (12) est un réseau de type Internet. 3. Système selon la revendication 1 ou 2, caractérisé en ce que l'outil de téléchargement local (13) est adapté pour être raccordé au calculateur (14) à travers un réseau multiplexé de transmission d'informations (15) embarqué à bord du véhicule. 4. Système selon la revendication 1 ou 2, caractérisé en ce que l'outil de téléchargement local (13) est adapté pour être raccordé au calculateur (14) à travers une ligne série K (15) du véhicule. 5. Procédé de téléchargement d'un fichier dans un calculateur embarqué à bord d'un véhicule automobile, pour la mise en oeuvre du système selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comporte les étapes suivantes (Fig. 3) : a) initialisation de la communication entre l'outil (13) et le calculateur (14) et émission par l'outil (13) d'une demande d'identification du calculateur (14) ; b) transmission par le calculateur (14) à destination de l'outil (13) de son identification; c) initialisation de la communication entre l'outil (13) et le serveur (10) et transmission par l'outil (13) à destination du serveur (10), de l'identification du calculateur (14) et de la signature de l'outil (13) ; d) requête adressée par le serveur (10) à l'outil (13) pour faire générer un nombre aléatoire au calculateur (14) ; e) requête par l'outil (13) au calculateur (14) de génération de ce nombre aléatoire; 2881905 13 f) génération et transmission par le calculateur (14) à destination de l'outil (13) du nombre aléatoire; g) transmission par l'outil (13) à destination du serveur (10) du nombre aléatoire généré par le calculateur (14) ; h) génération et transmission par le serveur (10) à destination de l'outil (13) d'un premier code de déverrouillage correspondant; i) transmission par l'outil (13) à destination du calculateur (14) de ce premier code; j) comparaison par le calculateur (14) de ce premier code avec un second code généré par celui-ci pour valider ou invalider le téléchargement du fichier (11), en cas de concordance ou de discordance entre les codes; k) transmission d'une information de validation ou d'invalidation du téléchargement du calculateur (14) vers l'outil local (13) ; I) transmission de cette information correspondante de l'outil local (13) vers le serveur (10) ; m) si le téléchargement est validé, transmission par le serveur (10) du fichier à télécharger (11) sur l'outil (13) et traçage de cette opération de téléchargement; n) envoi d'un accusé de réception du fichier (11) par l'outil (13) à destination du serveur (10) ; o) émission par l'outil (13) d'une requête d'effacement de la mémoire du calculateur (14) et émission du fichier (11) à télécharger; p) acquittement par le calculateur (14) de la requête d'effacement et de chaque requête de données reçues vers l'outil (13) après contrôle de l'intégrité des données; q) transmission par l'outil (13) à destination du calculateur (14) d'une demande d'autocontrôle des données reçues; r) mise en oeuvre de l'autocontrôle par le calculateur (14) et transmission par celui-ci à destination de l'outil (13) de la réponse 30 correspondante; et s) transmission par l'outil (13) de données de marquage de cette opération de téléchargement et acquittement par le calculateur (14) de la réception de celles-ci.