Steganografia in un file di testo Corso di Sicurezza dei sistemi informatici Prof. Giuseppe Mastronardi Anno Accademico 2006/07.

Slides:



Advertisements
Presentazioni simili
C C++ &.
Advertisements

Introduzione al linguaggio C++
Elementi di Crittografia MAC e FUNZIONI HASH
Introduzione al linguaggio C
Realizzazione in PARI/GP
Laboratorio di crittografia
Classe III A A.s – 2010 Programma di Informatica
Classe III A A.s – 2011 Programma di Informatica 5 ore settimanali (3 laboratorio) Docenti –Prof. Alberto Ferrari –Prof. Alberto Paganuzzi.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
CODIFICA DELLE INFORMAZIONI
PROGRAMMARE IN PASCAL (le basi)
Tecniche di compressione dei dati
I linguaggi di programmazione
Dipartimento di Ingegneria dell’Informazione
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
PROGETTINI DI FINE CORSO
Programmazione Procedurale in Linguaggio C++
Per crittografia si intende la protezione
Sistemi di elaborazione delle informazioni
STEGANOGRAFIA Roberto Emigrato
Caratteri e stringhe di caratteri
Politecnico di Milano Algoritmi e Architetture per la Protezione dellInformazione Multichannel Adaptive Information Systems Paolo Maistri Dipartimento.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE File Marco D. Santambrogio – Ver. aggiornata al 9 Maggio 2012.
Testo consigliato Crittografia, P. Ferragina e F. Luccio, Ed. Bollati Boringhieri, € 16.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Algoritmi e strutture dati
Introduzione agli stream e alle classi
Il Linguaggio Macchina
SSL (Secure Socket Layer)
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
I File.
Programmazione in Java
Proposte di tesina Mario Toma.
Steganografia Un esempio pratico. Il formato TAR Possiamo pensare ad un archivio TAR come ad un contenitore di file. Per ogni file nellarchivio viene.
Seminario Sicurezza Informatica: Steganografia
Scritture Segrete Lezione n. 2
LA CRITTOGRAFIA QUANTISTICA
Algoritmi e Programmazione strutturata
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione X Ingresso/Uscita di Interi Programmazione di Calcolatori: Ingresso/Uscita 1.
Crittografia Classica. Notazioni P : Insieme dei messaggi in chiaro C : Insieme dei messaggi criptati f : Funzione di Trasformazione Crittografica K E.
Foglio elettronico Excel Livello avanzato
Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 -I costi del software Ernesto Damiani Università degli Studi di Milano Lezione.
Programma di Informatica Classi Prime
Programmazione in linguaggio C
Crittografia MITTENTE DESTINATARIO messaggio messaggio chiave-1
Arduino: introduzione alla programmazione
UNIVERSITÀ DEGLI STUDI DI PAVIA Anno accademico 2009/2010 Sicurezza e frodi informatiche in Internet: la Firma Digitale come garanzia di autenticità e.
Concetti Fondamentali sulla Programmazione
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Realizzazione software
Codici prefissi Un codice prefisso è un codice in cui nessuna parola codice è prefisso (parte iniziale) di un’altra Ogni codice a lunghezza fissa è ovviamente.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Informatica e Informatica di Base
10/10/20021 Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
Crittografia/ Steganografia
Informatica Lezione 10 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Programmazione dei Calcolatori Elettronici
Gianluca Costante & Alessio Scannapieco
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
Crittografia. Introduzione  La rete può essere utilizzata per diversi scopi: informazione, scambio dati, scambio messaggi, trasferimento denaro.  Nel.
POLITECNICO DI BARI Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica “Sicurezza dei Sistemi Informatici” REALIZZAZIONE DI UNA APPLICAZIONE.
Applicazione dei QR-Code in ambito ospedaliero
Dal problema al programma – ciclo di sviluppo del software La scrittura del programma è solo una delle fasi del processo di sviluppo di un'applicazione.
Cenni di Crittografia Luigi Vetrano TechnoLabs S.p.A. L’Aquila, Aprile 2011.
FESR Trinacria Grid Virtual Laboratory La sicurezza dei dati in ambiente Trigrid Giordano Scuderi.
Files in C++ Motivazioni Un programma in esecuzione legge (sequenzialmente) una sequenza di caratteri prodotti "al volo" dall'utente (tramite tastiera)
Sicurezza dei Sistemi Informatici L.S. in Ingegneria Informatica Docente: Prof. Giuseppe Mastronardi CRITTOGRAFIA E CRITTOANALISI ATTACCHI AI SISTEMI DI.
Transcript della presentazione:

Steganografia in un file di testo Corso di Sicurezza dei sistemi informatici Prof. Giuseppe Mastronardi Anno Accademico 2006/07

Steganografia È l’arte di nascondere un messaggio all’interno di un altro messaggio Stèganos = nascosto Gràfein = scrivere

Steganografia in file di testo Codifica del messaggio all’interno di un testo per mezzo di spazi o tabulazioni (whitespaces) “Proof of Concept” L’applicazione è il tentativo iniziale di sviluppare un’idea e lascia spazio a molte migliorie di implementazione.

Punti di forza Gli spazi bianchi non vengono visualizzati dalla maggior parte dei software di scrittura Spazi bianchi alla fine delle righe occorrono naturalmente in un file di testo. Le nuove tecnologie web-based sono basate su file di testo che vengono interpretati da software e non da umani (es. HTML,XML)

Punti deboli E’ possibile nascondere pochi dati alla volta Notevole cambio di dimensione del file

SpaceHider Sviluppata in ANSI C 99 Lo standard ANSI permette il porting con facilità da una piattaforma all’altra L’uso di un linguaggio compilato garantisce prestazioni di tutto riguardo, oltre all’indipendenza da framework o virtual machines

Funzionamento L’applicazione nasconde il messaggio tramite spazi e tabulazioni alla fine della riga Il messaggio da steganografare viene considerato come un flusso di bit Tale flusso viene quindi sottoposto a vari processi, fino ad essere nascosto all’interno del contenitore

Funzionamento (codifica messaggio) Compression (optional) Huffman Coding Encryption (optional) Key Contenitore File + messaggio Messaggio Segreto (come bitstream)

Compressione Vista la dimensione ridotta dei messaggi che è possibile codificare è necessario utilizzare un algoritmo di compressione. Codice di Huffman Pesato secondo la frequenza dei caratteri nella lingua Non richiede header o footer (overhead nullo)

Huffman coding In base alle frequenze di occorrenza delle lettere in un alfabeto si costruisce un albero da cui si ricavano le codifiche a lunghezza variabile Esempio: = “EST”

Quando comprimere? Nei messaggi in cui sono molto frequenti caratteri generalmente non frequenti la compressione con Huffman potrebbe essere controproducente. Il programma calcola al volo il tasso di compressione che si ottiene, e se questo risulta svantaggioso consiglia di non utilizzare la compressione.

Cifratura ABCDEFGH XXXXXXXX E’ stato sviluppato un semplice algoritmo di tipo cipher block a chiave simmetrica: buruCrypto Key length: 64bit Cipher size: 16bit Dalla chiave vengono generate 4 sottochiavi, alternate secondo un preciso criterio (key scheduling)

void b_init(void); void b_encrypt(const byte*, byte*, int); void b_decrypt(const byte*, byte*, int); void b_encrypt_string(const char*, char*, int len) void b_decrypt_string(const char*, char*, int len) void b_setkey(const char*); chiper_block b_getsubkey(int); buruCrypto è stato sviluppato come una libreria esterna: riutilizzabile in altri ambiti sostituibile all’interno di spaceHider con algoritmi di cifratura più sicuri Si è preferito non utilizzare DES o Triple-DES a causa del chiper-block di dimensioni relativamente grandi (64bit) Interfaccia di buruCrypto

ABCDEFGHIJKLMNOP XXXXXXXX XOR encoding primary subkey XOR encoding secondary subkey Plaintext Ciphertext PERMUTATION

Cifratura e codifica di Huffman Il codice di Huffman è a lunghezza variabile, quindi in generale produce serie di bit di lunghezza diversa da 8 (1 byte) Le permutazioni dell’algoritmo di cifratura coinvolgono più caratteri, rimescolandoli tra loro Un algoritmo di tipo streaming avrebbe generato un bitstream criptato con bit incorrelati tra di loro Il codice di Huffman utilizzato, può essere mantenuto segreto ed essere considerato un cifrario di una ulteriore fase crittografica

Message Hiding Il bitstream viene diviso in blocchi da 3 bit ciascuno ed ognuno dei blocchi viene codificato come n°spazi (dec) + ‘\t’ Es: la tripletta di bit 011 è codificata come “ ···\t ”, 3 spazi seguiti da una tabulazione

Message Hiding I blocchi codificati vengono inseriti in coda alle righe del testo fino al raggiungimento di un valore critico di lunghezza della riga (default = 70 car) Ogni file di testo ha quindi un valore massimo di informazioni che è in grado di contenere. NOTA: E’ possibile specificare il valore critico di riga in fase di “iniezione” del messaggio nel cover

Interfacce Le interfacce tra i moduli hanno dei buffer di ingresso e dei buffer di uscita, in quanto le operazioni sono svolte su gruppi di bit Codifica: 3bit; decodifica: 3bit; Cifratura: 16bit; decifratura: 16bit; Compressione: 8bit Decompressione: variabile Application Module BUFFER

Utilizzo di sh Il tool viene utilizzato da riga di comando C:\SH\> sh Usage: sh [-C][-Q][-S][-p passwd][-l line-len] [-f file | -m message] [infile [outfile]] -C: Abilita compressione -Q: Quiet mode: non mostra messaggi durante l’esecuzione -S: Calcola una stima dello spazio libero in un file -p : se specificata cripta il bitstream -l : specifica la lunghezza critica di linea -f | -m : Sorgente del messaggio (file di testo o stringa) infile: file di input outfile: file di output DIMOSTRAZIONE

E se… Il messaggio supera la capienza del file cover? SpaceHider aggiunge delle righe in fondo al file Il file contiene già spazi bianchi alla fine delle righe? SpaceHider provvede a toglierli prima di inoculare il messaggio

Immagini in un file di testo? E’ facile vedere che è possibile estendere il metodo di steganografia sviluppato in modo da nascondere all’interno di un cover di testo file binari. Sarebbe necessario: Differenziare le modalità di lettura/scrittura dei file Sviluppare un codice di Huffman efficiente per i binari non sarebbe comunque possibile nascondere file troppo “pesanti”