Standards · EMVCo merchant payment QR

Ce QR de paiement commerçant est-il sûr à régler ?

Le QR sur une table de restaurant, un horodateur ou un étal de marché fonctionne presque toujours avec le format TLV d’EMVCo. Il contient le nom du commerçant, la ville, le pays, la devise, un montant facultatif et une somme de contrôle CRC-16 qui échoue si la charge utile a été modifiée. L’attaque par substitution d’autocollant, qui consiste à recouvrir le QR d’un vrai commerçant par celui de l’attaquant, est la fraude au QR la plus répandue dans le monde. Décoder le QR avant de payer vous montre qui vous payez réellement.

Scanner un QR commerçant → Toutes les normes →

Quel est le format

La norme est la EMVCo QR Code Specification, publiée par le même consortium EMVCo qui a défini les cartes à puce avec code PIN. Deux variantes partagent l’essentiel du format :

Presque tous les systèmes de paiement instantané nationaux reposent sur EMVCo MPM, avec quelques balises propres à chaque pays ajoutées par-dessus :

Le format est du texte Tag-Length-Value, sans chiffrement, décodable par n’importe quel scanner de QR. L’identité du commerçant est encodée en clair et c’est ce qu’affiche votre application de portefeuille.

Anatomie d’un QR de paiement commerçant

Toute charge utile EMVCo commence par 000201 (Payload Format Indicator). Ce qui suit est une séquence d’enregistrements TLV : balise de deux caractères, longueur sur deux chiffres, valeur de cette longueur, le tout répété.

Balise 01, Point of Initiation

11 = QR statique (réutilisable, vous saisissez vous-même le montant).
12 = QR dynamique (à usage unique, montant pré-rempli par le terminal du commerçant).

Balises 26-51, Merchant Account Info

Identifiant du bénéficiaire propre au pays. Clé Pix (CPF / CNPJ / e-mail / téléphone / UUID EVP), Virtual Payment Address UPI, téléphone ou pièce d’identité nationale PromptPay, etc.

Balise 52, Merchant Category Code (MCC)

Catégorie à 4 chiffres ISO 18245. 5812 = restaurant, 5411 = épicerie, 7011 = hébergement, 5541 = station-service, etc.

Balise 53, Devise

Code numérique ISO 4217. 840 = USD, 978 = EUR, 826 = GBP, 986 = BRL (real brésilien), 356 = INR (roupie indienne).

Balise 54, Montant

Facultatif. Présent dans les QR dynamiques (le commerçant l’a pré-rempli), absent des QR statiques (vous le saisissez vous-même).

Balises 55-57, Pourboire / Frais de service

Facultatif. 55 indique si une invite de pourboire doit apparaître ; 56 / 57 portent des frais de service à montant fixe ou en pourcentage.

Balise 58, Pays

Code pays ISO 3166-1 alpha-2. Utile lorsque les applications de paiement prennent en charge les virements transfrontaliers.

Balise 59, Nom du commerçant

Jusqu’à 25 caractères. C’est le champ que votre application de portefeuille affiche sous la forme « vous payez ___ ». Le commerçant contrôle entièrement ce qui y figure. Un attaquant qui crée une substitution d’autocollant y inscrit la chaîne de son choix.

Balise 60, Ville du commerçant

Jusqu’à 15 caractères. Là où le commerçant est situé.

Balise 61, Code postal

Facultatif mais utile pour la détection de fraude : un commerçant américain dont le code postal ne correspond pas à la ville est un signal d’alerte.

Balise 62, Champ de données additionnelles

Sous-TLV. À l’intérieur : numéro de facture, numéro de mobile, libellé du magasin, numéro de fidélité, libellé de référence, libellé client, libellé du terminal, objet de la transaction.

Balise 63, Somme de contrôle CRC

CRC-16/CCITT-FALSE sur tout ce qui précède (y compris l’en-tête « 6304 » du TLV de CRC lui-même). Si cela ne correspond pas, le QR a été modifié ou corrompu.

L’attaque par substitution d’autocollant, fraude au QR n°1 dans le monde

La technique est d’une simplicité déprimante :

  1. L’attaquant imprime un QR pointant vers son propre compte de paiement.
  2. Il met le QR imprimé sur un autocollant (ou l’imprime directement sur du papier adhésif).
  3. Il parcourt un marché, un quartier de restaurants ou une zone d’horodateurs, et colle le QR de substitution par-dessus le QR légitime du commerçant.
  4. Chaque client qui scanne paie l’attaquant.

Le commerçant ne s’en aperçoit qu’au moment du rapprochement de la journée, lorsque la caisse manque de recettes. Le client ne remarque rien parce que son portefeuille indique « vous avez payé », et l’attaquant peut inscrire le vrai nom du commerçant dans la balise 59. Ou quelque chose d’approchant (« Joe’s Pizz4 », « Joe’s Pizzeria 2 »), de légères variations qu’un client pressé ne repère pas.

Cette fraude a été documentée dans tous les pays où les paiements mobiles sont répandus : Brésil (substitution d’autocollant Pix aux horodateurs), Inde (substitution UPI aux stations-service), Chine (substitution WeChat Pay sur les vitrines), Singapour (PayNow dans les centres de restauration), Royaume-Uni (substitution de QR de boîtes à dons), États-Unis (horodateurs à Austin, San Francisco, LA).

Comment vérifier un QR de paiement avant de payer

Ce que notre scanner vous montre :

Indices physiques à inspecter avant de scanner :

Systèmes nationaux que nous identifions

Notre analyseur reconnaît la balise de pays et étiquette le verdict avec le nom du système local lorsqu’il s’applique. Il couvre actuellement 54 pays, y compris tous les principaux systèmes de paiement instantané. Consultez le centre des normes pour la liste complète avec les détails par système.

À voir aussi

Vérifiez avant de payer

Déposez le QR dans notre scanner. Le verdict indique le commerçant, la ville, le pays, le montant, la devise et si la somme de contrôle CRC est valide. Cela prend quelques secondes. Cela pourrait vous épargner le prix d’un dîner, ou le budget de stationnement d’un mois entier.

Ouvrir le scanner →