Procédé et dispositif de protection de l'intégrité de données transmises sur un réseau
La présente invention concerne un procédé et un dispositif de protection de l'intégrité de données transmises sur un réseau. Elle s'applique, en particulier, aux communications sur un réseau utilisant la technologie AFDX (Acronyme de Avionics FuII DupleX) dans le domaine aéronautique. Elle peut, cependant, être appliquée à tous les réseaux de communication, notamment ceux qui s'appuient sur le standard IEEE 802.3.
La technologie AFDX est la nouvelle technologie de référence dans les réseaux avioniques. Elle est utilisée pour échanger des données entre différents calculateurs avions. Elle s'appuie sur le transfert des messages avec commutation de trames Ethernet 802.3 via des commutateurs AFDX sur le réseau. Les équipements terminaux chargés de l'émission ou de la réception des données s'organisent autour des commutateurs chargés du transport de ces données.
C'est ainsi l'Ethernet commutée (en mode full-duplex) associé à des modifications spécifiques permettant de prendre en compte les contraintes temps réel et de certification du monde aéronautique qui a été sélectionné pour les nouveaux réseaux avioniques. AFDX est normalisé par la partie 7 de la norme ARINC (acronyme de « Aeronautical Radio, Incorporated », marque déposée) 664, norme qui prévoit, par ailleurs, les besoins ultérieurs, tels que la confidentialité ou la compatibilité avec le protocole IPv6. L1AFDX est ainsi basé sur des standards ouverts et répond aux objectifs d'un système de communication modulaire pour l'avionique. Il fournit des moyens de partage des ressources, de ségrégation des flux ainsi que le déterminisme et la disponibilité requise pour les certifications aéronautiques. La plupart des fonctions spécifiques d'AFDX sont au niveau liaison de données. Afin de répondre au besoin de disponibilité du réseau, un réseau
AFDX est physiquement redondant : chaque équipement terminal émet les messages sur deux canaux différents vers des ensembles indépendants de
commutateurs assurant tous deux la même transmission. Cela permet de réduire le nombre d'échecs de transmissions, et les problèmes liés à des pannes matérielles. Cette redondance permet également le "dispatch" (départ) de l'avion lorsqu'un, voire plusieurs, commutateur est en panne. La ségrégation robuste des flux de données s'appuie sur la réservation de bande passante au niveau d'un canal de communication nommé VL (acronyme de « virtual link » ou lien virtuel). Ces canaux sont associés à un émetteur et les données y sont transmises sur Ethernet en mode diffusion (en anglais « multicast »). Les commutateurs permettent la ségrégation des flux par un mécanisme de listes de contrôle d'accès (dont l'acronyme anglais est « ACL ») filtrant le trafic en fonction des adresses (Ethernet ou MAC, acronyme de « Médium Access Control » pour contrôle d'accès au médium), de manière similaire aux pare-feux utilisés en technologie IP (acronyme de « Internet Protocol »). Pour garantir le respect des contraintes temps réel de transmission de données, les liens virtuels AFDX sont associés à des spécifications de bande passante (ou « contrats »). Ces spécifications fixent la dimension maximale des trames transmises et le temps minimum entre deux trames. Ces deux paramètres permettent d'évaluer la bande passante maximale d'un lien virtuel donné. Le contrat est donc pris en charge par les commutateurs qui gèrent ces liens virtuels.
Déterminisme et temps de transmissions sont garantis par le contrat de bande passante associé à la commutation qui évite les collisions et les réémissions. La notion de lien virtuel autorise le calcul des latences de transmission maximales, ce qui permet d'effectuer la certification aéronautique du système. Dans la pratique, le réseau Ethernet est donc nécessairement sous-exploité pour permettre la mise en place de ces garanties.
La détection de la non-altération des données est faite via un contrôle de redondance cyclique, ou CRC (acronyme de « Cyclic Redundancy Check »), qui fait parti de la trame AFDX (802.3) et qui est spécifié par la norme 802.3.
Le mécanisme de CRC est utilisé de la manière suivante :
- à chaque émission d'une trame par un abonné, la couche « liaison », selon le modèle OSI, la couche MAC, de l'interface de communication est en charge de calculer le CRC qui est envoyé dans la trame ; - au niveau de chaque commutateur AFDX, pour chaque trame reçue, l'intégrité est vérifiée via le CRC ; si la trame est altérée, le commutateur la détruit ; sinon la trame est commutée vers le ou les destinataires ;
- au niveau de chaque destinataire, comme pour les commutateurs, pour toute trame reçue, l'intégrité est vérifiée via le CRC ; si la trame est altérée, le destinataire la détruit ; sinon elle est remontée aux fonctions de niveaux supérieures.
Le CRC est calculé avant la transmission et ajouté à la trame. A la réception, il est re-calculé, et comparé à celui reçu pour vérifier leur concordance. Le calcul du CRC est construit de manière à ce que les erreurs de certains types, comme celles dues aux interférences dans les transmissions, soient détectées avec une très grande probabilité.
Sur un réseau s'appuyant sur des trames 802.3 (Ethernet), la garantie qu'un message n'a pas été altéré est ainsi basée sur l'utilisation du
CRC qui donne une certaine probabilité de non-détection. Ce CRC est généré par division polynomiale, et s'appuie sur la théorie des codes (Code cyclique avec polynômes Générateurs, distance de
Hamming,...)
La qualité de couverture par le CRC est basée sur les hypothèses suivantes : - l'élément perturbateur (bruit) suit une loi de probabilité uniforme,
- le bruit est indépendant du message,
- le bruit peut être ponctuel.
Ce mécanisme de CRC donne une certaine confiance si ces hypothèses restent valides et, en particulier, si tous les éléments du réseau ne peuvent altérer les messages que de manière aléatoire.
En revanche, si on prend comme hypothèse que des équipements, tels que les commutateurs, ont connaissance du mécanisme de calcul du CRC1
qu'ils sont intelligents et qu'ils peuvent se comporter de manière malveillante, on peut supposer qu'ils savent élaborer des trames valides, avec des CRC corrects mais avec des données altérées. Cette hypothèse rend l'objectif d'utilisation du seul CRC 802.3 caduque pour des communications critiques. Actuellement, toute fonction avion qui veut se prémunir de ce type de problème (donnée corrompue non détectée) est obligée d'utiliser des moyens de contournement consistant à envoyer la donnée par deux chemins différents, puis comparaison des deux données reçues pour valider l'intégrité. Les deux chemins peuvent s'appuyer sur le même réseau mais, à aucun moment, les deux données ne doivent traverser le même équipement. Une autre technique consiste à envoyer une donnée sur le réseau et l'autre donnée avec une autre technologie de communication (ARINC 429, CAN1 acronyme de Car Area Network pour réseau local de voiture).
Chacune de ces techniques est coûteuse et complexe à mettre en œuvre.
La présente invention vise à remédier à ces inconvénients. A cet effet, selon un premier aspect, la présente invention vise un procédé de transmission de données sur un réseau, depuis une application émettrice à une application réceptrice, caractérisé en ce qu'il comporte : - une étape de codage des dites données, par ladite application émettrice, en mettant en œuvre une règle prédéfinie,
- une étape de détection d'altération d'au moins une donnée transmise, par ladite application réceptrice, en mettant en œuvre ladite règle prédéfinie, et, - en cas de détection d'altération d'une donnée, une étape de restauration de la donnée altérée.
Chaque donnée est ainsi protégée de bout en bout, les applications mettant en œuvre les règles prédéfinies de codage et de décodage, ce qui les rend indépendantes du moyen de communication utilisé sur le réseau. Un autre avantage de la mise en œuvre de la présente invention est que le choix du codage peut être adapté au type d'erreur envisagé et au niveau de confiance que l'on veut atteindre.
La présente invention permet ainsi d'obtenir une indépendance de vérification de l'altération d'un message sur un réseau utilisant la technologie
AFDX ou 802.3 (Ethernet). En s'appuyant sur un codage simple, on rend son implémentation possible sur des calculateurs d'avions ayant des performances limitées.
Selon des caractéristiques particulières, au cours de l'étape de codage, au cours de l'étape de détection d'altération et au cours de l'étape de restauration, on met en œuvre un contrôle de redondance cyclique.
Préférentiellement, le code est basé sur un CRC le plus dissemblable possible du CRC IEEE 802.3. Il permet de se protéger d'une altération aléatoire des données et, du fait qu'il n'est pas connu par les équipements actifs du réseau, ou commutateurs, rend caduque l'hypothèse d'une altération par ces équipements.
Selon des caractéristiques particulières, au cours de l'étape de codage et au cours de l'étape de détection d'altération, on met en œuvre un chiffrement.
Selon des caractéristiques particulières, ledit chiffrement est basé sur un code d'authentification MAC (acronyme de « Message Authentification Codes »). Selon des caractéristiques particulières, ledit chiffrement met en œuvre une fonction de hachage cryptographique.
Grâce à chacune de ces dispositions, on dispose d'une résistance plus forte à une corruption de type « malveillance » (décalage des données, concaténation de deux messages, XOR entre deux messages, etc.). Selon des caractéristiques particulières, le procédé comporte une étape de transformation K linéaire.
Selon des caractéristiques particulières, l'étape de transformation K linéaire met en œuvre une fonction « ou exclusif ».
Selon des caractéristiques particulières, le résultat de la fonction K linéaire est découpé en une pluralité de blocs qui sont inversés individuellement.
Selon des caractéristiques particulières, le procédé objet de la présente invention, tel que succinctement exposé ci-dessus met en œuvre une boîte d'expansion qui traite les blocs inversé par un contrôle de redondance cyclique. Selon un deuxième aspect, la présente invention vise un dispositif de transmission de données sur un réseau, depuis une application émettrice à une application réceptrice, caractérisé en ce qu'il comporte :
- un moyen de codage des dites données, par ladite application émettrice, en mettant en œuvre une règle prédéfinie, - un moyen de détection d'altération d'au moins une donnée transmise, par ladite application réceptrice, en mettant en œuvre ladite règle prédéfinie, et,
- un moyen de restauration de donnée adapté à restaurer une donnée altérée en cas de détection d'altération de ladite donnée. Les avantages, buts et caractéristiques particulières de ce dispositif étant similaires à ceux du procédé, tel que succinctement exposé ci-dessus, ils ne sont pas rappelés ici.
D'autres avantages, buts et caractéristiques particulières de la présente invention ressortiront de la description qui va suivre faite, dans un but explicatif et nullement limitatif, en regard des dessins annexés, dans lesquels :
- la figure 1 représente, schématiquement, une mise en œuvre d'un réseau AFDX pour la transmission de données applicatives,
- la figure 2 représente, schématiquement, une trame de données circulant sur le réseau illustré en figure 1 , - la figure 3 représente, schématiquement, une transmission de type connu sur un réseau AFDX,
- la figure 4 détaille un exemple de mise en œuvre de la présente invention en mettant en œuvre un réseau et un bus,
- la figure 5 représente, schématiquement, une mise en œuvre d'un codage au niveau applicatif,
- la figure 6 illustre, schématiquement, une trame de données circulant sur le réseau illustré en figure 5,
- la figure 7 représente, schématiquement, un mode de réalisation particulier du procédé objet de la présente invention,
- la figure 8 illustre, schématiquement, une trame de données circulant sur le réseau illustré en figure 7, - la figure 9 représente, schématiquement, un autre mode de réalisation particulier du procédé objet de la présente invention,
- la figure 10 illustre, schématiquement, une trame de données circulant sur le réseau illustré en figure 9 et
- les figures 11 et 12 représentent, sous forme de logigrammes, des étapes mises en œuvre dans deux variantes de réalisation du mode de réalisation particulier illustré en figure 9.
On observe, en figure 1 , deux terminaux 105 et 110 reliés, entre eux, par un réseau 115. Le terminal émetteur 105 met en œuvre une application émettrice 120 et le terminal récepteur 110 met en œuvre une application réceptrice 125. Le réseau 115 est de technologie AFDX. Dans cet exemple, l'application émettrice 120 envoie une donnée applicative à l'application réceptrice 125. A cet effet, l'application émettrice 120 transmet, à l'interface AFDX 130 du terminal 105, la donnée applicative 150 (voir figure 2).
L'interface AFDX 130 est en charge de rajouter un entête protocolaire 155, appelée « UDP/IP » à cette donnée applicative 150 et d'encapsuler le résultat dans une trame 160 conforme au standard 802.3. Cette trame 160 est formée d'un en-tête 165, des données formée de l'entête UDP/IP 155 et de la donnée applicative 150 et d'un contrôle de redondance cyclique CRC 170. L'entête 165 est utilisé pour identifier l'émetteur et le destinataire du message, tandis que le CRC 170 permet de vérifier l'intégrité de la trame.
Lors de la réception de la trame 160 par le terminal 110, son interface AFDX 135 vérifie l'intégrité de la trame 160 en mettant en œuvre le CRC 170. Après acceptation de la trame 160, l'interface 135 utilise l'entête protocolaire 155 pour extraire la donnée applicative 150 qui est transmise à l'application réceptrice 125.
La figure 3 présente une communication classique sur un réseau AFDX, le terminal 205 utilise un lien virtuel (ou « VL ») 215, pour envoyer des
données vers un terminal 210. Le terminal émetteur 205 met en œuvre une application émettrice 220 et le terminal récepteur 210 met en œuvre une application réceptrice 225. Les trames AFDX traversent deux interfaces AFDX 230 et 235 et deux commutateurs 240 en suivant le lien virtuel 215. Dans cette organisation, les commutateurs 240 peuvent altérer des trames AFDX, en modifiant les données et le CRC pour rendre la détection d'erreur impossible. Par exemple, si le terminal 205 est un écran de visualisation, une information de type vitesse peut être fausse et induire une erreur lors de sa lecture.
Dans la suite de la description, notamment dans les figures 4 à 10, dans un but de clarté, on a représenté uniquement les réseaux et non les chemins virtuels et les commutateurs qu'ils comportent.
La figure 4 détaille une mise en œuvre de la présente invention qui permet de détecter la corruption de la donnée applicative, à la réception d'une trame. On observe, en figure 4, deux terminaux 305 et 310 reliés, entre eux, par un lien virtuel sur un réseau AFDX 315. Le terminal émetteur 305 met en œuvre une application émettrice 320 et une interface AFDX 330 et le terminal récepteur 310 met en œuvre une application réceptrice 325 et une interface AFDX 335.
Dans ce mode de réalisation, deux types de technologie sont utilisés : un réseau AFDX 315 et un bus « ARINC 429 » 345. Le terminal 305 envoie le même message sur le lien virtuel du réseau AFDX 315, et sur le bus « ARINC 429 » 345. L'application réceptrice 325 du terminal 310 reçoit les deux messages et peut les comparer. S'ils sont identiques, l'application réceptrice 325 en utilise un, sinon elle les détruit. La figure 5 représente une solution mettant en œuvre un codage au niveau applicatif qui n'est pas connu par le réseau AFDX 415, c'est-à-dire par ses commutateurs. On observe, en figure 5, deux terminaux 405 et 410 reliés, entre eux, par un lien virtuel sur un réseau AFDX 415. Le terminal émetteur 405 met en œuvre une application émettrice 420 et une interface AFDX 430 et le terminal récepteur 410 met en œuvre une application réceptrice 425 et une interface AFDX 435. L'application émettrice 420 du terminal 405 code le message en mettant en œuvre une fonction de codage 440 puis transmet une
donnée applicative codée 450 (voir figure 6) à son interface AFDX 430. L'interface AFDX 430 rajoute l'entête protocolaire (UDP/IP) 455 à cette donnée 450 codée par la fonction de codage 440 et encapsuler le résultat dans une trame 460 conforme au standard 802.3. Cette trame 460 est formée de l'en-tête 465 802.3, de l'entête
UDP/IP protocolaire 455, de la donnée applicative 450 codée et du CRC 470. L'en-tête 465 802.3 est utilisé pour identifier l'émetteur et le destinataire du message, tandis que le CRC 470 permet de vérifier l'intégrité de la trame.
En réception, le terminal 410 reçoit cette trame et son interface AFDX 435 vérifie l'intégrité de la trame via le CRC 470. Après acceptation de la trame comme intègre, l'interface AFDX 435 utilise l'entête protocolaire 455 pour extraire la donnée applicative codée 450, et pour la transmettre à l'application réceptrice 425. L'application réceptrice 425 met en œuvre sa fonction de décodage 445 pour retrouver la donnée applicative 450 avant son utilisation. On décrit, dans la suite, deux modes de réalisation ainsi que les codages associés. Dans un premier mode de réalisation, illustré en figure 7, on utilise un contrôle de redondance cyclique applicatif. On observe, en figure 7, deux terminaux 505 et 510 reliés, entre eux, par un lien virtuel 515 sur un réseau AFDX. Le terminal émetteur 505 met en œuvre une application émettrice 520 et une interface AFDX 530 et le terminal récepteur 510 met en œuvre une application réceptrice 525 et une interface AFDX 535.Une fonction de calcul de CRC 540 fait partie intégrante de l'application émettrice 520 et une fonction de calcul de CRC 545 fait partie intégrante de l'application réceptrice 520. En émission, la fonction CRC 540 calcule la valeur du CRC (32 bits)
575 (voir figure 8), qui est rajoutée à la donnée applicative 550. Cette nouvelle donnée est ensuite transmise à la pile de communication qui se charge de l'émettre sur le réseau 515.
En réception, la fonction CRC 545 recalcule le CRC 575 et le compare au CRC reçu dans la trame 560. S'ils sont identiques, la donnée est dite « intègre » et le CRC 575 est enlevé afin d'obtenir la donnée applicative 550.
Ce CRC 575 est, autant que possible, différent du CRC 802.3 qui se base sur le polynôme générateur suivant :
Le choix du CRC 575 se base, lui aussi, sur un polynôme de degré 32, différent de celui du CRC 802.3 donné ci-dessus, mais qui garantit un code
CRC de distance de Hamming d'au moins 6. La théorie sur les codes correcteurs permet d'élaborer quatre CRC utilisables sur le réseau AFDX et basés sur des polynômes.
Ainsi, le CRC 575 utilisé a comme spécifications : - d'être indépendant, statistiquement, vis à vis du CRC 802.3 et
- d'avoir la plus grande distance minimale possible sur une donnée (formée de n bits) de la forme (donnée, crc(donnée)), où la longueur de la donnée est ≤ 700 octets et crc(donnée) une fonction de longueur 32 bits.
Dans le deuxième mode de réalisation, illustré en figure 9. On observe, en figure 9, deux terminaux 605 et 610 reliés, entre eux, par un lien virtuel 615 sur un réseau AFDX. Le terminal émetteur 605 met en œuvre une application émettrice 620 et une interface AFDX 630 et le terminal récepteur
610 met en œuvre une application réceptrice 625 et une interface AFDX 635.
Une fonction cryptographique 640 fait partie intégrante de l'application émettrice 620 et une fonction cryptographique 645 fait partie intégrante de l'application réceptrice 620.
On prend comme hypothèse que les commutateurs du réseau 615 peuvent se comporter comme des ennemis. Le contrôle de l'intégrité de niveau applicatif doit être indépendant, au sens méthode, du contrôle d'intégrité du réseau. A cet effet, on met en œuvre des techniques cryptographique et, préférentiellement, des codes d'authentifications de message (MAC). On crée ainsi un bloc d'authentification (le certificat) 675 (voir figure 10) qui se base sur la donnée applicative à transmettre 650 et sur une clé secrète. Le certificat est déterminé selon la formule c = h(m), avec m représentant le message (ici, la donnée applicative 650), et h une fonction de chiffrement utilisant une clé secrète.
A rémission, la donnée m est transformée en un message M qui est constitué d'une concaténation de la donnée 650 et du certificat c = h(m) 675. Le réseau 615 ne sait pas calculer la fonction h(m) car il ne connaît pas la clé secrète. La trame 660 illustrée en figure 10 comporte aussi l'entête protocolaire 655, l'entête 665 conforme au standard 802.3 et un contrôle de redondance cyclique CRC 670.
Le terminal récepteur 610 exécute le même calcul sur la donnée 650 et compare le MAC ainsi obtenu avec le MAC reçu. En cas de différence, le message est rejeté. Sinon, la donnée applicative 650 est exploitée par l'application réceptrice 625. En variante, en réception du message M, une fonction de déchiffrement extrait la donnée applicative m 650, connaissant la clé secrète utilisée. L'intégrité du message reçu est ainsi vérifiée.
Deux variantes de réalisation sont détaillées ci-dessous. Dans la première, on travaille avec un certificat de 32 bits et, dans la deuxième, avec un certificat de 64 bits, ce qui a pour avantage, par rapport à la première que :
- la probabilité de succès d'une attaque est divisée par 232,
- si une table de transformation est utilisée, son intégrité peut être vérifiée,
- le certificat est protégé par une protection supplémentaire (connue sous le nom d'expansion).
Dans la première variante de réalisation, la fonction h est constituée de plusieurs tâches illustrées en figure 11 :
- la première tâche 705 utilise un principe de hachage (en anglais « hash ») du message afin de générer une donnée de 32 bits, appelée condensât. On obtient ces 32 bits en mettant en œuvre un polynôme générateur qui effectue le hachage ;
- afin d'augmenter la dissymétrie de ces 32 bits obtenu au hachage, une tâche 710 de transformation K linéaire est utilisée et composée par un XOR. Elle est composée par une clé K1 avant les S-boîtes ; - ensuite une tâche 715 de transformation basée sur une fonction hautement non-linéaire est utilisée afin de crypter le résultat de la tâche 710. La tâche 715 utilise les concepts des S-boîtes qui permettent, ici, une inversion
modulaire. Les S-boîtes travaillent sur un hachage de huit bits donnant quatre blocs qui sont inversés individuellement par une S-boîte. La non linéarité est obtenue par un choix d'une fonction basée sur une inversion modulaire dont les non-linéarités sont maximales. Cette fonction est, par exemple, la suivante : f associe à a(x) : b(x)= ((1/ a(x)). mod t (x) avec t(x)= xβ+x4+x3+x+1
La S-boîte représentant cette fonction peut être soit implémentée par un algorithme, soit par l'utilisation d'une table prédéfinie.
Dans la deuxième variante de réalisation, la fonction h est constituée de plusieurs taches illustrées en figure 12 :
- une première tâche 805 utilise un principe de hachage du message afin de générer une donnée de 32 bits. Le principe retenu est d'obtenir ces 32 bits par un polynôme générateur qui effectue le hachage ;
- afin d'augmenter la dissymétrie de ces 32 bits obtenus au hachage, une tâche 810 de transformation K linéaire est utilisée et composée par un
XOR ;
- cette nouvelle valeur est découpée en quatre blocs de huit bits qui sont inversés individuellement par une S-boîte, basé sur une inversion modulaire dont les non-linéarités est maximale. Cette fonction est la suivante : f associe à a(x) : b(x) = ((1/ a(x)) . mod t (x).
A partir de l'obtention cette nouvelle valeur, au lieu d'utiliser uniquement des S-boîtes, comme dans la première variante de réalisation, une boîte d'expansion 820 « EXP » suit les S boîtes 815. Cette expansion est obtenue par un contrôle de redondance cyclique CRC dont les non-linéarités sont maximales. On obtient ainsi un CRC sur 32 bit, qui est raccourci pour obtenir un code de longueur 16 bits.
Préférentiellement, on fusionne ces deux boîtes et on obtient ainsi une boîte unique qui peut être soit implémentée par un algorithme, soit par l'utilisation d'une table prédéfinie. Dans chacun des modes de réalisation, lorsque l'on détecte une altération de la donnée applicative, on procède à sa restauration. Selon les modes de réalisation, cette restauration peut être réalisée par une
retransmission de la donnée altérée, depuis l'application émettrice à l'application réceptrice, après requête de cette dernière, soit par utilisation des contrôles de redondance cycliques communs aux applications émettrices et réceptrices, lorsqu'ils sont prévus pour permettre la correction des erreurs de transmission.
On observe que la mise en œuvre de deux chemins, comme illustré en figure 3, peut être combinée avec la mise en œuvre de la présente invention, par exemple pour constituer une copie de sécurité (en anglais « backup »).