Comment fonctionne le fameux code QR vaccinal?

Depuis que le Gouvernement du Québec a annoncé qu'un passeport vaccinal sera bientôt requis pour pouvoir accéder à certains lieux dans la province, j'ai vu plusieurs personnes sur les médias sociaux exprimer des craintes au sujet du fameux code QR qui est envoyé depuis quelques mois déjà à tous ceux et celles qui reçoivent une dose d'un vaccin contre la COVID-19. Ces craintes concernent spécifiquement la nature des renseignements contenus dans le code QR, de même que les aspects en lien avec la sécurité. Des informations contradictoires au sujet du code QR en question, véhiculées dans les médias surtout avant que les codes aient commencé à être envoyés, n'ont par ailleurs sans doute pas aidé la cause.

Afin d'aider certains de mes concitoyen.ne.s à démêler tout ça, j'ai pris le temps d'écrire cet article pour expliquer de manière vulgarisée le fonctionnement du code QR, ce qu'il contient, et pourquoi il n'est pas falsifiable.

Un code QR, c'est quoi concrètement?

Vous le savez probablement, un code QR, c'est un petit carré contenant des motifs bizarres qu'on peut « scanner » à l'aide d'une caméra, notamment de téléphone. On peut soit le présenter sur un écran, soit l'imprimer. Pour expliquer simplement le fonctionnement derrière, on peut dire qu'il s'agit en quelque sorte d'un code-barres « aux stéroïdes ». Il s'agit donc d'une façon d'encoder de l'information numérique sur un support visuel pour pouvoir ensuite ré-extraire l'information à l'aide d'un logiciel capable d'interpréter ce support. Un code QR peut contenir jusqu'à 4296 caractères alphanumériques, ce qui dépasse largement la capacité d'un code-barres traditionnel.

Quelles informations contient le code QR vaccinal?

À la base, on peut stocker ce qu'on veut dans un code QR, tant qu'on ne dépasse pas sa capacité maximale. Celui dont il est question comprend les renseignements suivants au sujet de la personne à qui il appartient:

  • Nom et prénom
  • Date de naissance
  • Genre
  • Les doses de vaccin reçues, incluant la date et le type du vaccin

Qui peut lire les données?

En bref, n'importe qui ayant accès au code QR (qu'on ne devra par ailleurs pas exposer à tout le monde, au même titre qu'on ne publie pas ses informations bancaires sur les médias sociaux), à condition de savoir comment s'y prendre. Les données ne sont pas chiffrées, c'est-à-dire qu'elles ne nécessitent pas de clé cryptographique (autrement dit, de mot de passe secret qui ne serait connu que du ministère de la santé, par exemple) pour les décoder. Notons tout de même que les renseignements personnels inclus ne sont pas exhaustifs, étant comparables à ce qu'on retrouve sur un permis de conduire (ou, pour beaucoup de gens, sur Facebook!). Parlant de permis de conduire, il faudra vraisemblablement présenter une carte d'identité en plus de la preuve vaccinale, pour prouver qu'on est bel et bien la personne dont le nom figure sur celle-ci.

Certains craignent tout de même que la nature numérique de la lecture du code QR facilite l'enregistrement de ces données par les commerçants, par exemple en utilisant une application de capture vidéo sur l'appareil utilisé pour valider les preuves vaccinales. À mon avis, le gouvernement devrait adopter une approche réglementaire pour endiguer ce problème en interdisant formellement le stockage et l'utilisation de ces données à d'autres fins que celles prévues, sous peine d'amendes sévères.

Concernant la façon dont les données sont représentées, il est intéressant de savoir que celle-ci correspond à un format issu du standard SMART Health Card, également utilisé dans d'autres pays. Cela est une bonne nouvelle en soi, puisqu'en informatique, il est presque toujours préférable d'utiliser un standard reconnu plutôt qu'inventer une nouvelle façon de faire les choses.

Est-il possible de créer une fausse preuve vaccinale?

La réponse courte est non! La réponse un peu moins courte est: non, à condition que le code QR soit validé correctement, ce qui sera le cas puisque l'application servant à le valider sera fournie par le gouvernement.

(Mise à jour — 28 août 2021: La première version publiée de l'application comportait finalement une faille dans son processus de validation. Le gouvernement a annoncé la correction de la faille le lendemain de sa découverte. La technologie utilisée demeure sécuritaire.)

Et la réponse longue est la suivante:

Le code QR comporte une signature numérique qui permet d'authentifier qu'il a bel et bien été produit par le ministère de la Santé, et que les informations qu'il contient n'ont pas été altérées. Contrairement à une signature papier, il est impossible de contrefaire une signature numérique, et on ne peut pas non plus modifier les informations auxquelles la signature a été apposée sans rendre celle-ci invalide, puisque la signature est unique à chaque code QR et qu'on peut vérifier si elle correspond véritablement à celui-ci.

Cette technique repose sur des principes de cryptographie, qui eux-mêmes reposent sur des principes mathématiques. Pour générer une signature, il faut d'abord produire une empreinte à partir des données du code QR, c'est-à-dire une suite de caractères qui correspond à ces données de manière vérifiable. Cette empreinte est ensuite encryptée à l'aide d'une clé privée (qu'on pourrait comparer à un mot de passe) que le ministère de la Santé est le seul à connaître, puis incluse dans le code QR à la suite des données. Cette clé privée possède une soeur, qu'on appelle la clé publique. La particularité de cette méthode de cryptographie est que la clé publique permet de décrypter des données qui ont été encryptées à l'aide de la clé privée, et ce, sans avoir à connaître cette dernière. Si on réussit à décrypter l'empreinte en utilisant la clé publique, on a la garantie qu'elle a été générée par le ministère de la Santé. On peut ensuite valider que l'empreinte correspond bien aux données présentes.

Ainsi, si les données du code QR sont altérées, l'empreinte présente dans la signature ne sera plus valide, et ce, de manière détectable. Et la signature ne peut pas non plus être modifiée par un tiers pour la rendre valide, puisque cela nécessiterait de connaître la clé privée dont seul le ministère a la connaissance.

Conséquemment, l'application qui sera fournie par le gouvernement pourra être en mesure de détecter de manière infaillible toute falsification d'un code QR, et ce, sans même nécessiter un accès à internet. C'est en fait assez « trippant » comme technique, et c'est utilisé abondamment pour sécuriser des applications Web que vous utilisez tous les jours.

Références