Neredzamas zīmes audio: kā atrast, kurš nopludināja ierakstu no slēgtas kopienas
- gada sākumā es izveidoju satura aizsardzību kādam blogerim. Viņš publicēja audioierakstus un balss ziņas slēgtā kopienā, un tie regulāri noplūda. Mērķis: katrs abonents saņem savu, nedaudz atšķirīgu kopiju, un pēc nopludināta faila var noteikt, kam tā piederēja. Tad šo cilvēku var nobloķēt, un informācija vairs neplūst ārā no slēgtās kopienas.
Šim nolūkam es uzrakstīju servisu TypeScript valodā uz ffmpeg bāzes. Katrs abonenta numura paslēpšanas veids ir atsevišķs spraudnis, un tos var kombinēt.
- Metadati. Kods faila tagos. Vienkāršākais un trauslākais veids: pietiek vienreiz pārsaglabāt failu, un tā vairs nav.
- Klusas skaņas. Noteiktos brīžos ierakstam piejauc tik tikko dzirdamas skaņas — trokšņus un „viļņus”. Katrs numura bits ir izvēle starp divām skaņām savā slotā; zīmes atkārtojas sākumā un beigās.
- Temps. Failu sagriež gabalos, un katru gabalu mazliet paātrina vai palēnina — ar ausi to nevar sadzirdēt, bet no segmentu garumiem var nolasīt numuru.
- Pauzes. Programma atrod pauzes starp vārdiem un izstiepj tās par dažādu garumu.
- Ekvalaizers. Dažos segmentos — šaura vienas frekvences pastiprināšana un apslāpēšana.
- Segmenti — viltīgākais veids. Autors ierakstīja vienu un to pašu tekstu vairākos dubļos. Programma salīmēja kopā frāzes no dažādiem dubļiem, tāpēc katrs abonents saņēma savu kombināciju. Katras frāzes garumu pielāgoja ar tempu, lai šuves nebūtu dzirdamas. Šādu zīmi nevar noņemt ne ar pārkodēšanu, ne ar filtriem: tas nav virsū uzlikts efekts, tas ir pats teksts citā izpildījumā.
Un ja viņi nopludina kopā? Vairāki cilvēki var salīdzināt savas kopijas un tās sajaukt. Tad apvienotajā failā paliek tikai viņu kopīgās zīmes. Šim gadījumam es uzrakstīju atsevišķu skriptu: pēc šīm atliekām tas pārlasa abonentu trijniekus, kuri varēja radīt tieši tādu sajaukumu.
Kas notika tālāk. Izrādās, puišiem bija vairāki konti. Viņi salīdzināja balss ziņas, saprata, ka kopijas atšķiras, sāka rakties — un beigās vispār pārstāja nopludināt audio. Toreiz mums neizdevās noskaidrot, kas to dara, bet audio noplūdes beidzās.
Tā vietā viņi sāka visu atšifrēt un publicēt kā tekstu. Par to mēs arī domājām: ar ChatGPT palīdzību katrai kopijai pievienot kaut ko mazliet savu — parazītvārdus, citus formulējumus. Taču, ja nopludinātājam ir divi konti, viņš salīdzina divas versijas un iztīra atšķirības, un pret to praktiski nav ko darīt.
Video. Pavasarī nāca klāt video. Klipus rādīja caur VdoCipher atskaņotāju, un skatītāji nesa savu numuru tieši uz ekrāna: ūdenszīmes pozīcija un intervāli, kādos tā pārvietojas, tika aprēķināti no viņu numura bitiem, informācija tika kodēta krāsās, parādījās uznirstošie logi. Nopludinātāji pierada to visu aizmiglot — un atslāba. Bet mēs video pievienojām arī audio zīmes. Tieši tās viņus beidzot nodeva, un viņus nobloķēja.
Ko es no tā iemācījos: neviena metode neiztur visu — metadati pazūd pēc pārsaglabāšanas, skaņas var izgriezt, redzamu zīmi var aizmiglot. Tāpēc zīmēm jābūt vairākām un dažāda veida. Un nopludinātājam visbīstamākā ir tā zīme, par kuru viņš nezina: kamēr viņi cīnījās ar to, ko redzēja, viņus nodeva skaņa.