Celui qui a inventé la Yes card (1/3)
En faisant de la rétro-ingénierie poussée, un ingénieur invente le principe de la Yes card.
Bonsoir,
Bienvenue pour ce nouvel épisode de Pwned. Si vous n’êtes pas inscrit, voici le formulaire.
Sans plus attendre, on commence avec le premier volet d’un nouvel épisode où l’on va parler de carte bancaire et de sécurité informatique.
La scène se déroule dans les couloirs de la station Balard, dans le sud-ouest parisien. Nous sommes en 1998, il y a 24 ans, autant dire une éternité.
L’homme s’arrête devant deux distributeurs de tickets avec écrans à cristaux liquide couleur. “La Rolls des distributeurs”, se dit cet ingénieur. Puis il sort une carte et achète un carnet de métro au prix de 48 francs (et oui, il n’y avait pas encore les euros).
La machine lui demande son code. Il tape quatre chiffres, n’importe lesquels. “De la même manière, j’aurais pu taper quatre zéros, ou bien 1234, raconte l’ingénieur. Peu importait.”
“Les quelques secondes qui suivirent furent assez intenses, poursuit-il. Comment la machine allait-elle réagir? A l’intérieur, le mécanisme se déclencha, le carnet tomba dans le réceptacle prévu à cet effet, puis la machine me demanda de reprendre ma carte. Tout s’était passé sans problème.”
Voilà, c’était il y a 25 ans, et ce mystérieux acheteur de tickets de métro venait de prouver la faisabilité d’une Yes card. Comme son nom l’indique, une Yes card est une carte bancaire qui dit oui à tout.
Ce type de carte à puce programmable permet d’émuler partiellement le fonctionnement d’une carte bancaire, et accepte n’importe quel code à quatre chiffres. Son but est simplement de tromper le terminal de paiement. Elle va devenir le cauchemar des banquiers.
Ces derniers pensaient pourtant avoir un moyen de paiement ultra sécurisé avec la carte bancaire à puce. Le concept a été imaginé en 1974 par le Français Roland Moreno.
C’est devenu l’un des objets du folklore national. Après les cartes téléphoniques, elle est déclinée en carte bancaire à partir de 1992. C’est donc un motif de fierté tricolore, à ranger du côté des TGV plutôt que des Minitel. Ce qui permet de se gausser des simples cartes à piste magnétique anglo-saxonne à faible sécurité.
Bon ok, l’invention a pris un sacré coup de vieux aujourd’hui avec les cartes bancaires virtuelles. Maintenant qu’on peut les mettre sur téléphone et payer avec le sans contact, l'objet physique a perdu un peu de son intérêt.
Mais en 1996, on est encore loin de tout cela. Pour l’ingénieur, tout commence au restaurant. Il regarde d’un regard vague ce serveur lui tendre le terminal de paiement pour payer avec sa carte. Et puis tout d’un coup, il comprend.
La carte et le terminal ne sont certainement pas sécurisés de la même façon. Et si la puce électronique paraît difficile d’accès, ce n’est pas le cas du terminal de paiement qui ressemble au maillon faible du dispositif.
A posteriori, la carte bancaire n’avait aucune chance. Parlons un peu plus de ce mystérieux ingénieur. Cet homme ascétique, qui pratique le yoga, est en effet du genre obsessionnel.
Par exemple, à la fin des années 1980, il s’est passionné pour la programmation, en fabriquant des virus. Son premier code malveillant est programmé pour signaler des fausses erreurs aléatoires, pour, dit-il, faire paniquer un peu les techniciens.
Puis après s’être essayé au développement de jeux vidéos, l’homme décide de s’attaquer à la sécurité de la carte bancaire. Comme ça, comme s’il décidait d’un coup de se mettre à la voile plutôt qu’au vélo.
On est en 1996 et il passe son temps à faire de l’informatique : son nouveau hobby va lui permettre de retrouver son premier amour: l’électronique.
L’ingénieur perçoit dès le départ que ce projet va le mobiliser des semaines ou des mois. Pas de problème : ça l’intéresse encore plus. L’homme ne va pas chercher très loin. Dans un resto du quartier de l’Opéra, à Paris, il achète un premier terminal pour 1500 francs. C’est pas mal d’argent, à l’époque environ un quart du salaire minimum.
Mais pour l’ingénieur, ce terminal déjà un peu démodé fabriqué par Dassault électronique est la promesse de “milliers d’heures de plaisir pour comprendre chacune des connexions, des contacts, connaître les choix des électroniciens et pénétrer ainsi la personnalité des différents intervenants”.
Cela vous dépasse sans doute, et moi aussi. Mais pourtant, je consacre par exemple personnellement beaucoup d’heures à cette newsletter. Et quand j’arrive à trouver une phrase bien ciselée, je suis fier de moi.
On a donc tous nos obsessions. Certains, comme cet ingénieur, poussent sans doute le bouchon bien plus loin que la moyenne, mais après tout pourquoi pas.
Chez lui, dans sa maison de Seine-et-Marne, l’ingénieur dissèque le terminal. On parle de soudure, de pistes de circuits imprimés coupées. Sa première tentative se solde par un échec: à la suite d’une mauvaise manipulation, la mémoire est complètement effacée.
Ce n’est pas grave, il en achète un autre. Les soudures et les tests reprennent, étalés sur une longue période. Et finalement, l’ingénieur réussit à atteindre un premier graal. Il arrive à brancher son ordinateur au terminal, et donc à récupérer le programme.
L’ingénieur va pousser cette logique jusqu’au bout en concevant son propre terminal. Je ne sais pas si vous prenez la mesure de l’exploit, mais cela va très loin en terme de rétro-ingénierie, cette façon de reproduire le fonctionnement d’une machine à partir de l’observation de son comportement.
L’ingénieur a désormais une bonne idée de la façon dont l’échange entre cet appareil et la carte fonctionne. Le terminal envoie à la carte bancaire le code tapé sur le clavier. La carte confirme qu’il s’agit du bon ou l’informe que le code est faux.
“Le code personnel sert à valider que vous êtes bien le propriétaire de la carte, mais nullement qu’il s’agit d’une carte authentique”, remarque-t-il. On peut donc peut créer une carte à laquelle aucun terminal ne saura dire non.
La suite la semaine prochaine,
Bonne soirée,
Relecture: Mnyo
PS: L’histoire vous a plu? Pour me payer un café c'est ici ou sur mon wallet BTC (bc1qhx49fpxcnlpe35z4z2j4wmrazpvz7a3ejm4rex).