SMSSecure : le retour des SMS chiffrés

(Environ 10 min de lecture)

Vous qui traînez ici parfois, ou pas d’ailleurs, vous connaissez probablement TextSecure de longue date. TextSecure est une application Android visant à remplacer celle fournie de base dans ce système d’exploitation pour vos envois de SMS/MMS. Pourquoi un tel remplacement ? Simplissime : ajouter plusieurs couches de sécurité pour vos échanges via SMS/MMS, qui seront chiffrés sur le téléphone, et durant leur transit. Cerise sur le portal cake, on peut aussi protéger l’accès à l’application par mot de passe.

Sauf que TextSecure a évolué dans une direction qui ne convient pas à nombre d’utilisateurs, dont moi. On va donc revenir sur ce qu’était TextSecure, sur ces fameuses évolutions, et sur la toute jeune alternative : SMSSecure.

Cet article est « adapté aux débutants » : vous y trouverez normalement toutes les précisions nécessaires, ainsi que des renvois vers d’autres articles et/ou des pages de Wikipédia, notamment sur les sigles (ça aurait fait un sacré pavé sinon). Notez que les liens vers Wikipédia apparaissent en violet !

 

TextSecure : la vie privée avant tout

Qu’on veuille simplement protéger un peu ses échanges, sa vie privée, ses proches, ses sextos… la question du chiffrement n’est plus à poser : il convient à tout un chacun de chiffrer ses échanges numériques. Cela passe par un certain nombre d’étapes, pas nécessairement à la portée de l’utilisateur moyen, il faut bien l’admettre. Et les vagues tentatives visant à généraliser OTR (dont j’ai déjà parlé ici) ne sont pas parvenues à assurer à la fois le niveau de confidentialité souhaité et la simplicité nécessaire à une utilisation en masse.

On pense souvent aux mails, quand on parle de chiffrer ses échanges. Mais vos SMS et MMS ? Eux passent en clair sur le réseau des opérateurs, aussi bien le contenu que les métadonnées associées (comme les numéros de l’expéditeur et du destinataire par exemple). Ajouter PGP à l’application SMS/MMS d’Android ? À la limite, oui, si des développeurs tiers le faisaient (mais il faudrait porter GnuPG sous Android… Bon, cela a été fait, mais les efforts se sont surtout concentrés sur les mails et donc un des meilleurs clients disponibles, K-9 Mail). Sauf que la plupart des constructeurs de terminaux Android utilisent leur propre application de messagerie SMS. On se limite donc à une part marginale d’utilisateurs, celle qui sait (ou peut faire faire) flasher un Android custom comme CyanogenMod et est donc a priori consciente des problématiques de vie privée et y fera attention. Ajouter PGP aux applications tierces ? Google Messenger, Hangouts… il y en a des dizaines, et pas deux qui fonctionnent de la même façon. Sans parler de leur licence qui interdit ces ajouts.

C’est là qu’est née TextSecure. Le but était simple : proposer un remplacement de l’application SMS/MMS par défaut, quelle que soit la version d’Android utilisée. Avec un ajout majeur : un protocole de chiffrement maison, des SMS/MMS chiffrés à la volée à l’aide d’un système de clés asymétriques (une clé publique, distribuable, et une privée, qui reste sur le téléphone), un stockage de ces messages sur votre téléphone lui aussi chiffré, une application (optionnellement) protégée par mot de passe, une génération de clé et de messages chiffrés/déchiffrés très rapides, un échange des clés automatisé (aucune intervention de l’utilisateur), la possibilité d’importer les SMS depuis l’ancienne application… la totale, quoi.

Comble de la réussite : TextSecure est libre (licence GPL v3), et son code (ainsi que le protocole de chiffrement) a été vérifié. Que demande le peuple ?

Ah, une compatibilité avec d’autres clients. Il aime bien ça, le peuple. Eh bien, devant la réussite de TextSecure, CyanogenMod a conclu un partenariat avec Open WhisperSystems (l’éditeur de TextSecure) et a pu mettre en place sa propre implémentation du protocole de sécurité directement au sein de sa version d’Android, permettant à l’utilisateur de CyanogenMod de choisir si oui ou non il souhaite utiliser cette fonction, ce qui permettait de chiffrer/déchiffrer directement les messages, à la volée, si besoin était, au sein même de l’application SMS/MMS de base. Rien à installer en plus.

 

Tout allait bien, jusqu’à ce que les développeurs agissent de façon étrange (ou du moins qui a été jugée comme telle par d’autres — je ne me prononce pas sur ce point, un malentendu est vite arrivé…) : retrait de l’application du dépôt logiciel libre F-Droid pour une distribution uniquement sur le Google Play Store (avec un échange plus que houleux sur la question), grosse dépendance à Google (on va détailler ça, c’est le nœud du souci qui nous préoccupe) qui ne va pas en s’arrangeant, et arrêt du support des SMS sécurisés. Oui, vous m’avez bien lu. Des SMS.

 

Logo de TextSecure
Logo de TextSecure

 

TextSecure v2 : de la data, et avec de vrais morceaux de Google dedans

TextSecure v2, c’est une nouvelle version du protocole de sécurité utilisé par l’application TextSecure. À la différence de la version précédente, les messages échangés de façon sécurisée entre les utilisateurs de TextSecure qui utilisent cette deuxième version ne transitent plus par la voie des SMS/MMS, mais par le canal « data » (les données mobiles, quoi. Internet.). Open WhisperSystems fait tourner un serveur annuaire auprès duquel les utilisateurs doivent s’inscrire, et par lequel transitent les messages chiffrés.

Ces messages chiffrés sont délivrés aux destinataires grâce aux fonctionnalités de PUSH d’Android. En gros, les messages, certes chiffrés, passent par… GCM, pour Google Cloud Messaging, seul transporteur selon Open WhisperSystems à être capable de gérer ses millions d’utilisateurs (merci WhisperPush, pour le coup). Et GCM requiert l’installation de Google Play sur le téléphone. Quid des gens qui refusent de l’installer ? La raison officiellement invoquée est la publication rapide des mises à jour. À mon sens, cette raison est contestable et insuffisante, d’autant que le protocole de compilation du Play Store est un poil obscur et surtout non reproductible. Et surtout, pour avoir pu observer à plusieurs reprises une bonne semaine entre l’annonce d’une version X de TextSecure et sa disponibilité effective sur le Play Store français… Bon.

Là où le bat blesse, c’est que Open WhisperSystems a choisi de se concentrer sur le protocole TextSecure v2… En abandonnant le chiffrement des SMS classiques, en particulier pour la compatibilité avec les utilisateurs d’iPhone, puisque Apple n’offre pas aux développeurs la possibilité d’envoyer/recevoir des SMS ! Franchement, des messages chiffrés sous iOS… Alors que la première brique, la plus importante quand on parle de sécurité, c’est le contexte… et iOS est une énormissime boîte noire. On aura tout vu.
Donc, on récapitule : plus de SMS/MMS chiffrés, une forte dépendance à Google, un partenariat avec CyanogenMod (pas une mauvaise chose, entendons-nous, mais WhisperPush n’utilise aussi que le canal des données mobiles, même si les messages sont envoyés/reçus depuis l’application SMS/MMS, ce qui manque de clarté), et un autre avec Facebook/Whatsapp (!!!)… Il était temps de faire quelque chose.

 

SMSSecure est arrivé…

Maintenant, vous savez pourquoi certains ont pensé à se passer de TextSecure, pour ces 2 raisons majeures : restaurer l’envoi/réception de SMS/MMS chiffrés, et rompre la dépendance à Google (entre autres en supprimant les messages PUSH, qui revenaient plus à un genre de iMessage chiffré qu’autre chose).

SMSSecure est donc un fork (un dérivé, basé sur le code source du logiciel original) de TextSecure : cela permet de modifier le comportement de l’application, en y réintégrant les SMS chiffrés, en virant la partie relative aux données mobiles et à l’annuaire des utilisateurs. Il est lui aussi libre, sous licence GPL v3. Le code source est disponible sur Github.

smssecure1

Le design est assez similaire à celui de Google Messenger et utilise les règles du Material Design « suggérées » par Google. Il reprend toutes les fonctions de TextSecure, autres que les messages PUSH évidemment.

Il suffit de 2 « clics » pour démarrer une session chiffrée avec un contact utilisant SMSSecure, l’échange de clés se fait tout seul sans autre intervention de l’une ou l’autre des parties. Ensuite, un petit cadenas sous chaque message indique que le SMS a bien été chiffré, idem pour le bouton « Envoyer ». Le label du champ où vous tapez vos messages est lui aussi précis sur la question. Tout simple, tout clair, tout transparent ! Notez cependant que les métadonnées habituellement associées à chaque SMS (genre le numéro de l’expéditeur, du destinataire, tout ça) continuent à passer en clair, puisqu’elles sont nécessaires à votre opérateur pour acheminer le message… Il faut le savoir, mais pour autant ça ne représente pas une faille, pas plus que pour les mails (puisque même avec PGP, l’objet du mail, le destinataire… sont visibles). Davantage, c’est de la paranoïa ! 😉

Et pour les SMS non-chiffrés « habituels », c’est tout bonnement identique, à part qu’ils sont stockés dans une base de données chiffrés sur votre téléphone, ce qui empêche les autres applications d’y accéder (et éventuellement les indiscrets, pour peu que vous définissiez un mot de passe au lancement de l’application !). À part que l’application est plus sympa visuellement (je trouve) que la plupart des machins à SMS fournis par les constructeurs, dont les designers avaient visiblement picolé plus que de raison.

 

Logo de SMSSecure
Logo de SMSSecure

 

Et si vous avez réellement besoin des messages TextSecure via PUSH, passez à CyanogenMod, ils arriveront quand même à ce moment-là grâce à WhisperPush. Non parce que TextSecure et SMSSecure sur le même téléphone, c’est conflit assuré (en fait, TextSecure intercepte le message chiffré en même temps que SMSSecure. Le dernier vous l’affiche, mais le premier va également vous balancer un message comme quoi le message a été envoyé avec une ancienne version de TextSecure et que vous devez dire à votre contact de mettre à jour son appli. Et/ou renvoyer le message en clair. Paye ta confidentialité.).

 

 

 

Voilà, j’espère qu’avec tout ça vous allez (re)trouver votre bonheur et surtout que vous en profiterez vous convaincre vos amis d’utiliser ce type d’outils ! C’est quand même bigrement simple, vous trouvez pas ? 😉

Vos avis sur cette application sont les bienvenus en commentaires, tout comme les bugs et fonctions que vous souhaiteriez voir ajoutées. Vous pouvez aussi faire remonter ça directement via Github !

 

(merci à Charlotte pour la relecture 🙂 )