QR Code, 2D-Doc : comment ça marche et les différences

Avec le Covid et le Pass Sanitaire, on assiste à une explosion de l'utilisation du QR Code et 2D-Doc qui font partie des DataMatrix.
Ces dernières sont des matrices 2D que l'on scanne à partir d'un smartphone ou autres lecteurs pour obtenir l'information souhaitée.
Par exemple, dans un restaurant, on peut utiliser le QR Code pour vous renvoyer vers le menu.
De son côté, le 2D-Doc permet de sécuriser un document.
Ces types de Data Matrix sont utilisés dans le Pass Sanitaire et Certificat Covid numérique UE.

Mais quelles sont les différences entre ces normes de codes barres et comment ça marche ?
Ce tutoriel vous dit tout sur les QR Code, 2D-Doc.

QR Code, 2D-Doc : comment ça marche et les différences

Qu'est-ce qu'un QR Code ?

Un QR Code (Quick Response Code) est un type bidimensionnel de code à barres développé par le Japonnais Denso Wave en 1999.
Ils font partie de la famille des DataMatrix puisqu'il s'agit d'une matrice pour transporter de la donnée.

On connaît tous les codes barres utilisés dans les supermarchés ou magasins pour classifier et suivre les articles.
Inventés en 1952, en France ils suivent la norme EAN pour stocker l'information d'un produit.
Pour cela, il transportent une ou plusieurs informations codées en binaire (succession de 0 et de 1). La partie noire vaut 1 et la partie blanche vaut 0.

Les QR-Code sont la génération d'après, il s'agit de matrices 2D composées de points et de carrés juxtaposés.
Ils intègrent un taux de correction d'erreur se basant sur l'algorithme Reed-Solomon Error Correction qui est aussi utilisé par les CD et DVD-rom.
Il est possible de récupérer les données jusqu'à 30% de corruption du QR-Code.
C'est l'atout majeure face à l'ancêtre du code barre, il tolère la panne grâce au code correcteur et de redondance de l'information. Ainsi, sur une feuille tâchée, le QR-Code peut continuer de remplir son rôle.

Si vous diffusez un QR-Code avec des données sensibles, vous devez le masquer entièrement sinon il est possible de récupérer les données nominatives.
Vous avez un bel exemple sur ce tweet qui retrouve les données à partir d'une capture d'un QR-Code mal masqué donné par un journaliste.

Les données sont stockées dans les points et carrés de la matrice que l'on nomme module.
Plus il y a de points dans la matrice, plus il y a de l'information stockée dans le QR Code.
Mais on ne peut pas non plus mettre trop de points sous peine de rencontrer des difficultés pour capturer le QR Code.

On utilise QR-Code pour stocker une URL, une identité numérique, une adresse e-mail, un suivi d'article, ...
Vous pouvez trouver des codes QR dans des brochures, des dépliants, des affiches, des panneaux d'affichage, des articles et des produits, des cartes de visite et même des sites Web en ligne tels que les médias sociaux et les sites de shopping.

Enfin dans le Pass Sanitaire, le QR-Code permet d'importer un test PCR ou certificat de vaccination dans l'application TousAntiCovid.
Ainsi, un QR-code peut amener à des données nominatives dans le cadre du Pass Sanitaire ou d'un e-billet SNCF.

Le QR Code : comment ça marche?

Pour commencer, sachez qu'il existe de nombreux type de QR-Code comme (QR-Code, Micro QR Code, IQR Code, QSRC, Frame QR, ..).

Les types de QR-Code

Les QR Code se composent :

  • d'une taille de matrice qui diffère d'une version à l'autre
  • de module : qui se composent des blocs noris et blancs. Le point noir vaut un point et le point blanc vaut 0.

Un code QR a un nombre égal de lignes et de colonnes de modules (en forme carrée).
On distingue alors des versions différentes selon le nombre de modules qui stockent alors plus de données.

  • La version 1 a 21 modules sur 21
  • La version 2 a 25 modules sur 25
  • ..
  • La version 40 a 177 modules sur 177
Les versions des QR-Code

Voici les différents QR-Code par versions.

Les versions des QR-Code

De quoi se composent un QR-Code pour stocker les données ?
Plusieurs éléments sont nécessaires afin que le lecteur puissent reconnaître un QR-Code et accéder rapidement aux données.

Structure d'un QR-Code

Les éléments qui le composent :

  • Zone vierge ou marge silencieuse (Quiet Zone) : est utilisée pour isoler le code d'autres informations d'emballage. Cette zone est de quatre modules larges
  • Motifs de détection de position (Finder Pattern) : Situé dans trois des quatre coins. Cela permet une lecture à 360 degrés (omnidirectionnelle) à grande vitesse du code
  • Zone de données (Data): est une gamme de rangées et de colonnes. Chaque cellule est stockée sous forme de nombre binaire (1 et 0). Les codes de correction d'erreur sont également insérés dans cette zone.
  • Correction d'erreur (code Reed-Solomon): est appliqué pour restaurer les données lorsqu'une partie du code QR est manquante. Le taux de restauration varie selon 4 niveaux de correction des erreurs. Par exemple, si une zone endommagée atteindra jusqu'à 15% de la taille de code entière, ses données peuvent être restaurées par la correction des erreurs de niveau M
  • Motif d'alignement (Alignement Pattern): ils peuvent apparaître dans des codes QR plus complexes et ils seront situés dans le coin inférieur. Ce modèle permet au lecteur QR de corriger la distorsion lorsque le code est plié ou incurvé. Le nombre de motifs d'alignement utilisés dépend de la quantité d'informations codées et d'apparaître sur la version 2 et plus
  • Motif de synchronisation (Timing Pattern): aide à détecter la position de chaque cellule dans le code QR
  • Info version: span de la version 1 (21 x 21 modules) à la version 40 (177 x 177 modules)
  • Informations de format: Il contient le taux de correction d'erreur et le modèle de masque de code QR. Les informations de format sont lues en premier lorsque le code est décodé

Ainsi, ils peuvent être lus dans n'importe quel sens d'alignement.
Grâce aux Motifs de détection de position, le lecteur QR-Code sait très rapidement positionner la structure du QR-Code pour lire les données.

Un QR-Code peut se lire dans tous les sens

Qu'est-ce qu'un 2D-Doc ?

Un 2D-Doc est un autre type de DataMatrix assez proche du QR-Code que l'on utilise pour sécuriser tout type de documents aussi bien papier que numérique.
La sécurisation se fait à travers un chiffrement asymétrique et une signature électronique.
Ainsi, les données du 2D-Doc ne peut être modifiées.

  • Les données transportées par le 2D-Doc sont générées et signées par une clé privée
  • Le lecteur 2D-Doc embarque la clé publique pour certifier le document

Les documents ciblés concernent en particulier les justificatifs (factures eau, téléphone, EDF, quittances d'assurance et de loyer, RIB, revenus, …) utilisés par les particuliers et/ou les professionnels dans leurs relations avec les entreprises, les services de l'Administration ou les services sociaux.

En France, c'est l'Agence nationale des titres sécurisés (ANTS) qui est en charge de la certification des 2D-Doc utilisés par l'administration française pour lutter contre la fraude documentaire, et également pour les certificats de vaccination COVID-19.

Voici un exemple de 2D-DOC, même si le principe est le même, la structure est un peu différente.

Le 2D-Doc pour sécuriser les documents

Les 2D-Doc comment ça marche ?

Les DataMatrix 2D suivent des niveaux de sécurité ECC (Error-Correcting Code) comme ECC000, ECC050, ECC080, ECC100, ECC140.
Actuellement la dernière norme est ECC200 et c'est celle utilisée par le 2D-DOC.
Tout comme pour le QR-Code, cela permet de vérifier l'intégrité des données et même retrouver celle-ci lorsque la matrice est endommagée.

Les normes ECC du 2D-Doc

Le 2D-Doc a une structure différente pour délimiter la matrice reconnue par le lecteur ce qui permet aussi d'être lus dans n'importe quel sens.
Ainsi la marge se décompose en deux parties :

  • Un L plein représente le motif d'alignement
  • Un autre L avec avec une succession de point noir et vide un peu plus grand qu'un module
La structure d'un 2D-Doc

Puis on trouve les modules de données et de correction d'erreur.