Attesto

Provenance Attesto 3

AttestoMark Audio

AttestoMark Audio insère un locator à clé dans de l'audio PCM 16 bits et laisse le Local Vault le rechercher dans un registre local chiffré. Cette page indique ce qui survit selon la mesure, ce qui disparaît selon la mesure, et ce qu'une détection n'établit pas.

Portée

AttestoMark Audio écrit un locator de 61 bits dans de l'audio PCM 16 bits au moyen d'une transformation patchwork sur des bandes FFT. Ce locator n'est pas le contenu qui intéresse un lecteur : c'est un index vers un registre chiffré détenu par le Local Vault, et ce registre porte l'identité de la marque, le jeu de clés et les empreintes de l'actif original et de l'actif marqué.

Le fournisseur n'accepte que audio/wav. La conversion entre conteneurs est une transformation autour du fournisseur et non en son sein — c'est pourquoi l'image de base du Local Vault porte l'audio, tandis que la vidéo exige l'image média et ses bibliothèques de codecs.

Architecture

Le fournisseur est un binaire de classe S : il s'exécute dans le bac à sable setuid, sans réseau, sous une identité non privilégiée fixe, avec un accès fichier limité à son propre binaire, à l'actif et à un fichier de sortie, plus des limites de processus, d'espace d'adressage et de taille de sortie. Il voit l'audio et rien d'autre.

Le bac à sable a été attaqué et non seulement configuré. Treize tentatives d'évasion contre le binaire livré, installé setuid root, ont toutes échoué ; un bras de contrôle exécutant chaque tentative sans le bac à sable montre que neuf d'entre elles sont refusées par le bac à sable et non par l'environnement.

Cycle d'insertion

Le coffre réserve un enregistrement de registre contre l'empreinte de l'actif non marqué, dérive le locator sous forme de HMAC sur l'identifiant du jeu de clés, l'identifiant de marque et cette empreinte, puis demande au fournisseur de l'insérer. La sortie est ensuite redétectée indépendamment avant que l'enregistrement ne soit finalisé : une insertion qui ne peut être relue est refusée et la réservation annulée, afin qu'un registre ne conserve jamais un enregistrement pour une marque que personne ne peut trouver.

Détection à clé

La détection essaie chaque époque de jeu de clés encore habilitée à vérifier, la plus récente d'abord, et seule une résolution exacte du registre compte. Un locator qui ne mène à rien est signalé not_observed et non comme une erreur, car un fichier sans marque est un fichier normal.

Un enregistrement réservé mais jamais inséré n'est délibérément pas divulgué par la détection. Sinon il se résoudrait et signalerait une marque pour un contenu que rien n'a jamais marqué.

Formats et limites

WAV PCM 16 bits, jusqu'à 256 Mo et 600 secondes. Les actifs plus longs ou plus volumineux sont refusés, non tronqués.

Clés et registre

Un jeu de clés porte une clé de locator, une clé de recherche et une clé de registre, et n'existe que dans le Local Vault. Le registre est chiffré au repos : l'identifiant de marque et les bits du locator n'apparaissent pas dans le fichier de base de données, ce que le canari du conteneur vérifie en parcourant les octets.

Preuves

C'est le résultat propre du fournisseur qui atteint la capsule. Le coffre ne le reconstruit pas : un objet de preuve assemblé à côté d'une exécution signalerait un état que cette exécution l'ait produit ou non.

Robustesse mesurée

Huit actifs de dix secondes, dix cas par actif, mesurés contre le vrai fournisseur dans le vrai bac à sable avec un vrai ffmpeg. Chaque transformation revient au WAV, car ce qu'un fichier diffusé subit est un encodage puis un décodage ; une marque qui ne survit qu'à des échantillons intacts n'a rien survécu.

8/8 pour MP3 à 192 et 128 kbit/s, AAC à 128 kbit/s, rééchantillonnage à 22050 Hz et 48000 Hz, normalisation de sonie, atténuation de 15 %, détection exacte et contrôle de faux positif avec une clé non concordante. Le rognage de tête a mesuré 6/8 : retirer 0,35 s décale les fenêtres d'analyse sur lesquelles le signal patchwork est aligné, et deux actifs l'ont perdu.

Ces chiffres décrivent ce corpus, ces transformations, cette version du fournisseur et cet environnement de publication. Ils ne constituent pas un taux de survie universel et doivent être remesurés dès que l'un d'eux change.

Suppression mesurée

La robustesse mesure la survie sous des transformations qu'une chaîne honnête effectue. La suppression est l'autre question, avec son propre corpus : des transformations dont le seul but est de détruire la marque, chacune assortie de ce qu'elle coûte à un auditeur plutôt qu'en décibels — aucun chiffre en décibels ne dit quoi que ce soit à une personne.

Un étirement temporel de 5 % et un décalage de hauteur de 3 % suppriment la marque sur chaque actif. Les deux sont audibles et aucun ne ruine l'enregistrement, ce qui les rend nettement moins coûteux que la recompression à 8 kbit/s en 16 kHz — la seule autre attaque qui la supprime entièrement, et qui laisse l'audio à peine intelligible.

Les résultats de filtrage dépendent de l'enregistrement. Sur trois exécutions, le filtrage passe-bas a mesuré entre 25 % et 100 % de survie sur huit actifs ; aucun taux n'est donc revendiqué pour lui. Ce qui est revendiqué, c'est la forme : aucun filtre ni recompression légère n'a supprimé la marque sur tous les actifs.

La survie d'une marque audio est donc revendiquée pour la conversion de codec, le rééchantillonnage, la normalisation, le gain et le filtrage — et pas pour ce qui déplace la ligne temporelle.

Exploitation

Le fournisseur est livré dans l'image du Local Vault, installé sous la racine des fournisseurs, appartenant à root et non inscriptible, avec un manifeste épinglant l'empreinte de son binaire. Un contrat inspecte l'artefact construit plutôt que le Dockerfile : chaque somme de contrôle épinglée est recalculée depuis le binaire qu'elle épingle, et chaque manifeste est chargé par le chargeur propre au coffre, de sorte qu'un manifeste que le coffre refuserait fait échouer la construction plutôt que le premier client.

Modes de défaillance

Une insertion qui ne peut être relue indépendamment est refusée. Un actif dépassant la limite de taille ou de durée est refusé. Un fournisseur qui dépasse ses limites de bac à sable est tué et l'exécution signale un échec plutôt qu'un résultat partiel. Aucun de ces cas ne produit un enregistrement de marque.

Limite des affirmations

Une détection réussie prouve que ce Local Vault a résolu un locator à clé présent dans l'audio qu'on lui a montré et l'a lié à son enregistrement de marque chiffré. Elle ne prouve pas que l'audio est l'actif qui a été marqué, qui l'a enregistré, s'il a été généré, s'il est vrai ni à qui il appartient. L'absence de marque n'est pas la preuve qu'un contenu ne provient pas de cette chaîne. Une marque peut être supprimée en déplaçant la ligne temporelle, ce qui est indiqué ci-dessus — et c'est pourquoi une détection est une preuve à peser avec les reçus, les liens de source et la politique, et non un verdict en soi.