QR Codes : Décryptez leur fonctionnement secret

QR Codes : Décryptez leur fonctionnement secret

Les codes QR, omniprésents, cachent une ingénierie remarquable. Derrière leur apparence simple se trouve une grille bidimensionnelle sophistiquée, capable de stocker des données variées et de résister aux dommages grâce à un système de correction d’erreurs. Ce guide explique comment ils sont construits, lus et sécurisés.

Les codes QR font partie de notre quotidien et se trouvent partout, des restaurants aux affiches, des billets aux paiements. Mais comment ces petits carrés parviennent-ils à stocker et transmettre des informations ?

QR Codes Decryptez leur fonctionnement secret

Le code QR (en anglais, Quick Response) peut être vu comme une évolution des codes-barres traditionnels : là où les codes-barres utilisent une seule dimension pour représenter l’information via des barres et des espaces, les codes QR utilisent deux dimensions grâce à une grille de petits carrés, appelés modules.

Cette structure permet de stocker une plus grande quantité d’informations sur une surface relativement réduite. Ils peuvent représenter du texte, une URL, des contacts, des informations Wi-Fi, des localisations ou des données utilisées pour les paiements.

Source : Labeljoy

De quoi est constitué un code QR ?

La grille qui forme un code QR n’est pas aléatoire. Chaque ensemble de modules a une fonction spécifique, contribuant à ce que le code puisse être identifié, lu et décodé correctement :

Source : Karrach L, Pivarčiová E, Božek P. Identification of QR Code Perspective Distortion Based on Edge Directions and Edge Projections Analysis. Journal of Imaging. 2020; 6(7):67.

Explication de l’image ci-dessus :

  • Finder Patterns (Motifs de recherche) : les trois grands carrés dans les coins permettent de localiser le code QR et de déterminer son orientation.
  • Timing Patterns (Motifs de synchronisation) : séquences de modules alternés qui aident à déterminer la position de chaque module.
  • Alignment Patterns (Motifs d’alignement) : petits motifs qui aident à maintenir une lecture correcte quand le code QR est incliné ou déformé.
  • Format Information (Informations de format) : contient les données sur le format du code QR, incluant le niveau de correction d’erreurs utilisé.
  • Data (Données) : zone où sont stockées les informations que le code QR doit transmettre.
  • Quiet Zone (Zone calme) : marge blanche autour du code QR qui facilite sa détection et aide à le distinguer du fond.

Comment un code QR est-il lu ?

En pointant l’appareil photo d’un dispositif vers le code, celui-ci capture et traite l’image, recherchant immédiatement les Finder Patterns pour aligner la perspective. Ensuite, le logiciel analyse la grille pour déterminer la position des autres modules et compenser les distorsions potentielles causées par l’angle de la photo.

À partir de là, les modules sont décodés pour extraire l’information. Si la matrice présente des zones endommagées ou obstruées, le système fait appel aux données de redondance pour récupérer le contenu manquant. Finalement, le résultat est traité et affiché à l’écran.

1790714593 17 QR Codes Decryptez leur fonctionnement secret

Comment fonctionnent-ils même endommagés ?

La technologie des codes QR parvient à rester fonctionnelle même partiellement déchirée, salie ou cachée, grâce au système de correction d’erreurs Reed-Solomon. Il existe quatre niveaux de protection ajustables lors de la création du code :

  • Niveau L (Low) : récupère jusqu’à 7% des données (moins de protection, plus d’espace disponible pour les données) ;
  • Niveau M (Medium) : récupère jusqu’à 15% des données ;
  • Niveau Q (Quartile) : récupère jusqu’à 25% des données ;
  • Niveau H (High) : récupère jusqu’à 30% des données (plus grande protection, moins d’espace disponible pour les données).

Plus le niveau de protection choisi est élevé, plus de modules sont dédiés à la redondance des données, rendant le code visuellement plus dense, mais significativement plus résistant aux dommages physiques.

Quelles versions de code QR existent ?

Il existe 40 versions de code QR, numérotées de 1 à 40. La version 1 est composée de 21 x 21 modules, tandis que la version 40 atteint 177 x 177 modules. À mesure que la version augmente, la quantité d’informations pouvant être stockée s’accroît également. Cependant, la capacité dépend aussi du type de données et du niveau de correction d’erreurs utilisé.

Source : Iliyasu, Abdullah. (2019). Cellular-Automated Protocol to Safeguard Confidentiality of QR Codes. IEEE Access. 7. 144451-144471.

Un code QR peut-il être modifié après sa création ?

Il existe deux types principaux de codes QR :

  • Statiques : l’information est directement gravée dans le code. Une modification implique de créer un nouveau code.
  • Dynamiques : le code redirige vers une adresse qui peut être modifiée ultérieurement. Ainsi, le code QR reste identique, mais la destination peut changer.

Codes QR et Base45

Avant d’être convertie en blocs noirs et blancs sur la grille, l’information doit être encodée dans un format efficace. L’une des normes les plus connues pour cette tâche est le Base45, défini par la RFC 9285. Ce schéma de codage a été créé pour optimiser le stockage de données binaires compressées, en utilisant un ensemble restreint de 45 caractères.

Par exemple, en Europe, le Base45 a été la solution technique choisie pour structurer les données du Certificat Numérique COVID-19 de l’Union européenne. Cela a permis de lire et valider rapidement des fichiers avec signature numérique via l’appareil photo d’un téléphone.

Les dangers des codes QR

Bien qu’ils soient très utiles, les codes QR peuvent aussi être utilisés à des fins malveillantes. Un code peut, par exemple, rediriger vers une page falsifiée pour voler des mots de passe, des données bancaires ou d’autres informations.

Il est donc important de porter une attention particulière aux codes QR trouvés dans des lieux inattendus et de vérifier l’adresse de la page avant d’y saisir la moindre information.

Pour en savoir plus sur ce type d’arnaque et les risques associés :

✍️ Cet article a été développé par João Rebolho pour NETCOST.