martedì 24 gennaio 2017

Enigma


Risultati immagini per enigma macchina     

                                                                                                                  

  Alla fine della prima guerra mondiale i criptoanalisti si trovano in vantaggio rispetto ai criptografi, una nuova soluzione tecnica per cifrare i messaggi nasce negli USA nel 1917 un inventore americano Edward Eburn svulippa una macchina crittografica con un solo rotore in cui sono presenti lettere del alfabeto inglese.
Un anno dopo l'ingegnere tedesco *Arthur Schebius in Germania sviluppa una macchina simile a quella di Eburn ma con il vantaggio che al posto di un solo rotore lui ne mette 3,cosi la combinazione di lettere diventa molto piu ampia, milioni di combinazioni. Inizialmente questa macchina veniva utilizzata per usi commerciali,e business..

La guerra lampo aveva bisogno di un ottimo coordinamento tra le vie aree e terrestri,per questo motivo ci voleva una ottima comunicazione solo che le comunicazioni radio potevano essere intercettate,quindi  la marina le forze aeree e l'esercito tedesco vide il potenziale di questa macchina. Schebius sotto ordine del governo tedesco si mise a perfezionare macchine enigma per usi militari con piu rotori e manuali contenenti parole chiave per ogni reparto militare/marino.

Facciamo un passo prima della seconda guerra mondiale, ironia della sorte (anni '25/'30) il servizio segreto polacco riuscì a trafugare una macchina enigma,più precisamente il reparto BS4.
I servizi segreti polacchi avevano assunto i migliori matematici di quei tempi per poter capire il funzionamento della macchina e a sua volta decifrare  i messaggi dell'esercito tedesco, fortuna loro tra l'altro una spia francese che si era infiltrato come funzionario di alto comando del governo tedesco,aveva consegnato in mano ai polacchi  schemi e manuali della macchina Enigma in cambio di un lavoro e una vita più agiata per la sua famiglia.

Come hanno fatto i polacchi a capire il funzionamento e costruirne una simile per decodificare?
Hanno usato un antico metodo arabo che consiste di cercare nel testo le lettere ripetute piu volte nel testo,li con una serie di funzioni matematiche/logiche riuscirono a costruire una macchina simile.
Successivamente nacque un problema, i tedeschi cambiavano ogni giorno la posizione dei rotori,e quindi gli avversari non sapevo come impostare la macchina per decifrare. Apparentemente un sistema inattaccabile..
A questo punto lo scenario si sposta in Inghilterra.
I servizi segreti polacchi consegnano agli inglesi una macchina enigma e  tutti i dati raccolti durante le loro ricerche.
A Bletchley park si riunirono , con l' ausilio dei servizi segreti inglesi, matematici ,scacchisti ,linguisti,enigmisti per poter decifrare i codici nazisti.
I questo scenario entra un matematico di nome *Alan Turing... A lui venne affidato il comando della squadra dei decriptarori. Turing studio questa macchina e si rese conto che per riuscire a trovare la combinazione giusta,lavorando giorno e notte senza sosta,ci avrebbero impiegato un tempo circa l'eta dell'universo. Quindi lui decise di costruire una macchina simile con un principio di funzionamento simile. LA struttura di enigma era formata nel seguente modo: 3 rotori e ogniuno dei rotori conteneva 26 lettere,una tastiera, uno "schermo" dove visualizzava le lettere, e dei cablaggi elettrici dove si combinavano i cavi delle prime tre parole chiave che si trovavano.
Ma Turing trovò anche un errore su enigma,cioè la macchina non ripeteva mai la lettera digita e quindi nei messaggi non ci dovevano essere congruenze tra il messaggio chiave e quello cifrato dando una buona probabilità di decifrazione. Con la macchina che aveva sviluppato riusciva trovare la chiave di enigma circa in un ora riuscendo cosi a decifrare i messaggi intercettati. Questa macchina era grossa come una stanza e pesava circa 2 tonnellate, la avevano sopranominata la bomba per  il ticchettio che faceva quando elaborava le combinazioni.
Il contributo di Turing diede  quel vantaggio che serviva agli inglesi per vincere la guerra, ma il lavoro che hanno svolto le persone a Bletchley park venne tenuto alla massima segretezza e non ricevereno nessun tipo di medaglia o onorificienza.


Fonti - enigma e la seconda guerra mondiale; wikipedia.
Alan Turing 23/06/1912, londra.
Arthut Scherbius 30/10/1878.

La storia della crittografia,e gli usi "di oggi"

La crittografia è una tecnica che consiste nel criptare e decriptare delle parole-testi, per renderli indecifrabili. Questa tecnica risale dai tempi più antichi,ad esempio nell'antica Grecia nella guerra tra i spartani e i persiani quando gli spartani si infiltravano nelle linee nemiche e raccogliere informazioni. Le spie scrivevano su un rotolo particolare il messaggio, lo cifravano così se il nemico poteva intercettare il messaggero non avrebbe mai capito il significato del messaggio.
Esistono tante tecniche di criptazione e a sua volta decriptazione, quella di *Vigenere che per i suoi tempi risultava quasi impossibile da decifrare,e quella di *Vernam,utilizzata ancora oggi.

Risultati immagini per crittografiaDal '900 e in poi la crittografia venne riutilizzata per scopi militari durante la prima e seconda guerra mondiale  per inviare e ricevere  messaggi sul campo di battaglia. Questi messaggi potevano essere frasi di lettere e caratteri scritte apparentemente senza senso!
Altri esempi possono essere dei suoni strani o dei numeri con un ordine casuale.
Anche le spie durante la guerra fredda facevano uso di messaggi cifrati per inviare le loro indagini ai servizi segreti dei rispettivi paese, in oltre per rendere il lavoro piu complicato ai loro "nemici" inviavano questi messaggi con una radio ad onde corte. Il primo motivo e che le radio ad onde corte riescono ad arrivare in ogni angolo del pianeta,esse viaggiano lungo la ionosfera, poi sono ideali per inviare messaggio di solo invio anche perchè chiunque può ricevere il messaggio,
è anche difficile poter rintracciare il mittente perchè prima bisogna trovare la sorgente con maggior potenza( anche perchè con le onde corte ci si può inviare il messaggio in tante frequenze diverse)  poi triangolare. E infine per poter ricevere il messaggio ci vuole una semplice radio a onde corte,non sospetta.
A parte gli usi che abbiamo elencato la cifratura e l'uso di informazioni personali su internet, le operazioni bancarie per le transizioni,segnali per le tv, modem ecc ecc.
   
* Blaise de Vigenere 1586;
*Gilbert Vernam 03/04/1890 Usa;

Crittografia simmetrica e crittografia asimmetrica

Risultati immagini per crittografia
Le tecniche crittografiche si suddividono in due categorie principali,quella simmetrica e la asimmetrica.

La crittografia simmetrica lo adottò inizialmente *Giulio Cesare traslando le lettere di una  certa quantità e la chiave per decriptare il messaggio si trovava nella mani dei generali che combattevano sul fronte.
Quindi possiamo dire che con la password che si usava per criptare il messaggio si riutilizzava per decriptarlo. Ma la i calcolatori che ci sono oggi,molto piu veloci ad elaborare i calcoli,diventa sempre piu facile calcolare la password giusta e con solo 26 tentativi il messaggio puo essere scoperto. Un altro svantaggio di questa tecnica sta nell'errore umano,cioè quanto può essere affidabile il destinatario per non lasciare traccie. Crittografia simmetrica

La crittografia asimmetrica funziona con due tipi di chiavi: una "pubblica" e una privata una capace di cifrare l'altra.
Con questo metodo la distribuzione delle chiavi non diventa più pericolosa,infatti ciò che decritti con la chiave pubblica viene decrittata con la chiave privata e vice versa,infatti ogni soggetto possiede una propria chiave.
Matematicamente è molto improbabile trovare mediante la chiave pubblica quella privata infatti le chiavi sono indipendenti una dall'altra.
C'è sono un piccolo problema, un soggetto con la chiave pubblica può benissimo "tradire" il gruppo trafugando messaggi,avendo in possesso una chiave pubblica.
Il secondo svantaggio sta nel utilizzare degli algoritmi molto lunghi per sviluppare le chiavi e delle volte può risultare poco efficiente il lavoro svolto.
Per questo problema viene introdotto L'HASH. Questa funzione tramite un algoritmo prende la parola e la cifra in sequenze piu corte per sviluppare la chiave del mittente. Ma per essere efficiente il messaggio deve essere relativamente corto, perchè  la funzione "comprime il messaggio" e sarebbe difficile riportare il messaggio originale. La coerenza del messaggio che si ha con l'Hash fa parte delle proprietà fondamentali della funzione.Risultati immagini per crittografia asimmetrica
Giulio Cesare luglio nel 100 a.c,morte : 15 marzo 44 a.c

La mia prima esperienza su internet.

La mia prima esperienza su internet risale ai tempi delle scuole medie,quando durante le ore di informatica la professoressa ci insegnava ad usare il computer
Inizialmente internet lo usavo per giocare online,giochini piccoli del tipo "Sonic" e altri giochi ancora, e per leggere i fumetti o personaggi vari. Poi con "l'avvento" di You tube tutti a guardare i famosi filmati di dragon ball!!!!
Andando avanti con il tempo a scuola ci insegnavano ad usare la posta elettronica : come si apriva una posta elettronica come si dovevano scrivere  i messaggi ecc ecc.
Ho iniziato ad usare internet seriamente quando ero alle superiori e avevo capito le potenzialità di questo servizio, ad esempio comperare online e altro., Poi ho usato internet per scopo di studio,trovare informazioni per gli esami, siti web che contengono appunti, e lo stesso sito del politecnico e i servizi che contiene. Inutile dirlo che per i tempi di oggi internet è indispensabile il nostro stile di vita dipende anche dalla rete,per i social network e  per la rapidità dei " lavoretti" che dobbiamo fare tutto solo con un semplice "click".

domenica 22 gennaio 2017

Dentro l'algoritmo DES

Premetto che non sarà semplice seguire il funzionamento di questo algoritmo, ma tenterò di rendere la spiegazione più semplice possibile.
I principi su cui si basa l'algoritmo sono sostituzione, permutazione  e combinazione tra  i blocchi di testo e la chiave.
La chiave è composta da 64 bit, ma soltanto 56 di questi sono utilizzati per criptare il messaggio.

Il messaggio viene criptato in blocchi da 64 bit.
Il primo passaggio è una permutazione (indicata con IP ossia initial permutation) dei bit del blocco di testo da 64 bit secondo la seguente matrice:

                         IP 
58, 50, 42, 34, 26, 18, 10,  2,
 60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14,  6,
 64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17,  9,  1, 
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13,  5, 
63, 55, 47, 39, 31, 23, 15, 7

Nella matrice viene indicata la precedente posizione del bit e l'attuale posizione dopo la permutazione (il 58° bit del messaggio originale si trova in 1° posizione, il 50° in 2°, ecc..).

Il passaggio successivo divide il blocco ottenuto dalla permutazione in due blocchi da 32 bit, uno destro che chiameremo R0 (dall'inglese Right) e uno sinistro che chiameremo L0(dall'inglese Left).
I passaggi successivi verranno ripetuti in sequenza per 16 volte.
By Francisco Menendez (Own work)
[CC BY-SA 3.0], via Wikimedia Commons
Prendiamo il blocco Rn (con 0≤n≤16) e lo diamo in pasto a una funzione E che lo espande da 32 a 48 bit secondo la seguente matrice:

                    E
32,   1,    2,   3,     4,   5,
  4,   5,     6,   7,    8,   9,
  8,   9,  10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32,  1 

Otteniamo quindi E(Rn) composto da 48 bit. E(Rn) viene quindi combinato attraverso un'operazione di XOR (per chi non sappia cos'è lo rimando a Wikipedia) con una sotto-chiave Kn.

Otteniamo K, composta da 56 bit, dalla chiave iniziale  facendo una permutazione PC-1 .
La sotto-chiave (Kn) è ottenuta da K applicando tre passaggi alle due metà di K (C(n) e D(n)):

  1. Spostamento rotatorio verso sinistra dei bit delle due sotto chiavi
  2. unione delle due sotto chiavi in una sola da 56 bit 
  3. permutazione PC-2 dalla quale si ottiene Kn
Dopo l'XOR tra Kn e E(Rn) otteniamo una stringa di bit che viene divisa in 8 blocchi da 6 bit ciascuno(B1, B2,...,B8). Ognuno di questi blocchi viene ridotto da 6 a 4 bit attraverso l'utilizzo di 8 diverse Substitution-Box (link a Wikipedia per la spiegazione su come funzionano).
I blocchi da 4 bit vengono concatenati per ottenere di nuovo un blocco da 32 bit.

Il blocco di 32 bit così ottenuto viene a sua volta permutato secondo una matrice P ottenendo Q:
             P
16,   7, 20,   21,
29, 12, 28,  17, 
  1, 15,  23, 26, 
  5, 18,  31, 10, 
  2,   8,  24,  14, 
32, 27,   3,     9, 
19, 13, 30,    6, 
22, 11,   4,   25

A questo punto viene fatto l'XOR tra Ln e Q, ottenendo così Rn+1. Ln+1 sarà invece uguale a Rn.
Applichiamo i passaggi fino ad ottenere R16 e L16.
Concateniamo L16 e R16 e la stringa di bit così ottenuta la permutiamo secondo una matrice inversa a IP in cui quindi il 40° bit torna a essere il 1°, il 1° torna a essere il 58° ecc.
Così il nostro blocco iniziale è stato criptato in un blocco di 64 bit.

Spero di essere stato abbastanza chiaro sul funzionamento di questo algoritmo, e vi rimando alla lettura del documento fips46-3 (PDF in inglese) per le matrici PC-1 (pag.19) PC-2 (pag.21) e le S-Box (pag.17). 
Se siete interessati ad un'implementazione in c vi rimando alla lettura dei sorgenti della glibc(in particolare dei files crypt* presenti nella cartella crypt dei sorgenti).

sabato 21 gennaio 2017

La crittografia e il mondo informatico

(Fonte)

Già nell'antichità ci sono esempi di crittografia, utilizzata principalmente per scopi bellici, forse il più famoso è il cifrario di Cesare, in cui ogni lettera del messaggio era sostituita dalla lettera un certo numero di posizioni dopo nell'alfabeto.
Con l'avvento della tecnologia moderna la crittografia si è sviluppata maggiormente, grazie a macchine elettro-meccaniche in grado di eseguire complessi procedimenti di cifratura, come ad esempio la macchina tedesca chiamata Enigma.
Ulteriori sviluppi ci furono con l'avvento dei computer la cui potenza di calcolo porto allo sviluppo di algoritmi sempre più complessi e di difficile calcolo.
Nei primi anni settanta si pose il problema di rendere segrete le comunicazioni elettroniche di banche e altre organizazini finanziarie, così nel 1975 venne pubblicata la prima bozza del Data Encription Standard (DES) e venne scelto l'algoritmo proposto da alcuni ricercatori IBM. Nel 1976 , dopo alcune modifiche, fu adottato come standard e l'anno successivo venne pubblicato. Questo algoritmo segue il principio di Kerckhoffs secondo cui la sicurezza di un algoritmo non deve dipendere dalla segretezza dello stesso, ma dalla segretezza della chiave di crittazione.
Qui nasce un altro problema: come fanno le due parti a trasmettere la chiave segreta senza che questa venga intercettata e utilizzata per decifrare i messaggi segreti?
Sempre nel 1976 venne pubblicato, da Martin Hellman e Whitfield Diffie , un documento intitolato "New Directions in Cryptography" in cui era illustrato un metodo di crittografia asimmetrica  (basata su un'idea del crittografo Ralph Merkle) per potersi scambiare la chiave, noto da allora come scambio di chiavi Diffie-Hellman.
Martin Hellman e Whitfield Diffie  (Credits)

Negli anni successivi furono inventati crittosistemi sempre più complessi. Ad esempio uno dei più diffusi (se non il più diffuso)  per lo scambio di e-mail è quello descritto nello standard OpenPGP, comparso negli anni '90.
Nel 1997 venne attaccata con un attacco "brute force"( ossia provando una ad una tutte le combinazioni possibili per la chiave, un po' come provare tutte le combinazioni per aprire una cassaforte) la cifratura DES e in 56 ore ne venne dimostrata l'insicurezza della chiave a 56 bit che quindi venne "sostituito" dal Triple-DES (TDES: DES-EEE o DES-EDE), il quale consiste in tre passaggi consecutivi di crittazione utilizzando tre chiavi, solo 4 anni più tardi fu introdotto l'AES (Advanced Encription Standard, con una chiave di 128 o 256 bit).
Ad oggi gli algoritmi di crittazione possono essere utilizzati in diversi campi, come ad esempio la comunicazione via internet tra il browser e i siti(https), l'invio di mail e purtroppo anche in virus informatici (cryptolocker).

La mia prima esperienza con Internet

Logo del nuovo protocollo di rete https con la tripla w
(Immagine di Fabio Lanari - Internet2.jpg by Rock1997 modified, GFDL)
Questo post non tratta direttamente i temi del mio blog, me è richiesto dal corso Rivoluzione Digitale del prof J.C. De Martin (Politecnico di Torino)
Internet, non ricordo bene il "primo incontro", ma già da quando ero piccolo mi ricordo che mio nonno si dilettava a capire come funzionasse e ad esplorarlo, ma non ne ero molto attirato.
La mia prima esperienza in prima persona risale ai primi giorni di scuola media. All'inizio internet per me significava Internet Explorer e Google e qualsiasi cosa riguardasse la rete riguardava queste due cose.
Mi sembrava noioso e inutile: ok, ci sono tante belle immagini e tante informazioni, ma nulla più di tutto questo. Ci andavo solo per cercare quello che mi serviva, non lo esploravo e non ne ero incuriosito  (soltanto qualche anno dopo ho scoperto l'utilità e la bellezza di internet e ancora successivamente i "pericoli" della rete).
Negli anni dopo ho iniziato ad esplorare il web e a provare a capire come realmente funzionasse, i primi mezzi di comunicazione che ho usato, come Windows Live Messenger, e soprattutto l'enciclopedia online: Wikipedia.
Dal li parte tutto, l'esplorazione di quell'enciclopedia per capire come funzionasse il world wide web, internet, l'hardware che c'è dietro e soprattutto il software e i protocolli che ci sono dietro. Questa esplorazione mi ha in fine portato a curiosare nel modo del Free Software, dell'Open Source, di GNU e di Linux. Così ho capito realmente che c'è sempre molto da imparare e nessuno sa tutto, neanche di un singolo argomento, e spesso i problemi hanno diverse soluzioni e le idee alla base di esse possono essere diverse. Nel prossimi post parlerò dell'evoluzione della crittografia, in particolare dell'evoluzione nel mondo informatico.