Depuis quelques semaines/mois, whatsapp a annoncé avoir déployé le support de la End2End Encryption, qui est le moyen de sécuriser par cryptage les communications entre les abonnées Whatsapp, de telle façon à ce que seuls les destinataires du messages puisse le décrypter et le lire, et ceci grâce au partenariat avec Open Whispers Systems à travers leurs librairie TextSecure (déjà déployée sur plusieurs solutions de messagerie sécurisée). Je vais reprendre ici les travaux de chercheurs allemands de HEISE.de qui ont regardé en détail ce nouveau chiffrement et sa façon de fonctionner ainsi que ces limitations et vulnérabilités. En fin d’article, un lien vers le droit de réponse du créateur de TextSecure.
Ce travail a été effectué par des chercheurs allemands de HEISE, (http://www.heise.de/security/), je vais essayer de simplifier, traduire et vulgariser leurs travaux et montrer les limites de l’implémentation actuelle de textsecure dans whatsapp.
Whatsapp n’étant pas ouvert, ces chercheurs ont utilisé intensivement la librairie python Yowsup (pour rappel, la même librairie utilisée dans mes précedents articles sur whatsapp). Pour celà, le problème a été abordé sur deux fronts : Ils ont analysé le flux qui va du smartphone vers les serveurs de whatsapp, et le flux reçu des serveurs whatsapp vers un terminal avec Yowsup. et Puisque Yowsup est très bien documenté et ouvert, ils ont pu adapté certaines lignes pour montrer le cryptage et le décryptage.
Mise en place de l’environnement de test
NB : N’hésitez pas à me contacter si vous avez besoin de faire fonctionner yowsup, ou wireshark-whatsapp dissector for wireshark. La compilation de ces projets est une prise de tête phénomènale, mais on y arrive au bout de quelques jours.
Voici le schéma de l’installation :
A noter que dans ce lab, le whatsapp client sur le smartphone, discute avec un client virtuel sur yowsup.D’autres recherches montrent que whatsapp utilise un cryptage propriétaire, basé sur un algorithme RC4 connu pour ces failles. En plus, l’application utilise une clé, dérivée du mot de passe utilisateur, pour les messages entrants et sortant ce qui agrandit l’ampleur de l’attaque et de l’impact en cas de clé craquée. Cependant ce cryptage est là, d’après le discours, pour prévenir la collection massive d’information sur les réseaux.Ceci permetterait donc à whatsapp d’être la seule entitée capable d’offrir ce service de collecte de donnée, puisque jusqu’a très récemment, il n’y avait pas de cryptage E2E. Whatsapp n’a jamais officiellement documenté ce nouveau cryptage, ni comment est implémenté ce cryptage en addition au cryptage RC4. D’après le créateur de TextSecure, les messages seraient sécurisés si les deux parties supportent le E2E Encryption.
Comprendre à travers l’OpenSource
Yowsup peut être utilisé pour envoyer et recevoir des messages whatsapp entre un PC et les serveurs Whatsapp. La version actuelle de yowsup supporte un mode expérimental –moxie qui permet de démarrer le client whatsapp avec un support de la E2E Encryption. Ensuite, Yowsup comporte un bout de code “Axolotl Encryption” qui est un port de TextSecure. A travers le code ouvert de yowsup, ceci permetterait de mieux comprendre ce qui se passe.
Pour cette expérience, le code yowsup a été patché et modifié afin de montrer sur le output du terminal, le texte codé et décodé à la reception ( lien du patch ) . Ce patch permet, à la reception de montrer le contenu chiffré recu par yowsup, ce contenu est en effet converti, depuis le mode binaire en mémoire, en Hex Dump sur l’écran. Une comparaison avec le traffic intercepté par wireshark montre qu’en effet, c’est le même contenu chiffré envoyé par le téléphone.
Le schéma ci dessous explique le flux de décryptage de Yowsup.
Le code de yowsup appelle ensuite axolotl library afin de décrypter le message, un autre changement dans le patch permet de montrer sur l’écran le message clair recu après décryptage par axolotl.
Les chercheurs ont conclu que les smartphones android envoient exclusivement du E2E Encryption aux recepteurs capables de cette même Encryption. Et ceci à travers TextSecure. Cependant, lorsque le test a été fait avec les clients iOS (iphone), les messages recus n’etaient pas protégés ainsi.
Cette simple expérience montre que la E2E encryption n’est pas totale, et est désactivée lorsque certains critères sont atteints. La plus évidente est lorsque le B Number est un iphone, la E2E encryption est désactivée. La fonctionnalité est hardcoded sur whatsapp, nous ne savons pas à ce stade quels sont les critères exhaustifs qui l’activent ou la désactivent.Aussi nous ne savons pas si les clés générés par le client WhatsApp pour coder les messages, sont effectivement variables comme le suggère TextSecure, et Si ils sont supprimés du handset sous certaines conditions. MAis du moment que whatsapp peut forcer n’importe quel client à désactiver l’encryption, sans que l’utilisateur ne s’en rende compte (icone verrou activé sur l’écran par exemple), alors avoir la clé n’est pas si important. Le contrôle reste toujours chez Whatsapp.
Conclusion
Les chercheurs ont conclu que le réel problème avec la “endtoend encryption” de whatsapp, c’est que l’on ne sait jamais quand est ce qu’elle est activée et utilisée. Rajoutée à celà, le non engagement de Whatsapp à garantir cette fonctionnalité pour tout le monde, cette fonctionnalitée reste du “best effort”.
Droit de réponse
Dans un passionant échange REDDIT (https://www.reddit.com/r/Android/comments/34ecja/the_heise_security_team_investigated_whatsapps/cqtygha), Le créateur de TextSecure s’est défendu en disant que l’implémentation n’est pas encore finalisée et que whatsapp n’a pas encore sécurisé l’ensemble des communications dans l’ensemble des situations.
“We announced a partnership, not a finished deployment.”
A suivre ….
Pour reproduire le labo :
Wireshark : https://www.wireshark.org/
Yowsup : https://github.com/tgalal/yowsup
Wireshark-whatsapp dissector : https://github.com/davidgfnet/wireshark-whatsapp (plus simple a compiler en .so sur linux que en .dll sur windows …)
Leave a Reply