Analisi della Steganografia
La pratica di nascondere informazioni all'interno di file multimediali
Analisi della Steganografia
Utilizzando Machine Learning con Octave, i Pacchetti Image e Signal, e Aletheia
La steganografia è la pratica di nascondere informazioni all'interno di file multimediali, come immagini, video o audio, senza destare sospetti.
Questo tipo di comunicazione nascosta è spesso utilizzato per proteggere dati sensibili, ma può anche essere impiegato per scopi illeciti.
Per questo motivo, l'**analisi steganografica** è diventata una tecnica fondamentale per rilevare la presenza di dati nascosti all'interno dei file.
In questo articolo, mostreremo come eseguire un'analisi steganografica utilizzando Octave, con i pacchetti Image e Signal, e il framework Aletheia per l'analisi della steganografia.
Utilizzeremo il dataset BOSSbase per addestrare un modello di **machine learning** in grado di rilevare file che contengono informazioni nascoste.
Infine, svilupperemo un sistema che consente all'utente di caricare un file per verificare se contiene steganografia.
Strumenti Utilizzati
- Octave: Alternativa open-source a MATLAB, utilizzata per calcoli numerici e per il machine learning.
- Pacchetti Image e Signal di Octave: Utilizzati per l'elaborazione delle immagini e dei segnali.
- Aletheia: Un toolkit di analisi steganografica scaricabile da GitHub.
- BOSSbase dataset: Un set di immagini ampiamente utilizzato per la ricerca sulla steganografia.
Cos'è la Steganografia
La steganografia è una tecnica che permette di nascondere dati all'interno di un file multimediale.Per esempio, nella steganografia su immagini, i dati possono essere nascosti nei bit meno significativi dei pixel dell'immagine, una tecnica conosciuta come Least Significant Bit (LSB).
Anche se l'immagine sembra invariata all'occhio umano, l'informazione nascosta è presente e può essere estratta da chi conosce la chiave di decodifica.
Cos'è l'Analisi Steganografica
L'analisi steganografica è il processo di rilevamento della steganografia. Essa utilizza strumenti statistici e modelli di machine learning per analizzare i file multimediali e determinare se contengono o meno dati nascosti.Utilizzando modelli come le **Support Vector Machines (SVM)**, possiamo classificare le immagini come contenenti steganografia o meno.
Installazione degli Strumenti
Installazione di Octave e dei Pacchetti Image e Signal
Per installare Octave e i pacchetti Image e Signal, usa i seguenti comandi:
sudo apt-get install octave
pkg install -forge image
pkg install -forge signal
Questi pacchetti ti permetteranno di caricare ed elaborare immagini e segnali all'interno di Octave.
Installazione di Aletheia
Aletheia è un toolkit per l'analisi steganografica. Puoi clonare e installare Aletheia direttamente da GitHub:
git clone https://github.com/forensics-tools/aletheia.git
cd aletheia
Aletheia include strumenti per estrarre caratteristiche dalle immagini, come il SPAM (Subtractive Pixel Adjacency Matrix) o il SRM (Spatial Rich Model), che sono ampiamente utilizzati nell'analisi steganografica.
Download del Dataset BOSSbase
Per addestrare il nostro modello, utilizzeremo il BOSSbase dataset, che contiene immagini naturali utilizzate per simulare la steganografia. Puoi scaricarlo dal seguente link:
wget http://agents.fel.cvut.cz/boss/BOSSFinal-1.01.zip
unzip BOSSFinal-1.01.zip -d BOSSbase
Implementazione di un Modello di Machine Learning per l'Analisi Steganografica
Estrazione delle Caratteristiche
Per analizzare la steganografia nelle immagini, dobbiamo prima estrarre delle caratteristiche statistiche. Utilizzeremo Octave per leggere le immagini e calcolare semplici statistiche come la media e la varianza dei pixel.
#octave
pkg load image;
pkg load signal;
% Funzione per estrarre caratteristiche da un'immagine
function features = extract_features(image_path)
img = imread(image_path); % Caricamento dell'immagine
mean_val = mean(img(:)); % Calcolo della media dei pixel
variance_val = var(double(img(:))); % Calcolo della varianza dei pixel
features = [mean_val, variance_val]; % Restituisce le caratteristiche
end
Questa funzione legge un'immagine, calcola la media e la varianza dei pixel, che sono caratteristiche utili per distinguere tra immagini con e senza steganografia. In pratica, estrarre caratteristiche più avanzate (come SPAM o SRM) potrebbe migliorare l'accuratezza.
Addestramento del Modello SVM
Una volta estratte le caratteristiche, possiamo addestrare un modello **SVM** per classificare le immagini come contenenti o meno steganografia.
#octave
% Dataset di esempio (sostituisci con il percorso reale alle immagini del dataset BOSSbase)
data = {
'BOSSbase/train/image1.jpg', 0; % 0 = senza steganografia
'BOSSbase/train/image2.jpg', 1; % 1 = con steganografia
% Aggiungi altre immagini qui
};
% Prepara la matrice delle caratteristiche e le etichette
features_matrix = [];
labels = [];
for i = 1:size(data, 1)
image_path = data{i, 1};
label = data{i, 2};
features = extract_features(image_path);
features_matrix = [features_matrix; features];
labels = [labels; label];
end
% Addestramento del modello SVM
model = svmtrain(labels, features_matrix, '-c 1 -g 0.07');
In questo esempio, le immagini vengono caricate, le caratteristiche estratte e un modello SVM viene addestrato per rilevare la steganografia.
Input per Caricare e Verificare un File
Ora, per permettere all'utente di caricare un file e verificarne la presenza di steganografia, possiamo usare il seguente codice:
% Funzione per analizzare un file e verificare se contiene steganografia
function check_steganography(model)
% Input del file da parte dell'utente
file_path = input('Inserisci il percorso completo del file da analizzare: ', 's');
% Verifica se il file esiste
if exist(file_path, 'file') == 2 % Verifica se il file esiste
% Estrazione delle caratteristiche e predizione
features = extract_features(file_path);
[predicted_label, ~, ~] = svmpredict(1, features, model);
if predicted_label == 1
disp('Il file contiene steganografia.');
else
disp('Il file NON contiene steganografia.');
end
else
disp('File non trovato. Verifica il percorso e riprova.');
end
end
% Funzione per caricare un file da analizzare
check_steganography(model);
Spiegazione del Codice
- Input del file: Il programma chiede all'utente di inserire il percorso completo del file che desidera analizzare.
- Verifica dell'esistenza del file: Il codice controlla se il file esiste. Se esiste, estrae le caratteristiche e usa il modello SVM per predire se il file contiene steganografia o meno.
- Predizione: Il risultato della predizione viene stampato a schermo, indicando se il file contiene steganografia.
Come Funziona
Input del percorso del file
Quando esegui il programma, ti verrà richiesto di inserire il percorso del file immagine che desideri analizzare. Ad esempio, potresti inserire:
/path/to/image.jpg
Predizione
Il modello SVM eseguirà l'analisi e ti dirà se l'immagine contiene steganografia o meno.Visualizzazione dei risultati
Se desideri visualizzare il file caricato, puoi usare il comando `imshow(file_path)` per mostrarlo.
Conclusioni
In questo articolo abbiamo visto come configurare un sistema di analisi steganografica utilizzando Octave, i pacchetti Image e Signal, il toolkit Aletheia e il dataset BOSSbase.Il sistema consente di addestrare un modello SVM per rilevare la presenza di steganografia nelle immagini e fornisce una semplice interfaccia per caricare file e verificarne il contenuto. Questo approccio può essere esteso utilizzando caratteristiche più avanzate e modelli di machine learning più complessi per migliorare l'accuratezza