Journal d'investigation en ligne et d'information‑hacking
par Jef

Idée recette : une messagerie cryptée aux morilles

Telegram, ou quand les défauts de conception finissent par se payer

Dans le bras de fer qui l'oppose au gouvernement russe, l'architecture de Telegram place la messagerie en mauvaise posture. Analyse.

Vlad il est pas très gentil - Kremlin - CC BY 4.0

Le 20 mars, un article de Bloomberg révélait l'échec de Telegram dans le bras de fer juridique qui l'oppose au FSB, le tout-puissant service de la sécurité intérieure russe. En effet, dans son œuvre de domestication d'Internet du « Runet », Vladimir Poutine entend mettre au pas l'ensemble des acteurs, y compris les systèmes de messagerie.

La Cour Suprême russe, en première instance, a donné raison au gouvernement de l'adorable Vladounet, en demandant à ce que Telegram « информации, необходимой для декодирования принимаемых, передаваемых, доставляемых и (или) обрабатываемых электронных сообщени ». Pardon, à ce que Telegram fournisse « les informations nécessaires au déchiffrement des messages électroniques reçus, à transmettre, transmis, et (ou) traités » (traduction par @MaliciaRogue).

D'après Bloomberg, l'autorité de régulation de communications Roskomnadzor exige que la société s'exécute, doigt sur la couture, dans les 15 jours. Telegram envisage quant à elle de faire appel de la décision. Le processus juridique pourrait, d'après son avocat, « durer jusqu'à l'été ». Le principal argument avancé par le FSB est assez hilarant — pour qui aime rire jaune. L'agence prétend ainsi qu'obtenir les clés de chiffrement n'équivaut pas à une violation du secret des correspondances, dans la mesure où les messages chiffrés devront être obtenus indépendamment des clés permettant de les déchiffrer. Du grand art.

La cryptographie, dès lors qu'elle dépasse le champ de la sécurité — notamment celle des transactions financières — pour entrer dans le champ de la vie privée, lie intimement aspects politiques et techniques. Cette affaire opposant Telegram et FSB le démontre une fois encore. En fait, il s'agit sans doute d'un nouveau cas d'école.

Telegram est souvent décrite comme une inviolable « messagerie cryptée © ». C'est aller un peu vite en besogne, et surtout c'est se faire piéger par le storytelling de Telegram qui se targue de chiffrer à tous les étages.

Cryptographie aux morilles

Lorsqu'une personne utilise Telegram pour échanger avec ses relations, elle le fait par l'intermédiaire d'un protocole de communication propriétaire et non-standard, MTProto. Il s'agit d'un protocole qui assume trois responsabilités distinctes. D'abord, une interface de programmation (API) normalise les échanges entre les clients (les applications installées sur nos appareils) et les serveurs de Telegram. Ensuite, une couche cryptographique intermédiaire permet les opérations de chiffrement, la vérification de l'intégrité des messages, etc. Enfin, le dernier étage s'occupe du transport des informations sur le réseau, via des connexions TCP ou en HTTP.

Lors de l'enregistrement d'un terminal, « l'enrôlement », ce dernier s'entend avec l'un des serveurs de Telegram sur une clé secrète, appelée « auth key ». Ce processus est basé sur une technique, appelée « échange de clé Diffie-Hellman », qui permet aux deux participants — ici le client et le serveur — de créer une clé secrète sans qu'un indiscret qui aurait écouté l'échange ne puisse la reconstituer. Telegram dispose donc, sur ses serveurs, de centaines de millions de auth keys, chacune d'entre elles correspondant à un terminal d'un utilisateur. Tous les échanges entre ces terminaux et les serveurs de Telegram sont ensuite chiffrés grâce à ces auth keys, ou plus exactement grâce à des clés à usage unique (« msg key ») dérivées des auth keys.

Pour la fonctionnalité dite des « secret chats », une clé additionnelle est utilisée pour chiffrer les messages échangés entre deux interlocuteurs. Cette clé est également générée grâce à un échange de clé Diffie-Hellman, mais cette fois-ci l'échange a lieu entre les deux participants. Autrement dit, dans le cas des secret chats, et uniquement dans ce cas, les serveurs de Telegram ignorent la clé utilisée pour chiffrer et déchiffrer le contenu des conversations. On parle alors de chiffrement de bout-en-bout, car seules les deux « extrémités », les deux utilisateurs, disposent de la clé secrète.

Ainsi, à l'exception des secret chats où elle n'en dispose pas, Telegram est en mesure de fournir les clés cryptographiques permettant de déchiffrer les échanges au FSB. C'est vrai pour tous les cloud chats, discussions en groupe ou channels. Pire, si les secret chats prévoient un mécanisme de « confidentialité persistante » consistant à renouveler régulièrement la clé secrète utilisée, ce n'est, une nouvelle fois, pas le cas pour les autres modes de communication proposés par Telegram. En disposant des clés de chiffrement, les « auth keys » de chacun des utilisateurs, le FSB pourra déchiffrer facilement les nouvelles conversations. Mais aussi, pour peu que l'agence ait exigé des fournisseurs d'accès à Internet russes d'enregistrer le trafic vers les serveurs de Telegram, elle pourra déchiffrer tous les cloud chats, group chats et publications sur les channels échangés par le passé.

Au temps pour l'indéboulonnable « messagerie cryptée », qui en dehors des secret chats ne vaut gère mieux sur le plan du chiffrement que Twitter, Facebook ou Snapchat. En réalité, pour la plupart des fonctionnalités offertes, Telegram est même moins sécurisée que ces services. Ces derniers ont, eux, le bon goût de chiffrer les échanges grâce au standard TLS qui intègre, au contraire de MTProto, la propriété de « confidentialité persistante ».

Contourner la censure

La menace de censure que fait peser la décision de la Cour Suprême russe est donc tout à fait sérieuse. Telegram peut accepter de livrer les clés, refuser et devenir inaccessible en Russie, ou mettre en œuvre un moyen de contourner le blocage.

Pour contourner le blocage, Telegram devrait modifier significativement son architecture

La principale contre-mesure contre la censure consiste à planquer l'aiguille dans une très, très grosse meule de foin. C'est par exemple ce qu'à mis en place l'application de messagerie Signal pour contourner le blocage en Égypte, aux Émirats Arabes Unis, et dans d'autres pays. La technique du « domain fronting » consiste à utiliser l'infrastructure d'un acteur important — Google, Cloudflare, Akamai, etc. — pour faire passer son propre trafic.

Cette technique est simple à mettre en œuvre, mais elle suppose quelques prérequis. D'abord, il convient que le protocole utilisé soit largement utilisé. De ce point de vue HTTP, le protocole que vous utilisez pour consulter des pages Web, est idéal. Ensuite, il faut que la destination finale puisse être dissimulée, donc chiffrée. Dans le cas du protocole HTTP, ce sera via TLS, qui permet de transformer HTTP en HTTPS. Il s'agit que le « front », la façade utilisée, redirige les requêtes vers la destination finale.

Très concrètement, ce que fait l'application Signal est d'envoyer des requêtes HTTP vers Google au lieu d'utiliser l'adresse de son propre service. À l'intérieur de cette requête un en-tête « Hostname » est ajouté pour indiquer le service souhaité, et le tout est chiffré grâce à TLS. Google déchiffre les requêtes et les redirige sans sourciller, Signal étant l'un des clients de son service Google App Engine.

Pour le censeur c'est game over, l'attribut « Hostname » ayant été chiffré avec le reste de la requête HTTP. Impossible pour lui de faire la différence entre une recherche sur Lady Gaga ou la dernière recette de pizza à l'ananas et la connexion d'une personne au service de Signal. Le gouvernement égyptien, par exemple, verra l'utilisateur s'adresser à www.google.com.eg. Mais, à l'intérieur de la requête HTTP chiffrée, on pourra lire que c'est signal-reflector-meek.appspot.com, le nom d'hôte du service Signal, qui est le destinataire final. Dès lors, les services du maréchal al-Sissi ne peuvent faire qu'un choix manichéen. Soit ils bloquent toutes les requêtes à destination de Google, soit ils laissent tout passer.

Pour Telegram, c'est compliqué

Telegram pourrait utiliser cette technique pour contourner le blocage en Russie, me direz-vous. C'est techniquement possible, mais ce ne serait pas simple.

D'abord, Telegram devrait déménager son infrastructure derrière une facade et mettre à jour toutes ses applications. Or, les « facades potentielles », ces gros services permettant le domain fronting et jugés suffisamment indispensables pour que les agités du blocage hésitent à leur couper la chique, sont tous américains. Telegram et son fondateur, Pavel Durov, se sont toujours vantés de l'indépendance de leur infrastructure. Ils ont également régulièrement critiqué leurs concurrents, de WhatsApp en passant par Signal, pour leur proximité réelle ou supposée avec le gouvernement US ou avec des entreprises réputées proches, telle Google. Ce faisant, la messagerie risquerait aussi de se voir abandonnée par les utilisateurs de certains pays réputés pour leur aversion pour les États-Unis, et où Telegram est très populaire. Ce serait aussi être contraint de s'aligner sur la politique du prestataire choisi. Google bloque par exemple toutes les connexions depuis l'Iran pour respecter les sanctions.

Ensuite, Telegram devrait basculer tout son protocole de communication en HTTPS. Or, le protocole HTTP est basé sur un modèle requête-réponse, mal adapté au fonctionnement des messageries. Cela ne pose pas de problème à des applications comme Signal ou WhatsApp, car elles s'appuient sur HTTP uniquement pour les opérations d'envoi de messages vers le serveur. La transmission, le « push », des messages vers leurs destinataires est effectué via les systèmes fournis par les systèmes d'exploitation mobiles, comme Firebase pour Android ou APNS pour Apple iOS.

Telegram a, au contraire, développé son propre protocole intégré à MTProto et fonctionnant « au dessus » de TCP. La messagerie a ajouté un mode de transport HTTP dans certaines de ses applications, notamment « Telegram Desktop », mais il s'agit d'un mode de communication secondaire. Il vise principalement à pouvoir établir une connexion aux serveurs quand un équipement réseau, un firewall d'entreprise par exemple, empêche la connexion via MTProto et TCP.

Au passage, l'implémentation technique de ce « transport » HTTP pique un peu les yeux. Les informations sont en effet transmises sous forme de trames MTProto encapsulées dans des requêtes HTTP — et non HTTPS — sur le port 80. C'est déjà assez surprenant, car on se demande bien pourquoi, dans ce cas, ne pas purement et simplement abandonner MTProto en faveur de HTTPS.

Capture du trafic de Telegram Desktop
Capture du trafic de Telegram Desktop

À l'autre bout, des serveurs Web écoutent donc sur le port 80. Plus précisément, des serveurs Web Nginx dans la version 0.3.33. Une version du logiciel qui date de… 2006. Si, si.

Serveur Nginx de Telegram
Serveur Nginx de Telegram

Mais revenons aux vélleités de blocage par la Russie, ou autre. Pour le contourner, Telegram devrait donc modifier significativement son architecture, en basculant vers un protocole standard, en abandonnant au moins partiellement son MTProto maison pour revenir à des solutions éprouvées, comme HTTPS/TLS. Enfin, il faudrait revoir en profondeur les mécanismes de notification de la messagerie et à basculer son infrastructure derrière — ou sur — un Google, un Cloudflare ou un Akamai. Dans un délai très court, quelques mois tout au plus, cela paraît techniquement difficile. Surtout quand, par ailleurs, on est occupé à lever des milliards pour lancer une cryptomonnaie. Ce serait aussi peu compatible avec l'image que souhaite véhiculer Telegram auprès de ses utilisateurs.

Au final, ses choix historiques dans la conception technique de son système de messagerie, largement critiqués par les spécialistes, laissent peu d'options à Telegram : livrer les clés, ou être bloqué.


Mise à jour du 31 mars, 17h23 : suite à une remarque avisée d'un lecteur, ajout d'une précision relative au blocage de Google App Engine et donc de Signal en Iran.

3 Commentaires
Une info, un document ? Contactez-nous de façon sécurisée