ERK'2020, Portorož, 292-295 292 Vodno žigosanje audio vsebin z uporabo diskretne valčne transformacije (DWT) Nejc Bevk, Urban Burnik, Marko Meža Univerza v Ljubljani, Fakulteta za elektrotehniko E-pošta: ne.bevk@gmail.com Audio watermarking based on Discrete Wavelet Transform (DWT) Abstract. In the article, we first introduce the motivation for watermarking of digital content. We highlight the key features of watermarking systems and some of the most popular techniques and algorithms in use according to the literature. We focus on blind watermarking based on discrete wave transformation. We reviewed the watermark insertion and extraction algorithm in detail and performed validation on a speech recording and on a rock music record. Our findings demonstrate that the watermarking of speech recording is slightly more robust and resistant to signal manipulations. 1 Uvod Sodobna digitalna tehnologija široki populaciji omogoča preprosto izmenjavo zvočnih posnetkov v odprtih podatkovnih omrežjih. Ilegalen prenos avtorsko zaščitenih del postaja velik problem tudi v glasbeni industriji, kjer predstavlja dejansko izgubo finančnih sredstev. Potrebujemo postopke, s katerimi lahko spremljamo prenose, identificiramo lastnika, dokažemo lastništvo, overimo vsebino in nadziramo kopiranje zvočnih datotek. Ena izmed rešitev je ta, da v signal zvočnega posnetka na čim manj zaznaven način vgradimo meta podatke, ki jih je kasneje mogoče prebrati oziroma dekodirati. Tak postopek imenujemo vodno žigosanje vsebin, vgrajeni vodni žig pa nam služi kot dokazilo o izvoru označenega posnetka. Informacije morajo biti vdelane tako, da jih kasneje lahko odkrijemo in na njihovi podlagi dokažemo pristnost ali avtorstvo posnetka. V primerjavi z steganografijo ali kriptografijo nam vodno žigosanje omogoča, da digitalni podatki kljub žigosanju ohranijo normalno uporabnost oziroma, da dostop do njih ni tehnološko omejen [1]. Glavne lastnosti sistemov za vodno žigosanje so slišnost, robustnost, varnost, podatkovni tovor in računska zahtevnost [2]. Pomembnost kriterijev se spreminja z namenom uporabe vodnega žiga. 1.1 Lastnosti sistema za vodno žigosanje Slišnost ali zaznavnost – je lastnost, s katero ocenjujemo, kako zaznaven je vodni žig v označeni vsebini. Vodno žigosanje naj bi bilo čim bolj transparentno in naj ne bi kvarilo zaznavanja originalnega signala. V ta namen uporabljamo psiho-akustične modele, ki izkoriščajo lastnosti človeškega zaznavanja zvoka [2]. Robustnost – je lastnost s katero opisujemo, če vodni žig po različnih obdelavah signala še vedno pravilno zaznavamo. Gre za mero zanesljivosti vodnega žiga ob različnih namernih ali nenamernih napadih, ki vplivajo na signal. Klasični primeri tovrstnih procesov so dodajanje šuma, prevzorčevanje, razne kompresije ali druge modifikacije avdio signala. Pomembno je omeniti, da je stopnja robustnosti močno pogojena z namenom aplikacije vodnega žiga [2] [1]. Varnost – sistema za vodno žigosanje dosežemo tako, da podatke, ki jih bomo žigosali, že pred ali med postopkom ustrezno šifriramo. V ta namen lahko ustvarimo tajne ključe ali uporabimo različne šifrirne tehnike, s katerimi v proces vdelave in detekcije vodnega žiga dodamo naključnost. Tako morebitnim napadalcem preprečimo, da bi zaznali ali uničili vodni žig s statistično detekcijo ali obratno uporabo algoritma [2] [3]. Podatkovni tovor – se običajno nanaša na količino bitov, prenešenih v časovni enoti. V okviru vodnega žigosanja zvočnih posnetkov nam določa količino vgrajenih podatkov in se meri v bitih na sekundo (bit/s). Podatkovni tovor se med posameznimi tehnikami in algoritmi vodnega žigosanja močno razlikuje [2]. Računska zahtevnost – je lastnost, s katero merimo obseg izvajanja operacij, ki jih potrebujemo za vgradnjo ali zaznavo vodnega žiga. Zaradi različnih potreb pri uporabi vodnih žigov je zahtevnost med posameznimi postopki lahko zelo različna. Za doseganje boljše računske zahtevnosti moramo skleniti kompromis med robustnostjo in slišnostjo [2]. 1.2 Aplikacije vodnega žiga Dokazilo lastništva, oziroma zaščita avtorskega dela je eno izmed glavnih gonil razvoja tehnologij za vodno žigosanje zvočnih posnetkov. Z vodnim žigom lahko v zvočni posnetek vstavimo podatke, v katerih je naveden lastnik medija. Ta lahko kasneje z detekcijo žiga uveljavlja lastništvo. Vodni žig za ta namen mora biti izredno robusten in imeti visoko stopnjo varnosti, hkrati pa je lahko kratek, zato ne doprinese velikega podatkovnega tovora [2] [1]. Vodni žigi za spremljanje prenosov nam omogočajo zbiranje informacij o prenosih vsebine. Tovrstne informacije se nato uporablja za statistične analize in trženje. Robustnost pri tovrstnih vodnih žigih ni tako pomembna, saj je tveganje, da bo prišlo do popačenja, manjše. Veliko pomembneje je, da je vodni žig nezaznaven. Vodne žige lahko uporabljamo tudi za overitev vsebine. Tako lahko preverimo, če je bila kakorkoli spremenjena ali obdelana. Tovrstni vodni žigi so zato zelo krhki in propadejo že ob manjših spremembah vsebine. Ker je vodni žig vgrajen v vsebino, se z njo tudi 293 spreminja. To nam omogoča, da do neke mere izvemo, kako s kakšnim napadom je bila vsebina napadena [2]. Vodno žigosanje se aplicira tudi za nadzor kopiranja vsebin, ki preprečuje izdelavo nezakonitih kopij avtorsko zaščitenih del [2]. 2 Orodja in postopki 2.1 Ogrodje sistema in postopek digitalnega žigosanja zvočnega posnetka V literaturi zasledimo veliko število različnih sistemov za vodno žigosanje zvočnih posnetkov. V grobem je vsak sistem sestavljen iz treh glavnih delov: • generator vodnega žiga, • vgrajevalnik vodnega žiga in • detektor vodnega žiga. Na začetku postopka vzamemo vsebino, ki jo želimo zavarovati z vodnim žigom. To bo originalen zvočni signal. Z generatorjem vodnega žiga izdelamo vodni žig, ki je lahko različnih oblik, na primer slika, črke ali zaporedje besed. Vgrajevalnik nato vgradi signal vodnega žiga v originalen zvočni signal, tako da dobimo žigosan signal. Takšen signal je pripravljen na prenos, med katerim bo naletel na običajne spremembe med prenosom ali namerne napade, ki želijo uničiti vodni žig. Na koncu detektor izvleče vodni žig iz signala, ki je zaradi poti nekoliko drugačen od žigosanega signala. Detektor nato primerja izvlečeni vodni žig z originalnim vodnim žigom in potrdi, če je vodni žig pristen [2]. 2.2 Tehnike in algoritmi V literaturi zasledimo veliko različnih tehnik, ki koristijo številne algoritme za dodajanje vodnega žiga v zvočne posnetke. Poznamo tehnike, ki vgrajujejo vodne žige v časovni domeni. Ena izmed takšnih metod je tehnika s kodiranjem najmanj pomembnega bita. V postopku vdelave žiga zamenjamo najmanj pomemben bit vsakega vzorca z vodnim žigom, ki ga sestavlja niz binarnih števil [2]. Tehnika sama po sebi ni zelo robustna, zato se zanjo pogosto uporabljajo izboljšave. Prednost tehnike je v tem da je računsko nezahtevna, zato se uporablja pri realno- časovnih aplikacijah [1]. Sledijo tehnike, ki za vgradnjo vodnega žiga ne uporabljajo časovne ampak transformirane domene. Takšne metode navadno vsebujejo dva koraka pred vgradnjo vodnega žiga in sicer domensko transformacijo in inverzno transformacijo. Takšna tehnika je na primer tehnika žigosanja z razširjenim spektrom. Tehnika zaradi njene robustnosti velja za eno najpopularnejših in najvarnejših tehnik [1]. Tehnika razširi vodni žig skozi spekter originalnega signala na način, da je energija, prisotna v vsakem frekvenčnem koraku, zelo majhna in težko zaznavna. Slabost omenjene tehnike je, da proces žigosanja doda slišne popačitve zvočnim posnetkom. Zato se ob tehniki pogosto uporablja tudi amplitudno oblikovanje s pomočjo psiho-akustičnega modela [2] [3]. V nekoliko novejši literaturi zasledimo tudi uspešno uporabo diskretne valčne transformacije kot način za uspešno vgradnjo vodnega žiga v zvočne posnetke [4] [5]. Pri tovrstni tehniki uporabljamo multiresolucijsko analizo in sintezo. Med dekompozicijo, je signal razstavljen na del z visokimi frekvencami in del z nizkimi frekvencami. Del nizkih frekvenc je nato ponovno razstavljen na isti način nizkih in visokih frekvenc. Takšno razstavljanje se ponavlja dokler ne dosežemo željene stopnje. Z vsakim nivojem se časovna resolucija razpolovi, frekvenčna pa podvoji, zato s to tehniko dosežemo zelo dobro frekvenčno resolucijo pri nizkih frekvencah in dobro časovno resolucijo pri visokih frekvencah [2] [4]. 3 Preizkus slepega vodnega žigosanja z uporabo diskretne valčne transformacije (DWT) V literaturi najdemo podrobne opise vodnega žigosanja zvočnih posnetkov z uporabo diskretne valčne transformacije [4] [5]. V projektu želim predstaviti in preizkusiti algoritem za vodno žigosanje zvočnih posnetkov, ki ga najdemo v [5]. Cilj je razložiti algoritem in testirati njegovo delovanje v orodju Matlab s pomočjo že izdelane skripte [6]. 3.1 Opis postopka Omenjeni postopek za vodno žigosanje zvočnih posnetkov uporablja diskretno valčno transformacijo in diskretno kosinusno transformacijo. Za izboljšanje rezultatov se uporabi tudi šifriranje z Arnoldovo transformacijo, ki dobro premeša podatke. V algoritmu se uporabi diskretna valčna transformacija tretje stopnje. Za vodni žig se uporabi dvobarvno sliko, ki je šifrirana z cikličnimi vrednostmi in dodatno premešana z uporabo Arnoldovega algoritma. V naslednjem delu sledijo kratki opisi uporabljenih tehnik. 3.2 Opis uporabljenih tehnik Diskretna valčna transformacija (DWT) – Kot že prej omenjeno, je valčna transformacija uporabna za analizo tako splošnih, kot bolj specifičnih lastnosti signala. Tovrstna transformacija razstavi osnoven avdio signal v seznam komponent z omejeno velikostjo oken. S ponovnim sestavljanjem komponent lahko rekonstruiramo vhodni signal. Z uporabo DWT preoblikujemo signal z 2-D filtri, ki razdelijo signal v štiri nize multiresolucijskih koeficientov. To so koeficienti približkov nizkih frekvenc ter komponente vertikalnih, horizontalnih in diagonalnih podrobnosti signala. Dekompozicijo lahko izvedemo v več nivojih, s čimer povečamo robustnost in s tem odpornost na resnejše napade [5] [1]. Diskretna kosinusna transformacija (DCT) – je razširjena vrsta transformacije, ki se uporablja tudi v slikovni in video kompresiji. Upošteva vzorce zvočnega 294 signala kot vsoto kosinusne funkcije, ki oscilirajo pri različnih frekvencah in amplitudah. Transformacija je podobna diskretni Fourierjevi transformaciji ampak uporablja samo realna števila. V primeru kompresije je DCT bolj smiselna kot diskretna sinusna transformacija, ker nam vrne manj koeficientov, s katerimi se učinkovito lahko približamo originalnemu signalu. V omenjenem algoritmu za vodno žigosanje se DCT uporablja za zajem koeficientov pasu srednjih frekvenc, s katerimi lociramo ključno informacijo za vodno žigosanje [5]. Po končni transformaciji lahko ponovno sestavimo signal z inverzno DCT. Arnoldov kodirni algoritem – se v omenjenem algoritmu uporablja, da doda dodaten nivo zaščite vodnemu žigu. Z algoritmom namreč dodatno kodiramo sliko ki služi kot vodni žig. Uporablja se samo na signalih velikosti 𝑁 × 𝑁 , kot definirano v (1), 𝑥 𝑦 = 1 1 1 2 𝑥 𝑦 𝑚𝑜𝑑𝑁 (1) kjer sta (𝑥, 𝑦) koordinati originalnega vodnega žiga, (𝑥 , 𝑦′) pa sta koordinati kodiranega žiga. 𝑁 predstavlja višino in širino signala, ki ga želimo obdelati. Dekodiranje signala je odvisno od kodirnega ključa, ki definira tudi, kolikokrat je bilo kodiranje izvedeno [5]. Vgrajevanje vodnega žiga Slika 1 Diagram poteka algoritma za vgradnjo vodnega žiga. Prirejeno po [5]. Postopek vgrajevanja vodnega žiga poteka v naslednjih korakih, kot je prikazano na Slika 1. Zvočni signal je najprej preoblikovan v 2-D matriko. Za vodni žig se izbere binarna slika dimenzij 𝑁 × 𝑁 . Z uporabo DWT nato razstavimo 2-D matriko na pod pasove [L,H,V,D]. Izberemo srednja pasova H in V ter ponovimo DWT. Za boljšo robustnost dodamo še drugi in tretji nivo DWT, kjer vedno izberemo srednje pasove, A2, B2, C2 in D2. Vsak pas se razdeli na × bloke. V vsakem bloku opravimo DCT transformacijo. S ključem vodnega žiga nato ustvarimo 2 naključni psevdosekvenci. Dolžina obeh sekvenc mora biti enaka številu koeficientov srednjih pasov. Binarna slika vodnega žiga je preoblikovana v matriko, ki jo je mogoče zakodirati s periodičnimi kodami. Ciklično kodiranje se ponovi še enkrat za dodaten nivo zaščite. Novo dobljeno matriko dodatno kodiramo s ključem vodnega žiga. Biti kodiranega vodnega žiga so nato vdelani v zvočni signal, nad katerim izvedemo še inverzni DCT in DWT, tako da dobimo vodno žigosan zvočni posnetek [5]. 3.3 Detekcija vodnega žiga Detekcija vodnega žiga poteka v korakih, ki so prikazani na Slika 2 in sicer tako, da vodno žigosan zvočni posnetek ponovno razstavimo s tremi nivoji DWT. Na novo izdelamo dve naključni psevdosekvenci. Tako kot v postopku vgrajevanja izvedemo DCT na izbranih koeficientih srednjih pasov. Vgrajen vodni žig izvlečemo glede na korelacijo med prej izbranimi koeficienti srednjih pasov in psevdosekvenc. Pridobimo novo matriko, ki jo s pomočjo ključa vodnega žiga pošljemo skozi obraten Arnoldov kodirni algoritem. S podobnimi transformacijami kot pri vgradnji žiga in s cikličnim dekodiranjem dokončno izvlečemo binarno sliko vodnega žiga [5]. Slika 2 Diagram poteka algoritma za detekcijo vodnega žiga. 4 Rezultati Algoritem smo testirali na dveh različnih zvočnih posnetkih. Prvi vsebuje samo človeški govor brez glasbe, drugi posnetek pa je znana rock skladba. Pripravili smo vodni žig, binarno sliko (Slika 3) v velikosti 16x16 slikovnih elementov. 295 Slika 3 Originalen vodni žig Preverjali smo napako vodnega žigosanja ob nekaj različnih manipulacijah 1 zvočnega posnetka. To so: • dodajanje šuma, • filtriranje s premikajočim povprečenjem, • spreminjanje vzorčne frekvence, • obrezovanje. Prav tako smo s primerjavo originalnega in žigosanega posnetka preverili, kakšen vpliv ima vodni žig na zvočni posnetek. Rezultati so zapisani v Tabela 1. V tabeli so prikazani tudi detektirani vodni žigi. Tabela 1 Rezultati testiranja SSIM BER Detektiran vodni žig Brez vplivov Govor 1 0 Skladba 0.9995 6 Dodajanje šuma Govor 1 0 Skladba 0.9985 18 Filtriranje Govor 0.9943 64 Skladba 0.9912 78 Prevzorčevanje Govor 0.9899 80 Skladba 0.9856 102 Obrezovanje Govor 0.9964 31 Skladba 0.9964 37 1 Manipulacije se bile že vdelane v algoritem [6] in sicer po postopku opisanem v [5] Bit error rate (BER) – nam prikaže napako med začetnimi in končnimi biti. V primeru algoritma je to število napačno zapisanih slikovnih elementov v sliki zaznanega vodnega žiga. Structural similarity index (SSIM) – je mera, ki se uporablja za merjenje podobnosti med dvema digitalnima vsebinama. V danem algoritmu na tak način testiramo vpliv vodnega žiga na zaznavne spremembe zvočnega posnetka. Opazuje se originalen zvočni posnetek, ki se primerja z končnim posnetkom, ki vsebuje vodni žig. 5 Zaključek Skozi članek smo predelali področje vodnega žigosanja digitalnih vsebin, specifično, avdio posnetkov. Posamezne tehnike, ki so temu namenjene, se po uspešnosti razlikujejo od namena uporabe. Velja, da moramo skleniti kompromis med robustnostjo, podatkovnim tovorom in zaznavnostjo. Pod drobnogled smo vzeli algoritem za vodno žigosanje, ki temelji na DWT in DCT ter Arnoldovem kodirnem algoritmu. Postopek ponuja zanimivo rešitev, kako v zvočni posnetek zakodiramo binarno sliko, ki služi kot vodni žig. Za testiranje smo izdelali vodni žig v obliki takšne slike. S pomočjo že pripravljenega algoritma smo preizkusili žigosanje na dveh vrstah zvočnih posnetkov in sicer na posnetku govora in rock skladbi. Preverili smo tudi odpornost vodnega žiga s pomočjo že pripravljenih manipulacij signala. Iz rezultatov je razvidno, da se vodni žig bolje obdrži na zvočnem posnetku govora. Razvidno je tudi, da je vodni žig uporabljenega algoritma zelo nezaznaven, kar pomeni, da se žigosan signal zelo malo razlikuje od originalnega. Literatura [1] D. Isovski, „Odpornost zvočnega vodnega žiga na napade,“ 2017. [2] Y. Lin, W. H. Abdulla in others, Audio watermark, Izv. 146, Springer, 2015. [3] Y. Xiang, G. Hua in B. Yan, Digital audio watermarking: fundamentals, techniques and challenges, Springer, 2017. [4] A. M. Joshi, „Hardware Implementation of Audio Watermarking Based on DWT Transform,“ v Ethics, Laws, and Policies for Privacy, Security, and Liability, IntechOpen, 2019. [5] A. M. Joshi in others, „DWT-DCT based blind audio watermarking using Arnold scrambling and Cyclic codes,“ v 2016 3rd International Conference on Signal Processing and Integrated Networks (SPIN), 2016. [6] Subir, „GitHub,“ 99sbr, 2016. [Elektronski]. Available: https://github.com/99sbr/Audio-Watermarking. [Poskus dostopa 17 4 2020].