Skyfall : Tombé du ciel
James Bond (007) est envoyé en mission en Turquie, mais l’opération tourne au désastre et un ordinateur est volé, menaçant de dévoiler les identités de plusieurs agents infiltrés, mis en danger dans le monde entier. Cette situation de crise amène le gouvernement britannique à remettre en question les compétences de M, la directrice du MI6. La situation est aggravée par une attaque des locaux des services secrets. L’expérience de 007 semble bien inutile face aux nouveaux terroristes hackeurs qui sèment le chaos jusqu’au cœur de Londres. Avec l’aide d’Eve, un agent de terrain, il se lance sur la piste du mystérieux Silva à l’origine de cette situation.
La trame de cet opus fait apparaître le danger de l’utilisation des nouvelles technologies par des personnes malveillantes. L’utilisation de moyens de communication numérique pose la question de la sécurité des communications. On se souvient des anciens films d’espionnage où le héros grimpe à un poteau téléphonique pour écouter avec un casque les communications échangées. Aujourd’hui, le câble est largement dépassé car la transmission est numérique, et se fait souvent par voie hertzienne (GSM, Wifi…) ou via Internet. La question fondamentale devient donc : comment protéger l’information ? avec son corollaire qui n’est pas innocent : contre qui se protéger ? Si cette question peut nous éloigner des aspects techniques, elle nous ramène sur les versants de la philosophie et du droit.
Cacher l’information
Il existe différentes manières d’assurer la confidentialité ou l’intégrité de l’information échangée. La première, et la plus ancienne, est de cacher une information dans une autre information. On parle alors de stéganographie. Dans l’antiquité, Darius fait raser la tête de son esclave le plus fidèle, lui tatoue un message sur le crâne et attend que les cheveux repoussent pour l’envoyer chez son allié. Qui d’entre nous n’a pas joué, enfant, à écrire des messages avec du jus de citron ?
Normalement, la technique de stéganographie ne devrait pas résister longtemps à la perspicacité de l’espion de première classe. Pas si sûr… rappelez-vous cette scène : dès le début du film, M est en voiture, alors qu’on vient de lui signifier sa future mise à la retraite, elle apprend que quelqu’un entre dans le système informatique du MI6 par son propre ordinateur qui est piraté. Le méchant a pris le contrôle et lui envoie un message « Think on your sins » (Pense à tes péchés). Avez-vous compris le vrai message ? Non ? Rassurez-vous, M non plus. Il s’agit simplement d’une anagramme, il faut en fait lire « Your Son Isnt In HK » (Votre fils n’est plus à Hong Kong). Silva, qui est le fils de M (biologique ou métaphorique ?), n’est plus retenu en Chine, il s’est évadé. C’était un message caché dans un autre, tout comme son nom : Raoul Silva = a rival soul…
Il s’agit là du niveau zéro de la sécurité. Le message est caché mais accessible par une attaque dite « par force brute ». Cette technique consiste à essayer toutes les combinaisons possibles. Par exemple, votre carte bancaire dispose d’un code de sécurité à quatre chiffres. Il est alors possible de tester toutes les combinaisons. Comme il y en a 9999, à raison d’une par seconde, deux heures suffisent pour découvrir votre code. La limite de cette attaque est le temps nécessaire pour acquérir l’information. La qualité d’un code secret dépend de ce qu’on appelle l’entropie de Shannon, c’est-à-dire, en théorie de l’information, le nombre de bits (information élémentaire) nécessaires pour coder l’information. Dans le cas du code de la carte, combien faut-il de bits pour coder 9999 ? En base 2, ce nombre se code par 10 0111 0000 1111, il a donc une entropie d’environ 14. Aujourd’hui, on considère qu’un ordinateur n’est pas capable de casser en un temps raisonnable un code dont l’entropie est de 74 bits (recommandation du National Institute of Standards and Technology). Pour se protéger des attaques, il faut une contre-mesure qui est évidente dans le cas de la carte bancaire : au-delà de trois présentations erronées la carte est bloquée. Cette contre-mesure est efficace dans ce cas particulier. L’autre solution consisterait à allonger la taille de votre code de sécurité. Vous imaginez un numéro de code de carte comme 9223372036854775807 ? C’est pourquoi on préfère réduire l’entropie et le nombre d’essais !
Revenons à Skyfall, M reçoit l’anagramme sur sa machine. Peut-elle la décoder par force brute ? Calculons son entropie (j’utilise une calculatrice en ligne pour ce faire), elle est de 85. C’est au-delà des capacités d’un ordinateur (du moins actuellement dans le laps de temps nécessaire pour revenir au MI6, même si la route est embouteillée) donc hors de portée de M. On peut donc concevoir qu’elle n’ait pas pu comprendre de suite le message secret. De toute façon, 20 secondes plus tard les bureaux du MI6 explosent et elle a d’autres chats à fouetter.
Chiffrement et autodestruction
Un peu plus tard, 007, un as de la gâchette, sauve la belle (mais pas le verre de whisky de 50 ans d’âge !) et grâce à un émetteur miniature fait sonner la charge de la cavalerie. Silva se retrouve prisonnier au MI6 et son ordinateur est ausculté par Q, le jeune expert en cyber-sécurité. La première crainte est que probablement Silva utilise « des protocoles d’accès effaçant la mémoire à la moindre tentative d’accès aux fichiers ». On en revient à la confidentialité des données, cette fois non pas transmises mais stockées. Très probablement le disque dur est chiffré, mais en plus il s’autodétruira. Cette contre-mesure est redoutable car en effaçant le contenu, toute l’information est perdue. C’est amusant car à ce moment-là il y a inversion des rôles, l’attaquant est le gentil et le défenseur est le méchant. Le défenseur a donc appliqué les règles de bon sens en cyber-sécurité, qui consistent à avoir plusieurs lignes de défense. L’effacement de la mémoire est effectivement une contre-mesure utilisée… dans nos cartes bancaires. Ces dernières ont plusieurs niveaux de contre-mesures et en cas d’attaque trop forte, elles s’autodétruisent en effaçant leurs secrets dont les clés de déchiffrement. Plus de clés, plus d’accès à l’information, la confidentialité est garantie.
Le chiffrement est une technique ancienne qui permet à l’aide d’une méthode et d’une clé de transformer un texte lisible en une version inintelligible pour qui ne connaît pas la méthode ou ne possède pas la clé. Une méthode antique, le chiffrement de César, consiste à substituer chaque lettre du message original par une autre située à distance fixe dans l’alphabet. Cette distance devait être connue de l’expéditeur comme du destinataire. Dans ce cas, le décalage est la clé, et le principe de substitution des lettres est l’algorithme. Cet algorithme possède un maximum de 26 clés possibles, la méthode du décalage fixe est donc aisément déchiffrable par force brute.
Le chiffre de Vigenère, datant de la Renaissance, utilise un tableau donnant de multiples combinaisons. Pour chiffrer interstices avec la clé rennes, pour la première lettre on cherche la colonne i, la ligne r, on obtient z. La huitième lettre est aussi un i mais se chiffre en utilisant la huitième lettre de la clé rennes. Comme ce mot ne contient que six lettres, on le répète jusqu’à obtenir la même longueur que le message à chiffrer. La clé exacte est donc rennesrenne. Le deuxième i se chiffre par m et le message chiffré complet est : zrgrvkkmprw. L’avantage réside dans le fait que la méthode, c’est-à-dire le tableau, peut être connue par tout un chacun. Mais il faut aussi disposer de la clé pour déchiffrer.
Chiffrement et polymorphisme
Après avoir évité l’autodestruction de la mémoire, le MI6 tente de déchiffrer le contenu du disque dur de l’ordinateur, et à ce moment-là une partie du contenu s’affiche sur un grand écran. D’un côté un programme source, de l’autre son équivalent exécutable, le programme binaire. Au centre se trouve une représentation d’un graphe censé illustrer un programme. À ce moment, le jeune informaticien connecte l’ordinateur portable contenant le programme potentiellement hostile au réseau informatique du MI6. Ce faisant, Q réalise une bourde de débutant, pas vraiment digne du cerveau ayant conçu l’algorithme de « protocole d’accès le plus performant ».
Q s’aperçoit que le disque dur est effectivement chiffré mais, plus intéressant, le programme est un code brouillé utilisant un moteur polymorphe. Les programmes polymorphes s’auto-modifient afin de prendre des formes différentes. Cette technique est utilisée à la fois par les défenseurs mais aussi (et surtout) par des attaquants. En effet, un programme qui change est très difficile à analyser, c’est le propre des logiciels malveillants. Afin d’éviter que les adversaires ne comprennent son fonctionnement, il mute et se présente sous une autre forme modifiant sa structure ou son contenu. Il peut donc générer un programme dont le graphe de contrôle change et dont la forme apparente (telle que l’observe 007) évolue. Mais aussi, il peut générer directement un programme dans un autre langage en utilisant la virtualisation d’un processeur (un programme qui simule un autre processeur) afin de mieux se camoufler. Plus classiquement, le programme peut se cacher en étant chiffré. Le début du programme consiste alors à déchiffrer les prochaines instructions, s’assurer que personne ne l’observe et continuer ainsi jusqu’à obtenir le vrai programme devant s’exécuter. Pour pouvoir s’auto-modifier, le programme doit disposer de privilèges suffisants, en particulier des droits de lecture, écriture et exécution. Généralement les systèmes gérant nos ordinateurs n’attribuent ces droits qu’a minima afin d’éviter qu’un programme ne puisse s’auto-modifier.
Un code polymorphe peut aussi servir à la défense. En effet, il existe une classe d’attaques que l’on appelle attaques par canaux auxiliaires qui se servent d’informations annexes que laisse fuir le processeur. Lorsqu’un processeur exécute une instruction il consomme de l’énergie (électricité, chaleur) et produit des rayonnements électromagnétiques. Tant la consommation électrique que le rayonnement émis peuvent être mesurés très finement. Il s’avère que non seulement ces informations sont en relation avec l’instruction exécutée mais qu’elles sont aussi en relation avec les données manipulées. Ainsi, un attaquant peut déterminer l’activité du processeur en mesurant le rayonnement ou la consommation et inférer les valeurs des données (secrètes) manipulées. Une des contre-mesures sur lesquelles nous travaillons aujourd’hui consiste à ne jamais exécuter deux fois le même programme en le régénérant avant chaque exécution. Le programme réalise ainsi toujours la même fonction mais jamais de la même manière. La trace de consommation diffère à chaque fois empêchant ainsi l’attaque ou du moins la retardant.
La technique de code polymorphe est une technique avancée de camouflage qui peut servir à ralentir le travail de l’adversaire (défenseur ou attaquant) en s’auto-modifiant. C’est une aptitude systématiquement utilisée par les codes hostiles et plus rarement par les défenseurs car c’est une technique émergente issue du domaine de la compilation et de l’optimisation de code.
Chiffrement et clé secrète
Le plus haut niveau en termes de qualité est le chiffrement des données. Le chiffrement moderne se base sur des propriétés mathématiques rendant l’analyse impossible par force brute. Nous avons vu que la sécurité repose sur la propriété qu’un algorithme de chiffrement ne peut être inversé sans disposer de la clé. Dès lors, ce qui doit être maintenu secret ce n’est pas l’algorithme mais uniquement la clé. Il est plus simple de cacher une clé que de cacher un algorithme. Donc tout le monde peut connaître l’algorithme que vous utilisez tant que la clé reste secrète. À partir de là, un message en clair associé à une clé de chiffrement produit à l’aide d’un algorithme de chiffrement des données chiffrées illisibles pour qui ne possède pas la clé de déchiffrement.
Lors d’une conversation avec votre téléphone, le chiffrement permet d’éviter que quiconque écoute pendant la transmission. Elle est chiffrée et le réseau la déchiffre pour la transmettre en clair à votre correspondant. C’est aussi une technique utilisée pour conserver nos données sur nos ordinateurs et sur nos téléphones. Cette technique a récemment fait l’actualité avec le tireur de San Bernardino qui possédait un iPhone chiffrant toutes ses données. Pour déchiffrer il faut la clé, la clé est elle-même protégée par un code PIN. Après plus de 10 essais de code PIN infructueux, les données (la clé de déchiffrement) s’autodétruisent. D’où le problème du FBI, qui a des difficultés avec le code PIN du tireur. Rappelez-vous deux lignes de défense : si vous avez le bon code PIN alors le système utilise la bonne clé et déchiffre, sinon il détruit les données. L’actualité rejoint Skyfall !
Les données du disque dur sont chiffrées mais la clé qui est une donnée de l’algorithme est-elle chiffrée ? Si elle est chiffrée, l’algorithme ne peut pas l’utiliser, si elle est stockée en clair (non chiffrée) un œil indiscret peut la voir donc la sécurité n’est plus au bon niveau. La poule et l’œuf. La solution consiste à chiffrer la clé avec une autre clé et à déchiffrer juste avant de l’utiliser. Mais qu’en est-il de la clé qui chiffre la clé pour chiffrer… là non. Il y a une limite, on va juste la cacher ou la masquer en utilisant un mot de passe par exemple. Deux lignes de défense !
Juste après que M a appris son futur départ à la retraite, elle reçoit un coup de fil, quelqu’un essaie de déchiffrer le disque dur volé. On ne sait pas d’où provient ce disque dur, mais quelqu’un tente à distance d’obtenir les informations. À cet instant, le film devient un peu moins scientifique car on ne sait pas si l’attaquant dispose de la clé de déchiffrement mais les experts du MI6 arrivent à « …tracer le signal de cryptage, localisation en cours ». Tonnerre de Brest, pour déchiffrer ils veulent chiffrer. Mais pourquoi chiffrer ce qu’on veut déchiffrer ? La contradiction n’est qu’apparente, car avec le chiffrement symétrique, le même programme peut à la fois chiffrer et déchiffrer un message et souvent, la même clé est utilisée pour le chiffrement et le déchiffrement. Le programme utilise l’algorithme de chiffrement dans le sens inverse.
Le chiffrement du disque dur des ordinateurs profite aussi à l’attaquant car il sert à préserver la confidentialité des données. C’est le principe d’une classe d’attaque que l’on appelle les ransomware où l’attaquant réussit à chiffrer le disque dur d’un utilisateur et demande ensuite une rançon pour le déchiffrer. Si l’attaquant a réalisé son attaque avec les meilleures techniques actuelles, c’est imparable, vos données sont perdues, vous n’avez plus qu’à payer. La technique de l’attaquant va consister à vous proposer un service, un logiciel, ou un document (word, pdf, zip, etc.) dans lequel il aura caché un petit code hostile dont l’exécution déclenchera le chiffrement du disque dur. Ou plus simplement il vous proposera un logiciel gratuit à télécharger, et la cupidité faisant le reste…
Nous travaillons actuellement sur des solutions où nous laissons le ransomware chiffrer des données contenant des dictionnaires en même temps que nos propres fichiers. Ainsi l’attaquant chiffre un couple (fichier, dictionnaire) avec une clé qu’il jette. Il demande ensuite une rançon pour fournir la clé de déchiffrement. Dans certains cas, le dictionnaire chiffré suffit pour récupérer le fichier original.
Défense contre attaque
En matière de cyber-sécurité, et le film Skyfall le montre bien, une technique peut aussi bien servir à l’attaque qu’à la défense. Il n’existe pas de solution permettant une défense absolue (le MI6 est souvent perdant dans ce film et si 007 n’était pas là…). Mais il est possible de mettre en place une défense relative à l’effort que mettra un attaquant pour parvenir à ses fins. De plus, les systèmes sont de plus en plus complexes ce qui entraîne naturellement des bugs, des problèmes de compatibilité, d’interconnexion, etc. montrant ainsi la limite quant à la sécurisation des systèmes informatiques.
Combat perdu d’avance ? Pas forcément, ou du moins pas sur toute la ligne. En cyber-sécurité, une bonne manière de résister est de réduire la surface d’attaque. En ayant des systèmes de petite taille mais dans lesquels on peut avoir confiance à l’aide d’un audit ou d’une preuve, on bâtit une enclave de confiance. Et autour de cette enclave, on peut faire s’exécuter des systèmes de confiance moindre. Reprenons votre téléphone mobile, il dispose dans un de ses processeurs d’une enclave de sécurité dans laquelle sont déposées des clés mais aussi vos applications bancaires. Autour d’elle, les autres processeurs servent à prendre des photos, à regarder des films, à lire vos emails, etc. Mais l’essentiel, ce qui nécessite de la sécurité, reste dans une petite enclave. Small is beautiful ? Small is secure !
Newsletter
Le responsable de ce traitement est Inria. En saisissant votre adresse mail, vous consentez à recevoir chaque mois une sélection d'articles et à ce que vos données soient collectées et stockées comme décrit dans notre politique de confidentialité
Niveau de lecture
Aidez-nous à évaluer le niveau de lecture de ce document.
Votre choix a été pris en compte. Merci d'avoir estimé le niveau de ce document !
Jean-Louis Lanet
Professeur à l’Université de Limoges, directeur du Laboratoire Haute Sécurité à l'Inria Rennes Bretagne Atlantique.