Watermark (informatica)

Da Wikipedia, l'enciclopedia libera.
Un esempio di watermark su una immagine digitale

Il termine watermarking (derivato dalla lingua inglese), in informatica, si riferisce all'inclusione di informazioni all'interno di un file multimediale o di altro genere, che può essere successivamente rilevato o estratto per trarre informazioni sulla sua origine e provenienza.

Poiché il termine inglese significa originariamente filigranatura, la letteratura anglosassone utilizza in genere la forma estesa digital watermarking (letteralmente "filigranatura digitale").

Caratteristiche ed utilizzo[modifica | modifica wikitesto]

Tali indicazioni, lasciano il documento accessibile ma contrassegnato in modo permanente. Esse possono essere evidenti per l'utente del file (per esempio nel caso di una indicazione di copyright applicata in sovraimpressione su una immagine digitale) o latenti (nascoste all'interno del file); in quest'ultimo caso il watermarking può essere considerato una forma di steganografia.

La tecnica del watermarking digitale può essere utilizzata con diversi scopi: rendere manifesto a tutti gli utenti chi sia il proprietario del documento (nel caso in cui il marchio sia visibile); dimostrare l'originalità di un documento non contraffatto; evitare la distribuzione di copie non autorizzate; marcare caratteristiche specifiche del documento oppure segnare il percorso di vendita del documento, utilizzando un marchio differente per ogni acquirente.

Classificazione[modifica | modifica wikitesto]

I watermark possono essere classificati a seconda di alcune loro proprietà, che dipendono dallo scopo con cui sono stati inseriti all'interno del documento. I watermark possono essere privati o pubblici, ossia visibili a tutti gli utenti di un file. Si dicono privati quelli che possono essere estratti solo quando si conosca a priori il loro contenuto e si possegga il documento originale non marchiato, pubblici quelli rilevabili anche se non se ne conosce il contenuto, senza l'ausilio del documento originale. Nel caso di watermark pubblici è più semplice identificare e alterare (o rimuovere) il marchio, ma in molti contesti essi sono più utili, in quanto permettono a chiunque di individuare il proprietario del documento.

Un watermark può essere visibile o invisibile: ovvero nel primo caso viene utilizzato per codificare informazioni che devono essere rese pubbliche all'utente finale. Il watermark invisibile è invece proprio di quei contesti in cui il proprietario legittimo vuole garantirsi i diritti d'autore, nascondendo quindi il marchio nel documento. In pratica la copia marcata è quasi identica all'originale, a meno di alcune differenze non riscontrabili dalle percezioni umane.

I watermark possono essere caratterizzati dalla loro capacità di resistenza agli attacchi: un watermark fragile può essere facilmente attaccato, distrutto e reso irriconoscibile da quasi ogni tipo di manipolazione dei dati. Esso è concepito per quelle applicazioni in cui si desidera sapere se una certa informazione è stata modificata nel passaggio dal creatore all'utilizzatore, nel qual caso il watermark non deve essere rilevabile o, comunque, deve presentare alterazioni. Un watermark semifragile subisce la stessa sorte di quello fragile se i cambiamenti inflitti sono superiori a una certa soglia definita dall'utente. Infine un watermark robusto deve resistere alle più comuni operazioni e trasformazioni sui dati, in quanto è utilizzato quando la proprietà del documento deve essere provata o garantita. L'informazione che trasporta non deve perdersi e deve potersi recuperare, anche se il documento è stato modificato. Inoltre si tende a considerare un watermark robusto quando è in grado di resistere anche ad attacchi intenzionali volti alla sua rimozione.

I watermark sono ciechi se per verificarne la presenza non è necessario il documento originale, non ciechi in caso contrario. In generale i watermark non ciechi sono più robusti, ma non sempre è possibile avere a disposizione l'originale; inoltre solo il proprietario può dimostrare la presenza del marchio.

Proprietà[modifica | modifica wikitesto]

I watermark possono essere utilizzati per diversi scopi e, quindi, devono soddisfare ben determinate esigenze. Esistono però delle caratteristiche comuni a tutti i watermark:

  • il legittimo proprietario o un'autorità indipendente di controllo devono poter facilmente estrarre le informazioni del watermark;
  • il recupero del watermark deve provare in maniera non ambigua l'identità del proprietario;
  • deve essere possibile sovrapporre più watermark sul documento, senza che quelli precedenti siano distrutti;
  • il watermark deve essere inserito all'interno del segnale da proteggere per maggiore sicurezza e portabilità.

Per soddisfare tutte queste richieste i watermark devono essere:

  • Invisibili : inserire un segnale di watermark comporta necessariamente un seppur piccolo degrado dell'immagine; questo degrado deve essere il più lieve possibile in modo da non alterare la percezione del documento. Il grado d'alterazione deve essere deciso dal proprietario del documento, il quale può scegliere tra forti alterazioni, che danno una garanzia di robustezza a eventuali attacchi, e deboli alterazioni, che non degradano il prodotto.
  • Codificati a chiave: ogni segnale di watermark è associato a una particolare sequenza di bit detta chiave (key). La chiave serve sia per produrre il segnale di watermark che per riconoscerlo all'interno di un documento. La chiave è privata e caratterizza univocamente il legittimo proprietario del documento. Solo chi è in possesso della chiave (il proprietario o un ente autorizzato) è in grado di dimostrare la presenza del watermark nel prodotto digitale. Il numero di chiavi possibili deve essere enorme.
  • Efficienti statisticamente: un documento firmato con un segnale di watermark deve essere facilmente riconoscibile se si conosce la giusta chiave. La probabilità che la chiave (nella fase di riconoscimento) venga rifiutata, pur essendo corretta, deve essere sufficientemente bassa.
  • Invisibili statisticamente: possedere un gran numero di documenti digitali, tutti firmati con la stessa chiave, non deve rendere riconoscibile (e quindi eliminabile) la firma. Diversi prodotti firmati con la stessa chiave devono generare segnali di watermark differenti. Dobbiamo essere sicuri che il riconoscimento della chiave all'interno dell'immagine da parte di terzi sia impossibile.
  • Multipli: deve essere possibile inserire un elevato numero di segnali di watermark all'interno dello stesso documento; ognuno di questi segnali può essere riconosciuto mediante la corrispondente chiave.
  • Robusti: sui documenti digitali possono venir fatte numerose operazioni per migliorare la loro qualità o per comprimere la loro dimensione. I segnali di watermark devono essere tali da non venire eliminati da questo tipo di operazioni, né da operazioni mirate ad alterare o cancellare il marchio stesso.
  • Invertibili: il legittimo proprietario del documento deve poter rimuovere il watermark. In realtà questa proprietà non si può ottenere se devono essere garantite la robustezza e la resistenza alle aggressioni.

In alcuni casi per invertibilità si intende la possibilità di generare un falso watermark e un falso documento originale che sia uguale a quello vero. In questo modo dall'inserimento del falso watermark si ottiene un documento che è perfettamente uguale (invertibilità) o solo percettibilmente uguale (quasi invertibilità) a quello reale. È stato dimostrato che se il watermarking digitale vuole diventare una prova inconfutabile per l'applicazione del copyright, allora i marchi devono essere non invertibili o quasi non invertibili.

Watermark in immagini fisse[modifica | modifica wikitesto]

Un qualunque schema di watermarking è realizzato attraverso l'implementazione di due ben specifici algoritmi: uno di codifica del marchio, che prende in input immagine originale e ne restituisce in output la corrispondente immagine opportunamente marcata e il marchio vero e proprio; l'altro di decodifica che, presa in input l'immagine marchiata e l'immagine originale (se il watermark è non cieco), restituisce il marchio associato.

Come abbiamo già sottolineato l'aggiunta di un watermark all'immagine può essere vista come l'inserimento di una componente di rumore nell'immagine stessa.

Chiamiamo V l'immagine originale, W=\{w_1, w_2, \dots, w_n\} il watermark da inserire (che potrebbe dipendere da V) e V_w l'immagine marchiata.

V_w si può ottenere da V e W tramite un'opportuna funzione di codifica E:

E(V,W)\,=\,V_w

La funzione di decodifica D (nel caso di watermark cieco) vuole in ingresso un'immagine marchiata V_w e restituisce il watermark W':

D(V_w)\,=\,W'

Mentre se il watermark è non cieco lo schema va modificato nel modo seguente:

D(V,V_w)\,=\,W'

I watermark W e W' non sono necessariamente identici, in quanto l'immagine può essere stata modificata tra la fase di codifica e di decodifica. È quindi necessaria una funzione di comparazione C_\delta che permetta di stabilire se i due watermark corrispondono:

C_\delta(W, W') \,=\,c
  • se c > \delta , W e W' corrispondono,
  • altrimenti, W e W' non corrispondono

dove \delta è un valore di soglia opportunamente stabilito.

In generale per codificare un watermark si scelgono alcune particolari caratteristiche dell'immagine, dette F=\{f_1, f_2,\dots, f_n \}, a cui si applica un operatore di inserimento  \oplus :

 f'_i=f_i \oplus w_i \quad con \quad i=1, \dots, n

dove  F'=\{f'_1, f'_2, \dots, f'_n \} sono le caratteristiche dell'immagine con watermark.

Il watermark viene decodificato con un operatore di estrazione \ominus, inverso rispetto al precedente, tale che:

w'_i=f'_i \ominus f_i \quad con \quad i=1, \dots, n

dove W'=\{w'_1, w'_2, \dots, w'_n \} è il watermark estratto.

Nel caso delle tecniche sul dominio spaziale (per dominio spaziale si intende considerare i singoli pixel nella posizione in cui si trovano all'interno dell'immagine) le caratteristiche F sono i valori dei pixel dell'immagine; mentre nel caso delle tecniche sulle trasformate sono i valori dei coefficienti di una trasformata di dominio dell'immagine.

L'insieme F è scelto in modo che piccole modifiche su ogni caratteristica non peggiorino sensibilmente l'immagine (il watermark può essere inserito senza un visibile danneggiamento dell'immagine) e che ogni caratteristica non cambi significativamente a meno che l'immagine non sia stata modificata in modo percettibile (il watermark deve poter essere decodificato senza ambiguità).

Attacchi[modifica | modifica wikitesto]

Sotto il nome di attacchi sono comprese tutte le operazioni sulle immagini che possono indebolire o rimuovere del tutto un watermark precedentemente inserito, indipendentemente dal fatto che esse siano intenzionali o no, ma anche solo impedire il corretto funzionamento della fase di rilevazione.

La compressione lossy, considerando nella pratica lo standard JPEG, è una delle modifiche che più frequentemente vengono applicate a un'immagine prima di distribuirla in rete. La sola compressione non costituisce in genere un attacco pericoloso; tutti i metodi, infatti, vengono testati sulle immagini JPEG. Numerosi metodi di watermarking operano nel dominio della DCT (trasformata discreta del coseno) proprio per avere un'alta robustezza a questo tipo di compressione. In genere per rimuovere un marchio tramite la sola compressione si dovrebbe scendere a un livello di impoverimento inaccettabile.

Una vasta famiglia di modifiche è quella delle modifiche geometriche. Essa comprende modifiche globali, come la rotazione, il cropping (eliminazione di una parte di immagine), le modifiche di scala e modifiche locali, come l'eliminazione di linee o colonne. I metodi nel dominio spaziale sono quelli più fragili agli attacchi geometrici; in particolare le combinazioni di rotazione di piccoli angoli unita al cropping, la modifica non uniforme di scala e l'eliminazione di un certo numero di righe o colonne risulta essere sufficiente a rendere impossibile il rilevamento del marchio, senza introdurre un percettibile decadimento della qualità. Contro le modifiche geometriche globali si agisce replicando il watermark su tutta l'immagine.

Vi sono poi tutti i filtri e gli effetti apponibili tramite un buon numero di applicazioni grafiche. Un altro attacco è costituito dall'aggiunta di rumore pseudo-casuale, additivo o moltiplicativo.

Attacchi di tipo statistico richiedono di possedere due o più copie della stessa immagine marchiata con marchi differenti, quindi tentano di ottenere una copia non più protetta facendo la media delle copie oppure assemblando pezzi di ognuna. Infine, qualora l'algoritmo non preveda la possibilità di inserire più di un watermark, la sovrapposizione forzata di ulteriori marchi può impedire al decoder di rilevare correttamente la presenza del giusto marchio.

Una classificazione degli attacchi è possibile anche dal punto di vista del loro fine:

  • attacchi semplici comprendono tutti i filtri e le manipolazioni applicati tramite normali programmi di grafica, ma anche la compressione lossy o modifiche geometriche sulla globalità dell'immagine marchiata. Il carattere distintivo di questi attacchi è che non mirano a isolare e identificare il watermark, ma solo a danneggiarlo e dunque a impedirne la rilevazione;
  • attacchi di detection-disabling, di cui fanno parte le modifiche geometriche locali. Gli attacchi di questo tipo hanno la caratteristica distintiva di non cercare tanto una rimozione completa del marchio, ma di impedire che la procedura di detecting operi correttamente; il watermark infatti non viene rimosso e può essere ancora rilevato aumentando la complessità dell'algoritmo di rilevazione;
  • attacchi di tipo crittografico sono attacchi simili a quelli noti dalla crittografia e mirano alla ricerca esaustiva della chiave;
  • attacchi che puntano a generare ambiguità e ad annullare l'utilità del watermark. Per esempio è possibile aggiungere ulteriori watermark a un'immagine già marchiata, per far sì che non sia chiaro chi sia il legittimo possessore;
  • attacchi che puntano a un'effettiva rimozione del watermark dall'immagine. In generale si fa l'assunzione che il watermark sia del rumore aggiunto all'immagine e si cerca di rimuoverlo tramite filtri e modelli predittivi.

Un contraffattore, che voglia spacciare per propria una determinata immagine, può porre la propria firma su un'immagine già firmata.

In questo caso sembrerebbe che sia il legittimo proprietario, sia il contraffattore possano reclamare il diritto di proprietà. Il riconoscimento del watermark non è quindi sufficiente a stabilire chi abbia ragione. Per risolvere la contesa viene richiesta a entrambi l'immagine originale, ipotizzandola non firmata, e si verifica la firma di ognuno con l'originale dell'altro. La firma del vero possessore sarà presente sulla falsa originale, mentre la firma dell'impostore non sarà presente sulla vera originale e darà un risultato di firma falsa.

Le tecniche più utilizzate per invalidare la prova di proprietà sono: gli attacchi di tipo SWICO e gli attacchi di tipo TWICO.

Nell'attacco SWICO, l'impostore può cercare di ottenere una falsa originale estraendo il watermark dall'immagine firmata dal legittimo proprietario e lasciando circolare un'immagine watermarked con la firma di entrambi. In questo modo anche il contraffattore può reclamare il diritto di proprietà servendosi della falsa originale. Per resistere agli attacchi SWICO è sufficiente che il processo di watermarking sia non invertibile.

Nell'attacco TWICO, a differenza dell'attacco SWICO, oltre a una falsa originale, saranno prodotte dal contraffattore due immagini watermarked entrambe con una sola firma (quella originale e quella falsa). Per resistere agli attacchi TWICO il watermark deve essere quasi non invertibile.

Tecniche di inserimento[modifica | modifica wikitesto]

Un watermark può essere inserito all'interno di un'immagine con tre tecniche di cui ora vedremo le principali caratteristiche.

Dominio spaziale[modifica | modifica wikitesto]

tali tecniche modificano direttamente i valori dei pixel dell'immagine, in base al codice che deve essere incluso. Ci sono diverse possibilità per attuare questa modifica:

  • Si aggiungono o sottraggono ai valori dei pixel dei numeri pseudocasuali, che dipendono da una chiave generatrice. Per poter rilevare il watermark si deve possedere la chiave, garantendo così che solo gli utenti autorizzati possano estrarlo. Il metodo non è in grado di resistere ad attacchi di tipo collusivo.
  • Si modificano solo i valori di alcuni pixel scelti pseudocasualmente, a cui si somma o si sottrae un valore in base alla loro posizione. Il metodo non è particolarmente robusto, specialmente nei confronti dei tentativi di contraffazione.
  • L'immagine viene suddivisa in blocchi, solitamente di forma quadrata; alcuni di essi sono scelti in modo pseudocasuale e la modifica avviene aggiungendo o sottraendo un determinato numero ai valori di alcuni pixel contenuti nei blocchi selezionati. Il metodo non sopporta la rotazione e il cropping.
  • Si lascia cadere il bit meno significativo di pixel opportunamente scelti. Il metodo ha grossi problemi nel caso in cui l'immagine venga traslata o ridimensionata.
  • Se l'immagine è a colori, si inserisce il watermark in una certa banda del colore, in modo che non sia visibile normalmente, ma che renda il documento inutilizzabile se lo si vuole stampare. Il metodo ha gli stessi difetti di quello precedente.

Trasformate[modifica | modifica wikitesto]

Utilizzano la trasformata discreta del coseno, la trasformata wavelet o la trasformata di Fourier e il watermark viene incorporato nei coefficienti della trasformazione.

Tali tecniche operano seguendo questo schema: l'immagine viene convertita in una matrice in cui sono riportati i valori numerici (luminosità) dei singoli pixel; a questa matrice è applicata una delle trasformazioni invertibili sopra citate. Alcuni dei coefficienti della trasformata vengono modificati, ottenendo l'inserimento del watermark. Infine, applicando la trasformata inversa, si ricompone una matrice, e quindi un'immagine, simile a quella di partenza, a cui, però è stato applicato il marchio. Si possono infine applicare delle tecniche ibride, ovvero tecniche che pur sfruttando le trasformate matematiche non mancano di adattabilità spaziali. Queste tecniche sono molto efficaci nell'adattare il livello di inserimento del watermark al contenuto locale dell'immagine. D'altra parte questa proprietà provoca una sensibilità alla traslazione delle immagini e allo scaling.

Il metodo NEC[modifica | modifica wikitesto]

Il metodo NEC è stato sviluppato da Cox, Kilian, Leighton e Shamoon e sembra essere quello che al momento offre maggiori garanzie dal punto di vista strettamente legato alla robustezza. In particolare gli autori affermano che per garantire la robustezza di un qualunque schema di watermarking si deve necessariamente agire sulle componenti percettivamente più significative. Tale approccio sembra contraddire la fondamentale necessità di trattare solo ed esclusivamente marchi impercettibili. In realtà si tratta solamente di trovare il giusto bilanciamento tra le due esigenze sfruttando, in questo specifico caso, alcune proprietà dello spettro del segnale digitale in questione. Tale tecnica è robusta e sicura rispetto alle più comuni operazioni di elaborazione dei segnali, alle distorsioni geometriche e anche rispetto ad alcuni più sofisticati attacchi intenzionali.

Il metodo NEC fa parte di quelle che vengono chiamate tecniche basate sulle trasformate, infatti richiede l'uso della trasformata discreta del coseno e della sua inversa. Esso si articola in tre parti, che vengono trattate nei prossimi paragrafi.

Inserimento[modifica | modifica wikitesto]

Il watermark è una sequenza di N numeri pseudocasuali con distribuzione N(0,1), cioè una distribuzione normale con media zero e varianza uno.

Per inserire correttamente il watermark, si calcola la trasformata discreta del coseno dell'immagine da marchiare e si considerano gli N coefficienti più alti in valore assoluto (che corrispondono alle basse frequenze), escludendo il primo per non alterare eccessivamente e, quindi, visibilmente la qualità l'immagine. Infine si applica uno dei metodi seguenti:

  • f'_i\,=\,f_i \;(1+\alpha w_i)
  • f'_i\,=\,f_i +\alpha w_i
  • f'_i\,=\,f_i\; e^{\alpha w_i}

dove F=\{f_1, f_2, \dots, f_N\} sono le frequenze dell'immagine originale su cui deve essere inserito il watermark W=\{w_1, w_2,\dots, w_N \}; F'=\{f'_1, f'_2, \dots, f'_N\} sono le nuove frequenze ottenute a seguito dell'inserimento del marchio e \alpha è un parametro che deve rendere conto sia della robustezza che della visibilità del watermark.

Il primo e il secondo metodo sono invertibili solo se f_i \neq 0, mentre il secondo lo è sempre, ma non è appropriato se le f_i variano molto.

In generale sarebbe possibile dare un valore ad \alpha specifico per ogni frequenza per migliorare la resistenza agli attacchi, modificando così i vari metodi:

f'_i=f_i \;(1+\alpha_i w_i) \quad\quad f'_i=f_i +\alpha_i w_i
\quad\quad f'_i=f_i\; e^{\alpha_i w_i},

ma i test sperimentali hanno mostrato che un valore di \alpha pari a 0.1 si adatta bene alle diverse immagini e frequenze.

La scelta della lunghezza N del watermark sottostà alla seguente regola: maggiore è tale valore e maggiore è la robustezza del marchio, ma di conseguenza, maggiore è anche la visibilità.

I test sperimentali hanno garantito che per un valore di \alpha pari a 0.1, un buon valore per N può essere 1000.

La funzione di estrazione[modifica | modifica wikitesto]

Per estrarre il watermark si devono prima applicare la trasformata discreta del coseno all'immagine originale (ovvero quella priva del marchio) e all'immagine da testare; in seguito si estraggono le N frequenze maggiori in valore assoluto a esclusione della prima; infine si estrae il watermark applicando una delle seguenti formule inverse:

  • w'_i=\frac{f'_i-f_i}{(\alpha \; f_i)}
  • w'_i=\frac{f'_i-f_i}{\alpha}
  • w'_i=\frac{\ln f'_i-\ln f_i}{\alpha}

a seconda del metodo con cui è stato inserito il watermark.

In questo modo si ottiene un watermark che dovrà essere confrontato con quello originale, per accertarne la somiglianza.

La funzione di comparazione[modifica | modifica wikitesto]

Il watermark originariamente inserito in un'immagine non sarà mai esattamente uguale a quello estratto, a causa delle approssimazioni nel calcolo della trasformata del coseno diretta e inversa e dei possibili attacchi a cui l'immagine è sottoposta.

Quindi dobbiamo introdurre una funzione che ci permetta di calcolare quanto sono simili due watermark, per poter valutare con quale probabilità le due immagini possiedono lo stesso marchio, seppur alterato.

Questa funzione è la seguente:

\rho(W,W')=\frac{W*W'}{\sqrt{W'*W'}}

La funzione \rho(W,W') restituisce un valore che corrisponde all'indice di somiglianza dei due watermark. Si può dimostrare che se \rho(W,W')>4 allora i due watermark non sono indipendenti, ovvero l'immagine da cui è stato estratto W' è stata quasi sicuramente marchiata con W.

Voci correlate[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]