May 31 2005

Il disco cifrante di L.B.Alberti


by tonycrypt

Disco di Alberti

Leon Battista Alberti, nel suo Trattato della cifra, ha proposto un disco composto di due cerchi cifranti concentrici: uno esterno fisso con 24 caselle contenenti 20 lettere latine maiuscole (inclusa la Z, con U=V ed escluse H J K W Y) ed i numeri 1 2 3 4 per il testo chiaro; ed uno interno mobile, con le 24 lettere latine minuscole per il testo cifrato. Le 20 lettere maiuscole messe in ordine alfabetico; le 24 minuscole in disordine (questa è una norma fondamentale, trascurata da molti successori dell’Alberti, senza la quale si ha una semplice generalizzazione del codice di Cesare).

Fissata una lettera maiuscola come indice (ad es. B) si deve spostare il disco mobile interno e scrivere, come prima lettera del crittogramma, la lettera minuscola che corrisponde alla B; quindi cifrare alcune parole con la lista risultante. Quando si decide di cambiare la lista cifrante si scriverà la nuova lettera chiave in maiuscolo in modo da indicare chiaramente al corrispondente il cambio di lista. Ciò fatto, si porterà quella lettera ad affacciare l’indice B ed in questa nuova posizione si cifreranno altre parole secondo la nuova lista.

Per aumentare la segretezza (le lettere maiuscole costituiscono un aiuto non solo per il corrispondente ma anche per il “nemico”) l’Alberti suggerisce di usare uno dei quattro numeri per segnalare il cambio di alfabeto; la lettera minuscola corrispondente al numero sarà la nuova chiave; non vi sono quindi più lettere maiuscole e la cifra risulta così molto più sicura, e decisamente superiore a quelle che la seguirono nel tempo, e in particolare alla fin troppo famosa Tavola di Vigénère.

Si tratta in definitiva di una delle cifre polialfabetiche più sicure, che non ottenne il successo meritato anche per la decisione dell’Alberti di tenerla segreta (il suo trattato fu pubblicato solo un secolo più tardi a Venezia insieme ad altri suoi “opuscoli morali” e passò quasi inosservato).


Mar 19 2005

Il cifrario Atbash


by tonycrypt

Il libro di Geremia nella Bibbia usa un semplicissimo codice monoalfabetico per cifrare la parola Babele; la prima lettera dell’alfabeto ebraico (Aleph) viene cifrata con l’ultima (Taw), la seconda (Beth) viene cifrata con la penultima (Shin) e così via; da queste quattro lettere è derivato il nome di Atbash (A con T, B con SH) per questo codice. Usando il moderno alfabeto internazionale, l’Atbash può essere riassunto con la seguente tabella di cifratura:

CHIARO      a b c d e f g h i j k l m
CIFRATO     Z Y X W V U T S R Q P O N

CHIARO      n o p q r s t u v w x y z
CIFRATO     M L K J I H G F E D C B A

La traduzione della parola soccorso diventerebbe HLXXLIHL

Il codice Atbash è quindi simile ma meno complesso di quello di Cesare, poichè al contrario di quest’ultimo prevede solo una possibile sostituzione.


 


Jan 24 2005

Gost


by tonycrypt

GOST è un algoritmo crittografico sviluppato in Russia e utilizzato in tutta l’unione sovietica come clone del DES, dal punto di vista sia tecnico sia politico. L’algoritmo utilizza 32 cicli iterativi per l’operazione di cifratura con chiavi di 256 bit. La forza del GOST sembra essere legata proprio all’estrema segretezza dei suoi dettagli implementativi.


Jan 8 2005

Il Cifrario di Cesare


by tonycrypt

Si narra che Giulio Cesare usava per le sue corrispondenze riservate un codice di sostituzione molto semplice, nel quale la lettera chiara veniva sostituita dalla lettera che la segue di tre posti nell’alfabeto: la lettera A è sostituita dalla D, la B dalla E e così via fino alle ultime lettere che sono cifrate con le prime come nella tabella che segue (che fa riferimento all’odierno alfabeto internazionale).


Chiaro       a b c d e f g h i j k l m n o p q r s t u v w x y z
Cifrato      D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Prendendo come esempio la frase Servono rinforzisi otterrà il seguente messaggio:

Chiaro		servonorinforzi
Cifrato		VHUYRQRULQIRUCL

Più in generale si dice codice di Cesare un codice nel quale la lettera del messaggio chiaro viene spostata di un numero fisso di posti, non necessariamente tre.

Poiché l’alfabeto internazionale è composto da 26 caratteri sono possibili 26 codici di Cesare diversi dei quali uno (quello che comporta uno spostamento di zero posizioni) darà un cifrato uguale al messaggio chiaro iniziale. Non è certo un sistema sofisticato, ma risultò estremamente utile al suo ideatore : era cioè funzionale perché all’epoca in cui venne usato presentava una capacità di resistenza agli attacchi (tentativi di decifratura) proporzionata all’importanza dei messaggi ed alle capacità tecniche degli assalitori.


Prova tu stesso il cifrario di Cesare


Nov 22 2004

Crittografia Quantistica


by tonycrypt

Verso la meta’ degli anni ’80 un fisico inglese, David Deutsch, durante una conferenza sulla fisica quantistica, ebbe l’idea di creare un calcolatore quantistico. Questa e’ una idea rivoluzionaria, in quanto i calcolatori tradizionali si comportano secondo le leggi della fisica classica, e quindi con le limitazioni che noi tutti conosciamo. Ma un calcolatore quantistico avrebbe una potenza di calcolo teoricamente infinita, tale da poter invertire un algoritmo a fattorizzazione, come l’RSA, pressoche’ istantaneamente, rendendo quindi assolutamente inutili i sistemi di crittografia algoritmica. La spiegazione del funzionamento di un calcolatore quantistico e’ cosa assai complessa, e non e’ detto che si possa realizzare in pratica, almeno in tempi brevi (anche se si sospetta che gli USA ne abbiano già realizzato 5 esemplari), ma anche solo l’ipotesi di una sua futura realizzazione pone dei seri interrogativi sull’utilizzo della crittografia algoritmica, specialmente per quei documenti che devono rimanere riservati per un periodo di tempo abbastanza lungo. Quindi, alla luce di questo fatto, si impone un radicale cambiamento di strategia nella crittografia attuale: non basta piu’ aumentare la lunghezza delle chiavi per rendere sicuro un documento per i prossimi anni (sempre nell’ipotesi di avvento del calcolatore quantistico) ma bisogna ricorrere a qualcosa di completamente nuovo.
L’idea, in verita’, non e’ poi cosi’ recente. Essa risale alla fine degli anni ’60, quando uno studente di dottorato della Columbia University, Stephen Wiesner, ebbe per primo l’intuizione della crittografia quantistica. Essa era un’idea talmente avanzata per quei tempi che quasi non fu presa in considerazione. Wiesner ne parlo’ ad un suo amico, Charles Bennett, che trovo’ l’intuizione geniale, ma non era in grado di tradurla in pratica. Per dieci anni, circa, Bennett continuo’ a rimuginare sul problema, fin che’ divenne ricercatore presso i laboratori Watson dell’IBM. Li incontro’ Gilles Brassard, un informatico dell’universita’ di Montreal. Bennett illustro’ le teorie di Wiesner a Brassard ed insieme riuscirono a risolvere il problema.

La crittografia quantistica si fonda sul principio di indeterminazione di Werner Heisenberg e sulla particolare interpretazione che di quel principio fanno i fotoni, i quanti di luce. Il principio di Heisenberg sostiene che non è possibile conoscere, simultaneamente e con precisione assoluta, alcune caratteristiche fondamentali di un oggetto quantistico. Per esempio, non posso conoscere simultaneamente e con precisione assoluta dove sta un elettrone e con che velocità si muove. Se cerco di stabilire dove si trova esattamente, perdo la capacità di verificare con che velocità si muove. Se cerco di verificare con precisione la velocità, perdo informazioni sul luogo dove l’elettrone si trova. I fotoni, che sono appunto oggetti quantistici, approfittano del principio di Heisenberg per mischiare le carte quando li costringiamo a passare attraverso una fenditura. In particolare io non ho mai la possibilità di sapere, esattamente, quali fotoni, interpretando correttamente il principio di Heisenberg, attraverseranno quelle particolari fenditure che vengono chiamate “filtri di polarizzazione”.
Le leggi della meccanica quantistica dicono infatti che se si prova a guardare un oggetto microscopico, lo si disturba irrimediabilmente. E’ come se rimanesse sempre una traccia del nostro intervento. Se una spia provasse a decifrare la chiave quantistica, da una parte la modificherebbe rendendola inutilizzabile per aprire il messaggio, dall’altra verrebbe certamente smascherata. La principale differenza tra bit classici e quantistici sta nel fatto che mentre nel primo caso si hanno oggetti fissi e manipolabili, nel secondo ogni tentativo di azione esterna distrugge inevitabilmente i bit stessi. L’inviolabilità di un codice quantistico non dipende quindi dall’abilità della spia, ma risiede nelle leggi della natura.

Occorre ora che io vi introduca ad Alice e Bob, due personaggi di grido nelle strane storie scientifiche che narrano i fisici quantistici. Immaginiamo che Alice voglia mandare un messaggio segreto a Bob, ipotizzano Bennett e Brassard. E immaginiamo che Alice e Bob decidano di usare fotoni polarizzati e canali quantistici (per esempio una fibra ottica) per la loro comunicazione in codice. Per scrivere il messaggio cifrato e il codice per decifrarlo, Alice sceglie fotoni polarizzati in quattro direzioni diverse: orizzontale (A), verticale (B), a +45° (C) e a -45° (D). Alice e Bob possono comunicare inoltre anche attraverso un canale pubblico (il telefono, Internet).
– Alice sceglie una serie casuale di fotoni polarizzati (per esempio la serie AADCCDBBADCDBA…) e la registra, prima di inviarla. Bob ha due analizzatori disponibili. Uno (chiamiamolo 1) gli consente di distinguere tra i fotoni A e B (polarizzati in direzione orizzontale e verticale) e l’altro (chiamiamolo 2) gli consente di distinguere tra i fotoni C e D (diagonali opposti). Bob effettua la lettura, utilizzando un analizzatore a caso per ogni fotone e avendo anche cura di registrare la successione degli analizzatori usati (per esempio, 122111212221…). Ogni volta che Bob utilizza il primo analizzatore, legge correttamente le A e le B di Alice, ma commette un errore del 50% sulle C e le D. Viceversa, quando impiega il secondo analizzatore, individua al 100% la giusta sequenza di C e D, mentre una volta su due sbaglia le A e le B.
– Dopo avere analizzato una serie abbastanza lunga di fotoni, Bob chiama al telefono Alice e le comunica la successione di analizzatori usata (nel nostro caso, 122111212221…), ma non i risultati ottenuti. Alice verifica la sequenza e, sempre al telefono, dice a Bob per quali fotoni la serie risulta compatibile (nel nostro caso la serie è compatibile per i fotoni 1, 3, 7, 9…), tuttavia non gli dice in quale stato di polarizzazione ha inviato i fotoni 1, 3, 7, 9. A questo punto Bob e Alice si concentrano su tali fotoni e trascurano gli altri.
– A questo punto i nostri Alice e Bob scelgono un piccolo insieme della serie compatibile di fotoni e verificano, sempre per mezzo del telefono, se c’è la dovuta corrispondenza tra gli input iniziali inviati da Alice e i risultati ottenuti da Bob. Se tale corrispondenza c’è, Alice e Bob possono trarne la conseguenza che nessuno ha cercato di leggere il messaggio. Se invece è intervenuto il terzo personaggio della nostra storia, lo spione a cui la letteratura scientifica attribuisce in genere il nome di Eva, avrà necessariamente utilizzato la medesima procedura di Bob, avrà effettuato la lettura e poi avrà inviato a Bob una nuova serie di fotoni. Una breve analisi statistica dimostra che nella fase di lettura Eva utilizza necessariamente un analizzatore sbagliato nel 50% dei casi e nella fase di scrittura per Bob elabora necessariamente una serie sbagliata pure nel 50% dei casi. In altri termini, Bob legge alla fine una sequenza che, per almeno il 25%, sarà differente da quella che gli aveva inviato Alice. Questo errore è sufficiente a fargli comprendere senza alcun dubbio che qualcuno ha cercato di leggere il messaggio.

Anche senza l’intervento di Eva, la comunicazione tra Alice e Bob sarà macchiata da errori. Tuttavia questi errori possono essere minimizzati a piacere. Cosicché, una volta certi che nessuna Eva ha disturbato la loro comunicazione, Alice e Bob possono scambiarsi il resto del cifrario. E, infine, decrittare il messaggio. Con la certezza assoluta non solo che nessuno lo ha letto. Ma che nessuno ha cercato di leggerlo. Alice e Bob possono essere contenti: hanno realizzato una comunicazione crittografica perfetta.
Se desideri approfondire l’argomento, scarica il file quantum.ps.


Oct 23 2004

Il cifrario RSA


by tonycrypt


L’RSA è un cifrario a chiave pubblica che permette di cifrare un messaggio attraverso un procedimento che sfrutta le proprietà dei numeri primi.

In termini molto semplici: fissati due numeri h ed n, che costituiscono la chiave pubblica, si considera un terzo numero d che costituisce la chiave privata (i dettagli sul calcolo di questi parametri sono esposti più giù). Sia m il messaggio da cifrare. L’operazione da compiere è la seguente:

c=mh mod n.

La chiave di decifrazione è costituita dal numero intero d, segreto, che permette di recuperare m grazie alla formula:

m=cd mod n.

L’RSA viene considerato oggi uno dei sistemi di crittografia più sicuri perchè, essendo violabile solo mediante attacchi di forza bruta, la rottura del codice richiederebbe tempi e risorse economiche elevatissimi. Ma i supercomputer di cui dispongono i grandi governi e le continue ricerche matematiche non ci garantiscono, chiaramente, la massima sicurezza.

Esporrò adesso, in termini più tecnici, i principi di funzionamento dell’RSA.


  • Si determini la prima chiave n, prodotto di p e q, due numeri primi molto elevati, tali che la fattorizzazione di n sia estremamente difficile;
  • Si calcoli dunque il valore della funzione di Eulero di n: b=phi(n)=(p-1)*(q-1) il cui valore rimane segreto; si scelga ancora un intero d tale che d e phi(n) siano primi tra loro (d non risulterà necessariamente primo, ma deve essere minore di phi(n)). Infine si trovi h che è il più piccolo x (intero) per cui (dx-1)/phi(n) é un numero intero.

In questo modo abbiamo determinato i numeri n, h e d di cui abbiamo già parlato.

Se chiamo k la quantità (dx-1)/phi(n), ottengo dx=dh=kphi(n)+1. Posso allora dimostrare perchè m=cd mod n:

RSA

Il codice RSA viene considerato sicuro perchè, essendo la formula di decifrazione basata su phi(n) calcolabile solo se a conoscenza di p e q, non esiste (o perlomeno non è noto) un algoritmo per scomporre n nei suoi fattori primi p e q in tempi accettabili. Bisognerebbe effettuare attacchi di forza bruta, provando cioè tutti i possibili casi. Fattorizzare un numero di 664 bit richiede almeno 1023 passi usando gli algoritmi più efficienti; per cui ipotizzando di avere una rete costituita da un milione di computer con ciascuno di loro che esegue un milione di passi al secondo, il tempo impiegato per fattorizzare n sarebbe dell’ordine dei 4000 anni. Se poi n fosse un numero a 1024 bit la stessa rete impiegherebbe 1010 anni per fattorizzarlo . Potrebbe sorgere il dubbio che esista un modo di calcolare phi(n) senza passare per p e q: questa ipotesi in effetti è verificabile ed è uno dei tanti motivi per non dare massima fiducia a questo algoritmo di cifratura.


Esempio

  • n=p*q=5*7=35
  • b=phi(35)=(5-1)(7-1)=24
  • d=7 (primo con 24)
  • k=(7x-1)/24       da cui:   x=(k*24+1)/7
  • Fisso k=2 in modo da ottenere un numero x intero. Quindi k=2 e x=h=7.

Ho trovato tutti i parametri che mi servivano e, a questo punto, suppongo che il messaggio da cifrare sia m=3. Procedo e calcolo:

c=mh mod n=37mod 35=2187 mod 35=17

Se adesso volessi decifrare il messaggio, essendo a conoscenza della chiave segreta d, procedo in questo modo:

m=cd mod n=177mod 35=3


Elevazione a potenza modulare

L’operazione dell’elevazione a potenza modulare consiste nel calcolare xy mod z dove x, y e z sono interi. Ma, lavorando con numeri estremamente grandi, gli elaboratori non sono in grado di eseguire da soli questi calcoli. E’allora necessario fare uso di algoritmi di calcolo che, benchè laboriosi, ci consentono di raggiungere il nostro scopo. Al momento, per la realizzazione del mio programma di crittografia a chiave pubblica basato sull’RSA, sto utilizzando il metodo naive, sotto illustrato. Ma ritenendolo poco efficiente (richiede un enorme lavoro della CPU) penso che lo sostituirò con un altro più veloce.

Metodo naive

Si può schematizzare questo metodo con il seguente algoritmo:

a=1
for i=1 to y do
a=(a*x)mod z
next

In pratica si calcola a=(a*x)mod z ripetendo l’operazione y volte. A questo punto il valore finale di a sarà il risultato di xy mod z, che abbiamo ottenuto evitando di lavorare con numeri troppo grandi. Tale algoritmo non è comunque molto efficiente, essendo il numero di cicli da eseguire uguale ad y. I metodi realmente utilizzati sono 2: il metodo “Left to right” e il metodo “Right to left”. Ma parlerò in seguito di questi algoritmi, essendo ancora miei attuali argomenti di studio.


Attacchi RSA

Osserviamo che per un crittoanalista rompere l’RSA equivale a calcolare f(n). Infatti, se n e f(n) sono conosciuti ed n è il prodotto di due primi p e q, n può essere facilmente fattorizzato risolvendo il seguente sistema di 2 equazioni in 2 incognite: n = p × q e f(n)= (p – 1)(q – 1). Nelle due incognite p e q. Sostituendo q = n / p nella seconda equazione se ne ottiene un’unica di secondo grado nella sola incognita p:

p2 – (n – f(n) + 1)p + n = 0.

Le due radici di questa equazione sono i fattori p e q. Quindi se un crittoanalista conosce il valore di f(n) può fattorizzare n e rompere il sistema.

Esempio Supponiamo cheil crittoanalista conosca f(n) = 84754668 e n = 84773093.Questeinformazioni gli permettono di scrivere l’equazione: p2 – 18426p + 84773093 = 0. Risolvendol’equazione si ottengono le due radici 9539 e 8887 che rappresentano i fattori p e q di n.


Sep 29 2004

Analisi delle frequenze


by tonycrypt

Nel caso dei cifrari monoalfabetici, ad ogni lettera se ne sostituisce un’altra secondo opportune regole. Se ad esempio sostituissimo la c con la x, la i con la y, poi a=r e o=b, potremmo scrivere la parola “ciao” come “xyrb”. Sembra trattarsi di un sistema di crittografia estremamente sicuro e, in primo luogo, piuttosto difficile da violare. In realtà è molto facile attaccarlo e violarlo: basta conoscere le proprietà statistiche del linguaggio con cui il testo è stato scritto. In questo modo non bisogna fare molta fatica per rivelare esattamente tutto il contenuto reale del crittogramma. Tonycrypt ha creato un programma che consente di effettuare automaticamente e rapidamente l’analisi delle frequenze di un testo. Si tratta di un programma gratuito disponibile nella sezione download o scaricabile cliccando qui. Per realizzare lo schema delle frequenze con cui si presentano le lettere della lingua italiana, abbiamo pensato di analizzare un testo sufficientemente lungo: la Convenzione di Ginevra relativa al trattamento dei prigionieri di guerra. Ecco dunque uno schema della ricorrenza delle lettere della lingua italiana:

Ecco i valori non approssimati (nel grafico dobbiamo tener conto anche dell’estetica, dunque riportiamo solo i valori interi) delle frequenze letterarie in lingua italiana: Lettera a: 9,651 %; Lettera b: 0,481 %; Lettera c: 3,469 %; Lettera d: 4,142 %; Lettera e: 12,791 %; Lettera f: 0,929 %; Lettera g: 1,9984 %; Lettera h: 0,517 %; Lettera i: 12,730 %; Lettera j: 1,584E-03 %; Lettera k: 7,921E-04 %; Lettera l: 5,809 %; Lettera m: 2,031 %; Lettera n: 7,690 %; Lettera o: 8,760 %; Lettera p: 3,018 %; Lettera q: 0,350 %; Lettera r: 8,140 %; Lettera s: 4,835 %; Lettera t: 7,290 %; Lettera u: 2,685 %; Lettera v: 1,283 %; Lettera w: 0 %; Lettera x: 0 %; Lettera y: 0 %; Lettera z: 1,387 %;

 

Supponiamo adesso di trovarci davanti ad un testo cifrato in cui si è deciso di sostituire la a con la x, la e con la y e così via. E supponiamo che il testo originale, in chiaro, fosse scritto in italiano. Sottoponiamo tale testo ad un’analisi delle frequenze. Troveremo che la x presenta una ricorrenza vicina al 9%, la y intorno al 12% e così via. Confrontando tali risultati con la soprastante tabella delle ricorrenze tipiche della lingua italiana, immediatamente ci si accorge della sostituzione effettuata.

Vediamo un esempio pratico di quanto appena esposto: supponiamo di trovarci davanti al seguente testo:

 

YHUVRODPHWDGHJOLDQQLXQILVLFRLQJOHVHGDYLGGHXWVFKGXUDQWHXQDFRQIHUHQCD VXOODILVLFDTXDQWLVWLFDHEEHOLGHDGLFUHDUHXQFDOFRODWRUHTXDQWLVWLFRTXHV WDHXQDLGHDULYROXCLRQDULDLQTXDQWRLFDOFRODWRULWUDGLCLRQDOLVLFRPSRUWDQ RVHFRQGROHOHJJLGHOODILVLFDFODVVLFDHTXLQGLFRQOHOLPLWDCLRQLFKHQRLWXWW LFRQRVFLDPRPDXQFDOFRODWRUHTXDQWLVWLFRDYUHEEHXQDSRWHQCDGLFDOFRORWHRU LFDPHQWHLQILQLWDWDOHGDSRWHULQYHUWLUHXQDOJRULWPRDIDWWRULCCDCLRQHFRPH OUVDSUHVVRFKHLVWDQWDQHDPHQWHUHQGHQGRTXLQGLDVVROXWDPHQWHLQXWLOLLVLVW HPLGLFULWWRJUDILDDOJRULWPLFDODVSLHJDCLRQHGHOIXQCLRQDPHQWRGLXQFDOFRO DWRUHTXDQWLVWLFRHFRVDDVVDLFRPSOHVVDHQRQHGHWWRFKHVLSRVVDUHDOLCCDUHLQ SUDWLFDDOPHQRLQWHPSLEUHYLDQFKHVHVLVRVSHWWDFKHJOLXVDQHDEELDQRJLUHDOL CCDWRHVHPSODULPDDQFKHVROROLSRWHVLGLXQDVXDIXWXUDUHDOLCCDCLRQHSRQHGHL VHULLQWHUURJDWLYLVXOOXWLOLCCRGHOODFULWWRJUDILDDOJRULWPLFDVSHFLDOPHQ WHSHUTXHLGRFXPHQWLFKHGHYRQRULPDQHUHULVHUYDWLSHUXQSHULRGRGLWHPSRDEED VWDQCDOXQJRTXLQGLDOODOXFHGLTXHVWRIDWWRVLLPSRQHXQUDGLFDOHFDPELDPHQWR GLVWUDWHJLDQHOODFULWWRJUDILDDWWXDOHQRQEDVWDSLXDXPHQWDUHODOXQJKHCCDG HOOHFKLDYLSHUUHQGHUHVLFXURXQGRFXPHQWRSHULSURVVLPLDQQLVHPSUHQHOOLSRW HVLGLDYYHQWRGHOFDOFRODWRUHTXDQWLVWLFRPDELVRJQDULFRUUHUHDTXDOFRVDGLF RPSOHWDPHQWHQXRYR

 

Effettuiamo un’analisi di frequenze di tale testo mediante il programma Frequency che ho sviluppato per Tonycrypt:

A questo punto non è necessaria grande intelligenza per capire cosa sta succedendo. Tutto l’andamento delle frequenze risulta traslato di 3 lettere. Chi ha cifrato il testo si è limitato ad effettuare un offset di 3 posti, utilizzando il codice di Cesare. La lettera d presenta una frequenza di 11 %, confrontabile, nella tabella della lingua italiana, a quella della a=9 %. Nel testo cifrato h=10 % mentre in lingua italiana e=12 %. Nel testo cifrato l=11 % mentre in lingua italiana i=12 %. E così via: tutto il testo originale è stato sottoposto ad un offset di 3 posti. A questo punto non ci resta che procedere inversamente. Decifriamo applicando il codice di Cesare al contrario, cioè con un offset di 26-3=23 posti (potete provare voi stessi dalla pagina dedicata al codice di Cesare). Risultato:

VERSOLAMETADEGLIANNIUNFISICOINGLESEDAVIDDEUTSCHDURANTEUNACONFERENZASULLAFIS ICAQUANTISTICAEBBELIDEADICREAREUNCALCOLATOREQUANTISTICOQUESTAEUNAIDEARIVOLU ZIONARIAINQUANTOICALCOLATORITRADIZIONALISICOMPORTANOSECONDOLELEGGIDELLAFISI CACLASSICAEQUINDICONLELIMITAZIONICHENOITUTTICONOSCIAMOMAUNCALCOLATOREQUANTI STICOAVREBBEUNAPOTENZADICALCOLOTEORICAMENTEINFINITATALEDAPOTERINVERTIREUNAL GORITMOAFATTORIZZAZIONECOMELRSAPRESSOCHEISTANTANEAMENTERENDENDOQUINDIASSOLU TAMENTEINUTILIISISTEMIDICRITTOGRAFIAALGORITMICALASPIEGAZIONEDELFUNZIONAMENT ODIUNCALCOLATOREQUANTISTICOECOSAASSAICOMPLESSAENONEDETTOCHESIPOSSAREALIZZAR EINPRATICAALMENOINTEMPIBREVIANCHESESISOSPETTACHEGLIUSANEABBIANOGIREALIZZATO ESEMPLARIMAANCHESOLOLIPOTESIDIUNASUAFUTURAREALIZZAZIONEPONEDEISERIINTERROGA TIVISULLUTILIZZODELLACRITTOGRAFIAALGORITMICASPECIALMENTEPERQUEIDOCUMENTICHE DEVONORIMANERERISERVATIPERUNPERIODODITEMPOABBASTANZALUNGOQUINDIALLALUCEDIQU ESTOFATTOSIIMPONEUNRADICALECAMBIAMENTODISTRATEGIANELLACRITTOGRAFIAATTUALENO NBASTAPIUAUMENTARELALUNGHEZZADELLECHIAVIPERRENDERESICUROUNDOCUMENTOPERIPROS SIMIANNISEMPRENELLIPOTESIDIAVVENTODELCALCOLATOREQUANTISTICOMABISOGNARICORRE REAQUALCOSADICOMPLETAMENTENUOVO

Naturalmente il sistema di analisi delle frequenze è applicabile al caso più generale in cui ad ogni lettera se ne sostituisce arbitrariamente un’altra, senza nessun tipo di regola. Il caso appena citato, dell’algoritmo di Cesare, è solo un esempio particolare di sostituzione monoalfabetica. Il programma Frequency è gratuitamente disponibile nell’area Download di Tonycrypt.


Sep 5 2004

Il codice “Navajo”


by tonycrypt

Tra la prima e la seconda guerra mondiale, gli USA pensarono di cifrare le loro comunicazioni semplicemente traducendole nel linguaggio degli indiani Choctaws. Pensarono insomma di sfruttare la complessità di tale linguaggio a difesa delle loro comunicazioni. Dopo l’inizio della guerra per gli USA, nel 1941, lo studio di questo genere di crittografia venne esteso e si sperimentarono i linguaggi di Commanches, Choctaws, Kiowas, Winnebagos, Seminoles, Navajos, Hopis e Cherokees. Successivamente però si optò per utilizzare esclusivamente il linguaggio Navajos.
Tra le varie tribù indiane vennero scelti proprio i Navajo perché la loro lingua appartiene a una famiglia linguistica priva di legami con qualsiasi idioma asiatico o europeo, inoltre si trattava dell’unica tribù che non fosse stata visitata da studiosi tedeschi. I “NAC”,Native American Codetalkers (parla-codice), ebbero un ruolo importantissimo nella guerra del Pacifico, contro i Giapponesi. Con il progredire della guerra nel Pacifico crebbe l’importanza dei “parla-codice” e la richiesta del loro aiuto aumentò rapidamente. Non tutti i marines però erano al corrente della presenza dei navajo e i “parla-codice” venivano a volte scambiati per soldati nemici, catturati dagli americani e rilasciati soltanto dopo l’intervento di soldati del loro stesso reparto. Per evitare questo genere di incidenti ad ogni navajo venne affiancato un marine che aveva il compito di proteggere non solo lui ma, soprattutto, il codice. Il “parla-codice” non doveva essere catturato dai giapponesi, perché avrebbe potuto rivelare la chiave del codice, e il marine aveva ricevuto l’ordine di ucciderlo prima che cadesse prigioniero.
Inizialmente si presentarono alcuni problemi dovuti al fatto che i navajo non avevano nel loro idioma i moderni termini tecnici e militari. Uno scoglio che venne facilmente superato inventando nomi di fantasia. Ad esempio si decise di usare nomi di uccelli per gli aerei e di pesci per le navi da guerra. In tal modo il cacciabombardiere era lo sparviero (Gini, in codice navajo), l’aereo spia era il gufo (Ne-as-jah).
Il loro codice è uno dei più sicuri e dei più semplici, uno dei pochi rimasto inviolato, ma il ruolo dei navajo nella seconda Guerra mondiale rimase un segreto militare fino al 1968, quando vennero finalmente autorizzati a rendere pubblico il loro contributo alla guerra. L’attività dei codetalkers viene ricordata nel film Windtalker, diretto dal regista cinese Yusen Wu.


Mar 25 2004

Blowfish


by tonycrypt

Blowfish è un cifrario a blocchi sviluppato da Bruce Schneier, autore del famoso libro Applied Cryptography. Blowfish opera su blocchi di 64 bits con chiavi di lunghezza variabile fino a 448 bits. Questo algoritmo utilizza varie tecniche tra le quali la rete Feistel, le S-box dipendenti da chiavi e funzioni non invertibili che lo rendono, forse, l’algoritmo più sicuro attualmente disponibile. Non si conoscono al momento attacchi nei suoi confronti.


Mar 17 2004

Vernam


by tonycrypt

Il sistema Vernam è un caso particolare della cifratura One time-Pad. La cifratura detta a chiave infinita o one-time pad consiste nel generare una chiave composta il più possibile da lettere, numeri e simboli disposti in modo casuale, e di una lunghezza almeno pari alla lunghezza del testo da criptare. Quindi per ogni carattere del testo in chiaro aggiungiamo (come somma di valori ASCII ad esempio) un carattere della chiave, ottenendo il testo criptato. E’ facile intuire che una cosa del genere è praticamente impossibile da decifrare, in quanto si basa su una chiave ottenuta in modo assolutamente casuale (entropia massima) e senza la possibilità di analizzare delle ripetizioni nel testo, in quanto la chiave ha appunto la lunghezza stessa del testo. Questo sistema di codifica è usato per ottenere i più alti gradi di sicurezza militare, ma ha il grosso difetto di non essere impiegabile su vasta scala o per messaggi particolarmente lunghi. Alcuni algoritmi sono stati costruiti approssimando il sistema a chiave infinita con l’espansione di una chiave relativamente breve. Il sistema “Vernam”, ad esempio, usato nelle trasmissioni telegrafiche, usava lunghi nastri di carta contenenti dei bit casuali, i quali erano aggiunti ai bit del messaggio originario.
Il sistema Vernam può comportare degli svantaggi dovuti all’espansione della chiave, se questa ha lunghezza molto inferiore a quella del messaggio da cifrare. Risulta dunque conveniente usare chiavi molto lunghe e, soprattutto, più casuali possibili. Si tratta di un algoritmo efficientissimo, ma, essendo a chiave privata, comporta non pochi limiti.
Tonycrypt.com e digitalspaghetti.net hanno realizzato dei software che consentono di cifrare secondo il sistema Vernam.

Scarica i software:

Vernam – In visual basic per sistemi Windows

Red Vernam – in Java multipiattaforma

Red Vernam