Hacker les nouveaux passes de transport "Navigo Easy" ?

Jeremie A <lp1>
8 min readSep 18, 2019

--

Depuis Juin 2019, la RATP a mis en circulation un nouveau passe sur les lignes parisiennes, le Navigo Easy. Petit cousin du Navigo mensuel et du Navigo découverte il n'est pas nominatif et permet de stocker vos tickets de métro plutôt que de les avoir au format papier.

L'impact écologique est certainement positif et le confort d'une carte sans contact n'est pas négligeable en comparaison avec un ticket classique, mais qu'en est-il de la sécurité de cette solution ?

Si vous savez déjà comment fonctionnent les passes Navigo classiques et que lire une smartcard de transport n'a pas de secret pour vous, les deux passes sont sensiblement les mêmes et contiennent (à peu de choses près) les mêmes informations.

La suite de cet article cible surtout les curieux qui n'auraient pas encore eu l'occasion de fouiller dans leurs cartes de transport.

I — Comment ça fonctionne ?

Tout comme le passe Navigo "classique" ce passe utilise deux technologies différentes : on peut lire les informations de la carte avec contact (grâce à un contact physique avec le microcontrolleur que vous voyez en bas de la carte) mais également sans contact (comme lorsque vous payez avec votre carte de crédit en la tapotant sur un TPE).

Mon passe Navigo Easy

Lorsqu'une entreprise utilise une smart card avec deux modes de communication comme celle-ci, deux options sont possibles :

1- Soit la carte possède une puce NFC et une puce avec contact différentes (c'est le cas le plus rare en ce qui concerne ces cartes, cela impliquerait que les deux puces contiennent des jeux de données différents) on parle de carte hybride dans ce cas là.

2- Ou alors (et c'est le cas le plus commun) la carte possède une seule puce sans contact à laquelle est ajoutée une antenne pour la rendre compatible avec le sans contact. C'est ce qu'on appelle une carte "double interface".

Si on prend en compte la manière dont la carte est utilisée (elle n'a qu'un seul cas d'usage : on la pose sur une borne pour valider un trajet) et le fait que les cartes hybrides sont peu répandues, il serait plus probable que la carte ne possède qu'une seule puce et donc un seul jeu de données (si on fait quelques recherches sur le Navigo on peut d'ailleurs trouver l’information facilement).

Nous allons nous en assurer en essayant de lire les informations contenues sur la carte des deux manières :

II — Sans Contact

Le lecteur utilisé pour la lecture des informations en NFC est un ACR122U et le logiciel pcsc_scan de la suite pcsc-tools (disponible sur MacOS et GNU/Linux).

Une fois la carte posée sur le lecteur, voici ce que pcsc_scan nous affiche :

Plusieurs informations utiles sont référencées sur cet écran, en premier lieu l'ATR.

L'ATR (Answer To Reset en Anglais) est une réponse renvoyée par une smartcard au début de la communication avec un périphérique. Le contenu de cette réponse permet d'identifier le type de smartcard utilisé.

Cet ATR est reconnu et correspond (comme indiqué plus bas en bleu) bien à un passe Navigo Easy!

Lors de mes premiers tests avec mon passe, il n'était pas reconnu. Les informations que vous voyez sont en réalité celles que j'ai ajouté à la base de données de http://smartcard-atr.appspot.com afin d'y ajouter les passes Navigo Easy. C'est un bon réflexe d'ajouter des informations sur les smart cards inconnues dans cette base de données afin que d'autres puissent en profiter.

Maintenant que nous savons que notre lecteur est capable d'échanger avec le passe, comment faire pour lire les informations stockées dessus?

En faisant quelques recherches sur la technologie utilisée par Navigo on apprend que le standard de communication utilisé par ces passes s'appelle Calypso, c'est une norme internationale crée par Innovatron utilisée par différentes cartes de transport et dont les spécifications sont librement accessibles (en Anglais) !

Sur une carte Calypso les informations sont protégées en écriture par un chiffrement et une vérification de signatures solides qui ne possèdent pas de faille connue, ce qui rend l'altération des données du passe Navigo Easy pour le moins compliquée à ce jour.

En revanche si on ne peut pas écrire, il est possible de lire les informations renvoyées par la carte, certaines implémentations du protocole de communication utilisé par les cartes Calypso existent sur PC et sur Android !

J'utiliserai pour mes tests le logiciel CardPeek, qui est compatible (entre autres, il permet de lire beaucoup d'autres cartes) avec les cartes de transport Calypso.

Après l'avoir lancé et cliqué sur le bouton "Analyzer->Calypso" voici un extrait de ce qu'il affiche concernant mon passe Navigo Easy:

On retrouve en haut de la liste l'ATR précédemment découvert, mais cette fois-ci de nouvelles informations s'offrent à nous :

La catégorie "Environment" contient des informations sur le pays de déploiement de la carte de transport : country France, French Republic / network 901.

ainsi que la durée maximale de validité de la carte (28/02/2029) qui ne m'avait pas été communiquée lors de l'achat de celle-ci (ceci dit il est peu probable que je ne la perde pas d'ici 2029).

Aucune information concernant le propriétaire de la carte n'est (heureusement) disponible, les cartes n'étant pas nominatives.

En revanche dans la partie "Event logs" il est possible de consulter (tout comme sur les anciens passes Navigo) les dates, heures et noms de stations des trois dernières bornes où a été validé le passe.

Ici par exemple, on voit que j'ai validé mon badge le 15/09 à 19:50 à Saint-Germain des près, plus tôt dans la journée à 15:59 à Gambetta et le 09/09 à 00:22 à Grands Boulevards.

Enfin, la catégorie "Contracts" (une liste des transactions) de la carte ne contient qu'une seule entrée remplie, qui au vu du prix (0,01€) de la transaction n'est à mon avis qu'utilisé pour garder en mémoire la date d'activation de la carte (03/09/2019 pour la mienne)

Le passe Navigo Easy suit donc bien, tout comme le passe Navigo original le protocole utilisé par les cartes de transport Calypso, et peut être lu de la même manière.

Essayons maintenant de lire les informations de la carte grâce à son autre mode de communication.

III — Avec Contact

Pour lire les informations sur la puce de ma carte Navigo j'utilise un lecteur avec contact (on glisse la carte à l’intérieur pour que le lecteur puis envoyer des commandes à son microcontrolleur) AU9560 (celui-ci pour être précis) ainsi que pcsc_scan à nouveau.

Un ATR différent est affiché et la carte n'est cette fois-ci pas reconnue. Mais peu importe, si la puce est comme nous le supposons la même que celle lue plus tôt en sans contact ses informations devraient être lisibles de la même manière !

J'ai fait la demande d'ajout de l'ATR dans la base de données, il est probable qu'elle soit maintenant ÉGALEMENT reconnue en tant que carte "Navigo Easy" si vous faites le test.

Sur CardPeek la lecture avec contact est plus lente qu'avec la technologie NFC mais une fois les commandes envoyées à la carte, les mêmes informations sont renvoyées par celle-ci :

Comme attendu, on retrouve bien sensiblement les mêmes informations sur la carte, qu'on lise les données de sa puce avec ou sans contact !

IV —En résumé

La RATP a fait le choix avisé d'utiliser pour ses passes Navigo (anciens et nouveaux) un standard de communication éprouvé et réputé fiable : Calypso.

Depuis les années 90 une dizaine de pays l'ont adoptée pour leurs cartes de transports (Strasbourg, Lisbonne, Venise, Porto, Lyon []) et il n'y a pour le moment pas eu de preuve d'atteinte effective à la sécurité de la solution.

En revanche, il faut garder en tête que votre nouveau passe Navigo Easy, bien que non nominatif contient des informations très précises sur vos déplacement.

L'utilisation de ces informations pour du stalking, de la surveillance et d'autres atteintes à la vie privée reste à la portée de n'importe quelle personne ayant un accès physique à votre passe, même sans connaissances techniques.

Si nous avons utilisé divers appareils de lecture et logiciels afin de lire les données du passe Navigo, ces opérations sont également réalisables très simplement à l'aide d'un smartphone Android possédant une puce NFC.

Au risque d'en décevoir certains, il est à ce jour peu probable que vous puissiez recharger votre passe Navigo Easy sans payer. Il est aussi peu probable qu'une personne puisse voler les tickets que vous avez mis dessus.

Par contre toutes les villes n'ont pas apporté autant d'attention à la sécurité de leurs cartes de transport que Paris. Par exemple Turin, San Franciso, certaines grandes villes du Chili, Boston et assurément beaucoup d'autres on fait le choix d'utiliser des technologies dépassées et connues pour être vulnérables (Les Mifare Classic, Desfire et Ultralight si vous souhaitez vous renseigner dessus).

La prochaine fois qu'une entreprise vous propose une carte sans contact n'hésitez pas à questionner et vous assurer de la sécurité des informations contenues sur celles-ci, même si c'est votre carte bleue !

Pour plus d'informations sur l'exploitation de cartes NFC (Anglais) :

Des ressources utiles sur le sujet :

https://speakerdeck.com/rlifchitz/hacking-the-nfc-credit-cards-for-fun-and-debit

Illustration de Freepik

--

--