Byte-Identical Interoperability
Drei Clients (Android, iOS, Desktop), ein einziges Wire-Format. Frame-Layout, HKDF-Labels, CBR-Padding: alles bit-für-bit identisch, in CI mit Known-Answer-Test validiert.
Frame-Layout
Jeder Audio-Frame hat folgende Struktur: [Version][Flags][SeqNum BE][Timestamp BE][Nonce][Payload][Tag][DeepfakeScore]. Feste Länge von 256 Byte nach dem Padding. Identisch auf allen Client-Plattformen. Überprüfbar mit dem enthaltenen Wireshark-Dissektor.
- Version + Flags: 2 Byte
- SeqNum: 4 Byte Big-Endian
- Payload + Tag + Score: im Rest des Frames
Konstante HKDF-Labels
Alle KDFs verwenden konstante String-Labels, die in der Spezifikation definiert sind: q-audion-frame-key, q-audion-root-ratchet, q-audion-psk-mix, q-audion-next-chain. Eine Änderung eines Labels würde die Interoperabilität unterbrechen. Aus diesem Grund werden sie durch KAT in CI auf allen Plattformen geschützt.
- HKDF-SHA-256 (Android/iOS), HKDF-SHA-512 (Desktop hybrid)
- PRK abgeleitet vom Master-Key der Session
- Info-String-Label vervollständigt die Domänentrennung
KAT-gesteuerte CI
Jede Plattform enthält Tests, die von BouncyCastle (Android-Referenz) erzeugte Testvektoren laden und die Ergebnisse bit-für-bit überprüfen. Wenn Desktop oder iOS abweichen, schlägt die CI fehl. Kontinuierliche Garantie der Interoperabilität.
- BouncyCastle KAT-Dumper als Referenz
- tools/android-kat-dumper erzeugt die Vektoren
- Desktop/iOS-Check lädt die Vektoren und vergleicht