# data[].attributes.body
Pagina interattiva che consente di cifrare un breve testo con il cifrario di Vernam.

# data[].attributes.attachment_link.description
La Crittografia, le sue tecniche, la sua storia

# data[].attributes.body
www.di-srv.unisa.it/~ads/corso-security/www/CORSO-9900/crittografiaclassica/www.apogeonline.com/catalogo/allegati/483/doc/algoritmi/crypto.htm

https://it.wikipedia.org/wiki/Crittografia

http://cardano.pv.it/studenti/matedida/crittografia/crittografia.htm

http://www.ilpost.it/2016/04/07/whatsapp-crittografia-2/

https://www.focus.it/scienza/scienze/alan-turing-e-la-sua-macchina

www.repubblica.it/tecnologia/2012/06/22/news/turing_enigma-37702503/?refresh_ce

www.crittologia.eu/

# data[].attributes.body
Le applicazioni della crittografia moderna sono diffuse nell'ambito informatico e delle telecomunicazioni in tutti i casi in cui è richiesta confidenzialità dei dati. Ad esempio:

in messaggi e file presenti su supporti di memorizzazione;

nelle comunicazioni wireless (Wi-Fi e reti cellulari) per garantire la confidenzialità;

nella Rete Internet per oscurare la comunicazione dati in transito tra client e server;

nelle transazioni finanziarie-bancarie (home banking);

nella pay per view per impedire la visione di contenuti audiovisivi a pagamento ai non abbonati.

# data[].attributes.body
L'evoluzione dei sistemi crittografici, uniti all'evoluzione della fisica teorica, hanno permesso di realizzare un cifrario di Vernam che si basa sull'utilizzo della meccanica quantistica nella fase dello scambio della chiave.
Il vantaggio di questa tecnica consiste nel fatto di rendere inutilizzabili gli attacchi del tipo man in the middle: ovvero, se durante lo scambio della chiave qualcuno riuscisse ad intercettarla, la cosa diverrebbe immediatamente evidente  sia a chi emette sia a chi riceve il messaggio.

# data[].attributes.headline
Pro e contro della cifratura simmetrica e di quella asimmetrica

# data[].attributes.subject
Pro e contro della cifratura simmetrica e di quella asimmetrica

# data[].attributes.body
Cifratura simmetrica

PRO: velocità.
CONTRO:

presenza della sola chiave privata, a rischio vulnerabilità;

difficoltà della distribuzione delle chiavi private in un sistema multiutente.

Cifratura asimmetrica

PRO: distribuzione delle chiavi non impegnativa.
CONTRO: impegnativa dal punto di vista computazionale.

# data[].attributes.body
La vera novità del secolo scorso è l'invenzione di una tecnica crittografica che utilizza chiavi diverse per cifrare e per decifrare un messaggio, facilitando incredibilmente il compito di distribuzione delle chiavi.
Infatti, in questo caso non è necessario nascondere le chiavi o le password: c'è una chiave per crittografare (che chiunque può vedere) e una per decifrare, che conosce solo il destinatario, senza necessità, quindi, di riceverla (scambiarla) dal mittente.

Siccome la crittografia asimmetrica è molto lenta, se si devono spedire grandi quantità di dati si usa solitamente questo tipo di crittografia per scambiarsi una chiave con cui iniziare una comunicazione in crittografia simmetrica, molto più semplice, veloce e sicura.

# data[].attributes.body
Fino a pochi anni fa era l'unico metodo crittografico esistente, con cui si faceva uso di un'unica chiave sia per proteggere il messaggio sia per renderlo nuovamente leggibile.

Il problema era condividere la chiave di cifratura con il destinatario del messaggio criptato senza che questa venisse scoperta. La ricerca sulla crittografia simmetrica ha prodotto, negli anni, sistemi crittografici di tutto rispetto (ultimo fra tutti il cifrario Rijndael, scelto per il nuovo standard Advanced Encryption Standard per essere utilizzato nel prossimo ventennio, sostituendo l'ormai datato DES).

# data[].attributes.body
La necessità di nascondere messaggi strategici da occhi nemici è antica quanto l'uomo: ci sono tracce di cifrari antichi quanto gli Ebrei con il loro codice di Atbash; gli Spartani avevano un loro particolare sistema di comunicazione dei messaggi segreti, la scitala; a Gaio Giulio Cesare si attribuisce l'uso del cosiddetto cifrario di Cesare, un sistema crittografico oggi ritenuto elementare, ma emblema della nascita di un concetto totalmente nuovo ed ottimo per comprendere le idee basilari della crittografia e i primi attacchi della sua "avversaria": la crittoanalisi.

La storia della crittografia moderna inizia con la stesura del De cifris di Leon Battista Alberti, che per primo insegnò a cifrare per mezzo di un disco cifrante con un alfabeto segreto da spostare ogni due o tre parole. Anche il tedesco Tritemio prevedeva una forma di cifra polialfabetica, facendo scorrere l'alfabeto ordinato di un posto ad ogni lettera del testo in chiaro. Nel 1526, Jacopo Silvestri pubblicò l'Opus novum, considerata una delle prime opere su questo argomento.

Ma il vero progresso nella cifratura polialfabetica è stato compiuto dal bresciano Giovan Battista Bellaso, che ha inventato la tecnica di alternare alcuni alfabeti segreti formati con parola chiave sotto il controllo di un lungo versetto (chiamato contrassegno). La sua prima tavola a 11 alfabeti reciproci, uscita nel 1553, fu ripubblicata dal napoletano Giovanni Battista Della Porta dieci anni più tardi e ne prese il nome (grazie alla notevole diffusione che ebbe il suo trattato De furtivis literarum notis). Il francese Vigenère utilizzò poi il versetto per cifrare ciascuna lettera con la sua tavola ad alfabeti regolari identica a quella del Tritemio e che oggi porta il suo nome: il suo sistema è stato considerato indecifrabile per tre secoli, finché nel 1863 il colonnello prussiano Friedrich Kasiski non pubblicò un metodo per "forzarlo", chiamato Esame Kasiski.

Qualsiasi sia il sistema crittografico utilizzato, la legge fondamentale sul corretto uso di tali tecniche fu scritta da Kerckhoffs ("Legge di Kerckhoffs") nel suo libro del 1883 La Cryptographie Militaire e di seguito riportata:

La sicurezza di un crittosistema non deve dipendere dal tener celato il crittoalgoritmo. La sicurezza dipenderà solo dal tener celata la chiave.

Nel 1918, Gilbert Vernam, maggiore dell'esercito statunitense e tecnico all'AT&T Bell, perfezionò il metodo di Vigenère proponendo l'idea di usare chiavi segrete casuali lunghe almeno quanto il messaggio. Successivamente, nel 1949, Claude Shannon, padre della teoria dell'informazione, nel lavoro La teoria della comunicazione nei sistemi crittografici dimostrò che questo è l'unico metodo crittografico possibile che sia totalmente sicuro.

Con il possesso di un sistema crittografico perfetto, la battaglia teorica tra crittografia e crittoanalisi si è risolta con una vittoria della prima sulla seconda. Ipotizzando di voler far uso di questa insuperabile protezione, restano però aperti molti problemi di ordine pratico. Bisogna, infatti, soddisfare gli stringenti requisiti del cifrario di Vernam: chiave lunga quanto il messaggio e mai più riutilizzabile. Tuttavia, si hanno notizie di utilizzi di questo cifrario in ambiente militare (comunicazione con le spie), o per la protezione delle comunicazioni del telefono rosso tra Washington e Mosca durante la guerra fredda. Anche il cifrario trovato nel 1967 sul corpo di Che Guevara è un'applicazione del cifrario di Vernam.

# data[].attributes.body
Turing è definito il padre dell'intelligenza artificiale, in base soprattutto alla teorizzazione dell'omonima macchina. Che cos'è la macchina di Turing e perché è così importante?

Il Nuovo Testamento dell'era digitale

Grazie alle sue teorie, Alan Turing è considerato da molti il padre dell'informatica. Non è del tutto sbagliato definirlo così, perché, per dirla con le parole di George Dyson nel suo saggio La cattedrale di Turing, Alan Turing si colloca fra il Vecchio e il Nuovo Testamento dei profeti del calcolo digitale: funge, cioè, da spartiacque tra coloro che hanno fornito la logica (Leibniz in testa) e coloro che hanno poi costruito le macchine (John Von Neumann).

La macchina di Turing

Il lavoro più noto di Turing è On Computable Numbers del 1936, nel quale il matematico presenta la sua macchina di calcolo logico, poi definita macchina di Turing.

«Una macchina di Turing», spiega Carlo Cellucci, professore emerito di filosofia alla Sapienza di Roma, «non è una macchina fisica, ma un modello di una macchina ideale consistente in:

A) un nastro infinito in entrambe le direzioni, diviso in caselle ciascuna delle quali può contenere il simbolo 0 oppure il simbolo 1. Il nastro rappresenta la memoria della macchina;

B) una testina che può leggere il simbolo, 0 oppure 1, contenuto in una casella e scrivere un simbolo in una casella, e può muoversi lungo il nastro, una casella per volta.»

Si tratta, dunque, di un modello teorico, poiché prevede un tempo e uno spazio (ovvero il nastro) infiniti.

Secondo Turing sarebbe stato possibile inventare una macchina che potesse essere utilizzata per qualsiasi sequenza computabile. La novità di questa teoria è che si dimostrava che una macchina poteva essere codificata come un numero e viceversa, introducendo il concetto di ciò che oggi chiameremmo software.

Turing "PADRE" del computer?

Chi conosce o ha sentito parlare del matematico inglese lo definisce spesso così. Turing sicuramente «stimolò il progetto di realizzazione di un computer», conferma il professor Cellucci, «ma i computer reali non si basano sul suo modello, perché sarebbero estremamente lenti ed inefficienti. I computer reali si basano, invece, su un modello ideato da un altro logico, John von Neumann». Quest'ultimo, tra l'altro, conobbe Turing all'università di Princeton e dopo il dottorato gli propose un posto come suo assistente. Il matematico rifiutò l'offerta e fece ritorno in Inghilterra, dove partecipò al programma di decrittazione dei codici con i quali i tedeschi comunicavano ai sommergibili gli obiettivi militari da colpire, il famoso sistema Enigma. John Von Neuman invece, nel 1953, realizzò con un gruppo di fisici e ingegneri il primo calcolatore programmabile.

Turing visionario?

Secondo Cellucci «Turing è stato un visionario nel senso che immaginò un modello di macchina capace di effettuare calcoli di ogni genere, ed immaginò macchine intelligenti dotate di capacità superiori a quelle dei computer attuali. Come tanti visionari, però, Turing era più a suo agio con i sogni che con la realtà. Infatti, quando si passò alla realizzazione dei primi computer reali, il suo contributo non fu di primo piano».

È certo, però, che a soli 24 anni scrisse uno dei trattati più brillanti e innovativi della sua epoca, influendo sugli studi di chi poi avrebbe effettivamente realizzato la "macchina universale".

# data[].attributes.headline
L'enigma di Alan Turing: una matematica solitudine

# data[].attributes.subject
L'enigma di Alan Turing: una matematica solitudine

# data[].attributes.body
Decrittò i messaggi dei nazisti, inventò l’intelligenza artificiale, fu perseguitato perché omosessuale. Si uccise con una mela avvelenata, come la sua amata Biancaneve, e ancora oggi non si sa se fu suicidio. Ecco chi era il papà dei computer moderni.

Le scuse formulate ad Alan Turing da Gordon Brown a nome dell'Inghilterra hanno apposto un sigillo di ufficialità all'iter col quale, per mezzo secolo, gli ammiratori di questo grande matematico si sono adoperati in ogni modo per riabilitarne il buon nome. Cinquantacinque anni fa, Turing si suicidò nella sua casa di Manchester ingerendo una mela spruzzata di cianuro di potassio  -  un richiamo al suo film preferito, Biancaneve e i sette nani di Walt Disney.

In seguito, il suo nome è stato ripetuto soltanto sottovoce, e in sostanza è stato per lo più fatto sparire dalle storie delle discipline da lui stesso inventate, l'informatica e l'intelligenza artificiale: a mantenere vivo Turing è stato soltanto l'impegno dei suoi estimatori. Il discorso di Brown ha confermato quello che i suoi ammiratori hanno sostenuto per tutto questo tempo: Turing fa parte degli immortali e il suo Paese non avrebbe potuto trattarlo in modo più spregevole.

La sua eccezionale carriera fu contrassegnata dal caso. Nel 1936, quando era studente a Cambridge, assistette a una conferenza nella quale M. H. A. "Max" Newman definì un problema di logica, irrisolto e difficile, come qualcosa da risolvere trovando un "processo meccanico" in grado di mettere alla prova la validità di un assunto matematico. Poiché prendeva le cose alla lettera per eccesso, Turing considerò la definizione "processo matematico" per quello che era testualmente e scrisse una relazione abbozzando la configurazione di un'ipotetica apparecchiatura in grado di svolgere il compito. Quella relazione, destinata a un pubblico ristretto di specialisti, ebbe ripercussioni ben più ampie di quelle che avrebbe potuto immaginare il suo autore, in quanto risultò essere una sorta di progetto introduttivo del computer moderno.

Lo schema delle scoperte casuali si ripeté. Durante la Seconda guerra mondiale, Turing fece parte di un gruppo di scienziati convocati a Bletchley Park per contribuire a decrittare il codice tedesco Enigma, apparentemente inviolabile. Tenuto conto che tale codice era generato da una macchina, decise Turing, soltanto una macchina sarebbe stata in grado di decrittarlo.

Egli andò, quindi, avanti a progettare e costruire un'apparecchiatura - detta la "Bomba" - in mancanza della quale gli Alleati avrebbero potuto perdere la guerra e così facendo contribuì a far compiere un considerevole balzo in avanti alla crittoanalisi.

Dopo la guerra, Turing si trasferì a Manchester, dove prese parte alla creazione di molti dei primi computer funzionanti e dove mise a punto un test con il quale diventava possibile determinare se una macchina poteva essere definita pensante  -  il cosiddetto "test di Turing". In questo modo diede origine a quella che oggi chiamiamo intelligenza artificiale.

Turing si era reso conto di essere gay sin dalla prima adolescenza e in questo non aveva trovato nulla di sbagliato. Se la società nella quale viveva criminalizzava l'omosessualità, era la società a sbagliare - così credeva - non certo gli uomini e le donne che della società erano vittime. Fece pochi sforzi per mascherare o reprimere il proprio desiderio di altri uomini e, quando all'inizio degli anni Cinquanta intraprese un rapporto continuativo con un giovane che aveva incontrato a Manchester, la sua opinione di come doveva essere il mondo si scontrò con la dura realtà di com'era in effetti.

Sospettando che il suo compagno avesse commesso un furto, chiamò la polizia a casa sua. La polizia arrivò e finì coll'arrestare lo stesso Turing, in virtù della cosiddetta blackmailer's charter, che sanciva la perseguibilità di tutti "gli atti di palese indecenza" tra uomini adulti, in pubblico come in privato. Fu in base alle clausole di quella medesima legge - abrogata soltanto nel 1967 - che Oscar Wilde fu condannato ai lavori forzati nel carcere di Reading Gaol. Per evitare il carcere, Turing acconsentì ad essere sottoposto a un ciclo "terapeutico" a base di estrogeni, che avrebbe dovuto "curare" la sua omosessualità: in seguito a tale cura divenne impotente e iniziò a crescergli il seno. Anche al termine del cosiddetto "trattamento", la polizia gli rimase sempre alle costole, interrompendo ogni tentativo di vivere liberamente, perfino nei suoi viaggi all'estero.

Il suo suicidio nel 1954 sconvolse amici e colleghi e resta al centro di molteplici congetture: tenuto conto che all'epoca Turing era considerato un pericolo per la sicurezza, vulnerabile ai ricatti o a tentativi di seduzione da parte di agenti stranieri, è possibile che il suo suicidio fosse una montatura?

In una lettera scritta verso il termine della sua vita all'amico Norman Routledge, Alan Turing compose il seguente sarcastico sillogismo: "Turing crede che le macchine pensino. Turing giace con gli uomini. Di conseguenza le macchine non sanno pensare". In altre parole, ciò che Turing temeva maggiormente era che il suo arresto sarebbe stato preso a pretesto per invalidare le sue idee. Fortunatamente, ebbe torto.

# data[].attributes.headline
Come funziona la crittografia di WhatsApp

# data[].attributes.subject
Come funziona la crittografia di WhatsApp

# data[].attributes.body
WhatsApp ha introdotto un sistema di crittografia end-to-end per le sue chat: significa che tutti i messaggi che mandate o ricevete possono essere visti solo da mittente e ricevente. I messaggi inviati e ricevuti da chi usa la versione di WhatsApp più aggiornata vengono codificati e decodificati quando vengono mandati e ricevuti, e quindi non possono essere letti o visti da nessuno tra il mittente e il ricevente.

Sul suo blog, WhatsApp ha spiegato in cosa consiste e a cosa serve la crittografia end-to-end:

L’idea è semplice: quando mandi un messaggio, l’unica persona che può leggerla è la persona o il gruppo a cui lo hai mandato. Nessun altro può vedere cosa c’è nel messaggio. Non i criminali informatici. Non gli hacker. Non regimi oppressivi. Nemmeno noi. La crittografia end-to-end aiuta a rendere le comunicazioni fatte con WhatsApp private, come quelle che si fanno di persona.

La crittografia dei messaggi riguarda tutte le comunicazioni effettuate tramite WhatsApp, audio o messaggi, e tutti i file inviati, video, foto o file, ma funziona solo se entrambi gli utenti, mittente e destinatario, hanno l’ultima versione dell'applicazione disponibile. La crittografia end-to-end è attiva di default e non sembra, per ora, che ci siano modi per disattivarla.

Se si tocca il messaggio in blu con il dito, appare una nuova finestra di dialogo, che ribadisce il fatto che i messaggi di quella chat siano protetti ed offre tre possibilità: “Ok”, “Conferma” e “Per saperne di più”:

se si sceglie “Ok” si torna alla chat principale;

se si sceglie “Conferma” si ha la possibilità di verificare manualmente che la chat sia effettivamente protetta dalla crittografia. Per fare ciò, WhatsApp permette di confrontare una serie di numeri che appaiono seguendo la stessa procedura su entrambi i dispositivi di quella chat, oppure permette di scannerizzare con uno dei due dispositivi un QR code che si può fare apparire sull’altro dispositivo, sempre toccando il messaggio e scegliendo “Conferma”. È un procedimento macchinoso e, di fatto, non così importante: la crittografia è già attivata anche senza fare nulla;

se si sceglie "Per saperne di più" per ottenere ulteriori informazioni si viene reindirizzati a una pagina sul sito di WhatsApp.

# data[].attributes.body
La funzione hash converte un testo di qualsiasi dimensione in una stringa binaria di lunghezza fissa (in genere 128 o 160 bit) molto più breve del documento stesso: ciò serve a garantire una maggiore efficienza dell’algoritmo di cifratura.

L'hash è l'attuale moderno strumento per la verifica di integrità, nel trasferimento sicuro dei messaggi.

Le funzioni di hash possono essere sfruttate per affrontare i seguenti problemi:

trasferimento sicuro di messaggi;

firma digitale;

memorizzazione sicura di una chiave segreta;

certificazione di una chiave pubblica.

# data[].attributes.body
PGP è l'acronimo di Pretty Good Privacy ("una privacy niente male"), un programma di crittografia a chiave pubblica che permette di scambiarsi informazioni (anche riservate) in modo estremamente sicuro e veloce, ovvero attraverso la posta elettronica. Ma PGP fa anche molto altro: ad esempio, criptare un messaggio per uso "interno" (quindi utilizzando un algoritmo a chiave singola), "firmare" il messaggio (impedendo, in questo modo, delle modifiche da parte di estranei) e codificare un qualsiasi file con il formato "Armor Radix 64" (permettendone l'invio tramite la posta elettronica).

PGP è stato creato da Phil Zimmermann, il quale ha messo a libera disposizione sia il programma compilato sia i sorgenti, cosicché chiunque può visionare, ed eventualmente modificare (se ne è in grado e previa autorizzazione di Zimmermann stesso), il codice di PGP. L'uso di PGP è, pertanto, gratuito per un uso privato e non soggetto a nessuna forma di registrazione (è, infatti, liberamente scaricabile da Internet).

# data[].attributes.body
Il problema principale che affliggeva tutti i metodi di crittografia consisteva nello scambio della chiave, ovvero nel prendere accordi con il destinatario del messaggio su quale codice usare.

Supponiamo, ad esempio, che i due corrispondenti scelgano di scambiarsi messaggi tramite una corda con alcuni nodi particolari. È necessario che i due si incontrino almeno una volta e in gran segreto per concordare la sequenza e il significato dei nodi, altrimenti il messaggio risulterebbe assolutamente incomprensibile. È ovvio che, se lo "scambio della chiave" fosse spiato da qualcun altro, quest'ultimo potrebbe, a sua volta, decifrare i messaggi una volta entrato in possesso della corda annodata, invalidando, in questo modo, l'intero sistema.
Se far incontrare i due corrispondenti poteva essere problematico un tempo (quando, magari, i due abitavano a parecchi giorni di cammino l'uno dall'altro), è praticamente impossibile ai giorni nostri (almeno su vasta scala). Con l'avvento delle reti telematiche, è possibile corrispondere con persone ai quattro angoli del globo: questo problema ha impedito il diffondersi di sistemi di crittografia come, ad esempio, il DES, che usano una sola chiave per codificare e decodificare il messaggio.

Il problema è stato risolto in modo brillante da Whitfield Diffie, in collaborazione con il professor Martin Hellmann della Stanford University, che creò un sistema di cifratura detto "a chiave pubblica".

Il concetto è abbastanza facile da capire: nei sistemi di crittografia usati fino ad allora la "password" era unica, sia per codificare sia per decodificare il messaggio. Con i sistemi a chiave pubblica, le chiavi sono due, una per codificare e una per decodificare. Entrambe sono generate dal programma quando l'utente glielo chiede, e sono univoche, ovvero non possono essere utilizzate per lo scopo inverso, ed è praticamente impossibile ottenere l'una quando si è in possesso solo dell'altra.
Fatto ciò, basta rendere pubblica la chiave per codificare e tenere ben nascosta quella per decodificare. In questo modo, chiunque voglia mandarmi un messaggio potrà farlo, stando certo che io (e solo io) potrò leggerlo. Anzi, potrà a sua volta mandarmi, magari nella stessa mail, la sua chiave pubblica, così che io possa rispondergli in modo assolutamente sicuro.

Ed è proprio partendo da questo principio che è nato PGP, il quale consente di generare una coppia di chiavi, in congiunzione biunivoca tra loro, e di rendere pubblica ove si vuole la chiave per decodificare (anzi, più viene pubblicizzata e meglio è) trattenendo per sé la chiave privata. Anzi, mi permette di fare anche molto altro: ad esempio, mi permette di lasciare un messaggio "in chiaro" e di "firmarlo" elettronicamente con la mia chiave privata (in gergo si dice che si effettua "l’hash" di un messaggio). Chiunque possegga la mia chiave pubblica potrà chiedere al programma di verificare che il messaggio riportato nel testo sia effettivamente quello che ho scritto io e che non sia stato modificato da altri.

# data[].attributes.body
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 un carattere della chiave, ottenendo il testo criptato.

È facile intuire che un testo criptato in questo modo è 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 militari, 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, utilizzato nelle trasmissioni telegrafiche, usava lunghi nastri di carta contenenti dei bit casuali, i quali erano aggiunti ai bit del messaggio originario.

Il sistema a rotore prende il nome dalla macchina elettromeccanica tedesca ENIGMA usata durante la Seconda guerra mondiale. Essa era composta da ruote con i caratteri incisi sul bordo e con contatti elettrici in corrispondenza delle lettere in entrambi i lati. Il testo in chiaro, digitato su una tastiera, veniva riprodotto utilizzando i caratteri di una ruota, la quale a sua volta veniva "rimappata" utilizzando i caratteri della seconda, e poi della terza, e così via. Tutti i rotori venivano "scalati", in modo che la sostituzione delle lettere fosse ogni volta diversa.
La chiave consisteva nel settaggio iniziale dei rotori, che potevano essere posizionati in milioni di combinazioni diverse. Questo meccanismo è facile da costruire via software e abbastanza sicuro, tuttavia può essere infranto.

Nel 1977, il National Bureau of Standard ha promulgato il DES (Data Encryption Standard) come il sistema di crittografia usato da tutte le agenzie federali (fatta eccezione per quegli atti che richiedevano un livello più alto di sicurezza). Il DES è disponibile in una pubblicazione governativa e anche in diversi libri. In origine era stato implementato solo in hardware, probabilmente per impedire una modifica delle sue tabelle interne, ma più tardi è stato implementato anche via software, tanto che esso ora è disponibile in parecchi pacchetti commerciali (come le famosissime Norton Utilities).

Il DES è un algoritmo di cifratura composta che usava 16 passaggi di permutazione e sostituzione su blocchi di 64 bit ciascuno. Le tabelle di permutazione sono fisse e la sostituzione è determinata dai valori di una chiave lunga 56 bit e dai blocchi del messaggio.
Proprio la relativa brevità della chiave ha indotto alcuni esperti a credere che il DES potesse essere violato con relativa facilità (cosa che, poi, è effettivamente accaduta). Il DES completo a 16 passaggi è stato attaccato con qualche successo da Biham e Shamir (uno dei creatori dell'algoritmo RSA, insieme a Rivest ed Adleman) con l'uso della criptoanalisi differenziale, e da Matsui con l'uso della criptoanalisi lineare. Tuttavia, il più devastante attacco pratico portato al DES è stato descritto alla conferenza Crypto '93, dove Michael Wiener del Bell Northern Research ha presentato un documento sull'apertura del codice DES con una macchina speciale. Egli aveva sviluppato e verificato un chip che provava 50 milioni di codici DES al secondo, fino a trovare quello giusto.
Sebbene finora egli si sia astenuto dal produrre il componente in serie, può ottenerne la produzione per 10.50 $ al pezzo e può inserirne 57000 in una macchina speciale con un costo di 1 milione di dollari. Questa macchina può provare tutte le chiavi DES in 7 ore, ottenendo la soluzione mediamente in 3,5 ore. Si può stornare e nascondere 1 milione di dollari dal budget di molte società. Spendendo 10 milioni di dollari la soluzione è ottenuta in 21 minuti, e 100 milioni di dollari assicurano un tempo di 2 soli minuti. Avendo a disposizione il budget di un qualunque governo per esaminare il traffico DES, il codice può essere violato in alcuni secondi. Tutto questo significa che il DES a 56 bit è ormai morto per ciò che riguarda le applicazioni serie di sicurezza dei dati.

Un possibile successore del DES potrebbe essere una variazione conosciuta come triplo DES, che usa due chiavi DES per cifrare tre volte, raggiungendo una lunghezza effettiva della chiave di 112 bit. Questo sistema, però, è tre volte più lento del DES normale.

PGP usa una combinazione di diversi algoritmi, nella fattispecie RSA (crittografia a chiave singola), IDEA (crittografia a chiave pubblica) e MD5 (funzione di hash crittografico, ovvero di verifica della firma).
Le routines MD5 sono state sviluppate e rese di pubblico dominio da Ron Rivest.
La cifratura IDEA utilizza blocchi di 64 bit per il testo sia in chiaro che cifrato. Essa utilizza una chiave di 128 bit ed è basata sulla filosofia della miscelazione di operazioni da diversi gruppi algebrici. È molto più veloce del DES e, come il DES, può essere usata in modo CFB (cipher feedback) o CBC (cipher block chaining): PGP usa l'IDEA in modo CFB a 64 bit.

La cifratura a blocchi IPES/IDEA è stata sviluppata all'ETH di Zurigo da James L. Massey e Xuejia Lai, e pubblicata nel 1990. I primi documenti pubblicati chiamavano l'algoritmo IPES (Improved Proposed Encryption Standard), ma più tardi il nome è stato cambiato in IDEA (International Data Encryption Algorithm).
Finora, IDEA ha resistito agli attacchi molto meglio di altri algoritmi come FEAL, REDOC-II, LOKI, Snefru e Khafre. Prove recenti fanno ritenere che l'IDEA sia anche più resistente del DES agli attacchi portati da Biham e Shamir con la loro efficientissima criptoanalisi differenziale. Biham e Shamir hanno esaminato a fondo l'IDEA per trovare debolezze, senza successo. Gruppi accademici di criptoanalisti in Belgio, Inghilterra e Germania stanno cercando di attaccare l'IDEA, così come i servizi militari di diversi Paesi. Man mano che questo nuovo algoritmo attira le attenzioni e gli sforzi dei più formidabili gruppi del mondo della criptoanalisi, la fiducia in esso cresce col passare del tempo.

# data[].attributes.body
La potenza dei computer moderni può aiutare moltissimo il criptoanalista, ma molti sistemi che possono sembrare estremamente sicuri possono essere infranti semplicemente con carta e penna. Per esempio, la famiglia Vigenère di cifratura polialfabetica è stata creduta inviolabile fino alla fine del XIX secolo.

Una cifratura polialfabetica consiste nell'uso di un secondo alfabeto per sostituire le lettere del testo in chiaro. In questo sistema, la chiave determina l'ordine in cui devono venire scambiate le lettere e il ciclo viene ripetuto con una periodicità pari alla lunghezza della chiave. Questa periodicità è un indizio fatale, infatti il criptoanalista applica uno schema di questo tipo: "a cifra uguale corrisponde lettera uguale, e a blocco uguale corrisponde parola uguale". In questo modo si evidenzia la lunghezza della chiave. Una volta conosciuta la lunghezza della chiave possiamo applicare le tabelle di frequenza di lettere di un linguaggio per iniziare a ipotizzare quale potrebbe essere la chiave.
Questo tipo di cifratura Vigenère può essere facilmente implementata su un moderno computer, ma ormai essa è ritenuta troppo "debole" per gli scopi attuali.

Il codice di Vigenère è stato ripreso durante la Prima guerra mondiale ed ha ispirato il cifrario di Vernam, a detta di molti il cifrario perfetto, basato su due assiomi: l'impiego di una chiave lunga come il testo e non riutilizzabile in seguito.

# data[].attributes.body
Per criptoanalisi si intende l'analisi del testo cifrato nel tentativo di decodificare un messaggio codificato da altri e del quale non si possiede la chiave.

I metodi di attacco possono variare da una complicata analisi statistica del testo criptato fino a penetrare in casa del soggetto, o nel suo ufficio, e rubargli (o copiargli) la chiave (questo approccio si definisce criptoanalisi pratica).
NON vi sono regole di fair-play: il criptoanalista è libero di usare tutte le armi in suo possesso per scoprire la vostra chiave, anche la vostra ingenuità, che di solito si rivela l'arma migliore.

Il criptoanalista potrebbe avere solo il testo criptato su cui lavorare, oppure avere sia il testo criptato sia quello in chiaro corrispondente. Alcuni sistemi crittografici sono abbastanza buoni se l'analista dispone solo del testo criptato, mentre falliscono completamente se è disponibile sia il testo criptato sia quello in chiaro. Alcuni si chiederanno: "Ma se l'analista ha già il testo in chiaro, perché perdere tempo per ottenere la chiave?". Semplice: perché, avendo la chiave, egli potrà decodificare tutti i vostri messaggi, anche quelli di cui non dispone del testo in chiaro. Il vostro sistema, quindi, dovrebbe essere abbastanza robusto da resistere ad entrambi gli attacchi, sia quelli portati al solo testo criptato, sia quelli condotti al testo criptato e al testo in chiaro.

# data[].attributes.body
La prima considerazione nella sicurezza di un sistema di crittografia riguarda la lunghezza della chiave. Se noi usiamo una chiave troppo corta (se comparata alla lunghezza del testo in chiaro) molto probabilmente l'algoritmo da noi usato, arrivato ad un certo punto della codifica, dovrà ripetere dei caratteri, o delle sequenze di caratteri, fornendo così uno schema che il criptoananlista potrebbe sfruttare per compiere il suo lavoro. Se la cosa dovesse ripetersi molte volte il criptoananalista potrebbe avere abbastanza materiale in mano per poter ottenere la nostra chiave.

Un altro fattore importante da tenere in considerazione è il numero di chiavi che il mio algoritmo ammette. Se il mio algoritmo ammettesse, ad esempio, 10000 chiavi, io posso stare certo che un "nemico" dotato di mezzi di calcolo anche modesti potrebbe provarle tutte in un lasso di tempo accettabile, vanificando il mio sistema di crittografia. Questo approccio (ricerca esaustiva su tutte le chiavi possibili) viene chiamato approccio di "forza bruta". Questo introduce il concetto del "fattore lavoro", necessario per rompere un sistema di crittografia.

In linea di principio un sistema sicuro in assoluto NON esiste. Ma se noi possiamo fare in modo che il fattore lavoro necessario per romperlo sia il più alto possibile, molto probabilmente ci saremo messi al riparo dalla grande maggioranza degli attacchi. Anche perché il nostro avversario, prima di lanciarsi nel tentativo di decodifica di un sistema complesso, molto probabilmente eseguirà un bilancio costi-benefici: se il beneficio che esso potrà avere dalla decodifica del nostro messaggio è inferiore allo sforzo (anche economico) che deve sostenere per decodificarlo (o per tentare di farlo), molto probabilmente lascerà perdere.

# data[].attributes.body
L’obiettivo è quello di tradurre il linguaggio del testo in chiaro in un nuovo "linguaggio" che non può essere compreso e/o tradotto senza le informazioni supplementari fornite dalla chiave.

A chi è familiare il concetto di entropia in fisica potrà essere sorpreso di scoprire che questo concetto è utile anche in crittografia. L'entropia è la misura della quantità di disordine in un sistema fisico, o della relativa assenza di informazione in un sistema di comunicazione.
In un linguaggio naturale, come potrebbe essere l'italiano, l'entropia è bassa, in quanto vi è ridondanza e una certa regolarità statistica nei termini e nei caratteri. Infatti, se alcuni dei caratteri di una frase sono persi o incomprensibili, riusciamo a ricostruire la frase, con una buona approssimazione, nella grande maggioranza dei casi.
Inversamente, noi vogliamo che il nostro testo criptato abbia la più alta entropia possibile, al fine di renderne il più difficile possibile la decodifica. Idealmente il nostro testo dovrebbe apparire come una serie di lettere o simboli casuali (random): il nostro principio guida sarà, dunque, quello di aumentare il più possibile l'incertezza del criptoanalista.

# data[].attributes.body
Ogni sistema di crittografia ha due parti essenziali: un algoritmo (per codificare e decodificare) e una chiave, la quale consiste di informazioni che, combinate con il testo "in chiaro" passato attraverso l'algoritmo, vi darà poi il testo codificato.
In ogni moderno sistema di crittografia si assume che l'algoritmo sia conosciuto dai potenziali "nemici", quindi la sicurezza di un sistema risiede solo ed esclusivamente nella segretezza della chiave.

# data[].attributes.body
I sistemi di cifratura possono lavorare per trasposizione (mescolando i caratteri di un messaggio in un nuovo ordine), per sostituzione (scambiando un carattere con un altro carattere in accordo con una regola specifica), o una combinazione di entrambi.
Nel linguaggio corrente la trasposizione è anche chiamata permutazione; una cifratura che implementa entrambe le tecniche (trasposizione e sostituzione) è chiamata "cifratura composta". In linea di massima una cifratura composta è più sicura di una cifratura basata solo su sostituzione o su trasposizione.
Shannon (l'inventore della teoria dell'informazione) paragona la sostituzione alla "confusione", perché l'output è una funzione non lineare dell'input. Egli, inoltre, ha paragonato la trasposizione alla "diffusione" poiché estende la dipendenza dell'output da un piccolo numero di posizioni dell'input ad un grande numero.

# data[].attributes.body
Il termine deriva dall'unione di due parole greche: κρυπτóς [kryptós] che significa "nascosto", e γραφία [graphía] che significa "scrittura".

Per crittografia si intende quella tecnica che permette di cifrare un messaggio rendendolo incomprensibile a tutti fuorché al suo destinatario.

In generale, i principali processi che vengono applicati in crittografia si dividono in cifratura e codifica: la cifratura lavora sulle lettere "individuali" di un alfabeto, mentre la codifica lavora ad un livello semantico più elevato, come può essere una parola o una frase.