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
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
- Supprimer les espaces blancs et traiter le texte UTF-8 comme payload.
- Optionnellement URL-décoder la partie après
#des fragments d'URL. - Vérifier exactement le préfixe contre
ISQR1. - Décoder le sel, l'IV et le texte chiffré en Base64url sans padding.
- Dériver une clé AES-GCM 256 bits depuis le mot de passe et le sel via PBKDF2-SHA-256.
- 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.