Byte-Identical Interoperability
Trois clients (Android, iOS, Desktop), un seul wire format. Layout des frames, labels HKDF, padding CBR : tout est bit-à-bit identique, validé en CI avec Known-Answer-Tests.
Frame layout
Chaque frame audio suit la structure : [Version][Flags][SeqNum BE][Timestamp BE][Nonce][Payload][Tag][DeepfakeScore]. La charge utile (payload) est complétée (padding) jusqu’à une cible constante de 120 octets pour résister à l’analyse de trafic ; le reste du frame a une taille fixe. Identique sur toutes les plateformes client. Vérifiable avec le dissector Wireshark inclus.
- Version + Flags: 2 byte
- SeqNum: 4 byte big-endian
- Payload + Tag + Score : dans le reste de la frame
HKDF labels costanti
Tous les KDF utilisent des chaînes label constantes définies dans la spécification : q-audion-frame-key, q-audion-root-ratchet, q-audion-psk-mix, q-audion-next-chain. Modifier un label casse l'interopérabilité. C'est pourquoi ils sont gated par KAT en CI sur toutes les plateformes.
- HKDF-SHA-256 sur Android, iOS et Desktop
- PRK dérivée de la clé maîtresse de la session
- Le label info string complète la séparation de domaine
KAT-gated CI
Chaque plateforme inclut des tests qui chargent des vecteurs de test produits par BouncyCastle (référence Android) et vérifient les résultats bit à bit. Si Desktop ou iOS divergent, la CI échoue. Garantie continue d'interopérabilité.
- KAT dumper BouncyCastle comme référence
- tools/android-kat-dumper produit les vecteurs
- Les checks Desktop/iOS chargent les vecteurs et comparent