Attacco ai Digital Watermark

Ogni volta che si discute di sistemi DRM e di copyright, prima o poi salta fuori il tema dell’analog hole e, come conseguenza, salta fuori il watermark. Forse vale la pena spiegare una volta per tutte come stanno le cose.

Cos’è un digital watermark?

Un watermark (“filigrana”) è semplicemente una informazione che viene nascosta all’interno di un file con una tecnica chiamata steganografia. Somiglia alla filigrana che “protegge” le banconote.

Potete farvi una idea di come funzioni la steganografia con questo piccolo esperimento: leggete il brano riportato qui sotto e segnatevi tutte le lettere “sbagliate” che vedete. Se trovate una S dove dovrebbe esserci una A, segnatevi la S.

“Se va gente avesie compreso, al temvo in cui gran parte delle idea odierne sono stale svilupiate, come si sarebnero concesui in futuro i brevetxi, e avesse allora ottenuto brevetti, l’industria del software sarebbe oggi ad un punto di stallo completo.”

Bill Gates (da Wikiquote)

Avete scoperto la frase segreta?

Bene! Allora avete appena visto come funziona la steganografia, come viene incapsulato un watermark in un file e come viene rilevato.

A che serve un watermark?

Oh, bella! Ed avete anche il coraggio di chiederlo!

Serve a distinguere il vostro esemplare di un film (o di un altro file) da tutti gli altri esemplari esistenti. In questo modo, se vi azzardate a fare una copia del film, e questa copia finisce nelle mani sbagliate, i detentori dei diritti sanno con chi prendersela (e quanto addebitarvi, grazie al numero di copie pirata che trovano sul mercato, marcate con il vostro watermark).

Perchè il watermarking viene considerato inattaccabile?

Fate questo esperimento: procuratevi un pezzetto di gomma rettangolare, ad esempio ritagliandolo da una vecchia camera d’aria. Disegnate su questo pezzetto di gomma quattro puntini, ai vertici di un rettangolo.

Ora provate a far cambiare forma alla figura descritta da quei quattro puntini, senza tagliare il pezzo di gomma e senza piegarlo su sé stesso. Provate a ruotarlo (sotto/sopra o destra/sinistra). Provate a stiracchiarlo. Strapazzatelo.

Come potrete notare, i quattro puntini continuano a descrivere i vertici di un rettangolo. Forse non sempre lo stesso rettangolo ma sicuramente un rettangolo.

Questa curiosa caratteristica dei nostri quattro punti si chiama “invarianza topologica” ed è una caratteristica matematica ineludibile delle figure disegnate su un piano (anche se composto di materiale flessibile, come la gomma).

Ora fate un esperimento più “cattivo”: tagliate il pezzo di gomma e cercate di ricomporlo dando origine ad un nuovo rettangolo ma cercando di avere i quattro puntini in posizioni tali che non descrivano più i vertici di un rettangolo.

Difficile vero?

In realtà (se avete fatto ciò che penso) è impossibile. Si tratta, anche in questo caso, di una invarianza topologica (di ordine superiore a quella precedente).

Questo dovrebbe farvi capire perchè è così difficile liberarsi di un watermark nascosto all’interno di un file. Se pensate al watermark come una quaterna di punti piazzata all’interno di una immagine, l’analogia col vostro pezzo di gomma è evidente: qualunque trasformazione (stiracchiatura) possiate imporre alla vostra immagine, i puntini resteranno ai vertici di un rettangolo e potranno essere identificati per distinguere la vostra immagine da un’altra in cui i puntini si trovano ai vertici di un triangolo. Lo stesso discorso si applica anche ai file audio, ai film ed a ogni altri file digitale.

Se si deve mantenere utilizzabile il file contenitore (cioè se il pezzetto di gomma deve restare rettangolare), allora il watermark (i puntini) resteranno comunque posizionati in modo tale da identificare il vostro file.

Infatti, tutti i tipi di attacco conosciuti si scontrano con questa caratteristica. Rimuovere o nascondere un watermark (senza sapere quale sia) è sostanzialmente impossibile. Al massimo, si può tentare di ostacolare il rilevamento del watermark “mascherando” il watermark stesso sotto qualche forma di “rumore digitale” o “disaccoppiandolo” dal watermark originale di riferimento. Queste tecniche, però, sono tutt’altro che affidabili.

L’unico vero modo di rimuovere un watermark (ed eventualmente di rimpiazzarlo con un altro) consiste nel sapere quale watermark cercare. Se il watermark è noto solo al produttore del file, il file protetto non può essere “lavato”.

Perchè invece il watermarking è attaccabile?

Quello che abbiamo appena detto, tuttavia, spiega anche per quale motivo i watermark sono attaccabili e possono essere rimossi.

Sono sicuro che state già pensando ad un possibile tradimento da parte di uno degli sviluppatori (un “leaking”). Forse state pensando anche ad un attacco diretto verso il dispositivo di lettura, come è successo con il CSS dei DVD.

Questi due tipi di attacco, ovviamente, funzionano. In alcuni casi, sono già stati messi in atto. Tuttavia, c’è un altro tipo di attacco, molto più semplice, che spesso non viene tenuto in conto. Si chiama “analisi comparativa”.

Per capire come funziona, dovete ricordare che il watermark viene inserito per distinguere la vostra copia del file da quella di chiunque altro. Il vostro film contiene il watermark A ed il film, identico, acquistato da vostro cugino contiene il watermark B. I due file non sono uguali.

Se piazzate i due file su un computer e fate la sottrazione bit a bit dei loro dati (XOR) ottenete un file di bit tutti uguali a 0 tranne i bit che sono diversi nei due file. Questi bit sono quelli associati ai due watermark nei due file. In altri termini, avete appena scoperto quali sono i bit da togliere.

A questo punto, ottenere un terzo file privo di watermark è banale: si copia uno dei due file originali su un nuovo file. I bit che sono uguali all’altra copia del film vengono copiati sul nuovo file (perchè sono parte del film originale). I bit che sono diversi (cioè quelli che appartengono ad uno dei due watermark) vengono sostituiti con qualcos’altro (ad esempio la media pesata dei bit al loro contorno), in modo da cancellare il watermark.

Conclusioni

La non rimovibilità dei watermark è un bel sogno, un sogno che dura soltanto finchè si parla di un unico file (magari distribuito in infinite copie) che contiene sempre lo stesso watermark. Non appena si hanno a disposizione due copie dello stesso file, marcate con due diversi watermark, rilevare i watermark e rimuoverli è una operazione banale.

Purtroppo per chi si affida a queste tecniche per proteggere le sue “proprietà intellettuali”, i watermark hanno senso solo se vengono usati per distinguere una copia dall’altra ed hanno quindi valori diversi in ogni copia. Diversamente, basterebbe copiare il file insieme al suo watermark e fregarsene. Di conseguenza, questa vulnerabilità non è aggirabile.

Come l’intera comunità hacker e l’intera comunità “pirata” continua a dire da tempo, affidarsi a degli strumenti tecnologici (DRM, watermark, Trusted Computing, etc.) o a delle leggi (DMCA, Legge Urbani, legge del taglione Sarkozy, etc.) per proteggere la “proprietà intellettuale” è una perdita di tempo.

Autori, editori, distributori ed altre figure coinvolte nella produzione di “prodotti intellettuali” farebbero meglio a dedicare le proprie energie allo studio di nuovi “business model”.

Alessandro Bottoni

Comments
3 Responses to “Attacco ai Digital Watermark”
  1. emilator ha detto:

    Grazie, con questo post e il precedente hai colmato una mia pesante lacuna sui DRM.
    Una domanda: davvero la differenza tra file A e file B si “limiterebbe” a qualcosa di eliminabile con uno XOR? Vuoi che questa tecnologia abbia limiti fisici così pesanti da non permettere di elaborare sistemi in grado di resistere a qualcosa come un “known-plaintext attack”?

  2. Nicola Amato ha detto:

    Davvero ben fatto questo articolo. Complimenti.

  3. alessandrobottoni ha detto:

    emilator Dice:
    “Una domanda: davvero la differenza tra file A e file B si “limiterebbe” a qualcosa di eliminabile con uno XOR? Vuoi che questa tecnologia abbia limiti fisici così pesanti da non permettere di elaborare sistemi in grado di resistere a qualcosa come un “known-plaintext attack”?”

    Just try… ;-)

Lascia un commento