Comment compiler un service caché sans que personne n'ait rien demandé
Sur le forum du projet Tor, un développeur curieux cherche à intégrer des clés de service caché directement à la compilation. Une idée absurde que la communauté s'empare de décortiquer avec un sérieux réjouissant.

Bienvenue dans les tréfonds de l'ingénierie logicielle où l'on se demande non pas si l'on peut faire quelque chose, mais plutôt à quel point c'est une mauvaise idée. Sur les espaces de discussion consacrés au développement d'Arti, l'implémentation de Tor en langage Rust, un passionné de projets un peu tordus a posé une colle métaphysique. Son ambition ? Intégrer les données nécessaires pour démarrer un service caché non pas au lancement de l'application, mais directement lors de sa compilation, afin d'obtenir un binaire dont l'adresse finale est connue à l'avance sans même avoir à exécuter quoi que ce soit au préalable. C'est le genre de lubie technique qui fait frémir les administrateurs système et réjouir les amateurs d'expériences parfaitement gratuites.
Face à cette interrogation existentielle, la communauté des développeurs n'a pas tardé à pointer le bout de son nez pour offrir des réponses aussi précises que circonspectes. Les participants rappellent d'abord qu'en temps normal, la génération des clés se fait automatiquement à l'runtime par les fonctions dédiées du client. Mais pour les irréductibles qui souhaitent absolument cuisiner leur binaire avec les clés déjà à l'intérieur, plusieurs pistes ont émergé. L'une d'elles consiste à aller fouiller dans le magasin de clés, à identifier le fichier d'identification du service caché, puis à trouver le moyen de l'injecter ou de l'embarquer avant de l'écrire au moment opportun.
Évidemment, les experts de la discussion se sont empressés de souligner que cette architecture relevait du pur exercice de style ou du prototype loufoque, totalement déconseillé pour le moindre déploration en production. Les échanges se poursuivent ainsi dans une ambiance studieuse, où l'on discute de portes dérobées expérimentales derrière des options de compilation spécifiques et de l'art délicat de manipuler des structures de données cryptographiques pour le simple plaisir intellectuel. C'est beau, c'est totalement inutile pour le commun des mortels, et cela prouve une fois de plus que l'informatique moderne laisse encore un peu de place à la poésie absurde.


