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).
Standards · EMVCo merchant payment QR
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.
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.
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é.
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).
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.
Catégorie à 4 chiffres ISO 18245. 5812 = restaurant, 5411 = épicerie, 7011 = hébergement, 5541 = station-service, etc.
Code numérique ISO 4217. 840 = USD, 978 = EUR, 826 = GBP, 986 = BRL (real brésilien), 356 = INR (roupie indienne).
Facultatif. Présent dans les QR dynamiques (le commerçant l’a pré-rempli), absent des QR statiques (vous le saisissez vous-même).
Facultatif. 55 indique si une invite de pourboire doit apparaître ; 56 / 57 portent des frais de service à montant fixe ou en pourcentage.
Code pays ISO 3166-1 alpha-2. Utile lorsque les applications de paiement prennent en charge les virements transfrontaliers.
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.
Jusqu’à 15 caractères. Là où le commerçant est situé.
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.
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.
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.
La technique est d’une simplicité déprimante :
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).
Ce que notre scanner vous montre :
Indices physiques à inspecter avant de scanner :
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.
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.