Tuer l’ordinateur pour le sauver

Un article fort intéressant du New York Times, une biographie du Dr. Peter G. Neumann ainsi que sa vision de la refonte de l’ordinateur et de son environnement.

Voici ma réinterprétation de l’article. Je le trouve très fouillis dans sa forme d’origine. Mais il y a du bon, et même du très bon à retenir.

Mr Neumann fait de la recherche pour le DARPA (USA) sur différents domaines comme la sécurité, cryptographie appliquée, survivabilité des systèmes, fiabilité, tolérance aux erreurs, sûreté, méthodes d’ingénierie logicielle, système dans l’ensemble, application des méthodes formelles, et réduction des risques.

L’article part sur une note d’histoire avec cet accumulation de complexité au cours du temps dans tous les systèmes. Pourtant, les réseaux et systèmes actuels n’ont pas fondamentalement évolués depuis 45 ans. Cette complexité et les failles qui en découlent ne dépendent pas uniquement de la complexité des systèmes, mais aussi de la complexité de leurs interactions. Cela a pour conséquence directe un début d’épidémie de logiciels malveillants et une prise de conscience globale de la cyber-menace. Avec nos systèmes actuels, nous en sommes à boucher les trous de la digue avec nos doigts… pour découvrir qu’au fur et à mesure de nouveaux trous apparaissent.

Les personnes responsables de l’évolution du secteur informatique ne veulent pas entendre parler de complexité, ils préfèrent les solutions rapides et sales. Bien que la recherche fasse beaucoup de progrès, les entreprises suivent toujours les intérêts à cours terme des actionnaires dont elles sont fort redevables. Cette sous évaluation de l’analyse de risque des systèmes et de leur complexité va paradoxalement de paire avec une monoculture des systèmes des postes de travail, des serveurs et des réseaux. Le parallèle avec la biologie est intéressant. La monoculture ne résiste pas dans la nature. Les défenses ont plusieurs niveaux et acteurs dont certains sont à auto-apprentissage. Mais la sécurité, jadis parent pauvre de l’informatique, dispose aujourd’hui de beaucoup d’attention, de budgets conséquents et d’une plus grande visibilité publique et politique.

Le but est de repenser complètement l’ordinateur et le réseau pour les rendre plus sécurisés et plus résiliants face à aux menaces. Cette réflexion s’appelle le clean slate, repartir sur une bonne base. Une partie concerne un poste de travail plus résistant aux attaque et capables de retourner rapidement dans un état stable une fois l’attaque détectée. Une autre partie concerne la résilience des services du réseau autour de leurs missions.

Une des approches de l’équipe du Dr Neumann (tagged architecture) est une machine dans laquelle chaque donnée est marqué cryptographiquement, c’est une signature. Si une signature est invalide, la donnée est invalide est ne peut être traitée. Une deuxième approche (capability architecture) est la machine basée sur une architecture à capacités. Chaque programme est doté de capacités déclarées à utiliser tel composant ou tel librairie, le tout contrôlé par une partie spécifique du processeur.

Cet article est intéressant sur plusieurs points. Le plus important à mon sens est que le socle de base de notre informatique moderne n’est pas sécurisé, voir pas sécurisable. La preuve en est que, malgré une coopération internationale et beaucoup de recherches en cours, le nombre de nouveaux logiciels malveillants détectés et les méthodes de contournement des politiques de sécurité sont en constante progression. C’est le signe que nous n’avons pas encore endigué le problème.

La complexité des système, finalement, profite aux sociétés de développement et de support logiciel. Le client ne peut plus entretenir ou dépanner lui-même son système d’information, il devient dépendant de sociétés tierces et donc de ses commerciaux. Complexité, entente sur les prix, vente à perte, distorsion de concurrence, brevets abusifs, terrorisme juridique, incompatibilités, monopoles, écosystème unique et fermé, R&D asthmatique, défaillances programmées, baisse des coûts à tout prix… Le monde du commerce est en constante évolution et pas forcément à l’avantage du consommateur. L’empire de Microsoft a vraiment démarré avec MS-DOS et un marché exclusif avec IBM. MS-DOS a été un descendant de Q-DOS (Quick & Dirty Operating System)… et l’ancêtre des Windows actuels, en situation de monopôle. A cette époque, MS-DOS a aussi été un concurrent d’UNIX, bien plus perfectionné mais tellement plus chère et complexe…

Aujourd’hui, les systèmes d’exploitation ont bien évolués. La sélection naturelle en a fait disparaître quelques uns. MS Windows ne doit plus avoir beaucoup de code hérité de MS-DOS. Les différents UNIX qui ont survécus conservent quelques outils des origines mais bien cachés derrière une interface graphique. De nouveaux systèmes font leur entrée dans notre environnement, des systèmes hyper connectés avec écran tactile. Les monopôles industriels d’un temps sont bousculés par l’évolution des matériels et des pratiques. Mais la base de ces systèmes est resté la même. Et on retrouve d’ailleurs toujours les mêmes problèmes, amplifiés par l’hyper connectivité.

On trouve chez les utilisateurs un comportement assez curieux. Il y à 15 ans, quand un équipement se bloquait ou posait problème on le faisait réparer. Dans de rare cas, on haussait les épaules, une bonne baffe de bon fonctionnement et on se rappelait que l’équipement était déjà âgé. Aujourd’hui, la plupart du temps, lorsqu’un ordinateur ou un téléphone plante, on le redémarrer… ou on contourne le problème. A part notre fourchette, en quels objets avons-nous entière confiance? Presque tous sont susceptibles de défaillir ou d’avoir quelques problèmes impromptus. L’anomalie est commune au lieu d’être l’exception, l’anormalité devient la norme.

Dans l’article, l’approche tagged architecture ressemble à nebule dans sa philosophie. Chaque objet peut-être vérifié à tout instant et être écarté en cas de corruption. L’autre approche, capability architecture, ressemble à ce que l’on retrouve par exemple sur l’android market où chaque application doit définir ce à quoi elle veut accéder. Ne reste qu’à ajouter un contrôle strict fait par un composant matériel.

Le matériel est-il plus résistant que le logiciel? Les statistiques montrent qu’un programme développé par un humain comporte en moyenne une erreur toutes les 100 lignes de code. Par exemple le noyau Linux compte aujourd’hui 15 million de lignes de code, la totalité de la distribution Debian en compte presque 420 million. Ce même code grossit de façon exponentielle avec le temps et l’intégration de nouvelles fonctionnalités. Le nombre de développeurs augmente presque dans les mêmes proportions, participant ainsi au phénomène d’accélération ressentit de notre société. Comment dans ce cas peut-on espérer endiguer les failles qui les affectent? Et pourtant, on trouve des systèmes d’exploitation, et donc des programmes, dont le but avoué est de consolider l’ensemble en ralentissant le développement, en prenant le temps de faire les choses bien dès le début ou en prenant le parti de figer l’environnement pour mieux le maîtriser. C’est la philosophie de OpenBSD et Debian Linux par exemple. Mais ce n’est pas suffisant, dès l’installation d’un logiciel et l’ouverture d’un service sur le réseau, ou prend le risque qu’il comporte des failles et qu’il mettes en péril le reste du système.

Revenir vers des solutions matérielles, c’est dans l’air du temps. C’est palpable, c’est solide, c’est clairement définit, c’est rassurant. On, ça marche, off, c’est éteint. C’est une vision simpliste des choses, presque un discours commercial. Le matériel, c’est à dire l’implémentation de certaines fonctions dans des puces figées plutôt que dans des programmes logiciels, a des contraintes et pose beaucoup de problèmes. Il est beaucoup plus difficile d’implémenter des fonctions logiques avancées dans une puce matériel. La solution la plus simple pour des matériels embarqués est d’inclure un microprocesseur avec du code à côté. Ça ne résout pas le problème de base qui est de supprimer le code logiciel. Refaire un traitement de texte ou un client de réseau social dans une puce matériel est inimaginable tant les fonctions internes sont nombreuses et complexes. La création, la préparation minutieuse, la correction d’une nouvelle puce demande beaucoup de temps et de moyens. Et la logique de base est similaire à celle utilisée pour la conception d’un logiciel. Du fait de cette logique commune, la solution matériel présente en fait exactement les mêmes problèmes. Et puis, comment mettre à jour une puce qui présenterait un défaut de conception, et donc un défaut de sécurité? Retourner tous les équipements défectueux à l’industriel pour révision? Le tout matériel est utopique.

L’informatique est omniprésente. Elle est partout autour de nous, visible sur notre téléphone ou caché dans la machine à laver. Peut de choses de notre quotidien en est complètement indépendant. Si, subitement, ne serait-ce que un quart de tous ces programmes s’arrêtaient, notre société s’écroulerait en quelques jours ou au mieux en quelques semaines. Les militaires chinois l’on compris il y a quelques années déjà. Ils ont réalisé que malgré leur grande population, les américains pourraient les vaincre militairement en quelques semaines rien qu’en s’attaquant à l’informatique. Des sociétés comme Nortel Networks, employant des milliers de personnes, peuvent déposer le bilan suite à une corruption de leur système d’information. Ce n’est pas que du virtuel. Nos sociétés ne peuvent pas faire l’impasse sur la sécurisation de leur système d’information, nos états et ses citoyens non plus.

L’hyper-connectivité est maintenant un élément de base de nos téléphones. On atteint celui des ordinateurs personnels. Et cette hyper-connectivité commence à s’étendre à tout notre environnement. La télévision est connectée à internet. La domotique envahi la maison. Le réfrigérateur saura bientôt passer commande tout seul. Tous ces éléments sont interconnectés, augmentant encore la complexité de l’ensemble.

Mais nous n’avons plus le choix, la digue doit tenir, coûte que coûte. Plusieurs scénarios sont possibles.

On peut essayer de continuer à améliorer nos systèmes actuels, ou au moins de maintenir l’équilibre. Jusqu’ici ça n’a pas fonctionné comme prévu.

Peut-être que le village globale pourrait nous aider en supprimant les frontières, en lissant les législations, en permettant une intervention de la police partout ou cela est nécessaire et en assurant une justice identique quelque soit le lieu où l’on vit. Il faut considérer qu’à court ou moyen terme, c’est utopique.

En se basant sur le modèle OpenBSD et Debian, on peut imaginer mettre en place volontairement une informatique à deux vitesses. Qui sera en TGV? Qui sera en métro? La solution semble évidente comme amélioration de l’existant, mais est elle suffisante pour infléchir la courbe de croissance des logiciels malveillants? Pas sûr.

Redonner un droit de l’objet physique sur le code logiciel, ou tout au moins pour certains domaines, peut redonner un peu de confiance dans l’ensemble. Il permet aussi de retrouver des pratiques ancestrales de production, de vente et d’échange. A voir.

Plus que l’ordinateur, repenser l’informatique dans son ensemble est aussi une des voies possible d’amélioration. L’idée de base des recherches du Dr Neumann est de repartir sur une nouvelle base, une base propre, la clean slate. Recréer un nouvel écosystème informatique demande cependant beaucoup de réflexions et de recherches pour ne pas retomber dans les travers du passé, et donc des financements associés. Il faut ensuite ré-implémenter une émulation de tous les services actuels couramment utilisés, re-financement. Espérer que le gain soit suffisamment important pour que l’industrie accepte de re-développer en profondeur tous ses produits commerciaux et ses stratégies de vente. Et enfin que l’utilisateur soit prêt à se les approprier. Bref, c’est loin d’être gagné.

Liens :
http://www.nytimes.com/2012/10/30/science/rethinking-the-computer-at-80.html
http://www.nytimes.com/
http://www.csl.sri.com/users/neumann/
http://www.schneier.com/blog/archives/2012/11/peter_neumann_p.html
http://www.sri.com/
http://cleanslate.stanford.edu/
http://linuxfr.org/users/patrick_g/journaux/debian-ca-vaut-14-milliards-d-euros

Laisser un commentaire