La première faille d'interface utilisateur qui a contribué à l'abattage désastreux du vol 655 d'Iran Air s'est produite peu après le décollage de l'avion de ligne de l'aéroport international iranien de Bandar Abbas. Hier comme aujourd'hui, tous les grands avions du monde sont équipés d'un dispositif appelé IFF (identification ami ou ennemi). Il s'agit d'un transpondeur radio qui répond aux demandes par une série de codes décrivant si l'avion est civil ou militaire, et de quel type d'avion il s'agit.
Le vol 655 était équipé d'un IFF qui a correctement indiqué qu'il s'agissait d'un avion de ligne civil. Peu après le décollage, le Vincennes a entamé un interrogatoire grâce à son IFF et a reçu la confirmation qu'il s'agissait d'un avion de ligne civil.
Le problème réside dans le fonctionnement de la console IFF d'Aegis sur le Vincennes. Les opérateurs arrimaient à de nouveaux contacts (les avions à identifier) à Aegis pour le suivi en utilisant un contrôleur pour déplacer un curseur sur le contact, puis en appuyant sur un bouton. Une fois arrimé, le contact était suivi par Aegis. Mais cela à condition que l'opérateur ne prenne des mesures supplémentaires pour asservir le curseur à ce contact car le curseur ne le suivait pas.lorsque celui-ci s’éloignait.
Dans les conditions de séparation du curseur du contact, l'IFF d'Aegis continuerait à émettre des requêtes IFF correspondant à une position précédente du contact jusqu'à ce que l'opérateur déplace à nouveau le curseur. Dans le cas du vol 655, l'opérateur avait procédé à l’arrimage du contact, mais sans asservir le curseur pour le suivre. Ainsi, alors que le vol 655 s'éloignait, le Vincennes continuait à envoyer des requêtes IFF vers la piste de laquelle il avait décollé.
Le prochain avion à décoller sur cette piste était un chasseur militaire iranien F-14. Le curseur n'est resté qu'environ 90 secondes sur la piste, mais cela a été suffisant pour que le Vincennes reçoive une réponse IFF correspondant à un chasseur militaire. Le vol 655 a donc été reclassé de contact inconnu à un contact potentiellement hostile. Lorsque le capitaine et l'équipage du Vincennes ont regardé leurs écrans, à partir de ce moment, ils ont vu ce contact se dirigeant vers eux en étant étiqueté comme un chasseur F-14.
Le problème suivant vient de la façon dont Aegis transmettait les données à l'équipage. L'ensemble du système était conçu autour d'écrans. Chaque membre de l'équipage disposait de son propre écran pour gérer les données dont il était responsable. Les consoles de ces membres d'équipage transmettaient ensuite les données à un ensemble de grands écrans, que le capitaine et les officiers supérieurs utilisaient pour garder une vue d'ensemble.
Dans le cas de la version originale d'Aegis, les grands écrans affichaient la position et le cap de tous les contacts suivis, mais ils n'indiquaient pas l'altitude. Ce point est essentiel, car l'altitude, ou plus précisément le changement d'altitude, fournit des indices sur l'intention d'un contact suivi. Si un avion se dirige vers une potentielle cible mais monte, il y a peu de chances qu'il ait l'intention de l’attaquer. En revanche, s'il plonge vers cette dernière, il s'agit d'un profil d'attaque classique.
En regardant ce contact se diriger vers son navire, le capitaine du Vincennes ne pouvait pas dire au premier coup d'œil s'il s'agissait d'une plongée ou d'une ascension. Cette information était disponible, mais seulement sur les petits écrans des opérateurs individuels, et non sur les grands écrans d'affichage. Il lui était donc difficile de juger correctement de l'intention du contact.
Alors que le vol 655 se rapprochait, le commandant de bord du Vincennes s'est rendu compte qu'il devait savoir si l'avion était en train de monter ou de plonger. Il a donc demandé cette information, et c'est là que s'est produite la troisième et dernière défaillance de l'interface utilisateur.
L'une des caractéristiques de l'Aegis était sa capacité à fournir une vue unifiée des données provenant des capteurs de plusieurs navires. Tous les navires d'un groupe de travail disposaient d’une liaison de données communes. Si plusieurs navires s’arrimaient au même contact, Aegis triait automatiquement les rapports et les fusionnait en un seul contact suivi, visible par les opérateurs de tous les navires reliés.
Pour faciliter l'identification des contacts suivis, Aegis attribuait à chaque nouveau contact un numéro de suivi à quatre chiffres. Lorsque plusieurs vaisseaux suivaient le même contact, leurs systèmes locaux lui attribuaient des numéros de suivi différents. Aegis triait ensuite les différents contacts, choisissait un numéro de suivi officiel et rejetait les autres numéros de suivi.
Mais ce fonctionnement posait deux problèmes d'interface utilisateur. Tout d'abord, les numéros de suivi mis au rebut étaient recyclés : ils étaient réintroduits dans le système, prêts à être attribués à de nouveaux contacts. Secundo, lorsqu'un contact voyait son numéro de suivi modifié par Aegis, il n'y avait pas d'avertissement évident. Le numéro changeait simplement sur les écrans.
Lorsque le vol 655 a décollé, il a été arrimé au Vincennes et son escorte, le destroyer USS Sides. Le Vincennes lui a attribué le numéro de suivi 4474 et le 4131 au Sides. Aegis unifia les contacts sous le numéro 4131. Le numéro 4474 était alors disponible pour être réutilisé et Aegis l'attribua donc à un bombardier américain A-6, qui se trouvait être en train de descendre.
Quelques instants avant de décider de tirer, le commandant de bord du Vincennes a demandé un rapport d'altitude sur l'avion de ligne. Mais il ne s'est pas rendu compte que le numéro de suivi de l'avion avait changé. Il pensait qu'il s'agissait toujours du numéro 4474, le numéro que son navire lui avait attribué à l'origine. Il a donc demandé un rapport sur le 4474 et le membre d'équipage à qui il l'a demandée a composé la séquence 4-4-7-4 dans sa console. Cela lui a indiqué que le contact était en train de descendre rapidement.
En réalité, l’Iran Air 655 n'était pas en train de descendre. Il montait depuis qu'il avait quitté Bandar Abbas. Mais à un moment crucial, les opérateurs d'Aegis observaient un tout autre avion. Le capitaine du Vincennes a alors donné l'ordre de tirer et le reste relève désormais de l’histoire.
Le rapport de la marine reproche à l'équipage de ne pas fait un usage correct du système. Il faut néanmoins accorder aux opérateurs le fait qu’il n'y a pas de situation plus stressante que le combat. Et les tares mises en avant dans la conception de cette interface utilisateur n’étaient pas pour les aider en pareilles circonstances. Grosso modo, le tableau rappelle l’importance des rôles IT en charge de la programmation des systèmes embarqués critiques.
[Tweet] <blockquote class="twitter-tweet"><p lang="en" dir="ltr">🔸 Iranians have marked the 35th anniversary of the US downing of Iran Air Flight 655 in the Persian Gulf by showering the location of the tragic incident with flowers. <a href="https://t.co/MmPYf6lBw9">https://t.co/MmPYf6lBw9</a> <a href="https://t.co/pKJIQaZ2xA">pic.twitter.com/pKJIQaZ2xA</a></p>— 🇮🇷 Rydro | عباس 🕋⚔ (@Rydro313) <a href="https://twitter.com/Rydro313/status/1675821259634999296?ref_src=twsrc%5Etfw">July 3, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script> [/Tweet]
Sources : UC Berkeley, U Standford
Et vous ?
Avez-vous conçu des interfaces utilisateurs pour systèmes embarqués critiques comme ceux de l’avionique ? Sinon sur quels systèmes avez-vous travaillé ou participé au développement ? Partagez vos anecdotes