Spécification GKP1 — identifiant vérifiable par QR code.

Le format GKP1 encode un identifiant vérifiable hors ligne dans une charge suffisamment compacte pour tenir dans un QR code imprimable. Il s'inspire du format Digital Covid Certificate européen et des travaux de l'IETF sur les identifiants cryptographiques compacts.

Chaîne de transformations

Un identifiant GKP1 est produit par la chaîne suivante :

Données structurées
  → CBOR canonique (RFC 8949)
  → COSE_Sign1 ES256 (RFC 8152, clé ECDSA P-256)
  → Compression zlib (RFC 1950)
  → Encodage Base45 (RFC 9285)
  → Préfixage par la chaîne littérale "GKP1:"
  → Rendu QR code

Le préfixe GKP1: permet à un lecteur universel d'identifier le format sans ambiguïté.

Payload CBOR

La structure CBOR signée est une COSE_Sign1 dont le payload contient :

  • iss : identifiant de l'émetteur.
  • sub : identifiant du sujet (personne, entité, objet).
  • iat : horodatage d'émission.
  • exp : horodatage d'expiration (optionnel).
  • claims : dictionnaire de revendications, selon le schéma défini par l'émetteur.

Algorithme de signature

La signature est une COSE_Sign1 ES256 utilisant une clé ECDSA sur courbe P-256 (NIST P-256). Le header protégé COSE porte l'identifiant de clé (kid) qui permet au vérificateur de retrouver la clé publique correspondante dans son magasin local.

Taille et contraintes

La cible de taille est de tenir dans un QR code version 22 ou inférieure avec correction d'erreur M, soit environ 1000 caractères alphanumériques après Base45. Un identifiant plus court est préféré.

Pour les charges plus longues, la spécification prévoit un mode GKP1-CHAIN qui permet de scinder une charge sur plusieurs QR codes successifs.

Vérification hors ligne

Le vérificateur (par exemple Gankpo Reader) maintient un magasin local de clés publiques d'émetteurs de confiance. Il est capable de vérifier une signature GKP1 sans aucun appel réseau. Les mises à jour du magasin de clés se font lors des phases de synchronisation en ligne.

Révocation

La révocation d'un identifiant GKP1 est portée par une liste de révocation publiée par l'émetteur, synchronisée périodiquement par le vérificateur. La spécification détaillée de ce mécanisme est disponible sur la page Modèle de révocation.

Interopérabilité

Le format GKP1 n'est pas un standard international. Il est conçu pour cohabiter avec des formats tels qu'ISO 18013-5 et W3C Verifiable Credentials, sans constituer une déclaration de compatibilité ou de certification.

→ Voir les vecteurs de conformité.