Byte-Identical Interoperability
Three clients (Android, iOS, Desktop), a single wire format. Frame layout, HKDF labels, CBR padding: everything bit-for-bit identical, validated in CI with Known-Answer-Tests.
Frame layout
Ogni frame audio ha struttura: [Version][Flags][SeqNum BE][Timestamp BE][Nonce][Payload][Tag][DeepfakeScore]. Lunghezza fissa 256 byte dopo padding. Identica su tutte le piattaforme client. Verificabile con Wireshark dissector incluso.
- Version + Flags: 2 byte
- SeqNum: 4 byte big-endian
- Payload + Tag + Score: nel resto del frame
HKDF labels costanti
All KDFs use constant label strings defined in the spec: q-audion-frame-key, q-audion-root-ratchet, q-audion-psk-mix, q-audion-next-chain. Changing a label breaks interop. That is why they are KAT-gated in CI across all platforms.
- HKDF-SHA-256 (Android/iOS), HKDF-SHA-512 (Desktop hybrid)
- PRK derivato dal master key del session
- Info string label completa la separazione di dominio
KAT-gated CI
Ogni piattaforma include test che caricano vector di test prodotti da BouncyCastle (Android reference) e verificano bit-per-bit i risultati. Se Desktop o iOS divergono, la CI fallisce. Garanzia continua di interoperabilità.
- BouncyCastle KAT dumper come reference
- tools/android-kat-dumper produce i vectors
- Desktop/iOS check carica i vectors e confronta