SlideShare a Scribd company logo
1 of 65
Download to read offline
Schema di Watermarking Robusto per
un Bitstream JPEG Cifrato
GRUPPO 2
Università degli Studi di Salerno
Dipartimento di Informatica
Corso di laurea Magistrale in Informatica
Relazione per il progetto del corso di Compressione Dati
IL TEAM
SILVIA
CASTELLI
FRANCESCO
MARIA D’AURIA
GIANMARCO
BEATO
ANGELA
VECCHIONE
SILVIO
CORSO
CARMINE
TRAMONTANO
IL DOCENTE: PROF. BRUNO CARPENTIERI
TAVOLA DEI CONTENUTI
INTRODUZIONE
1
PROGETTAZIONE
ED
IMPLEMENTAZIONE
2
● Organizzazione del progetto
● Approccio iniziale
● Algoritmi di permutazione/
depermutazione
● Algoritmi di cifratura/
decifratura
● Algoritmo di watermarking
ESPERIMENTI
ED
ANALISI DEI
RISULTATI
3 4
CONCLUSIONI
E
SVILUPPI
FUTURI
● Testing
INTRODUZIONE
1
INTRODUZIONE
JPEG (acronimo di Joint Photographic Expert Group) è uno degli
standard più utilizzati e conosciuti
per la compressione di immagini molto popolare su internet.
Per garantire simultaneamente la protezione del contenuto dell’immagine
e del copyright, viene fornito uno schema di watermarking robusto per un
bitstream JPEG crittografato mediante lo shuffling dei pixel.
PANORAMICA GENERALE DEL
PROCESSO IMPLEMENTATO
BLOCCHI MCU
PROGETTAZIONE
ED
IMPLEMENTAZIONE
2
PROGETTAZIONE
ED IMPLEMENTAZIONE
ORGANIZZAZIONE
DEL PROGETTO
ORGANIZZAZIONE DEL PROGETTO
PROGETTAZIONE
ED IMPLEMENTAZIONE
APPROCCIO INIZIALE
APPROCCIO INIZIALE
● Scelta della libreria per l’implementazione
dell’algoritmo JPEG
https://github.com/ghallak/jpeg-python
APPROCCIO INIZIALE
● Attenta analisi del processo di cifratura del bitstream
● Primo tentativo cifrare/decifrare bitstream in seguito
alle fasi di compressione/decompressione
● Limitazioni di python nel cifrare bitstream
● Utilizzo di java per la creazione di un tool esterno
APPROCCIO INIZIALE
● Tool creato mediante l’utilizzo della libreria bouncy castle
● Semplice interfaccia grafica
● Approccio che presentava
diverse problematiche:
○ Impossibilità nel
cifrare/elaborare
determinati elementi (AC)
○ Introduzione di carico
computazionale eccessivo
PROGETTAZIONE
ED IMPLEMENTAZIONE
ALGORITMI DI
PERMUTAZIONE/
DEPERMUTAZIONE
ALGORITMO DI PERMUTAZIONE
● Per motivi di implementazione e di gestione delle
operazioni successive di shuffling, cifratura e
watermarking, è stata effettuata una trasformazione
di tipo raster dei blocchi MCU (16 × 16 pixel) da
permutare.
● L’immagine viene rappresentata mediante un array
tridimensionale.
ALGORITMO DI PERMUTAZIONE
● L’immagine (rappresentata mediante un array tridimensionale di pixel) è
stata per prima cosa suddivisa in blocchi di dimensione 16 × 16 pixel,
● Sono stati presi tutti questi blocchi “quadrati” (chiamati blocchi MCU,
aventi, quindi, 16 × 16 = 256 pixel) e ciascuno di essi è stato trasformato in
un blocco “rettangolare” di dimensione 1 × 256 pixel ed inserito in un array
apposito. In questo modo la tabella risultante avrà un numero di righe pari
al numero di blocchi MCU dell’immagine ed un numero di colonne pari a
256.
● Sono stati presi gli indici (numeri) delle righe, le quali corrispondono ad un
singolo blocco MCU 1 × 256 pixel ed inseriti in un array.
● I numeri all’interno dell’array sono permutati secondo una funzione
random.sample() con seed: il seed è generato a partire da un valore chiave
(key) e può essere rigenerato a partire dallo stesso valore chiave in altre
istanze.
● Infine, sono stati ricostruiti i blocchi “quadrati” di dimensione 16 × 16 pixel a
partire dai blocchi “rettangolari” 1 × 256 pixel e cioè dalle righe dalla tabella
creata in precedenza, secondo l’ordine definito dall’array di indici/numeri
permutati. E’ stata così ottenuta l’immagine visibile con i blocchi permutati.
ALGORITMO DI PERMUTAZIONE
ALGORITMO DI DEPERMUTAZIONE
● L’immagine permutata viene suddivisa in blocchi MCU di dimensione 16 ×
16 pixel.
● Gli n blocchi MCU “quadrati” vengono trasformati ciascuno in blocchi
“rettangolari” di dimensione 1 × 256 pixel ed inseriti in una apposita tabella,
che avrà una dimensione n × 256.
● Viene ricreato l’array dei numeri degli indici dei blocchi permutati,
riottenendo lo stesso array avuto in fase di permutazione, allo stesso
identico modo tramite la funzione random.sample() con seed.
● Infine, sono stati ricostruiti i blocchi “quadrati” di dimensione 16 × 16 pixel a
partire dai blocchi “rettangolari” 1 × 256 pixel e cioè dalle righe dall’array
creato in precedenza, andando, però, a prelevarli man mano secondo
l’ordine crescente degli indici/numeri all’interno dell’array. E’ stata così
ottenuta l’immagine originale avente i blocchi rimessi nel loro ordine
originale.
ALGORITMO DI DEPERMUTAZIONE
PROGETTAZIONE
ED IMPLEMENTAZIONE
ALGORITMI DI
CIFRATURA/
DECIFRATURA
LIBRERIE PER LA CIFRATURA
Utilizzo della libreria imageshuffle
Utilizza un algoritmo di cifratura basato sulla
permutazione dei pixel
https://github.com/mastnk/imageshuffle
ALGORITMO DI CIFRATURA
Prende in input un immagine RGB ad 8 bit per
canale R,G,B e la divide in blocchi 8 × 8
Le componenti R,G,B sono divise in due
sotto-componenti ciascuna:
in base ai 4 bit superiori e 4 bit inferiori
ALGORITMO DI CIFRATURA
In questo modo otteniamo 6 canali da 4 bit:
● R 4-bit-superiori (RS)
● R 4-bit-inferiori (RI)
● G 4-bit-superiori (GS)
● G 4-bit-inferiori (GI)
● B 4-bit-superiori (BS)
● B 4-bit-inferiori (BI)
ALGORITMO DI CIFRATURA
Vengono invertite le intensità di pixel, in posizioni
casuali di ogni blocco 8 × 8
(RS, RI, GS, GI, BS, BI)
Infine vi è una permutazione casuale di tutti i pixel
dell’immagine
Questi 2 passi dipendono dalla chiave simmetrica
ALGORITMO DI CIFRATURA
La decifratura è lo stesso processo effettuato a
ritroso:
● Viene presa l’immagine cifrata
● I pixel vengono permutati nelle posizioni originali
● Le intensità dei pixel vengono ripristinate
● Si ottiene in output l’immagine decifrata
ALGORITMO DI CIFRATURA
Il processo di cifratura implementa l’algoritmo di
imageshuffle e diversi passi utili per facilitare le
operazioni inerenti al processo di watermarking
Vogliamo utilizzare i DC dell’immagine per le
operazioni di watermarking!
ALGORITMO DI CIFRATURA
Il processo di cifratura prende in input 2 elementi:
● L’immagine da cifrare
● La chiave di cifratura per imageshuffle
ALGORITMO DI CIFRATURA
Per ottenere tutti i DC sulla prima colonna,
l’immagine in input viene divisa in blocchi 8 × 8 ed
ogni blocco viene trasformato in una riga 1 × 64
ALGORITMO DI CIFRATURA
Si crea un’immagine cifrata, utilizzando l’algoritmo
di cifratura di imageshuffle
ALGORITMO DI CIFRATURA
Viene scambiata la prima colonna dell’immagine in
chiaro (a righe 1 × 64) con quella dell’immagine
cifrata (a righe 1 × 64):
In questo modo manteniamo i DC in chiaro
sull’immagine cifrata per applicare il watermark!
ALGORITMO DI CIFRATURA
ALGORITMO DI CIFRATURA
Infine, l’immagine (a righe) cifrata e con i DC non
cifrati viene ricostruita in blocchi 8 × 8 e la funzione
ritorna 2 elementi:
● L’immagine cifrata (con i DC non cifrati)
● La colonna dei DC cifrati: ci servirà per
decifrare correttamente l’immagine!
ALGORITMO DI CIFRATURA
ALGORITMO DI CIFRATURA
ALGORITMO DI DECIFRATURA
Il processo di decifratura prende in input 3 elementi:
● L’immagine da decifrare
● La chiave di cifratura per imageshuffle
● La colonna dei DC cifrati, data in output dal
processo di cifratura
ALGORITMO DI DECIFRATURA
L’immagine cifrata viene convertita da blocchi 8 × 8
in righe 1 × 64
Una volta avvenuta la conversione, viene sostituita
la prima colonna dei DC in chiaro con quella dei
DC cifrati:
così si riottiene l’immagine a righe 1 × 64 cifrata!
ALGORITMO DI DECIFRATURA
Una volta ottenuta l’immagine a righe cifrata
originale, si esegue l’algoritmo di imageshuffle
sull’immagine ed otteniamo l’immagine non cifrata
ALGORITMO DI DECIFRATURA
Infine, l’immagine viene riordinata dalle righe 1 × 64
in blocchi 8 × 8, ottenendo l’immagine in chiaro e
permutata
PROGETTAZIONE
ED IMPLEMENTAZIONE
ALGORITMO DI
WATERMARKING
ALGORITMO DI WATERMARKING
L’immagine viene convertita da RGB nelle componenti
YCrCb, quindi avremo:
● 1 componente di luminanza
● 2 componenti di crominanza
ALGORITMO DI WATERMARKING
● L’algoritmo di compressione JPEG divide l’immagine
in tanti blocchi DCT 8 × 8:
○ 1 coefficiente DC con coordinate (0,0)
○ 63 coefficienti AC.
● Il nostro algoritmo è interessato solamente alle
componenti DC. Quindi nella funzione di
compressione vengono prese tali componenti per
ogni blocco 8 × 8 e vengono salvate per poi passarle
alla funzione di watermark.
ALGORITMO DI WATERMARKING
● Nella funzione di watermark vengono eseguite tali
operazioni:
1. Vengono raggruppati tutti i coefficienti Dc quantizzati secondo
la loro divisione MCU. Ogni blocco MCU contiene 4 coefficienti
DC quantizzati dei blocchi DCT adiacenti (indicati con indici i =
0,1,2,3).
2. Viene calcolato il max e il min dei 4 valori DC e il valore medio.
ALGORITMO DI WATERMARKING
3. Vengono scelti due interi T1 < T2 per calcolare la grandezza della
modifica come:
4. Viene incorporato un bit di informazione di watermarking w
modificando il coefficiente DC quantizzato.
Quando w = 1 viene modificato il DC0
come segue:
Quando w = 0 viene modificato il
DC0 come segue:
Se la differenza in valore assoluto tra DC0 e il nuovo DC’0 è più grande di 3 il
coefficiente DC non deve essere modificato, altrimenti DC0 va rimpiazzato con
DC’0
ESTRAZIONE DELWATERMARKING
● Nel decompressore si vuole estrarre i bit di watermark inseriti su un
bitstream JPEG cifrato, in quanto su quello non cifrato non siamo in
grado di farlo visto che nel compressore questi bit vengono aggiunti
in una fase di permutazione.
● Il bit estratto può essere ottenuto come:
ALGORITMO DI VERIFICA DEL
WATERMARKING
● Questo algoritmo è utile se si vuole verificare se la nostra foto con
watermark ha subito degli attacchi.
● Esso prende in input una foto
● Salva i DC per poi estrarre il watermark.
● Si potrà verificare se i bit di watermark estratti coincidono con la
foto originale, se la risposta è affermativa significa che la foto non è
stata attaccata, in caso di risposta negativa si potrà verificare quanti
bit di watermark sono stati modificati.
ESPERIMENTI
ED ANALISI
DEI RISULTATI
3
ESPERIMENTI ED ANALISI
DEI RISULTATI
Strumenti utilizzati
ESPERIMENTI ED ANALISI
DEI RISULTATI
Struttura script
starter_encoder.py starter_decoder.py
ESPERIMENTI ED ANALISI
DEI RISULTATI
Edit configurations:
L’immagine fornita in input multipla di 8 o 16.
starter_encoder.py
starter_decoder.py
watermark_array.txt
ESPERIMENTI ED ANALISI
DEI RISULTATI
Sperimentazione - Encoder:
Immagine Input Immagine Permutata Immagine cifrata
Image_input.png Image_permutation.png Image_AC_encrypt.png
ESPERIMENTI ED ANALISI
DEI RISULTATI
Sperimentazione - Encoder:
Immagine compressa con watermark
Image_compressed.png
L’ output della compressione in formato testuale necessita una
conversione in file binario per ottenere la reale size della compressione:
Image_compressed.txt
ESPERIMENTI ED ANALISI
DEI RISULTATI
Sperimentazione - Encoder:
La taglia dei file
Image_compressed.png Image_compressed.txt
Image_input.png
463 KB
Image_compressed.bin
575 KB
4599 KB
ESPERIMENTI ED ANALISI
DEI RISULTATI
Sperimentazione - Decoder:
Immagine compressa
con watermark
Immagine decompressa
e cifrata
Immagine decompressa
e decifrata
Image_compressed.png Image_decompressed.png Image_decrypted.png
ESPERIMENTI ED ANALISI
DEI RISULTATI
Sperimentazione - Decoder:
Immagine decompressa, decifrata e depermutata
Watermark estratto.
Image_output.png
ESPERIMENTI
ED ANALISI
DEI RISULTATI
TESTING
TESTING
● 10-bit
● 22-bit
● 70-bit
Dataset foto:
http://sipi.usc.edu/database/database.php?volume=misc&image=39#top
TESTING
Sono stati effettuati 7 differenti test:
TESTING
CONCLUSIONI
E
SVILUPPI FUTURI
4
CONCLUSIONI E SVILUPPI FUTURI
● Il progetto ha raggiunti gli obiettivi prefissati.
● Tool modulare e con ampia gestione dei parametri.
● Taglia delle immagini che influisce su diversi aspetti.
CONCLUSIONI E SVILUPPI FUTURI
● Diversi sviluppi futuri:
○ Gestione della size delle immagini mediante
meccanismo di padding.
○ Output compressore mediante file binari
piuttosto che testuali.
○ Maggior numero di test.
○ Test della robustezza in seguito ad attacchi tipici.
● [1] https://ieeexplore.ieee.org/document/8887302
● [2] http://www.jjsapido.com/iafd/download/jpeg.pdf
● [3] https://www.jetbrains.com/pycharm/
● [4] https://github.com/ghallak/jpeg-python
● [5] https://github.com/s-corso-98/EncDecBit
● [6] https://www.bouncycastle.org/
● [7] https://github.com/mastnk/imageshuffle
● [8] http://sipi.usc.edu/database/database.php?volume=misc&image=39#top
SITOGRAFIA
Link GitHub del nostro progetto:
https://github.com/carminet94/Robust_Watermarking_JPEG
Grazie per l’attenzione!

More Related Content

What's hot

Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Ce.Se.N.A. Security
 
Rilevamento di facce in flussi video per l'ausilio ai non vedenti - Tesi
Rilevamento di facce in flussi video per l'ausilio ai non vedenti - TesiRilevamento di facce in flussi video per l'ausilio ai non vedenti - Tesi
Rilevamento di facce in flussi video per l'ausilio ai non vedenti - Tesitemp temp
 
Sistemi e Reti Multimediali - studio della codifica 3D
Sistemi e Reti Multimediali - studio della codifica 3DSistemi e Reti Multimediali - studio della codifica 3D
Sistemi e Reti Multimediali - studio della codifica 3DMarco Suma
 

What's hot (6)

Lci micc seminario autenticazione immagini biomediche
Lci micc seminario autenticazione immagini biomedicheLci micc seminario autenticazione immagini biomediche
Lci micc seminario autenticazione immagini biomediche
 
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
Rilevamento di attacchi di rete tramite protocolli di monitoraggio per router...
 
TesiEtta
TesiEttaTesiEtta
TesiEtta
 
Rilevamento di facce in flussi video per l'ausilio ai non vedenti - Tesi
Rilevamento di facce in flussi video per l'ausilio ai non vedenti - TesiRilevamento di facce in flussi video per l'ausilio ai non vedenti - Tesi
Rilevamento di facce in flussi video per l'ausilio ai non vedenti - Tesi
 
Sistemi e Reti Multimediali - studio della codifica 3D
Sistemi e Reti Multimediali - studio della codifica 3DSistemi e Reti Multimediali - studio della codifica 3D
Sistemi e Reti Multimediali - studio della codifica 3D
 
Tesi Todone
Tesi TodoneTesi Todone
Tesi Todone
 

Similar to Schema di watermarking robusto per un bitstream jpeg cifrato

Progettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadioProgettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadioNelson Firmani
 
Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiFlavio Falcinelli
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19Ionela
 
Relazione_CPD2_DavideSito
Relazione_CPD2_DavideSitoRelazione_CPD2_DavideSito
Relazione_CPD2_DavideSitoDavide Sito
 
Arkanoid on Altera DE-1
Arkanoid on Altera DE-1Arkanoid on Altera DE-1
Arkanoid on Altera DE-1Matteo Gazzin
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v acIrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v acDavide Mercanti
 
Design of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkDesign of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkAntonella Zito
 
Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...
Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...
Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...MatteoMeneghetti3
 
Thesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide ItThesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide ItMarco Santambrogio
 
Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...
Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...
Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...KevinMarzio
 
Relazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: PercolazioneRelazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: PercolazioneRiccardo Melioli
 
Presentazione understand
Presentazione understandPresentazione understand
Presentazione understandLuigi La Torre
 

Similar to Schema di watermarking robusto per un bitstream jpeg cifrato (20)

Reti Logic
Reti LogicReti Logic
Reti Logic
 
Hog processing
Hog processingHog processing
Hog processing
 
Progettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadioProgettazione di un convertitore analogico digitale in architettura multistadio
Progettazione di un convertitore analogico digitale in architettura multistadio
 
Radioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopiRadioastronomia amatoriale e radiotelescopi
Radioastronomia amatoriale e radiotelescopi
 
Presentazione Tesi
Presentazione TesiPresentazione Tesi
Presentazione Tesi
 
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19Dsp  cosa sono i digital signal processor  - seconda parte - 2010-10-19
Dsp cosa sono i digital signal processor - seconda parte - 2010-10-19
 
Relazione_CPD2_DavideSito
Relazione_CPD2_DavideSitoRelazione_CPD2_DavideSito
Relazione_CPD2_DavideSito
 
Arkanoid on Altera DE-1
Arkanoid on Altera DE-1Arkanoid on Altera DE-1
Arkanoid on Altera DE-1
 
Videosorveglianza
VideosorveglianzaVideosorveglianza
Videosorveglianza
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v acIrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
IrrigaPIC Centralina per irrigazione 8 zone per valvole 24v ac
 
Design of programmable medical devices_Teamwork
Design of programmable medical devices_TeamworkDesign of programmable medical devices_Teamwork
Design of programmable medical devices_Teamwork
 
Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...
Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...
Elaborazione della risposta idrologica del torrente Astico | Modello geomorfo...
 
Car accident detector
Car accident detectorCar accident detector
Car accident detector
 
Lezioni 2009
Lezioni 2009Lezioni 2009
Lezioni 2009
 
Thesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide ItThesis Ardemagni Sangalli Slide It
Thesis Ardemagni Sangalli Slide It
 
Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...
Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...
Graph partitioning: implementazione dell'algoritmo spettrale e confronto con ...
 
Studio ed Implementazione di Schemi di Crittografia Visuale mediante Java Cry...
Studio ed Implementazione di Schemi di Crittografia Visuale mediante Java Cry...Studio ed Implementazione di Schemi di Crittografia Visuale mediante Java Cry...
Studio ed Implementazione di Schemi di Crittografia Visuale mediante Java Cry...
 
Relazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: PercolazioneRelazione Modellazione e Simulazioni Numeriche: Percolazione
Relazione Modellazione e Simulazioni Numeriche: Percolazione
 
Presentazione understand
Presentazione understandPresentazione understand
Presentazione understand
 

More from Gianmarco Beato

Acquisizione forense in ambito Web - Gianmarco Beato.pdf
Acquisizione forense in ambito Web - Gianmarco Beato.pdfAcquisizione forense in ambito Web - Gianmarco Beato.pdf
Acquisizione forense in ambito Web - Gianmarco Beato.pdfGianmarco Beato
 
Documento per la valutazione del progetto del team 2.pdf
Documento per la valutazione del progetto del team 2.pdfDocumento per la valutazione del progetto del team 2.pdf
Documento per la valutazione del progetto del team 2.pdfGianmarco Beato
 
Documento sul design - SmartPark
Documento sul design - SmartParkDocumento sul design - SmartPark
Documento sul design - SmartParkGianmarco Beato
 
Documento per l'analisi dei requisiti - SmartPark
Documento per l'analisi dei requisiti - SmartParkDocumento per l'analisi dei requisiti - SmartPark
Documento per l'analisi dei requisiti - SmartParkGianmarco Beato
 
Presentazione del progetto SmartPark
Presentazione del progetto SmartPark Presentazione del progetto SmartPark
Presentazione del progetto SmartPark Gianmarco Beato
 
Sfida CTF: Protostar Format Zero
Sfida CTF: Protostar Format Zero  Sfida CTF: Protostar Format Zero
Sfida CTF: Protostar Format Zero Gianmarco Beato
 
GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...
GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...
GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...Gianmarco Beato
 
La mia tesi di laurea triennale - Beato Gianmarco
La mia tesi di laurea triennale  - Beato GianmarcoLa mia tesi di laurea triennale  - Beato Gianmarco
La mia tesi di laurea triennale - Beato GianmarcoGianmarco Beato
 
La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4Gianmarco Beato
 
La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4 La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4 Gianmarco Beato
 
Dispensa del corso di Cybersecurity
Dispensa del corso di CybersecurityDispensa del corso di Cybersecurity
Dispensa del corso di CybersecurityGianmarco Beato
 
Considerazioni di sicurezza per le reti IEEE 802.15.4
Considerazioni di sicurezza per le reti IEEE 802.15.4 Considerazioni di sicurezza per le reti IEEE 802.15.4
Considerazioni di sicurezza per le reti IEEE 802.15.4 Gianmarco Beato
 
Web Application Coronavirus Regione Campania
Web Application Coronavirus Regione CampaniaWeb Application Coronavirus Regione Campania
Web Application Coronavirus Regione CampaniaGianmarco Beato
 
Presentazione Tesi di Laurea Triennale
Presentazione Tesi di Laurea Triennale Presentazione Tesi di Laurea Triennale
Presentazione Tesi di Laurea Triennale Gianmarco Beato
 

More from Gianmarco Beato (15)

Acquisizione forense in ambito Web - Gianmarco Beato.pdf
Acquisizione forense in ambito Web - Gianmarco Beato.pdfAcquisizione forense in ambito Web - Gianmarco Beato.pdf
Acquisizione forense in ambito Web - Gianmarco Beato.pdf
 
Documento per la valutazione del progetto del team 2.pdf
Documento per la valutazione del progetto del team 2.pdfDocumento per la valutazione del progetto del team 2.pdf
Documento per la valutazione del progetto del team 2.pdf
 
Documento sul design - SmartPark
Documento sul design - SmartParkDocumento sul design - SmartPark
Documento sul design - SmartPark
 
Documento per l'analisi dei requisiti - SmartPark
Documento per l'analisi dei requisiti - SmartParkDocumento per l'analisi dei requisiti - SmartPark
Documento per l'analisi dei requisiti - SmartPark
 
Presentazione del progetto SmartPark
Presentazione del progetto SmartPark Presentazione del progetto SmartPark
Presentazione del progetto SmartPark
 
Sfida CTF: Protostar Format Zero
Sfida CTF: Protostar Format Zero  Sfida CTF: Protostar Format Zero
Sfida CTF: Protostar Format Zero
 
Pacman 2D con ML-Agents
Pacman 2D con ML-AgentsPacman 2D con ML-Agents
Pacman 2D con ML-Agents
 
GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...
GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...
GenerativeMap: visualizzazione ed esplorazione di una density map dinamica tr...
 
La mia tesi di laurea triennale - Beato Gianmarco
La mia tesi di laurea triennale  - Beato GianmarcoLa mia tesi di laurea triennale  - Beato Gianmarco
La mia tesi di laurea triennale - Beato Gianmarco
 
La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4
 
La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4 La sicurezza nelle reti IEEE 802.15.4
La sicurezza nelle reti IEEE 802.15.4
 
Dispensa del corso di Cybersecurity
Dispensa del corso di CybersecurityDispensa del corso di Cybersecurity
Dispensa del corso di Cybersecurity
 
Considerazioni di sicurezza per le reti IEEE 802.15.4
Considerazioni di sicurezza per le reti IEEE 802.15.4 Considerazioni di sicurezza per le reti IEEE 802.15.4
Considerazioni di sicurezza per le reti IEEE 802.15.4
 
Web Application Coronavirus Regione Campania
Web Application Coronavirus Regione CampaniaWeb Application Coronavirus Regione Campania
Web Application Coronavirus Regione Campania
 
Presentazione Tesi di Laurea Triennale
Presentazione Tesi di Laurea Triennale Presentazione Tesi di Laurea Triennale
Presentazione Tesi di Laurea Triennale
 

Schema di watermarking robusto per un bitstream jpeg cifrato

  • 1. Schema di Watermarking Robusto per un Bitstream JPEG Cifrato GRUPPO 2 Università degli Studi di Salerno Dipartimento di Informatica Corso di laurea Magistrale in Informatica Relazione per il progetto del corso di Compressione Dati
  • 3. TAVOLA DEI CONTENUTI INTRODUZIONE 1 PROGETTAZIONE ED IMPLEMENTAZIONE 2 ● Organizzazione del progetto ● Approccio iniziale ● Algoritmi di permutazione/ depermutazione ● Algoritmi di cifratura/ decifratura ● Algoritmo di watermarking ESPERIMENTI ED ANALISI DEI RISULTATI 3 4 CONCLUSIONI E SVILUPPI FUTURI ● Testing
  • 5. INTRODUZIONE JPEG (acronimo di Joint Photographic Expert Group) è uno degli standard più utilizzati e conosciuti per la compressione di immagini molto popolare su internet. Per garantire simultaneamente la protezione del contenuto dell’immagine e del copyright, viene fornito uno schema di watermarking robusto per un bitstream JPEG crittografato mediante lo shuffling dei pixel.
  • 12. APPROCCIO INIZIALE ● Scelta della libreria per l’implementazione dell’algoritmo JPEG https://github.com/ghallak/jpeg-python
  • 13. APPROCCIO INIZIALE ● Attenta analisi del processo di cifratura del bitstream ● Primo tentativo cifrare/decifrare bitstream in seguito alle fasi di compressione/decompressione ● Limitazioni di python nel cifrare bitstream ● Utilizzo di java per la creazione di un tool esterno
  • 14. APPROCCIO INIZIALE ● Tool creato mediante l’utilizzo della libreria bouncy castle ● Semplice interfaccia grafica ● Approccio che presentava diverse problematiche: ○ Impossibilità nel cifrare/elaborare determinati elementi (AC) ○ Introduzione di carico computazionale eccessivo
  • 16. ALGORITMO DI PERMUTAZIONE ● Per motivi di implementazione e di gestione delle operazioni successive di shuffling, cifratura e watermarking, è stata effettuata una trasformazione di tipo raster dei blocchi MCU (16 × 16 pixel) da permutare. ● L’immagine viene rappresentata mediante un array tridimensionale.
  • 17. ALGORITMO DI PERMUTAZIONE ● L’immagine (rappresentata mediante un array tridimensionale di pixel) è stata per prima cosa suddivisa in blocchi di dimensione 16 × 16 pixel, ● Sono stati presi tutti questi blocchi “quadrati” (chiamati blocchi MCU, aventi, quindi, 16 × 16 = 256 pixel) e ciascuno di essi è stato trasformato in un blocco “rettangolare” di dimensione 1 × 256 pixel ed inserito in un array apposito. In questo modo la tabella risultante avrà un numero di righe pari al numero di blocchi MCU dell’immagine ed un numero di colonne pari a 256. ● Sono stati presi gli indici (numeri) delle righe, le quali corrispondono ad un singolo blocco MCU 1 × 256 pixel ed inseriti in un array. ● I numeri all’interno dell’array sono permutati secondo una funzione random.sample() con seed: il seed è generato a partire da un valore chiave (key) e può essere rigenerato a partire dallo stesso valore chiave in altre istanze. ● Infine, sono stati ricostruiti i blocchi “quadrati” di dimensione 16 × 16 pixel a partire dai blocchi “rettangolari” 1 × 256 pixel e cioè dalle righe dalla tabella creata in precedenza, secondo l’ordine definito dall’array di indici/numeri permutati. E’ stata così ottenuta l’immagine visibile con i blocchi permutati.
  • 19. ALGORITMO DI DEPERMUTAZIONE ● L’immagine permutata viene suddivisa in blocchi MCU di dimensione 16 × 16 pixel. ● Gli n blocchi MCU “quadrati” vengono trasformati ciascuno in blocchi “rettangolari” di dimensione 1 × 256 pixel ed inseriti in una apposita tabella, che avrà una dimensione n × 256. ● Viene ricreato l’array dei numeri degli indici dei blocchi permutati, riottenendo lo stesso array avuto in fase di permutazione, allo stesso identico modo tramite la funzione random.sample() con seed. ● Infine, sono stati ricostruiti i blocchi “quadrati” di dimensione 16 × 16 pixel a partire dai blocchi “rettangolari” 1 × 256 pixel e cioè dalle righe dall’array creato in precedenza, andando, però, a prelevarli man mano secondo l’ordine crescente degli indici/numeri all’interno dell’array. E’ stata così ottenuta l’immagine originale avente i blocchi rimessi nel loro ordine originale.
  • 22. LIBRERIE PER LA CIFRATURA Utilizzo della libreria imageshuffle Utilizza un algoritmo di cifratura basato sulla permutazione dei pixel https://github.com/mastnk/imageshuffle
  • 23. ALGORITMO DI CIFRATURA Prende in input un immagine RGB ad 8 bit per canale R,G,B e la divide in blocchi 8 × 8 Le componenti R,G,B sono divise in due sotto-componenti ciascuna: in base ai 4 bit superiori e 4 bit inferiori
  • 24. ALGORITMO DI CIFRATURA In questo modo otteniamo 6 canali da 4 bit: ● R 4-bit-superiori (RS) ● R 4-bit-inferiori (RI) ● G 4-bit-superiori (GS) ● G 4-bit-inferiori (GI) ● B 4-bit-superiori (BS) ● B 4-bit-inferiori (BI)
  • 25. ALGORITMO DI CIFRATURA Vengono invertite le intensità di pixel, in posizioni casuali di ogni blocco 8 × 8 (RS, RI, GS, GI, BS, BI) Infine vi è una permutazione casuale di tutti i pixel dell’immagine Questi 2 passi dipendono dalla chiave simmetrica
  • 26. ALGORITMO DI CIFRATURA La decifratura è lo stesso processo effettuato a ritroso: ● Viene presa l’immagine cifrata ● I pixel vengono permutati nelle posizioni originali ● Le intensità dei pixel vengono ripristinate ● Si ottiene in output l’immagine decifrata
  • 27. ALGORITMO DI CIFRATURA Il processo di cifratura implementa l’algoritmo di imageshuffle e diversi passi utili per facilitare le operazioni inerenti al processo di watermarking Vogliamo utilizzare i DC dell’immagine per le operazioni di watermarking!
  • 28. ALGORITMO DI CIFRATURA Il processo di cifratura prende in input 2 elementi: ● L’immagine da cifrare ● La chiave di cifratura per imageshuffle
  • 29. ALGORITMO DI CIFRATURA Per ottenere tutti i DC sulla prima colonna, l’immagine in input viene divisa in blocchi 8 × 8 ed ogni blocco viene trasformato in una riga 1 × 64
  • 30. ALGORITMO DI CIFRATURA Si crea un’immagine cifrata, utilizzando l’algoritmo di cifratura di imageshuffle
  • 31. ALGORITMO DI CIFRATURA Viene scambiata la prima colonna dell’immagine in chiaro (a righe 1 × 64) con quella dell’immagine cifrata (a righe 1 × 64): In questo modo manteniamo i DC in chiaro sull’immagine cifrata per applicare il watermark!
  • 33. ALGORITMO DI CIFRATURA Infine, l’immagine (a righe) cifrata e con i DC non cifrati viene ricostruita in blocchi 8 × 8 e la funzione ritorna 2 elementi: ● L’immagine cifrata (con i DC non cifrati) ● La colonna dei DC cifrati: ci servirà per decifrare correttamente l’immagine!
  • 36. ALGORITMO DI DECIFRATURA Il processo di decifratura prende in input 3 elementi: ● L’immagine da decifrare ● La chiave di cifratura per imageshuffle ● La colonna dei DC cifrati, data in output dal processo di cifratura
  • 37. ALGORITMO DI DECIFRATURA L’immagine cifrata viene convertita da blocchi 8 × 8 in righe 1 × 64 Una volta avvenuta la conversione, viene sostituita la prima colonna dei DC in chiaro con quella dei DC cifrati: così si riottiene l’immagine a righe 1 × 64 cifrata!
  • 38. ALGORITMO DI DECIFRATURA Una volta ottenuta l’immagine a righe cifrata originale, si esegue l’algoritmo di imageshuffle sull’immagine ed otteniamo l’immagine non cifrata
  • 39. ALGORITMO DI DECIFRATURA Infine, l’immagine viene riordinata dalle righe 1 × 64 in blocchi 8 × 8, ottenendo l’immagine in chiaro e permutata
  • 40.
  • 42. ALGORITMO DI WATERMARKING L’immagine viene convertita da RGB nelle componenti YCrCb, quindi avremo: ● 1 componente di luminanza ● 2 componenti di crominanza
  • 43. ALGORITMO DI WATERMARKING ● L’algoritmo di compressione JPEG divide l’immagine in tanti blocchi DCT 8 × 8: ○ 1 coefficiente DC con coordinate (0,0) ○ 63 coefficienti AC. ● Il nostro algoritmo è interessato solamente alle componenti DC. Quindi nella funzione di compressione vengono prese tali componenti per ogni blocco 8 × 8 e vengono salvate per poi passarle alla funzione di watermark.
  • 44. ALGORITMO DI WATERMARKING ● Nella funzione di watermark vengono eseguite tali operazioni: 1. Vengono raggruppati tutti i coefficienti Dc quantizzati secondo la loro divisione MCU. Ogni blocco MCU contiene 4 coefficienti DC quantizzati dei blocchi DCT adiacenti (indicati con indici i = 0,1,2,3). 2. Viene calcolato il max e il min dei 4 valori DC e il valore medio.
  • 45. ALGORITMO DI WATERMARKING 3. Vengono scelti due interi T1 < T2 per calcolare la grandezza della modifica come: 4. Viene incorporato un bit di informazione di watermarking w modificando il coefficiente DC quantizzato. Quando w = 1 viene modificato il DC0 come segue: Quando w = 0 viene modificato il DC0 come segue: Se la differenza in valore assoluto tra DC0 e il nuovo DC’0 è più grande di 3 il coefficiente DC non deve essere modificato, altrimenti DC0 va rimpiazzato con DC’0
  • 46. ESTRAZIONE DELWATERMARKING ● Nel decompressore si vuole estrarre i bit di watermark inseriti su un bitstream JPEG cifrato, in quanto su quello non cifrato non siamo in grado di farlo visto che nel compressore questi bit vengono aggiunti in una fase di permutazione. ● Il bit estratto può essere ottenuto come:
  • 47. ALGORITMO DI VERIFICA DEL WATERMARKING ● Questo algoritmo è utile se si vuole verificare se la nostra foto con watermark ha subito degli attacchi. ● Esso prende in input una foto ● Salva i DC per poi estrarre il watermark. ● Si potrà verificare se i bit di watermark estratti coincidono con la foto originale, se la risposta è affermativa significa che la foto non è stata attaccata, in caso di risposta negativa si potrà verificare quanti bit di watermark sono stati modificati.
  • 49. ESPERIMENTI ED ANALISI DEI RISULTATI Strumenti utilizzati
  • 50. ESPERIMENTI ED ANALISI DEI RISULTATI Struttura script starter_encoder.py starter_decoder.py
  • 51. ESPERIMENTI ED ANALISI DEI RISULTATI Edit configurations: L’immagine fornita in input multipla di 8 o 16. starter_encoder.py starter_decoder.py watermark_array.txt
  • 52. ESPERIMENTI ED ANALISI DEI RISULTATI Sperimentazione - Encoder: Immagine Input Immagine Permutata Immagine cifrata Image_input.png Image_permutation.png Image_AC_encrypt.png
  • 53. ESPERIMENTI ED ANALISI DEI RISULTATI Sperimentazione - Encoder: Immagine compressa con watermark Image_compressed.png L’ output della compressione in formato testuale necessita una conversione in file binario per ottenere la reale size della compressione: Image_compressed.txt
  • 54. ESPERIMENTI ED ANALISI DEI RISULTATI Sperimentazione - Encoder: La taglia dei file Image_compressed.png Image_compressed.txt Image_input.png 463 KB Image_compressed.bin 575 KB 4599 KB
  • 55. ESPERIMENTI ED ANALISI DEI RISULTATI Sperimentazione - Decoder: Immagine compressa con watermark Immagine decompressa e cifrata Immagine decompressa e decifrata Image_compressed.png Image_decompressed.png Image_decrypted.png
  • 56. ESPERIMENTI ED ANALISI DEI RISULTATI Sperimentazione - Decoder: Immagine decompressa, decifrata e depermutata Watermark estratto. Image_output.png
  • 58. TESTING ● 10-bit ● 22-bit ● 70-bit Dataset foto: http://sipi.usc.edu/database/database.php?volume=misc&image=39#top
  • 59. TESTING Sono stati effettuati 7 differenti test:
  • 62. CONCLUSIONI E SVILUPPI FUTURI ● Il progetto ha raggiunti gli obiettivi prefissati. ● Tool modulare e con ampia gestione dei parametri. ● Taglia delle immagini che influisce su diversi aspetti.
  • 63. CONCLUSIONI E SVILUPPI FUTURI ● Diversi sviluppi futuri: ○ Gestione della size delle immagini mediante meccanismo di padding. ○ Output compressore mediante file binari piuttosto che testuali. ○ Maggior numero di test. ○ Test della robustezza in seguito ad attacchi tipici.
  • 64. ● [1] https://ieeexplore.ieee.org/document/8887302 ● [2] http://www.jjsapido.com/iafd/download/jpeg.pdf ● [3] https://www.jetbrains.com/pycharm/ ● [4] https://github.com/ghallak/jpeg-python ● [5] https://github.com/s-corso-98/EncDecBit ● [6] https://www.bouncycastle.org/ ● [7] https://github.com/mastnk/imageshuffle ● [8] http://sipi.usc.edu/database/database.php?volume=misc&image=39#top SITOGRAFIA Link GitHub del nostro progetto: https://github.com/carminet94/Robust_Watermarking_JPEG