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 codeLe 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é.
