Tesi di maturità 2011: Crittografia e steganografia
Crittografia e steganofrafia: la mia tesi di maturità.
Ho deciso di dedicare questo spazio sul mio sito web perchè qualcuno potrebbe trovarla utile.
La tesi
La tesi tratta essenzialmente due argomenti: crittografia e steganografia. Gli argomenti sono stati trattati sotto il punto di vista teorico ma anche pratico, dato che sono stati implementati tutte le tecniche di crittografia discusse (crittografia simmetrica ed asimmetrica).
Il linguaggio di programmazione scelto per l'implementazione dei programmi è, per ovvii motivi, Perl.
La storia
Dunque, l'idea della mia tesi nasce da una tiepida mattina di giugno.
In quel periodo gli impegni scolastici iniziavano a diradarsi, lasciando tempo per la ripetizione generale in vista degli esami e ad eventuali approfondimenti. Decisi dunque di provare a scrivere i programmi per la crittografia, in particolare per la crittografia asimmetrica con l'algoritmo RSA.
In quel periodo avevo appena cominciato a prendere realmente confidenza con Perl, e decisi dunque di usare Perl per scrivere tali programmi (laddove il docente di Sistemi aveva usato Mathcad).
Con mia grande sorpresa, riuscii ad ottenere dei programmi funzionanti in una mezza giornata, dopo aver scoperto che potevo fare aritmetica a precisione arbitraria con una semplice direttiva:
use bignum ;
Attivato questo pragma, perl diventa un ottimo strumento per fare crittografia, probabilmente non il migliore, il più ottimizzato o il più matematicamente rigoroso, ma certamente uno dei più agevoli.
Fui molto sorpreso di ciò perché il professore di Sistemi aveva avvisato noi studenti che maneggiare esponenziali poteva non essere proprio semplice, perchè con gli esponenziali si può mandare molto facilmente in overflow un sistema che per la rappresentazione in memoria dei numeri usa il formato IEEE-754, anche in doppia precisione. Io stesso avevo già provato in precendenza a realizzare queste funzioni utilizzando altri strumenti (anche strumenti abbastanza potenti) fallendo miseramente (anche se, ad onor del vero, c'è da dire che non mi sono dilungato molto sull'uso di questi strumenti, altrimenti sarebbero sicuramente riusciti ad effettuare tutti i calcoli adeguatamente - per la cronaca, tali strumenti erano: Matlab, GNU Octave e la mia AnnaRita).
Scrissi dunque i programmi e la mattina dopo li feci vedere al professore di Sistemi, che esclamò: "bello, bello, fai la tesi su questo!!".
Tutto questo, circa il quattro o il cinque di giugno, con gli scritti (e la consegna di eventuali tesi e progetti) fissati per il ventidue.
La tesi è stata dunque scritta decisamente di fretta, e non sono sinceramente contento dell'impostazione data ai contenuti, quantomeno dell'impaginazione della stessa (i tempi ridotti mi hanno obbligato ad usare OpenOffice.org, ma se mi fosse stato detto per tempo di scrivere questa tesi, avrei sicuramente usato LaTeX).
Avrei, altresì, trattato tutti gli argomenti con maggiore approfondimento, per me medesimo e per il lettore, e testato di più i programmi che ho scritto.
Nella mia idea di tesi, dulcis in fundo, avrei inserito un'applicazione completa, capace di crittografare del testo (con un algoritmo a piacere) e steganografarlo, ed eventualmente estrarlo e decifrarlo.
Avrei voluto anche approfondire argomenti più interessanti, quali la crittografia a curve ellittiche o la steganografia su file diversi dalle immagini (video, audio e altro in genere).
Per questi motivi, propongo formalmente questa tesi come un'opera fortemente incompiuta.
Progetti
Tra gli argomenti che vorrei trattare (e magari implementare) ci sono:
- cifrari a blocchi
- crittografia a curve ellittiche
- steganografia su file audio
- steganografia "analogica": tutta quella serie di tecniche per nascondere informazioni, anche senza usare un calcolatore
- watermarking
- aggiungere una bibliografia adeguata
- gli attacchi alla crittografia
- i keyserver e le reti della fiducia
- i key signing party
Download
Ad oggi (09/07/2011) la mia tesi si compone dei seguenti files:
- La tesi: TESI.pdf
- Il modulo Bit::Common
- I programmi
Licenza
Creative Commons BY-ND:
- Sintesi della licenza: http://creativecommons.org/licenses/by-nd/3.0/
- Testo legale: http://creativecommons.org/licenses/by-nd/3.0/legalcode
Conclusioni
Sono ben accetti commenti costruttivi, consigli e suggerimenti.
Per tutti questi: santoro@autistici.org.
Date: 2011-07-09 22:13:58 CEST
HTML generated by org-mode 6.33x in emacs 23