SMSSecure : le retour des SMS chiffrés

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 🙂 )

21 réflexions sur “ SMSSecure : le retour des SMS chiffrés ”

  • 15 avril 2015 à 13 h 50 min
    Permalink

    La question qui reste c’est : si Cyanogen laisse fonctionner le PUSH, comme tu le suggères, par quel service passent-ils? Google aussi?

    Réponse
    • 16 avril 2015 à 7 h 06 min
      Permalink

      Non, CyanogenMod / WhisperPush n’utilise pas les services de PUSH de Google, mais un système à base de WebSocket déjà implémenté dans TextSecure côté serveur (mais pas encore dans le client), pour « à terme » permettre (à nouveau) de ne plus dépendre de la présence de Google Play Services sur le smartphone de l’utilisateur. En gros, ils ne passent pas par un service tiers !
      C’est pour ça que WhisperPush est fonctionnel dans CyanogenMod alors que cette distribution Android n’inclue pas les Google Apps, à la base ! 🙂

      Réponse
  • 19 avril 2015 à 14 h 46 min
    Permalink

    Pour une application SMS , c’est pas handicapant d’avoir une appli qui ne prévient pas quand on reçoit un SMS au moment ou on la reçu ? sans pour autant regarder tout les x minute si un SMS est arrivé.
    Pour les tête en l’air (que je suis) je verrais le SMS plusieurs heures ou jours après.

    Réponse
    • 19 avril 2015 à 21 h 03 min
      Permalink

      Qui a dit qu’elle ne prévenait pas ?! Je tombe des nues là, aussi bien TextSecure que SMSSecure ont des notifications : vibration, « rappel » après 10min, DEL, et sonnerie. Classique quoi. J’ai du mal à voir où est le handicap…

      Réponse
      • 20 avril 2015 à 7 h 37 min
        Permalink

        Si je ne m’abuse, le service de push c’est uniquement pour les messages « non-SMS » que propose TextSecure, non? Parce que je ne vois pas l’intérêt d’un service de push pour des communications qui ne passent même pas par internet.

        Réponse
        • 20 avril 2015 à 8 h 11 min
          Permalink

          Exact.

          Les SMS (protocole TextSecure v1) passent par le canal habituel, ils sont simplement chiffrés via un cryptosystème à clés asymétriques, à la volée, juste avant envoi. Avec des bidouilles capables d’assurer la Forward Secrecy dans un environnement asynchrone (un dérivé d’OTR).

          Les « messages TextSecure » (protocole TextSecure v2) passent par le canal data, et s’ils arrivent bien dans l’appli, ce ne sont effectivement pas des SMS et ils n’empruntent jamais la voie des SMS, ils sont simplement associés à un contact existant et « fusionnés » dans la conversation (un peu comme Hangouts qui est capable de fusionner la conversation par SMS et la conversation via XMPP pour un même contact). Et c’est dans ce contexte (uniquement) que Push entre en jeu, pour que le serveur TextSecure « pousse » le message vers le destinataire le plus rapidement possible, au travers de Google Cloud Messaging dans le cas d’Android.

          C’est plus clair ainsi ? 🙂

          Réponse
      • 22 avril 2015 à 16 h 26 min
        Permalink

        Ne réagit pas comme cela , je poser une question (je ne l’est pas encore tester)
        J’ai confondu le push avec les notification en temps réel , c’est tout

        Réponse
        • 22 avril 2015 à 17 h 52 min
          Permalink

          Non mais y’a pas de soucis hein, je me demandais juste d’où tu tenais cette info. Mais tout s’éclaire 🙂
          Tu as testé depuis ?

          Réponse
  • 24 avril 2015 à 13 h 57 min
    Permalink

    Merci pour ces infos. Mais peut-on communiquer entre SMSSecure et un téléphone portable iOS en crypté? Cela fonctionne-t-il avec Signal?

    Réponse
    • 25 avril 2015 à 9 h 21 min
      Permalink

      Non on ne peut pas. C’est justement à cause des iPhones que SMSSecure est apparu… iOS interdit à une application d’envoyer des SMS à sa place. Du tout, dans Signal, seuls les messages ‘data’ au protocole TextSecure v2 fonctionnent. Lesquels ne sont pas supportés par SMSSecure pour les raisons énoncées ci-dessus 😉
      iOS ne permet pas de chiffrer ses SMS, mais pour ce qui est d’un protocole propre à une application, pas de souci. Voilà voilà 🙂
      Pour du chiffré (pas « crypté » !!), il faut Signal et TextSecure sur 2 mobiles qui ont accès à internet en permanence (sinon c’est asynchrone).

      Réponse
  • 10 mai 2015 à 19 h 41 min
    Permalink

    Bonjour,

    Savez vous quel est le protocole de chiffrement qui est utilisé dans sms secure ?

    rsa 2048 bit etc ..?

    Réponse
    • 11 mai 2015 à 8 h 02 min
      Permalink

      Bonjour,
      le(s) lien(s) vers les spécifications du protocole TextSecure est donné dans l’article. Pour le protocole utilisé par SMSSecure, il s’agit de TextSecure v1, un dérivé du protocole OTR. Il est précisé sur la page :

      The TextSecure encrypted messaging protocol is derivative of OTR Messaging. The major difference being the use of ECC keys instead of standard DSA as well as the compression of some data structure formats.

      Du coup, il faut jeter un œil aux specs de OTR (AES, Diffie-Hellman, SHA-1…).

      Réponse
      • 11 mai 2015 à 14 h 51 min
        Permalink

        Bonjour,

        Existe t-il une app pour passer des appels chiffrés sans internet ?

        Réponse
        • 28 mai 2015 à 7 h 41 min
          Permalink

          Bonjour,

          pas à ma connaissance, non. J’ai utilisé RedPhone pendant un temps, mais bon, j’avais 1 contact qui l’utilisait… Et de toutes façons le service d’annuaire passe par le canal de données mobiles.

          Si quelqu’un a une suggestion ? 🙂

          Réponse
  • 28 mai 2015 à 15 h 48 min
    Permalink

    Salut, Oui mais esque qd je met un mot de pass sur mn application SMS sa cripte les sms ???
    J’ai un Iphone est ce que sa marche aussi?

    Réponse
    • 28 mai 2015 à 16 h 08 min
      Permalink

      Salut,

      non, mettre un mot de passe sur une application ne suffit pas à en chiffrer le contenu. Ce serait trop simple ! 😉

      Et non, SMSSecure ne fonctionne pas sur iPhone. En fait, et comme précisé dans l’article, aucune application SMS pour iPhone n’est capable de le faire, puisque Apple n’autorise pas les applications tierces à envoyer/recevoir des SMS.

      De toutes façons, on en revient au même : la base, dans la sécurisation de ses communications électroniques, c’est la sécurité du contexte. Et iOS, on ne sait pas comment il fonctionne, vu que c’est un logiciel propriétaire. Chiffrer un truc, c’est bien, mais si le système au sein duquel tu entres la clé de sécurité n’est pas fiable et est capable de l’enregistrer, alors il pourra accéder à tes messages chiffrés. Si tu tiens à ta vie privée, bannis les logiciels privateurs et jette ton iPhone, puisque tout ce que tu pourras faire dessus est compromis. Une grosse boîte noire. À éviter.

      Signal fonctionne sous iOS, mais nécessite un accès Internet, et que les 2 parties l’utilisent. Avec toujours le souci du contexte, mais bon, c’est « mieux que rien »…

      Hem… Un petit effort sur le français la prochaine fois, par pitié pour mes yeux (et ceux des lecteurs) ? Merci ! 😛

      Réponse
  • 28 mai 2015 à 15 h 55 min
    Permalink

    Slt xLolita.

    La cripte c la ou on met lé gens mort.

    Réponse
  • 10 juillet 2015 à 14 h 02 min
    Permalink

    Bonjour,
    Tout d’abord bravo pour ton article qui m’a permis d’y voir plus clair et de me rassurer dans l’utilisation de tels applications.

    J’utilise textsecure en ce moment avec encryption par data.Si je t’ai bien compris il vaudrait mieux passer par cyanogen mod pour éviter que Google fourré son nez encore un peut plus dans nos smartphone.
    En gros en passant par le push made in cyanogen aucun risque malgré la meilleur protection du monde que Google soit mêlé à nos conversations ?

    Réponse
  • 13 septembre 2015 à 9 h 52 min
    Permalink

    Bonjour
    Merci pour ce chouette article. Je veux bien jeter mon iPhone mais sur mon Android
    Les applications que je me procure vont réclamer des droits d’accès sur l’appareil. Pour la plupart, elles ne se gênent pas pour demander des droits sans rapport avec leur fonction. Puis je me sentir en sécurité si une appli capture mes frappes clavier avant quelles soient (criptées) chiffrées.

    Réponse
  • 31 janvier 2016 à 0 h 19 min
    Permalink

    Salut ! Ben moi suis du genre « smssecure pour les nuls ». J ai installé donc sur mon tel. J ai cliqué suivant, suivant, suivant puis cliqué sur petit cadenas ouvert en haut, on me dit « commencer conversation chiffré » je clique dessus, ma copine recois une clé sur sa boite sms native et sur smssecure !!! Arrivé la elle fait quoi avec cette clé ??? En plus elle apparait en clair fans sa boite sms native !? Faut savoir que je n ai pas demandé a ce que smssecure remplace la boite sms native pour essayer d abord, fe plus il y a aucune aide ou mode d emploi complet en francais… Bref si quelqu un peut me dire comment je dois valider la cle de chiffrement quand j en recois une ca serait cool et si c est normal de la voir en « clair » ?

    Merci a tous

    Réponse

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *