Format de payload versionné

ISQR1 Open Format

Une spécification compacte pour les QR Codes chiffrés : structure des champs, encodage, paramètres cryptographiques et règles de décodage.

Le format en une phrase

ISQR1 est une chaîne sûre pour URL contenant tous les paramètres dont un décodeur a besoin pour déchiffrer : version, sel, IV et texte chiffré incluant l'auth tag AES-GCM.

ISQR1:<salt_b64url>:<iv_b64url>:<ciphertext_b64url>

Champs

Champ Longueur Description
ISQR1 5 caractères Version et préfixe magique. Les décodeurs doivent rejeter les versions inconnues.
salt_b64url 16 octets avant encodage Sel aléatoire pour PBKDF2. Doit être régénéré à chaque chiffrement.
iv_b64url 12 octets avant encodage Nonce AES-GCM. Doit être unique avec la même clé.
ciphertext_b64url variable Texte chiffré AES-GCM incluant le tag d'authentification 128 bits.

Paramètres cryptographiques

CipherAES-GCM 256-bit
KDFPBKDF2-SHA-256
Itérations250 000
EncodageBase64url sans padding

Grammaire proche ABNF

payload      = "ISQR1:" salt ":" iv ":" ciphertext
salt         = 1*( ALPHA / DIGIT / "-" / "_" )
iv           = 1*( ALPHA / DIGIT / "-" / "_" )
ciphertext   = 1*( ALPHA / DIGIT / "-" / "_" )

Les implémentations doivent non seulement valider la grammaire, mais aussi vérifier les longueurs en octets décodés pour le sel et l'IV.

Règles de décodage

  1. Supprimer les espaces blancs et traiter le texte UTF-8 comme payload.
  2. Optionnellement URL-décoder la partie après # des fragments d'URL.
  3. Vérifier exactement le préfixe contre ISQR1.
  4. Décoder le sel, l'IV et le texte chiffré en Base64url sans padding.
  5. Dériver une clé AES-GCM 256 bits depuis le mot de passe et le sel via PBKDF2-SHA-256.
  6. Déchiffrer le texte chiffré avec AES-GCM et l'IV. Les erreurs indiquent un mauvais mot de passe ou des données falsifiées.

Invariants de sécurité

Pas de réutilisation

Le sel et l'IV sont fraîchement générés pour chaque chiffrement depuis crypto.getRandomValues.

Pas de secrets serveur

Le mode standard ne nécessite ni base de données ni clé maîtresse. Tout le nécessaire est dans le QR Code.

Authenticité

AES-GCM fournit une protection de l'intégrité. Les payloads falsifiés ne peuvent pas être déchiffrés avec succès.

Versionnement

De nouveaux formats peuvent être introduits comme ISQR2 sans casser silencieusement les décodeurs existants.