La carte bancaire et les scripts EMV

Vous avez votre carte bancaire dans les mains, quelles sont les possibilités permises à votre banque pour modifier celle-ci sans en fabriquer une nouvelle. Abordons le sujet des scripts EMV, ou plus exactement, « EMV Scripting Service », « Secure Messaging » ou « EMV Issuer Scripts ».

Entre fantasme d’actualiser à distance les numéros de votre carte physique, ou exaspération des clients qui déclarent une carte perdue et ne comprennent pas qu’elle ne puisse être débloquée. On vous propose de plonger dans une fonctionnalité EMV supportée par votre carte bancaire.

EMVCo

Derrière ce nom se cache une société qui s’occupe de l’interopérabilité au niveau mondial des cartes à puce. Elle s’occupe donc de réguler et définir les spécifications EMV (Europay Mastercard Visa) reposant sur ISO/IEC 7816.

Il faut donc comprendre que tous les équipements qui prennent en charge la carte à puce sont soumis à ces règles. Une banque, un équipementier pour un terminal de paiement, un distributeur de billets, un automate, etc. vont donc tous respecter cette norme afin que votre carte puisse fonctionner.

La société EMVco s’occupe même de certifier les sociétés qui délivrent des tokens comme Visa, Mastercard, STET. Mais également les prestataires de services qui vont proposer des plateformes 3DSecure, l’émission de carte et bien d’autres métiers qui gravitent autour du paiement physique ou à distance mais également des retraits.

Son activité principale, repose essentiellement sur la norme EMV touchant le paiement « contact », « sans contact », « mobile », « token », « QR Code » entre autres.

EMV Issuer Scripts

Toutes les cartes à puce embarquent un noyau qu’on nomme « Kernel ». C’est le cœur du fonctionnement de votre carte. C’est lui qui va faire fonctionner le microprocesseur qu’embarque votre carte à puce.

En complément de la puce, vous avez bien souvent une piste magnétique nomme « ISO ». Cette dernière n’est pas pilotée par votre puce, elle est statique et fonctionne de manière autonome.

Une fois la carte produite, il a été imaginé de permettre des actions par l’émetteur de cette dernière, sans qu’il soit obligatoire de commander une nouvelle carte. Ces actions, vous l’aurez compris, sont normées dans les règles EMV.

Par conséquent, il est impossible de faire ce que l’on veut. Les équipements comme les Terminaux de Paiements Electroniques ou les Distributeurs Automatiques Bancaires embarquent ces règles.

Les scripts émetteurs sont donc limités à quelques actions très spécifiques. Tout ce qui n’est pas prévu par EMV nécessite alors de fabriquer une nouvelle carte et l’envoyer au client.

Pour simplifier, chaque action faite sur votre carte par l’émetteur de cette dernière passe par un mécanisme de chiffrement en 64 bits basé sur DES. Ces clés sont hautement confidentielles. Il en existe principalement 2 :

  • L’une est une maître, elle appartient à la banque, elle est commune à tout un lot de cartes.
  • L’autre est individuelle, elle est associée spécifiquement à votre carte bancaire et votre puce.

Ces clefs vont être associées pour chiffrer un message en y ajoutant des données comme le PAN (le numéro de la carte). Forte de ces informations, votre carte va pouvoir comprendre, et décoder le message.

Il est donc impossible de faire croire à votre carte qu’elle doit exécuter un script qui ne proviendrait pas de l’émetteur de cette dernière. S’il y avait tentative, elle ne pourrait déchiffrer le message avec les clefs qu’elle embarque. Le script EMV serait donc purement ignoré par la puce. Les contrôles de cohérence s’opèrent à plusieurs niveaux.

Lancement de scripts EMV par les émetteurs

Les scripts sont donc exécutés par le TPE (POS en Anglais), ou le DAB (ATM en Anglais) lors du retour à une demande d’autorisation. Par conséquent, il est impossible de jouer un script EMV sur un paiement « offline ».

Dans la pratique, il est possible de faire plusieurs instructions en une fois. Dans les faits, on fait autant de scripts qu’il y a d’actions à effectuer. On utilise donc une priorité, afin de dire au TPE/DAB quel est l’ordre de traitement.

On va également pouvoir préciser si au moment du retour à la demande d’autorisation, le script doit être traité par le TPE avant que ce dernier ne se préoccupe de savoir si le paiement est accepté ou refusé, ou alors, après la prise en compte de l’état de l’autorisation.

Il est très rare d’effectuer des scripts avant la finalisation du paiement, sauf cas spécifiques comme le blocage de la carte après une déclaration de perte / vol / retrait carte par la banque.

La majorité des scripts s’exécutent donc après la finalisation de l’opération. C’est-à-dire « transaction refusée » ou « transaction acceptée ». Beaucoup d’émetteurs n’envoient pas de scripts lorsque la transaction est rejetée. L’émission de script se fait essentiellement en cas de réponse « 00 » c’est-à-dire « transaction autorisée ».

L’émetteur ne sait jamais immédiatement si son script a été traité avec succès ou non. Il lui faudra attendre la prochaine autorisation « online » afin de récupérer le résultat de son script EMV.
Et là vous vous dites peut être, je comprends mieux pourquoi ma banque demande de faire 2 retraits pour activer/désactiver le sans contact par exemple. En fait c’est tout simple

  • Au premier retrait, la banque envoie son script.
  • Au second retrait, la banque récupère le résultat et actualise son système.

Elle peut donc réémettre le script EMV si la carte lui indique à ce second retrait que le script n’a pas fonctionné.

Les types de scripts EMV fréquemment utilisés

La liste n’est pas très longue, car peu de possibilités sont offertes après l’émission d’une carte. Nous allons citer principalement :

  • Modification du code PIN, Déblocage du code PIN
  • Bloquer la carte, Bloquer / Débloquer une Application (Visa ou Mastercard ou CB par exemple)
  • Actualisation de paramètres comme la limite de paiements « offline » ou l’état du sans contact

La commande « CARD BLOCK »

En cas de perte, vol ou de confiscation de la carte par la banque, une commande « CARD BLOCK » est envoyée. Avec une telle commande, on bloque de manière définitive et durable la puce de votre carte bancaire. A partir de cet instant, elle n’acceptera plus jamais de commande EMV. Il est donc impossible de la débloquer après un tel script EMV. C’est pour cela qu’il faut commander une nouvelle carte après l’avoir déclarée perdue ou volée.

Techniquement, tant que le script n’est pas exécuté sur le puce de votre carte, votre banque pourrait annuler cet ordre. Dans la réalité, les réseaux sont défavorables à la suppression d’une telle commande EMV. Pour eux, si la commande est en queue pour exécution, elle ne doit pas être supprimée. Cela peut paraître contraignant, mais c’est comme ça. Le but est d’éviter que des personnes qui perdent leur carte, la retrouve, puissent se faire abuser par un tiers qui l’aurait trouvé entre temps, et aurait relevé les données pour l’utiliser.

La commande « PIN UNBLOCK » ou « PIN CHANGE »

Vous avez fait 3 codes PIN faux. A partir de là l’application de votre carte se bloque, et le nombre de tentatives PIN est mis à 0 par votre carte. A ce stade, si vous insérez votre carte dans un TPE en France, il ne vous demandera pas le PIN, il refusera votre paiement. L’émetteur de la carte peut donc utiliser « PIN UNBLOCK » ou « PIN CHANGE » pour débloquer votre carte.

La commande EMV « PIN UNBLOCK » est automatisée dans un seul groupe bancaire en France, c’est chez Crédit Mutuel / CIC. Si vous avez fait 3 codes PIN faux, il suffit d’aller dans n’importe quel distributeur et faire un retrait avec le bon code PIN. La carte notifie son état, et si le PIN est accepté avec le retrait, la banque retourne « PIN UNBLOCK » qui a pour action de débloquer votre carte et remettre le nombre de tentatives à 3 essais. Si vous vous trompez, alors ce sera comme pour toutes les autres banques, la carte est avalée et une commande « CARD BLOCK » est généralement répondue par l’émetteur pour la bloquer définitivement.

Certaines FinTech comme Revolut nécessiteront d’effectuer une action dans l’application afin que « PIN UNBLOCK » soit envoyé lors de votre prochain retrait (ou en PIN Online à l’étranger). D’autres FinTech comme N26 ou bunq vont opter plutôt pour la commande « PIN CHANGE ». Cette commande modifiera le code PIN et de le débloquera.

Quand vous modifiez votre code PIN dans l’application d’ING, bunq, N26, Moneway, American Express… ils préparent en réalité une commande EMV nommée « PIN CHANGE » qui va contenir le nouveau PIN chiffré.

C’est l’une des commandes EMV les plus sensibles car on va toucher à l’intégrité de certaines zones de la puce. Vous comprenez donc l’intérêt des clés et des multiples contrôles avant qu’un script EMV soit accepté par la puce.

En France, les cartes classiques embarquent CB en complément de VISA ou MASTERCARD. La modification du code PIN est donc complexifié car il faut actualiser 2 applications. Ces opérations demandent une excellente maitrise de la technologie EMV. Lorsqu’il n’y a que Visa ou Mastercard c’est très simple, il n’y a qu’une seule application.

A notre connaissance, en cobadgé, seul le Crédit Mutuel et le CIC (y compris Banque Casino et Monabanq) proposent les modifications de codes PIN à leurs clients. Toutefois, par contrainte technique, il faudra effectuer l’opération sur un DAB du Crédit Mutuel ou du CIC afin d’avoir le menu pour la modification du code PIN.

La Commande « PIN CHANGE » est l’une des rares qui peut s’initier par l’utilisateur. Si le DAB est compatible, il peut afficher un menu « PIN » proposant cette action. L’émetteur de votre carte doit également être compatible avec cette initiation par « ATM ». Le DAB chiffre donc le PIN souhaité et l’émetteur en prend connaissance, le stock en déchiffré, et génère un script EMV qui est retourné au DAB afin que la puce soit actualisée.

L’opération est plus lourde qu’un changement via l’application bancaire, mais plus sécurisée car vous devez connaître l’actuel PIN pour le modifier. En France, les DAB classiques ne proposent pas ce service, et même si à l’étranger vous avec un DAB compatible, les banques Françaises ne traitent pas ces commandes. La position de la France n’est pas isolée, on retrouve cela en Allemagne, Luxembourg et bien d’autres pays. S’il y a un problème dans le chiffrement, la carte est morte, et les incidents arrivent malheureusement. Cette fonctionnalité n’est donc pas conseillée, et donc souvent débrayée.

Les scripts EMV rarement utilisés

Nous avons pu voir en détail les principaux scripts implémentés. Passons à présent à ceux moins fréquemment exploités. Ce choix est souvent dû au fait que VISA et Mastercard n’autorisent pas les mêmes actions.

La modification des paramètres « offline »

Dans l’article sur le « offline » nous évoquions les paramètres que la carte pouvait demander au TPE lors de la transaction afin de décider du « online » ou « offline ».

Cet ensemble de paramètres nommé « CDOL » peut s’actualiser via un script émetteur sur une Mastercard mais pas sur une VISA. Mastercard au travers de ses règles « M/Chip » autorise plus de modifications que VISA avec ses règles « VIS ».

Ce qu’on trouve de commun aux 2 réseaux concerne les limitations sur l’utilisation de votre carte en « offline ». Là encore, en France une seule banque actualise de manière dynamique ces informations selon l’usage de ses clients. Cela se fait donc sur la base de la connaissance du client surtout, à défaut d’une action manuelle sur la configuration carte. Sans citer son nom, c’est la même que celle qui débloque automatiquement le code PIN. Dans l’univers de la FinTech aucune ne fait ça de manière dynamique, mais 2 l’ont fait exceptionnellement.

La première c’est Curve. La fintech anglaise avait testé pendant un temps de proposer le « sans contact » en « offline » afin d’aller plus vite. Mais face aux critiques des clients, ils sont revenus sur un « sans contact » en « online ».

La seconde c’est bunq qui a actualisé la configuration « offline » des cartes de tous ses clients. Initialement non compatibles avec le « offline », bunq a lancé un script EMV global sur toutes les cartes, afin de passer la limite à 250€.

L’activation et la désactivation du sans-contact

C’est une fonctionnalité qui est assez simple. Elle est fréquemment utilisée par les scripts EMV.

Quand votre carte est livrée, le sans contact est souvent désactivé dans la puce et non simplement bloqué au moment de l’autorisation. Il y a une valeur nommée DF30 qui portera la position « 01 ». Par conséquent, à l’approche d’un signal NFC votre carte répondra « non » sans divulguer ses informations. Après une première transaction avec code PIN, la valeur passe de « 01 » à « 03 ». Dans cet état, le « sans contact » devient opérationnel.

Encore une fois, le nombre de banque maitrisant ça est rare, et côté FinTech c’est même néant, à l’exception de Nickel et Max, les autres se contentent de bloquer les autorisations « sans contact » quand elles atteignent leur système, mais ce n’est pas désactivé en natif au sein de votre puce.

La mise à jour du montant autorisé en sans contact

Autre exemple de script EMV, là encore, seul Crédit Mutuel/CIC avait cette performance technique. Quand le « sans contact » est passé de 20€ à 30€, toutes les banques ont proposé le renouvellement anticipé de la carte, ou attendre l’expiration. Côté Crédit Mutuel, ils ont géré l’actualisation en passant simplement dans un de leur DAB.

Contrainte technique des scripts EMV

Nous trouvons déjà une limite technique. Un script EMV ne peut pas excéder 128 bytes. Au-delà il est considéré comme invalide par la puce et non traité. C’est une limite dans la norme ISO 8583 qui régit les échanges sur les réseaux bancaires mondiaux.

L’autre contrainte, c’est qu’un émetteur VISA doit gérer un élément technique nommé DE142 et DE55 pour Mastercard dans sa réponse. Il faut donc être maître de son architecture ou avoir un bon partenaire technique. C’est le choix fait par N26, Moneway, Revolut qui délèguent cette partie EMV.

On ne peut jamais actualiser les certificats de chiffrements (DES) embarqués dans la puce, et le PAN (c’est-à-dire les 16 chiffres pour une carte classique). Ces informations servent de base à l’authentification pour vérifier que le script est destiné à la bonne carte. Par conséquent, il ne sera jamais possible de toucher au PAN de la carte. C’est techniquement impossible d’altérer cette donnée, d’autant que la partie « date d’expiration » n’existe pas dans les champs EMV pour les scripts.

Les informations ISO, relatives à la piste magnétique, ne peuvent pas être actualisées que ce soit sur la piste elle-même, ou dans la puce. Prenons l’exemple d’ING qui avait placé un Service Code (le « offline en mode piste ») sur 226 dans ses premières cartes « sans contact ». Impossible de placer un code en 201 (autorisant donc le « offline ») sans émettre une nouvelle carte. Vous comprendrez donc que les informations sur la piste sont liées à la carte (PAN, Expiration, Service Code…) et ne peuvent pas être actualisées.

L’intérêt des scripts EMV

Cette fonctionnalité EMV est essentiellement prévue pour faire de la maintenance sur votre carte, sans imposer une nouvelle fabrication. Il ainsi possible d’avoir une réduction des coûts et pour le client, un confort car il ne sera pas privé de sa carte (ex lors de la saisie de 3 codes PIN faux).

Toutefois, cela nécessite un développement et une prise en charge que certaines institutions ne souhaitent pas faire. Par exemple chez BNP, N26… impossible de désactiver le « sans contact », alors que cela est possible chez Société Générale, Crédit Mutuel, Boursorama, Fortuneo, CIC…

Pour ceux qui disent que sur Revolut c’est possible, ce n’est pas un script EMV. Ils regardent simplement comment arrive l’autorisation de paiement chez eux lors votre transaction, c’est du « sans contact », alors c’est « paiement refusé » qui est retourné. Ce n’est pas une désactivation dans la puce de votre carte, pour la carte, l’antenne NFC reste active.

Token dans la carte

Dans un mobile, il n’y a pas de carte réelle, c’est une carte virtuelle qu’on nomme « token » ou « jeton ». Il est donc très facile de générer un nouvel applet JAVA et l’injecter dans Apple Pay, Samsung Pay ou autres.

IDEMIA, qui est l’expert et principal concurrent de GEMALTO, a imaginé une solution nommée « Blink » avec un L .
Avec cette technologie, IDEMIA ferait une sorte de Curve mais physique. C’est-à-dire que vous choisissez sur la carte avec quelle banque vous désirez régler votre achat. Dans l’idée, c’est intéressant. Dans la pratique, c’est bien trop compliqué à mettre en œuvre, et c’est donc resté à l’état de projet.

OneWave avait imaginé il y a plusieurs années être en mesure de faire cela. Finalement, ils ont laissé de côté le financier pour aller vers usages moins critiques comme les cartes d’abonnements ou autres.

Plastc évoquera peut-être quelque chose à certains lecteurs. Une société qui promettait de vous fournir une carte, dans laquelle vous pouviez copier vos cartes existantes puis les sélectionner via un écran intégré à la carte.

Ils avaient levés des fonds car des gens ont réellement supposé que les banques allaient filer les clefs de chiffrement à une telle société afin de « copier » une carte EMV sur leur support.

Quand la vérité est tombée, Plastc ne s’est pas défilé et a annoncé que ce sera la piste magnétique et le « sans contact » qui seront d’abord copiés. Bien que techniquement la piste soit copiable, les dispositifs de fraudes s’alarmeraient rapidement, et pour le « sans contact », c’est impossible. Le projet a disparu avec l’argent des investisseurs (pour ceux qui n’avaient pas réclamés le remboursement avant que l’infaisabilité technique ne soit démontrée).

Conclusion

EMV est une norme puissante en matière de sécurité au point de rendre inviolable une carte bancaire en étant équipée. Toutefois, ce niveau de sécurité, impose de limiter les actions possibles après l’émission d’une carte.

On compte au total 18 actions possibles à ce jour en script EMV. Aucune ne permet de toucher au PAN de votre carte, son expiration ou tout autre élément concernant l’intégrité ou la raison d’existence du support. Cela n’est pas possible aujourd’hui et cela ne le sera pas demain non plus. Ce n’est pas pour rien qu’IDEMIA avait imaginé une solution technique physique, mais qui n’a pas vu le jour.

Vous comprendrez également pourquoi une carte déclarée perdue ou volée ne peut pas être remise en service. On va verrouiller à tout jamais les applications de la carte. Par conséquent il n’existe plus aucune commande dans la norme EMV permettant de revenir en arrière sur un tel script.

Les TPE sont tous conformes au traitement des scripts EMV, même des systèmes comme SUMUP. Toutefois, les banques préconisent de passer par des DAB, car ils sont toujours en « online ». Une commande EMV sera forcément traitées lors d’un retrait sur un DAB contrairement à un paiement qui peut passer en « offline ».

Certains s’agacent parfois de devoir retirer des espèces pour modifier un PIN par exemple. Il existe une parade sur certains DAB en France ou à l’étranger. Lorsque le DAB vous demande le code PIN avant le montant à retirer et qu’il indique « autorisation en cours », il va exécuter le script EMV « PIN CHANGE / UNBLOCK » à ce moment-là. Vous pouvez donc annuler le retrait et vous aurez le nouveau PIN initialisé sur votre carte N26, bunq…

Petite remarque, si d’abord le montant est demandé avant le code PIN, alors il faudra que le retrait fonctionne dans la majorité des cas afin d’avoir le script EMV « PIN CHANGE / UNBLOCK » exécuté.

Notez que ça fonctionne aussi pour les banques qui proposent de désactiver / activer le sans contact. Cela vous évite d’avoir des espèces si vous êtes opposé à leurs détentions.

Il n’y a pas de liste de DAB précise qui fonctionne ainsi. Mais chez Banque Populaire, ils sont majoritairement dans cette configuration, donc n’hésitez pas à tester.