Aller au contenu

Utilisateur:Yopai/Principe de robustesse

Une page de Wikipédia, l'encyclopédie libre.

En informatique, le principe de robustesse est une ligne directrice de conception de logiciel formulé ainsi : « soyez conservateur dans ce que vous faites, soyez libéral dans ce que vous acceptez des autres ». Il est souvent reformulé « soyez conservateur dans ce que vous envoyez, soyez libéral dans ce que vous acceptez ». Le principe est également connu sous le nom de loi de Postel, du nom de Jon Postel, qui a utilisé cette formulation dans une première spécification de TCP.

En d'autres termes, les programmes qui envoient des messages à d'autres machines (ou à d'autres programmes sur la même machine) doivent être entièrement conformes aux spécifications, mais les programmes qui reçoivent des messages doivent accepter des entrées non conformes tant que la signification est claire.

Chez les programmeurs, pour produire des fonctions compatibles, le principe est aussi connu sous la forme : être contravariant dans le type d'entrée et covariant dans le type de sortie.

Interprétation

[modifier | modifier le code]

[rfc:1122 La RFC 1122] (1989) développe le principe de Postel en recommandant aux programmeurs de « supposer que le réseau est rempli d'entités malveillantes qui enverront des paquets conçus pour avoir le pire effet possible ». Les protocoles devraient permettre l'ajout de nouveaux codes pour les champs existants dans les futures versions des protocoles en acceptant les messages avec des codes inconnus (éventuellement en les enregistrant). Les programmeurs devraient éviter d'envoyer des messages avec des « fonctionnalités de protocole légales mais obscures » qui pourraient révéler des déficiences dans les récepteurs, et concevoir leur code « non seulement pour survivre à d'autres hôtes au comportement inapproprié, mais aussi pour coopérer pour limiter la quantité de perturbations que ces hôtes peuvent causer au système partagé de communications ». [1]

En 2001, Marshall Rose a caractérisé plusieurs problèmes de déploiement lors de l'application du principe de Postel dans la conception d'un nouveau protocole d'application. Par exemple, une implémentation défectueuse qui envoie des messages non conformes peut être utilisée uniquement avec des implémentations qui tolèrent ces écarts par rapport à la spécification jusqu'à ce que, éventuellement plusieurs années plus tard, elle soit connectée à une application moins tolérante qui rejette ses messages. Dans une telle situation, identifier le problème est souvent difficile et déployer une solution peut s’avérer coûteux. Rose préconisait donc « des contrôles explicites de cohérence dans un protocole ... même s'ils imposent des frais de mise en œuvre".

De 2015 à 2018, dans une série d'Internet Drafts, Martin Thomson soutient que le principe de robustesse de Postel conduit en réalité à un manque de robustesse, y compris de sécurité :

« Un défaut peut s'enraciner jusqu'à devenir un standard _de facto_. Toute implémentation du protocole doit obligatoirement reproduire le comportement fautif, au risque d'une non-interopérabilité. Ceci est la conséquence commune de l'application du principe de robustesse, et de la réticence naturelle à éviter les conditions menant à une erreur fatale.Assurer l'interoperabilté dans cet environment est souvent décrit comme le fait de viser à être "compatible bug pour bug". »

En 2018, un article sur les technologies améliorant la confidentialité rédigé par Florentin Rochet et Olivier Pereira a montré comment exploiter le principe de robustesse de Postel au sein du protocole de routage Tor pour compromettre l'anonymat des services onion et des clients Tor. [2]

Voir également

[modifier | modifier le code]

Références

[modifier | modifier le code]
  1. Erik Wilde, Wilde's WWW: Technical Foundations of the World Wide Web, Springer‑Verlag, (1re éd. 1999) (ISBN 978-3-642-95855-7, DOI 10.1007/978-3-642-95855-7, S2CID 19897299, lire en ligne), 26
  2. Rochet et Pereira, « Dropping on the Edge: Flexibility and Traffic Confirmation in Onion Routing Protocols », Proceedings of the Privacy Enhancing Technologies Symposium, De Gruyter Open, vol. 2018, no 2,‎ , p. 27–46 (ISSN 2299-0984, DOI 10.1515/popets-2018-0011, lire en ligne)

Liens externes

[modifier | modifier le code]

[[Catégorie:Standard Internet]]