L’authentification des données

La facilité de cloner les pistes magnétiques a conduit au succès des puces. En effet, ces dernières embarquent des zones secrètes qui empêchent toute velléité de reproduction des données qui y sont stockées comme des clés cryptographiques. Cela permet notamment aux accepteurs de s’assurer de l’authenticité de la carte, c’est-à-dire de vérifier qu’il s’agit bien d’un support émis par l’émetteur et que ses données n’ont pas été falsifiées.

Cet article retracera l’évolution des moyens d’authentification des données de la carte et vous expliquera par quel tour de passe-passe, cette authentification off-line est rendue possible.

Note : Pour profiter pleinement de cet article, peut-être un tantinet technique pour qui ne maîtrise pas les principes de base de la cryptographie, il est important de faire la distinction entre chiffrement et signature. Si vous souhaitez une petite piqûre de rappel, je vous recommande chaudement la lecture de l’article : http://www.linux-france.org/prj/edu/archinet/systeme/ch23s03.html.

Note 2 : les puces EMV comportent plusieurs zones en mémoire :

  • zone en lecture seule : n’importe qui peut lire ces données
  • zone protégée : lecture et écriture possible sur présentation du code confidentiel (PIN)
  • zone secrète : personne ne peut lire ces données, excepté la puce bien évidemment.

Dans la suite de l’article, lorsque rien ne sera précisé, il sera question de la zone en lecture seule.

Authentification de l’émetteur

Tout commence par l’authentification de l’émetteur, que l’on soit en statique ou en dynamique.

Lors de la personnalisation (inscription des données sur la puce), la banque émetteur stocke dans la puce son propre certificat signé auprès d’une autorité de certification (CB, VISA et MasterCard) à partir de leur propre clé privée. Les clés publiques associées à ces dernières sont enregistrées dans la mémoire de chaque point d’acceptation EMV.

Note : le certificat embarque notamment des données identifiant l’émetteur, sa clé publique ainsi que la signature de l’autorité de certification.

Création du certificat émetteur

Ainsi lorsqu’un porteur insère sa carte bancaire dans un terminal, le point d’acceptation récupère la clé publique associée à l’autorité de certification ayant signé le certificat de l’émetteur. Ensuite, il déchiffre ledit certificat avec la clé publique. Cela lui permet ainsi d’une part d’authentifier l’émetteur et d’autre part de récupérer la clé publique de l’émetteur.

Vérification du certificat émetteur

Authentification des données de la carte

À partir de cette étape, le point d’acceptation est assuré que la clé publique émetteur appartient bien à un émetteur certifié auprès d’une autorité. Il peut donc l’utiliser pour vérifier l’authenticité des données cartes.

Depuis l’apparition du protocole EMV, 2 moyens d’authentification ont vu le jour :

  • Statique :
    • Static Data Authentification (SDA) : authentification statique des données
  • Dynamique :
    • Dynamic Data Authentication (DDA) : authentification dynamique des données
    • Combined Data Authentication (CDA) : authentification combinée des données

Authentification statique des données

Historiquement, SDA est la 1ère méthode d’authentification des données qui naquit avec l’ère EMV.

Lors de la personnalisation

Lors de la personnalisation, l’émetteur choisit les données statiques (identiques quelle que soit la transaction) qu’il souhaite sceller. Ces données sont hachées puis signées à l’aide de la clé privée de l’émetteur pour former le SSAD (Signed Static Application Data). Ce champ est stocké dans la puce, au même titre que les données statiques.

Note : l’émetteur indique dans le champ AFL (Application File Locator) les données statiques signées.

SDA - personnalisation

Lors de la transaction

Lorsque le point d’acceptation lit toutes les données de la puce, il authentifie l’émetteur et récupère sa clé publique (cf. paragraphe ci-dessus). Ensuite, il concatène les données qui font l’objet d’une protection par l’émetteur. Le champ concaténé est ensuite haché et comparé avec le SSAD déchiffré à l’aide de la clé publique de l’émetteur. En cas d’égalité, le point d’acceptation est assuré que les données de la carte n’ont pas été altérées.

Cette méthode fait bien son travail, mais pâtit d’un défaut puisqu’elle n’empêche pas le clonage des cartes bancaires. En effet, toutes les données participant au SDA sont lisibles et statiques par définition. Il suffit donc à une personne malveillante de recopier l’ensemble de ces données dans une carte factice afin de la cloner. Par ailleurs, le SDA souffre d’un autre problème conceptuel. En cas de compromission de la clé privée de l’émetteur, toutes les cartes qu’il a émises deviennent « cassables » puisqu’un pirate sera en capacité de forger des cartes qui paraîtraient authentiques aux yeux des terminaux.

EMV a donc revu sa copie pour permettre à l’accepteur d’être sûr qu’il s’agisse d’une carte authentique et non d’une recopie. De cette méthode découlera toute la robustesse de la carte bancaire.

SDA - vérification

Authentification dynamique des données

L’authentification dynamique pallie les défauts de jeunesse du SDA évoqués ci-dessus. Pour la mettre en place, la puce a dû faire peau neuve. En effet, cette nouvelle forme d’authentification des données se base sur un calcul cryptographique ne pouvant être réalisé que par celui qui connaît un secret généré par la banque. Cette opération est réalisée grâce à la puce qui embarque dorénavant un cryptoprocesseur. La carte est donc plus chère à produire pour l’émetteur mais améliore nettement la sécurité. En France, toutes les cartes bénéficient d’ailleurs de cette protection.

L’authentification s’effectue en 2 temps :

  • authentification de la puce : commune au DDA ou au CDA
  • authentification des données : en DDA ou CDA.

Lors de la personnalisation

L’émetteur génère une bi-clé propre à la puce. Il enregistre cette clé privée dans la zone secrète de la puce. Il établit aussi un certificat relatif à la puce embarquant la clé publique générée. Ce certificat est ensuite signé à l’aide de la clé privée de l’émetteur et est stocké dans la puce.

Création du certificat de la puce

Lors de la transaction

Lorsque le point d’acceptation lit toutes les données de la puce, il authentifie l’émetteur et récupère sa clé publique (cf. ci-dessus). Puis il récupère le certificat de la puce qu’il déchiffre à l’aide de la clé publique de l’émetteur afin d’authentifier la puce et de récupérer sa clé publique.

Vérification du certificat de la puce

DDA

Une fois la clé publique de la puce authentifiée, le point d’acceptation envoie à la carte un nombre aléatoire qu’il a préalablement généré. La puce hache puis signe alors à l’aide de sa clé privée (en zone secrète) le ICC Dynamic Number (nombre dynamique de la puce, par exemple un compteur) et le nombre aléatoire du terminal. C’est ce qui confère le caractère dynamique à cette authentification. Le résultat cryptographique appelé « Signed Dynamic Application Data » est retourné au point d’acceptation.

DDA - génération

En retour, le point d’acceptation utilise la clé publique de la puce pour déchiffrer la signature et recalcule elle-même le hash. Cela lui permet notamment de vérifier que la puce a été capable de générer une signature à partir d’une donnée dont elle n’a pas connaissance à l’avance et que donc elle possède la clé privée dans sa zone secrète.

DDA - vérification

Cette méthode est très efficace et a permis une réduction considérable de la fraude. Cependant, rien n’empêche une modification des données au cours de la transaction puisque l’authentification des données a lieu avant l’autorisation.

CDA

CDA est l’arme ultime d’EMV pour authentifier les données de la carte. Elle consiste en la génération d’une signature par la puce au moment de la génération du cryptogramme d’application.

Pour cette partie, je vous conseille vivement la lecture de l’article traitant la gestion de l’autorisation pour vous remémorer les cryptogrammes ARQC et TC.

Lorsque le terminal demande à la carte la génération d’un cryptogramme, il lui demandera de calculer un CDA soit lors de la génération de l’ARQC, soit lors de la génération du TC.

Pour le calcul du CDA, le point d’acceptation concaténera plusieurs données dynamiques comme le nombre aléatoire généré par le terminal ainsi que des données issues de la puce. Ces données seront hachées puis signées à l’aide de la clé privée de la puce. Ce résultat cryptographique sera envoyé au point d’acceptation.

CDA - génération

En retour, le point d’acceptation déchiffre à l’aide de la clé publique de la puce la signature envoyée par la carte. Ensuite, il recalcule le hash et le compare avec celui calculé par la puce. En cas d’égalité, le point d’acceptation considère les données authentifiées.

Note : le terminal concatène les données issues du PDOL – Processing Options Data Object List (tag optionnel indiquant les données nécessaires à la puce pour initier la transaction) avec celles du CDOL1 – Card Risk Management Data Object List 1 (tag obligatoire indiquant les données nécessaires à la puce pour la génération du 1er cryptogramme), celles du CDOL2 (idem que CDOL1 mais pour le 2nd cryptogramme) ainsi que les données renvoyées par la carte en réponse au terminal.

CDA - vérification

Au travers de cet article, nous vous auront expliqué les différents moyens d’authentification des données mis en place dans le cadre d’EMV. Ces mécanismes, rendus possible grâce à la puce dotée de son cryptoprocesseur, sont avec la vérification du porteur les 2 principaux responsables de la baisse de la fraude en paiement de proximité depuis la création de la carte bancaire.

Laisser un commentaire

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

*