Byte-Identical Interoperability
Tre client (Android, iOS, Desktop), un unico wire format. Layout dei frame, label HKDF, padding CBR: tutto bit-per-bit identico, convalidato in CI con Known-Answer-Test.
Frame layout
Ogni frame audio ha struttura: [Version][Flags][SeqNum BE][Timestamp BE][Nonce][Payload][Tag][DeepfakeScore]. Il payload è riempito (padding) fino a un target costante di 120 byte per resistere all'analisi del traffico; il resto del frame ha dimensione fissa. 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
Tutti i KDF utilizzano stringhe label costanti definite nella specifica: q-audion-frame-key, q-audion-root-ratchet, q-audion-psk-mix, q-audion-next-chain. Modificare una label rompe l'interoperabilità. Per questo motivo sono gated da KAT in CI su tutte le piattaforme.
- HKDF-SHA-256 su Android, iOS e Desktop
- PRK derivato dalla master key di sessione
- 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