Je reviens d’un petit colloque sur la sécurité informatique. Quelques réflexions.

Complexification

Les ordinateurs personnels d’il y a une trentaine d’années étaient simples. Une documentation technique très complète du système (instructions du processeur, registres des contrôleurs d’entrée sortie, appels systèmes…) pouvait être fournie en quelques volumes. En revanche, les ordinateurs actuels (qu’il s’agisse de machines de bureau, de portables ou de smartphones) sont très complexes. La documentation de l’architecture x86 prend plusieurs milliers de pages.

Il y a trente ans, un développeur (même novice) pouvait rapidement maîtriser une grande partie du fonctionnement de sa machine. De nos jours, c’est impossible : il y a trop de choses, qui changent qui plus est toutes les quelques années. Il y a vingt ans, je comprenais à peu près le fonctionnement d’un système Linux (mais pas le détail), de nos jours il y a bon nombre de zones mystérieuses.

Dans l’exposé d’Éric Freyssinet et les interventions de Jean-Yves Marion, on a bien senti la même évolution dans le développement des outils d’intrusion informatique. Le cliché des films est le « petit génie » de l’informatique opérant isolément : or les attaques sont complexes à mettre en œuvre et mettent souvent en jeu plusieurs groupes de personnes, chacun spécialisé sur une partie du problème.

Parallèlement, on assiste à une fuite en avant et une complexification des mesures de sécurité. Il y a longtemps, sur un système Unix, il existait les processus utilisateurs, les processus privilégiés (ceux de l’utilisateur root) et le noyau du système. Maintenant, on a éventuellement au dessus du noyau un hyperviseur, peut-être lui même virtualisé dans un autre hyperviseur… voire un composant matériel « sécurisé » indépendant du processeur principal.

Bien entendu le logiciel se complique aussi. Aux débuts du Web, le trafic passait « en clair » (http) sur le réseau, de sorte que toute personne qui avait accès aux équipements réseau pouvait espionner le trafic. Récupérer une page Web était relativement simple. Depuis on est largement passé à une transmission chiffrée (https), plus sûre mais aussi considérablement plus complexe pour le logiciel.

Plus un système est compliqué, plus il offre de possibilités d’erreur et de « surface d’attaque ».

Une pensée a posteriori

Comme on le voit bien sur l’exemple de http suivi de https, la sécurité est souvent rajouté a posteriori par-dessus une fonctionnalité. Ceci conduit à des systèmes complexes et parfois assez baroques.

Mais qui a pu avoir une idée pareille ?!

Au récit du fonctionnement technique de certaines attaques, on se demande comment quelqu’un a pu penser que c’était une bonne idée que de concevoir le système attaqué en y laissant une faille béante. Quelques exemples :

  1. L’Étoile de la Mort de l’Épisode IV de la Guerre des Étoiles a une bouche de refroidissement dans laquelle un simple tir par un appareil de combat léger provoque sa destruction totale.

  2. Un périphérique Firewire avait naguère le droit d’initier un transfert de ou vers la mémoire de la machine sur laquelle il était branché sans contrôle de ce à quoi il avait le droit d’accéder — on vous prêtait une caméra ou un disque dur, celle-ci pouvait donc prendre le contrôle de votre machine.

  3. Certaines machines à base de processeurs Intel avaient une console de commande système à laquelle on pouvait accéder en fournissant un mot de passe vide — apparemment, elle vérifiait que le mot de passe fourni par l’utilisateur était le bon en ne comparant que jusqu’à la longueur du mot de passe fourni par l’utilisateur…

  4. Quelqu’un avait cru bon de modifier le générateur de nombres aléatoires d’OpenSSL d’une façon qui réduisait considérablement son aléa et rendait des clefs de chiffrement trouvables par recherche exhaustive, car la modification supprimait un avertissement dans un outil de recherche de bugs.

On en est au point parfois où l’on se demande s’il s’agit d’incompétence ou d’erreurs sciemment mises en place à la demande de tel ou tel service.

Internet of Things

Les entreprises qui vendent des objets connectés ont pour objectif d’arriver rapidement sur le marché ; la sécurité représente un surcoût en temps et en argent. Ces entreprises peuvent avoir un cœur de métier traditionnel (électroménager…) éloigné des réseaux et de la sécurité. Elles ne sont pas forcément prêtes à fournir des mises à jour de sécurité en continu (à l’inverse de fournisseurs de systèmes d’exploitation tels que Microsoft, Apple, ou Ubuntu). Comme on peut s’y attendre, la sécurité est faible.

On a, dit-on, des bot-nets de réfrigérateurs et de caméras de surveillances connectées. On s’attend à des bot-nets de voitures connectées. On espère, mais peut-être est-ce un fol espoir, que dans ces véhicules la partie compromise ne sera que le système de divertissement et non ce qui contrôle la conduite. Et que dire des dispositifs médicaux connectés !

Des systèmes sécurisés inutilisables donc inutilisés

En théorie, il est possible de chiffrer son disque dur (de façon à rendre les informations qui s’y trouvent illisibles pour un voleur, par exemple), de chiffrer son courrier électronique (de façon à ce que les opérateurs de réseau et hébergeurs de courrier ne puissent pas le lire), d’utiliser une messagerie instantanée chiffrée.

En pratique, peu de gens le font : les logiciels qui font cela ne sont pas installés par défaut, ils demandent une configuration spécifique (voire l’intervention de prestataires extérieurs), parfois ne fonctionnent pas pour des raisons mystérieuses. Même parmi les chercheurs en informatique, a priori un public a priori plus sensibilisé et apte techniquement que la majorité de la population, on sent ces difficultés.

Conclusion

Je ne déborde pas d’optimisme.