Comment fonctionnent les codes QR : anatomie, encodage et sécurité
✦ Points clés
- Les trois motifs de repérage dans les coins permettent à la caméra de localiser et d'orienter le code sous n'importe quel angle.
- Les données sont encodées en modules noirs et blancs via des modes numérique, alphanumérique et binaire aux efficacités différentes.
- La correction d'erreurs Reed-Solomon peut restaurer jusqu'à 30 % d'un code endommagé au niveau H.
- La capacité évolue des versions 1 à 40, atteignant environ 7 089 chiffres dans la plus grande version.
- L'hameçonnage par QR (quishing) est une menace réelle ; vérifiez l'URL avant de l'ouvrir et ne saisissez jamais vos identifiants sur une page suspecte.
Le carré de points noirs et blancs que vous scannez pour payer une facture ou ouvrir un menu peut ressembler à une décoration aléatoire, mais il s'agit en réalité d'un système d'ingénierie précis qui stocke l'information et la restaure même lorsqu'une partie est endommagée. Décomposons-le, couche par couche.
Anatomie : comment la caméra trouve son chemin
La caractéristique la plus reconnaissable d'un code QR est constituée des trois grands carrés situés dans trois de ses coins, appelés motifs de repérage. Chacun présente un rapport de modules fixe de 1:1:3:1:1, une proportion rare dans les images naturelles, ce qui permet à une caméra de reconnaître le code rapidement et de déterminer son orientation même à l'envers ou incliné. L'absence du quatrième carré dans le coin inférieur droit indique précisément au lecteur quel côté est le haut.
Générateur de factures & devis
Factures pro calculées et imprimées/PDF en une minute.
À côté des motifs de repérage se trouvent des éléments plus petits mais tout aussi essentiels. Les motifs d'alignement sont de petits carrés qui apparaissent dans les versions plus grandes pour corriger la distorsion lorsque la surface est courbée ou l'image déformée. Les motifs de synchronisation sont des rangées alternées de modules noirs et blancs qui relient les carrés d'angle et établissent la grille de coordonnées de chaque cellule. Enfin, la zone de silence est une marge blanche vide d'au moins quatre modules de large qui entoure le code pour l'isoler du bruit visuel.
Comment les données sont réellement encodées
Chaque petite cellule est appelée un module et représente un seul bit : le noir vaut 1 et le blanc vaut 0. Avant d'agencer ces modules, le code choisit le mode d'encodage le mieux adapté au contenu. Le mode numérique ne stocke que des chiffres avec la plus grande efficacité, le mode alphanumérique couvre les lettres majuscules et quelques symboles, le mode octet stocke n'importe quel texte en UTF-8 y compris l'arabe, et un mode Kanji dédié gère les caractères japonais de façon compacte.
Après l'encodage, les bits sont divisés en blocs, les données de correction d'erreurs sont ajoutées, puis les modules sont disposés dans la grille selon un parcours en zigzag qui commence dans le coin inférieur droit. Un procédé appelé masquage inverse ensuite certains modules selon une règle mathématique afin d'éviter de grands amas d'une même couleur, qui perturberaient le lecteur.
Correction d'erreurs : pourquoi un code abîmé fonctionne encore
Le plus ingénieux dans le QR est qu'il continue de fonctionner même rayé, taché ou partiellement recouvert. Le mérite en revient à l'algorithme Reed-Solomon, le même que celui utilisé sur les disques compacts. Il ajoute des données redondantes qui permettent de reconstruire les modules perdus, et le concepteur peut choisir l'un des quatre niveaux selon l'environnement.
| Niveau | Capacité de récupération | Usage typique |
|---|---|---|
| L (Faible) | ~7% | Environnements propres, plus de capacité |
| M (Moyen) | ~15% | La valeur par défaut courante |
| Q (Quartile) | ~25% | Milieux industriels ou salis |
| H (Élevé) | ~30% | Impression sur produits ou intégration d'un logo |
C'est pourquoi tant d'entreprises peuvent placer leur logo au centre d'un code ; le niveau H tolère la perte d'environ un tiers des modules et reste lisible. Mais plus le niveau de correction est élevé, moins il reste de place pour les données réelles, si bien que les concepteurs équilibrent robustesse et capacité.
Versions et capacité
Les codes QR existent en quarante versions, de la version 1 à 21x21 modules jusqu'à la version 40 à 177x177 modules, chaque version ajoutant quatre modules par côté. Une version plus grande contient plus de données mais est plus difficile à scanner de loin ou avec une caméra faible. À la version la plus élevée et au niveau de correction le plus bas, un code peut stocker environ 7 089 chiffres, 4 296 caractères alphanumériques ou 2 953 octets. En pratique, la plupart des liens restent courts, si bien que des versions relativement petites suffisent.
Prenons un exemple réel : un lien de menu de restaurant de 30 caractères tient aisément dans une petite version telle que la version 3 au niveau de correction M, assez petite pour être imprimée sur un autocollant de table et scannée en moins d'une seconde.
Sécurité : méfiez-vous de l'hameçonnage par QR (quishing)
Comme l'œil humain ne peut pas lire un code QR, les escrocs exploitent cette faille dans une attaque appelée quishing, en collant un faux code par-dessus un vrai sur un horodateur ou une affiche, de sorte qu'il vous conduit vers une page qui vole vos données ou télécharge un logiciel malveillant. La règle d'or est que la plupart des applications d'appareil photo affichent l'URL avant de l'ouvrir ; lisez-la attentivement et vérifiez le nom de domaine avant de toucher.
Ne saisissez jamais de mots de passe ou de coordonnées bancaires sur une page atteinte via un code QR sans être certain de sa source, évitez les codes collés à la main dans les lieux publics, et activez l'authentification à deux facteurs sur vos comptes importants afin qu'ils restent protégés même si un mot de passe fuit. Le code est un outil neutre et puissant, et votre vigilance est votre première ligne de défense.