Arnaques, mensonges et algorisme

L'une des dispositions de la loi sur le renseignement, précisément l'article L.851-4 du Code de la Sécurité Intérieure, prévoit d'imposer aux opérateurs de communications (les fournisseurs d'accès à Internet et les opérateurs télécom) ainsi qu'aux hébergeurs "la mise en oeuvre sur leurs réseaux d'un dispositif destiné à détecter une menace terroriste sur la seule base de traitements automatisés".

Dans sa communication initiale, le gouvernement avait utilisé le terme "boîte noire", sans doute pour minimiser l'aspect intrusif du "dispositif" (une boite noire, ça ne se voit pas, ça ne fait pas de bruit, ça ne sent pas mauvais, ça ne dit pas de gros mots, c'est passif), ou peut être en référence aux enregistreurs aéronautiques. Ou parce qu'ils se sont dit "viens comme ça parle de renseignement on trouve un truc avec du noir dedans". Ou pour une autre raison qui m'échappe... Quoiqu'il en soit, le moins que l'on puisse dire c'est que le Gouvernement a fait une sacré boulette de communication. En utilisant ce terme, il a servi sur un plateau à celles et ceux qui s'opposent à l'adoption de cette loi, aux journalistes, bloggers et autres twittos à poils et à plumes, une bonne vieille métaphore bien efficace pour foutre le bordel ancrer leur contestation (et les contestataires sont nombreux).

Notre Gouvernement, plein d'amour et d'agilité politique, plutôt que d'assumer et d'ouvrir le débat, a fait machine arrière. Là où il avait à l'origine choisi un terme concret, ancré dans le monde physique (une boîte), il a au contraire jeté son dévolu sur une pure abstraction, un concept aux formes évanescentes, aux propriétés quasi-magiques et sans aucun sens, même implicite, pour la plupart d'entre nous. Bienvenue à toi, Ô Algorithme.

Cela étant, ce choix n'est pas sans effets secondaires. Il semble en effet que prononcer le mot "terrorisme" à longueur de journée implique des risques pour la santé. L'un d'entre eux, démontré par une observation scientifique rigoureuse 1, c'est celui de créer involontairement des néopaléologismes tel le mot Algorisme. Terme qui signifierait, d'après mon interprétation toute personnelle, l'exploitation de l'algorithmique à des fins d'enfumage politique.

Ok, je digresse. Les algorithmes, parlons-en.

De la reproduction des lagomorphes à grandes oreilles

Un algorithme, c'est "une suite finie et non ambiguë d’opérations ou d'instructions permettant de résoudre un problème", nous explique Wikipedia. Super, nous voilà bien avancés.

En beaucoup plus simple : un algorithme décrit une méthode pour résoudre un problème ou effectuer une tâche spécifique. Pour illustrer mon propos, je vous invite à un remaniement ministériel ; passons de l'Intérieur à l'Agriculture, du contrôle des moutons à la cuniculture (non, ce n'est pas sale). Imaginons que nous soyions fonctionnaires (du ministère de l'Agriculture donc) souhaitant étudier les naissances de nos aimables grandes oreilles. Nous aurons à examiner l'épineux problème suivant :

Un homme met un couple de lapins dans un lieu isolé de tous les côtés par un mur. Combien de couples obtient-on en X années si chaque couple engendre tous les mois un nouveau couple à compter du troisième mois de son existence ?

L'une des possibilités serait de faire le travail de manière façon empirique : papier, crayon, cerveau. Mais comme nous sommes feignants, je vous propose de procéder de manière plus méthodique. Pour résoudre ce problème, nous allons mettre ainsi au point une méthode basée sur la suite de Fibonacci dans laquelle chaque élément est la somme des deux éléments précédents : (0), 1, 1, 2, 3, 5, 8, 13, et ainsi de suite. Voici donc notre algorithme :

  • multiplier le nombre d'années (le paramètre d'entrée) par 12, pour obtenir le nombre de mois
  • tant que nous n'avons pas atteint le nombre de mois souhaités, répéter :
    • si le mois en cours est zéro ou un, ajouter zéro ou un à la suite
    • sinon, ajouter la somme des deux valeurs précédentes dans la suite
  • utiliser le dernier élément de la suite comme résultat

A la fin de l'algorithme (on s'arrête au douzième terme, puisqu'on travaille sur douze mois), nous obtenons la population totale de lapins, à savoir 144 animaux. Ce qui nous fait une belle jambe... Bref.

Imaginons maintenant que l'on souhaite pouvoir déterminer la population de notre clapier à n'importe quel moment dans le futur. Nous aimons voir loin, alors soyons fous : projetons dans 1000 ans. Là, nous avons un petit souci : nous autres humains calculons très lentement, et nous aurons 12000 opérations à effectuer. Les nombres de la suite, eux, deviennent de plus en plus grands 2.

Les ordinateurs calculent très, très vite. Nous allons donc les utiliser pour automatiser - et ainsi rendre faisable - notre processus de simulation de la population lapine. Sauf qu'un ordinateur, les algorithmes, il s'en bat la webcam avec une patte d'alligator femelle. Pour pouvoir travailler, il exige que nous, humains, lui fournissions des instructions précises sous une forme qu'il puisse comprendre, un programme informatique :

class ImmortalRabbits  
  class << self
    def fibonacci(n, sequence=[1])
      n.times do
        current, last = sequence.last(2)
        sequence << current + (last or 0)
      end
      sequence
    end

    def population(options)
      fibonacci( options[:in].to_i * 12 ).last
    end
  end
end

puts ImmortalRabbits.population( in: ARGV.first )  

A ce point de l'histoire, vous pensez à la loi sur le renseignement, et vous vous dites probablement : ouate de phoque !? Ouate de phoque, indeed. Nous avons quand même appris quelque chose : quand notre gouvernement, dans sa grande pudeur, parle d'algorithmes, il désigne dans les faits des programmes informatiques 5. Et des programmes bien plus offensifs et intrusifs que notre naïve solution à un problème récréatif. Il cherche à noyer le lapin poisson. Voyons cela plus précisément.

Les explications du gouvernement

De la naissance de lapins à la surveillance distribuée des moutons

"L'algorisme, c'est un ciblage", nous dit Jean-Yves Le Drian (ministre de la Défense en exercice) lors de son audition au Sénat. Par ciblage, toute personne normalement constituée entendrait un champ d'application de la surveillance restreint a priori sur des personnes suspectes. Que nenni, le gouvernement nous explique qu'il s'agit en l'occurrence d'un ciblage sur les comportements numériques suspects. Ce qui revient, dans sa définition la plus pure, à une absence totale de ciblage.

Nous avons vu que par "algorithme", il désigne en réalité des programmes informatiques, des logiciels. Et des logiciels dont la fonction n'est pas de compter les lapins, mais bien de fabriquer des suspects à partir de l'analyse des comportements de citoyens qui n'ont rien demandé, merci 3. La question, c'est de savoir où ces logiciels vont être implantés. Si un algorithme peut naviguer en père peinard dans l'esprit de son créateur, le logiciel, lui, doit être exécuté sur des ordinateurs bien concrets.

Internet, voyez-vous, est un ensemble de réseaux interconnectés. Ce qui veut dire qu'un contenu peut être hébergé n'importe où et être créé ou consulté depuis n'importe quel lieu physique. Pour pouvoir identifier des "comportements", il faut donc distribuer des logiciels d'exfiltration de données ou des sondes (welcome back, boîte noire) un peu partout, typiquement :

  • dans les DSLAM, les points d'accès à Internet
  • chez les hébergeurs, où les données sont stockées (ça tombe bien, la loi le prévoit)

Qu'est ce que cela implique, vous dites-vous ? D'abord, les données ne peuvent être analysées directement sur les sondes, qui seront déjà fort occupées à exfiltrer les informations d'un trafic important. D'autre part, les logiciels d'analyse devront pouvoir croiser les informations de différentes sources. Il faudra donc nécessairement que les données exfiltrées soient stockées et aggrégées pour analyse ultérieure, donc placées dans des bases de données qui seront, elles, centralisées. Par algorithme, le gouvernement désigne donc in fine un très gros système d'information, distribué sur tout le territoire et centralisant les données captées dans des bases de données. On peut se faire une assez bonne idée de l'architecture de ce système en regardant du côté de la Plateforme Nationale d'Interceptions Judiciaires. Les interceptions effectuées par cette dernière sont, elles, ciblées sur des personnes et placées sous le contrôle d'un juge judiciaire, ce qui ne sera pas le cas en ce qui concerne la loi renseignement. En prenant un peu d'altitude, voici les fonctions principales du système qui va être mis en place en application de la loi renseignement :

  • exfiltration de données : sondes DPI - alias les boîtes noires, analyse des journaux techniques, des bases de données des applications, etc., transfert vers les serveurs des services de renseignement spécialisés
  • pré-traitement (aggrégation, indexation, corrélation, etc.)
  • stockage (pendant 5 ans)
  • analyse

Un bon gros mensonge éhonté, voilà ce que c'est, cette histoire d'algorithmes. Il s'agit en fait d'un système d'information, dont le rôle est de remettre dans les seules mains du pouvoir exécutif 4 une capacité d'interception des communications sans précédent (en France).

Dites "non" à l'Algorisme (et appelez vos sénateurs).

Notes

  1. Merci à Laurent Chemla, auteur de ce montage vidéo, pour son aimable autorisation, et au principal protagoniste pour m'avoir tant fait marrer.
  2. Si vous voulez vous faire une idée de l'évolution de la population de nos immortels lapins en mai 3015, c'est ici que ça se passe.
  3. Merci aussi au gouvernement de la part des entreprises françaises du numérique à qui cette loi fait perdre toute crédibilité à l'étranger. Ce qui, par voie de conséquence, ne va pas franchement aider pour développer le business et créer des emplois en France.
  4. La loi renseignement écarte le pouvoir judiciaire et anihile dans les faits toute possibilité de recours, car il faudrait au demandeur apporter des éléments tangibles attestant qu'il est indûment placé sous surveillance. Bon courage...
  5. Les informaticiens utilisent le terme algorithmes pour distinguer les catégories de programmes les uns des autres, par exemple d'algorithmes d'Intelligence Artificielle.