La CRITTOGRAFIA

 

    INDICE:

 

    La crittografia

 

LA CRITTOGRAFIA

CRITTOGRAFIA: Insieme delle tecniche che consentono di realizzare la cifratura di un testo e la decifratura di un crittogramma; l'arte dell'applicazione di tali tecniche.

   Le origini

L'arte della scrittura cifrata ha alle spalle circa 4000 anni di storia. Se lo scriba Menet 

Khufu avesse avuto un'idea delle guerre e delle tragedie che la sua nuova tecnica di scrittura avrebbe scatenato, probabilmente non l'avrebbe resa pubblica. La sua idea consisteva nel sostituire i normali geroglifici con dei simboli dell'alfabeto cuneiforme.

Iniziò così la storia della crittografia, arte che fu successivamente raffinata da Babilonesi, Assiri, Greci, Romani ed Arabi.

 

Inizialmente però la crittografia non fu applicata a scopi seri: lo scambio di messaggi cifrati rappresentava un passatempo elegante. Anche i poeti si servivano della crittografia come espediente tecnico ed esistono poemi a tutt'oggi indecifrati.

 

Il racconto delle vicende di Enea, l'eroe della guerra di Troia, contiene la descrizione di una tecnica crittografica che è rimasta in uso fino al secolo scorso: praticare dei piccoli fori sopra o sotto le lettere del messaggio segreto, inglobato in una lettera o in un testo più lungo. Anche Cesare ha contribuito personalmente allo sviluppo delle tecniche crittografica, e tra i tanti alfabeti cifranti c'è uno che porta il suo nome.

 

Solo a partire dal Rinascimento la crittografia ha però iniziato ad essere sfruttata come arma politica. In questo periodo la maggior parte degli esperti era a Roma, al servizio dei papi. Nel 1894, mentre A. Dreyfus veniva processato per alto tradimento, la difesa presentò come prova a favore un telegramma che venne intercettato e decifrato, ma non fu accettato. All'epoca della seconda guerra mondiale, i tedeschi si servivano di un vero e proprio dispositivo portatile crittografico, si trattava del famoso Enigma Code.

    Gli sviluppi

Tra le tante "rivoluzioni" del XX secolo ce n'è una per sua stessa natura poco visibile ma di grande importanza, quella che ha sconvolto la crittografia (o crittologia). Quella che fino a pochi anni fa era una tecnica conosciuta e praticata solo da una piccola cerchia di iniziati per motivi militari e diplomatici, è oggi entrata nella vita di tutti i giorni.

Oggi l'utente del Bancomat, quello di una pay-tv e chi effettua acquisti su Internet con la carta di credito fa uso, spesso senza rendersene conto, di tecniche crittografiche. Nel XX secolo la crittografia ha in effetti subito una vera e propria rivoluzione; dapprima con l'uso di macchine cifranti sempre più sofisticate, basti ricordare la celebre macchina Enigma usata dai tedeschi nella seconda guerra mondiale, ma soprattutto con l' avvento dei computer che ha di colpo resi inaffidabili e superati quasi tutti i suoi metodi e costretto i crittologi a escogitare nuove tecniche; tecniche che devono ad un tempo sfruttare le nuove tecnologie ed essere al sicuro dagli assalti esaustivi che queste stesse tecnologie rendono possibili.
    Il significato

La crittografia è un sistema sofisticato per far viaggiare nella rete delle informazioni private, al riparo da occhi e orecchie indiscrete che potrebbero intercettarlo. Cifrare è, infatti, una parola proveniente dal greco cryptos, che significa nascosto. Per proteggere un messaggio il mittente trasforma il testo originale (plaintext) in un messaggio criptato (ciphertext). Il ciphertext viene trasmesso attraverso il canale di comunicazione. Se il messaggio viene intercettato, l'intruso non è in grado di ricostruirlo; solo il destinatario è in grado di riportarlo nella forma originale.

Queste due operazioni sono dette rispettivamente cifratura e decifratura.

    I principali termini

La scienza delle scritture segrete si chiama Crittologia e si divide in due grandi branche la Crittografia e cioè l'arte di scrivere messaggi che siano segreti e quindi indecifrabili dal nemico e la Crittanalisi che è viceversa l'arte di decrittare i messaggi segreti. E' molto diffuso, ma non del tutto corretto, usare il termine Crittografia come sinonimo di Crittologia.

All'origine di questa scienza è il desiderio o la necessità di rendere segreta la corrispondenza o un semplice messaggio, mediante un codice convenzionale. Si pensi, infatti, a quali conseguenze potrebbero verificarsi se delle notizie importanti cadessero nelle mani sbagliate durante una guerra ... o semplicemente al giorno d'oggi, quando spionaggio industriale, speculazioni e contraffazioni di denaro elettronico sono ormai fenomeni da cui doversi difendere. Ecco che un prodotto o codice di tipo crittologico può essere la via giusta per una protezione adeguata.

Il doversi difendere da occhi ed orecchie indiscrete, era un problema molto sentito già nell'antichità, e quindi sembra assurdo che la documentazione e la letteratura storica riguardo tale materia siano piuttosto scarse, anche al giorno d'oggi, quando la crittografia è ormai una moda, tanto da comparire perfino nei giochi d'enigmistica.

    I termini corretti

Il campo della crittografia, solo di recente balzato all’attenzione del grosso pubblico e degli organi di informazione, soffre purtroppo dell’uso di termini errati o imprecisi, spesso modellati maccheronicamente dai tecnici sui corrispondenti termini inglesi. Ma la crittografia è una disciplina che affonda le sue radici storiche in Italia  e dunque

dispone di un nutrito ancorché corretto insieme di termini che vale la pena di usare quando opportuno.

E dunque bando agli anglicismi "crittare" o peggio ancora "encrittare", modellati

sull'inglese "to encrypt": il verbo corretto è "cifrare" o "mettere in cifra"; mentre l'azione del cifrare si chiama "cifratura", non "crittazione" o "crittografazione". Il sistema di crittografia si chiama semplicemente "cifrario", mentre il messaggio risultante dalla cifratura è un "testo cifrato", in contrapposizione al "testo in chiaro" che è l'originale. La "chiave" è invece la particolare parola, o frase, utilizzata per applicare ad un testo chiaro le regole del cifrario per produrre un testo cifrato. L'operazione inversa alla cifratura si chiama "decifratura" e, attenzione, non è la stessa cosa della "decrittazione"! Fra "decifrare" e "decrittare" vi è infatti una differenza sostanziale: chi decifra è infatti colui il quale è legittimamente in possesso della chiave del cifrario, e la applica secondo le corrette regole per mettere in chiaro un testo cifrato a lui regolarmente destinato. Chi decritta, invece, è un estraneo che non è affatto in possesso della chiave, ma tenta fraudolentemente di venire a conoscenza del contenuto di un testo cifrato a lui non destinato utilizzando sistemi indiretti.

    Algoritmi

Attraverso Internet viaggiano ormai sempre più spesso informazioni riservate, la cui protezione richiede tutte le attenzioni normalmente dedicate ai corrispondenti documenti cartacei.
Scambi di posta elettronica, operazioni bancarie e commerciali dal proprio pc rappresentano dei progressi telematici ormai alla portata di mano di qualsiasi cittadino. Un'evoluzione dei tempi che però trascina con sé i rischi che altri individui entrino in possesso dei nostri segreti e dei nostri soldi. La protezione della segretezza digitale diventa allora una delle sfide più grandi che si trovano a dover affrontare quei paesi che stanno investendo nella comunicazione a distanza.


Il passaggio da tali documenti tradizionali al relativo documento elettronico deve venire gestito in maniera tale da conservare, ed eventualmente migliorare, le tradizionali politiche di sicurezza al fine di consentire un sistema di comunicazione sicuro.
La scienza che si occupa di effettuare questa trasposizione, la crittografia, offre una controparte elettronica a tutti i dispositivi e le procedure tradizionalmente adottati. La crittografia moderna si occupa della individuazione e messa a punto di dispositivi di sicurezza o algoritmi per i documenti elettronici, in maniera del tutto analoga ai corrispondenti documenti cartacei, che vanno ben oltre l'individuazione di un semplice codice di cifratura per proteggere i propri dati.

    Definizione di chiave

Gli algoritmi utilizzati per la cifratura e la decifratura del documento sono delle funzioni matematiche che oltre al messaggio stesso, hanno come argomento quella che viene definita chiave. La chiave è infatti un insieme di parametri (tipicamente una famiglia di numeri casuali grandi) con cui si completa l'algoritmo il quale potrebbe anche essere reso pubblico, l'importante è mantenere la segretezza della chiave.

La chiave deve dunque essere trasmessa mediante un  canale sicuro. La sua distribuzione diventa un problema serio quando si deve mantenere la privatezza su una rete estesa.

    Algoritmi basati su chiavi private (o simmetriche)

La crittografia classica si basa sull’uso di chiavi simmetriche, ovvero chiavi uguali utilizzate sia per la cifratura che per la decifratura del testo.

Se l’utente A vuole comunicare con B, insieme devono concordare un algoritmo di cifratura ed una chiave K.  Se A vuole trasmettere un messaggio riservato a B dovrà cifrarlo usando l’algoritmo e la chiave prescelta, in questo modo il testo sarà trasformato in una sequenza incomprensibile di caratteri. L’utente B potrà decifrare il testo utilizzando lo stesso algoritmo e la stessa chiave.

 

Tali algoritmi hanno però diversi problemi:

    Algoritmi basati su chiavi pubbliche (o asimmetriche)

Questo tipo di algoritmi garantiscono maggiormente:

Essi si basano sull’uso di una coppia di chiavi l’una pubblica e l’altra privata, le quali possono essere utilizzate indifferentemente per la cifratura o la decifratura.

A seconda dell’uso che ne viene fatto, si potrà garantire la riservatezza e l’autenticità dei dati trasmessi.

 

Il sistema a chiave asimmetriche ha i seguenti vantaggi:

    Come si garantisce la riservatezza e l'autenticità

Per garantire la riservatezza, se l’utente A vuole trasmettere un documento che deve rimanere riservato, cioè comprensibile solamente a B, dovrà cifrare il documento con la chiave pubblica del destinatario così che, l’unica persona in grado di decifrarlo sarà proprio il destinatario del messaggio (in quanto solo lui possiede la sua chiave privata ed un messaggio cifrato con chiave pubblica può essere decifrato solo con la corrispondente chiave privata). 

Invece, se l’ utente A vuole garantire l’autenticità del documento da lui trasmesso, ovvero vuole garantire al destinatario che quel documento proviene effettivamente da lui, dovrà cifrarlo con la propria chiave privata ed inviarlo insieme al documento originale al destinatario. Il destinatario potrà a sua volta verificarne la provenienza confrontando il messaggio originale con quello decifrato tramite chiave pubblica del mittente (ciò basta a garantire l’autenticità perché il mittente è l’unico a conoscere la propria chiave privata ed un messaggio cifrato con chiave privata può essere decifrato solo con la corrispondente chiave pubblica).


Ovviamente queste due modalità si potranno utilizzare congiuntamente nel caso in cui si voglia garantire contemporaneamente riservatezza e autenticità.

La chiave pubblica degli utenti sarà resa disponibile a tutti coloro che la necessitano e da essa non si potrà in alcun modo risalire alla corrispondente chiave privata. Le chiavi non devono essere troppo corte perché in tal caso il processo di decifrazione sarebbe favorito dalle potenze di calcolo ormai molto elevate.

 

Con chiavi di 200 cifre la ricostruzione della a partire da quella pubblica è praticamente impossibile in tempi ragionevoli anche per il più potente dei computer oggi esistente.

    L'avvento del computer

L'avvento del computer ha rivoluzionato la crittografia per vari motivi:

Molti cifrari considerati sicuri fino al XX secolo, si prestano ad attacchi esaustivi da 

parte del computer. Se per esempio la sicurezza di un codice si basa su una parola chiave di otto caratteri alfabetici maiuscoli, il numero di chiavi possibili è di 268 che vale 

circa 200 miliardi; provare 200 miliardi di chiavi è pura follia per un essere umano, ma 

non è fuori dalla portata di un computer; persino il DES che si basa su una chiave a 56 bit (256 chiavi possibili, un numero con sedici cifre decimali!) non è più considerato sicuro e si sta affermando un DES a 128bit, la velocità di calcolo del computer cresce in continuazione e questo rende sempre più deboli codici basati su chiavi brevi.

 

In passato non era possibile utilizzare metodi crittografici troppo complessi, che avrebbero comportato tempi di cifratura inaccettabilmente lunghi. Il computer può effettuare migliaia di calcoli in frazioni di secondo e questo rende utilizzabili in pratica metodi come RSA o DES che non potrebbero mai essere usati "a mano".

La crittografia è divenuta essenziale anche nelle comunicazioni tra computer; per esempio, quando chiediamo denaro contante a un bancomat, la nostra richiesta viene inoltrata tramite linea telefonica ed è indispensabile che non venga intercettata da terzi

 

Situazioni di questo genere mal si adattano ai mezzi della crittografia tradizionale; questi infatti richiedono che mittente e destinatario si accordino preventivamente sul metodo e sulla chiave di cifratura, cosa che richiede un canale di comunicazione assolutamente sicuro.

    Sistemi crittografici

I sistemi di crittografia tradizionali sono di due specie: i sistemi alfabetici e i sistemi a codice.

 

I sistemi alfabetici comprendono essenzialmente due metodi: quello della sostituzione e quello della trasposizione.

  1. Il metodo della sostituzione consiste nel sostituire a ciascuna lettera del testo una lettera, una cifra o un segno convenzionale che le corrisponde regolarmente. Il procedimento più semplice era quello di Cesare. Siccome la chiave di tale cifratura è facile a scoprire, si utilizza un alfabeto incoerente, cioè un alfabeto in cui l'ordine delle lettere è stato variato a caso. La corrispondenza fra i due testi è data mediante una chiave (parola o numero) inclusa nel testo crittografico.

  2. Il metodo della trasposizione consiste nel cambiare di posto ciascuna lettera del testo secondo un ordine convenzionale ottenuto per mezzo di una parola chiave, come ad esempio nel metodo di Vigenere.

I sistemi a codice consistono nello stabilire per ciascuno dei corrispondenti un codice, o dizionario — in cui ogni parola (o espressione) porta a fianco un numero (codice cifrante) — e un codice in cui sono riportati in ordine di successione i numeri (contenuti nel codice cifrante) a lato dei quali è riportata la parola corrispondente (codice decifrante).

Questo sistema è molto usato nelle operazioni militari; per renderlo più sicuro i testi cifrati sono sottoposti a sovracifratura, cioè ogni numero ricavato dal codice (in genere di quattro o cinque cifre) è alterato secondo un sistema convenzionale definito da uno o più gruppi di cifre (chiave) posti in posizione convenuta.

 

Oggi si impiegano, di frequente, macchine cifranti che forniscono rapidamente l'esatto testo cifrato secondo una chiave inserita mediante convenzione. A volte le macchine cifranti sono collegate direttamente ai mezzi di trasmissione o incorporate in essi.

 

Esistono inoltre altri sistemi, i più moderni, che si basano su quelle che potremmo chiamare "funzioni pseudounidirezionali". Una funzione pseudounidirezionale è una funzione facilmente computabile, la cui inversa non può essere computata a meno che non si posseggano certe informazioni particolari utilizzate nella sua costruzione, che fungono da parola d'ordine o da "molla segreta".

La ricerca di funzioni pseudounidirezionali conduce a quella classe di problemi che la teoria della complessità ha caratterizzato come non-deterministici o problemi NP. Ai fini dei crittosistemi la proprietà di maggiore interesse dei problemi NP è data dal fatto che attualmente tutti gli algoritmi noti, atti a darne una soluzione generale, richiedono un tempo di calcolo che cresce rapidamente benchè il controllo di una particolare soluzione proposta si compia velocemente.

Questi problemi si presentano ottimamente alla costruzione di funzioni unidirezionali, inoltre è stato possibile introdurre nelle funzioni certe molle segrete; uno dei più conosciuti algoritmi che si basa su un problema NP (la fattorizzazione di un numero grande in numeri primi) è l'RSA.

    Protocolli crittografici

Un protocollo crittografico in generale non specifica gli algoritmi da usare nei vari passi, ma piuttosto:

Esistono vari protocolli crittografici, che si differenziano per:

Vedremo ora alcuni protocolli che rivestono un particolare interesse in un contesto come quello del Web, dove è possibile aver bisogno di autenticazione e segretezza nel dialogo con entità mai conosciute prima.

 

Un primo problema da affrontare e risolvere mediante un protocollo crittografico è il seguente: in un contesto distribuito come il Web, è impensabile che ogni potenziale coppia di comunicatori disponga di una chiave segreta. Dunque, bisogna trovare un protocollo per concordare, all'inizio della sessione, la chiave segreta da usare durante il resto della sessione, detta per questo chiave segreta di sessione.

Un protocollo di per se molto semplice sfrutta la crittografia a chiave pubblica:

  1. Mr. X invia la sua chiave pubblica a Mr. Y;

  2. Mr. Y genera una nuova chiave segreta, la cifra con la chiave pubblica di Mr. X e la invia a Mr. X;

  3. Mr. X riceve la chiave segreta (cifrata) e la decifra con la propria chiave privata;

  4. Mr. Y e Mr. X a questo punto condividono la chiave segreta di sessione per mezzo della quale possono comunicare in tutta sicurezza.

Per evitare problemi derivanti dalla possibilità che Mr. X esegua un replay attack (cioè invii duplicati di tutto ciò che intercetta) la chiave segreta di sessione deve essere ogni volta diversa. Di norma la si calcola per mezzo di un generatore di numeri casuali, che deve essere progettato molto accuratamente .

    Utilizzo delle funzioni HASH

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:

Una problematica legata a quella del trasferimento sicuro di messaggi è quella della loro verifica di integrità. 

E' nel caso di firma digitale, però, che l'hash si rivela, per questioni computazionali,

indispensabile.

L'hash si rivela utile per la memorizzazione di chiavi segrete (passo presente anche nelle problematiche di certificazione).