Introduzione alla Crittografia


«Aldo dice ventisei per uno» è il messaggio in cifra che partì da "Radio Londra" nel 1945 e che diede inizio alla insurrezione partigiana nel continente europeo all'indomani della decisione di iniziare la lotta armata contro il nazismo. Questo è un semplice esempio dell'importanza storica (e non solo) che riveste la comunicazione cifrata nella storia della società di cui la crittografia è un esempio specifico e significativo.

«6accdae13eff7i319n404qrr4s8t12vx» è la versione cifrata del materiale sottoforma di codice che Isaac Newton scrisse per nascondere, sottoforma di una forma di brevetto, la sua scoperta del calcolo infinitesimale. Questo codice una volta tradotto è stato interpretato come: «data una qualunque equazione con un qualsiasi numero di quantità fluenti, trovare le flussioni e viceversa».

Che cos'è la Crittografia Ecco un esempio di testo crittografato:

Misura del livello di crittografia

Nella sua Introduzione, l'enciclopedia on-line Encarta a proposito della Crittografia dice testualmente: «Crittografia è la Scienza che si occupa dell'elaborazione di sistemi di scrittura segreti, comprensibili solo a chi è a conoscenza del codice, vale a dire del metodo per ricavare il significato nascosto di un testo apparentemente incoerente». Nel suo senso più ampio, la crittografia comprende messaggi nascosti, cifrati e in codice. I messaggi nascosti, una volta scoperti, sono generalmente i più semplici da decifrare. Ne sono un esempio i messaggi scritti con inchiostri invisibili (inchiostri simpatici). Quelli in codice invece, in cui parole e frasi sono rappresentate da combinazioni predeterminate di lettere, numeri e simboli, sono impossibili da leggere in mancanza del relativo cifrario".(1)

(1) "Crittografia," Enciclopedia Microsoft® Encarta® Online 2001
http://encarta.msn.it © 1997-2001 Microsoft Corporation. Tutti i diritti riservati.


-----BEGIN PGP MESSAGE-----
Version: PGPfreeware 6.5.1 for non-commercial use <http://www.pgp.com>

qANQR1DBwU4DIa/ofHJOYkQQB/9HpRPOmbKnO8J33vmNjI7zzaNaFCnZv4SPr/pP
Np2N/FWprpOWupiSCiX7XTbDFzswYYwEqE0hYo+dBMw5rWS5UtJv0LVmE7SIixww
zzNxG5Mz+TuzQsxsS/STRqWABJ6d6vu8x9vPKQH/NQZ25ahU6E3f80kKKNe8hKvD
1VKUbDtv6BZzqPnyU5QtqgZzWcAooE0qQhKyg4gqKZer+2ErRvrDTBVAooWXjZ8J
reb/+wsN07sQmT13+9+ur7KC/Eka0Ef2fVWSXih/+8T74QB8+0uZZzQSx+fqg6Z5
HGD4Smb8RRBBgM+0t7QFRCnBBtN3K/N9T4LesQKTNZ0sA6e3CACe9c616kXUi2SK
ytgTtQPqQH3J27JQLvnvprUQPewM4ZVQnrgtGBVzxETyhIdYAtCJdNSzlgRfh8lB
g51X4uA9VCzOPxqzuuhPUPJ9FU6nercN+4+ObbFND7/M/UmQuXrkF+TtwD12lWAl
gLPtUFNWK3mlWKHEdmKdK1kO112jSo7AINURlGQfs5Cc2pplIxU8q4BMSpsZQNNL
morbLO32f68XdPg1vjpLTGiFgIXDXAWeAeVgZ/iSBSY6rT49X8yzE/D+7hqzaaAP
j5BpKlKNN3VvNn5R4GJiov5Ng+xKhd+Ddosxw9uNLDrOhQSVacZGJYvh/cdZL70O
gKpDWS3ZySKXGxBKWnqDDQDt3DmHRMZgIpYRKLXtfDIQWSyd5r5xBQ52
=nucC
-----END PGP MESSAGE-----

La crittografia viene misurata attraverso l'uso del numero di bit necessario all'algoritmo per crittografare un testo. Esistono livelli standard di crittografia a 40 bit, e livelli forti a 128 bit. 
A 40 bit, significa che per ogni carattere digitato vengono calcolate 240 possibili combinazioni ovvero circa 1.000.000.000.000 di combinazioni. 
A 128 bit, significa che per ogni carattere vengono calcolate 2128 possibili combinazioni ovvero approssimativamente 100.000.000.000.000.000.000.000.000 combinazioni. 
A cosa serve la crittografia?

Cos’è dunque e come funziona la crittografia? 
La crittografia è quel sistema che trasforma tutte le informazioni in una stringa di numeri non identificabili.
I codici numerici vengono calcolati con formule matematiche, dette algoritmi, interpretabili solo da programmi ben determinati.
Gli algoritmi impediscono l’accesso alle informazioni a chi non è autorizzato. I programmi di cifratura permettono di trasformare un messaggio dal testo in chiaro a quello crittografato. 

 

 

 

È una tecnica di codifica di dati che vengono trasmessi attraverso un canale telematico. Serve per evitare che utenti non autorizzati possano leggere e modificare le informazioni che viaggiano in rete mediante pacchetti di bit.

La crittografia fornisce gli strumenti a questo scopo. In particolare si prefigge due obiettivi. Il primo riguarda la certezza che i dati che arrivano a destinazione sono stati inviati dalla persona giusta. Il secondo obiettivo riguarda la garanzia che i dati non siano stati alterati.

Premessa

La comunicazione segreta o, meglio, la scrittura cifrata chiamata crittografica (da  Crittografia, o meglio, da Crittologia) è una scienza che si occupa di studiare il modo di cifrare un messaggio per renderlo illeggibile a chiunque non possegga il codice di lettura che lo renda interpretabile.

Il termine «Crittografia» deriva dal greco kriptos, che significa nascosto, e graphia che significa scrittura. Codificare o cifrare dei dati significa trasformarli in una forma non leggibile.

Questa scienza matematica, per molti versi un’arte, è stata impiegata fino a qualche anno fa quasi esclusivamente in ambiente diplomatico e militare. Da pochi anni è liberamente utilizzabile da chiunque per proteggere la segretezza della propria comunicazione. Con il sorgere delle reti mondiali di comunicazione digitale la crittografia e la sua conseguenza giuridica più importante, cioè la firma elettronica, sono diventati indispensabili per tutti i cittadini perchè solo la crittografia può assicurarne la segretezza in modo sicuro. La crittografia fornisce gli strumenti necessari a questo scopo. La crittografia qui interessa non solo come  quel processo di codifica in grado di evitare qualsiasi intercettazione e modifica durante una trasmissione di rete (per rendere indecifrabili i dati e quindi proteggerli da una visione indesiderata) ma anche dal punto di vista più generale della storia della comunicazione segreta. 

Le origini della Crittografia

L'idea della codifica delle informazioni risale ad almeno quattromila anni fa, quando gli Egiziani usavano geroglifici modificati per incidere i propri messaggi funerari.Più specificamente, le basi della "Crittografia" sono da ricercare in un episodio storico avvenuto circa duemila anni fa a Roma. Da questo punto di vista possiamo dire che questa importante scienza moderna di cifratura ha origini "italianissime". L'episodio è noto ma vale la pena ricordarlo per gli importanti risvolti che questo fatto ha determinato nella storia della comunicazione segreta. Giulio Cesare spedì a un suo generale un messaggio in cui, per ragioni di sicurezza, cambiò la disposizione delle lettere. Sostituì alla lettera A la lettera E, alla lettera B la lettera F, alla C la G, alla D la H, alla..... insomma, sostituì ogni lettera dell'alfabeto latino con la lettera dello stesso alfabeto che la segue spostata di quattro posti. Si tratta in poche parole della utilizzazione di un alfabeto traslato di quattro posti rispetto al normale. Infatti, se disponiamo l'intero gruppo di caratteri dell'alfabeto latino A, B, C, D, E, F, G, ecc.... la lettera E si ottiene spostando di 4 posti verso destra, ottenendo appunto la lettera E. Si dice in questi casi che la regola di sostituzione riguarda una chiave di "posto 4". Questo fu l'inizio della storia della crittografia.

In realtà l'episodio narrato sopra ha un illustre precedente che si riferisce al periodo storico greco. Pierluigi Ridolfi, riferendosi ad un articolo della rivista Media Duemila del mese di ottobre 1998, dice che:

Plutarco nella Vite parallele  scrive che gli efori (i magistrati di Sparta) inviarono a Lisandro una scitala con l'ordine di tornare in patria. E spiega: "La scitala consiste in questo. Gli efori, all'atto di spedire all'estero un generale, prendono due pezzi di legno rotondi e perfettamente uguali, sia in lunghezza sia in larghezza, di dimensioni cioè corrispondenti. Di questi pezzi di legno, che si chiamano scitale, uno lo conservano loro, l'altro lo consegnano al partente. In seguito, allorché vogliono comunicare qualche cosa di grande importanza e che nessuno altro deve sapere, tagliano un rotolo di papiro lungo e stretto come una cinghia e l'avvolgono attorno alla scitala in loro possesso, coprendone tutt'intorno la superficie del legno col papiro, senza lasciare il minimo interstizio. Compiuta questa operazione, scrivono sul papiro così come si trova disteso sulla scitala ciò che vogliono, e una volta scritto, tolgono il papiro e glielo mandano senza il bastone. Il generale, quando lo riceve, non può leggere le lettere di seguito, poiché non hanno alcun legame tra loro e rimangono sconnesse, finché anch'egli non prende la sua scitala e vi avvolge in giro la striscia di papiro. Così la spirale torna a disporsi nel medesimo ordine in cui fu scritta, e le lettere si allineano via via, di modo che l'occhio può seguire la lettura attorno al bastone e ritrovare il senso compiuto del messaggio. La striscia di papiro è chiamata scitala al pari del legno".

Questo è il primo esempio di crittografia, cioè di scrittura nascosta, registrato in letteratura. Quattro secoli dopo Lisandro, ci riprova Giulio Cesare con un metodo completamente diverso. Ce ne ha lasciata una bella descrizione Svetonio nella Vita del Divo Giulio: "...se vi era qualche questione riservata egli usava scrivere in cifra, e questa cifra consisteva in una disposizione apparentemente caotica delle lettere, sicché era impossibile ricostruire la parola originale. Chi voglia scoprirne il senso e decifrarla sappia che bisogna sostituire a ogni lettera la terza che segue nell'alfabeto; vale a dire dove è scritto A bisogna leggere D e così di seguito".

 Le più importanti applicazioni della crittografia su Internet sono quelle per la riservatezza della posta elettronica, per la sicurezza delle transazioni commerciali in rete e per la firma digitale (con annesse problematiche che vanno dal diritto della tutela della privacy, all'utilizzo di strumenti che rendono sicure e illeggibili comunicazioni criminali).

La crittografia, nascondendo, cioè cifrando e rendendo incomprensibili le informazioni, è un sistema che permette di mantenere segreti tutti i documenti che non si vogliano divulgare pubblicamente, ma che si vogliano rendere accessibili alle poche persone che conoscano i metodi per decifrarle.
La più tecnica più nota per il criptaggio delle informazioni si basa sull'utilizzo di due chiavi (spesso una pubblica e l'altra è privata) questo sistema è per esempio usato per la firma elettronica e per una serie di altri servizi: il mittente sottopone a codifica il proprio messaggio (o, nel caso delle pay tv, il segnale); per poterlo leggere, il destinatario deve a sua volta decifrarlo servendosi di una chiave che il mittente gli avrà in qualche modo comunicato.

Le tecniche della Crittografia o tipologie crittografiche

Ogni programma di crittografia si basa su uno o più procedimenti matematici per crittografare i documenti: procedimenti questi che determinano "la qualità" del programma di crittografia. Esistono diverse tecniche crittografiche. Quelle più rappresentative sono tre e sono rappresentati dai rispettivi algoritmi chiamati rispettivamente simmetrici, asimmetrici e misti.

1. Algoritmi simmetrici

Un algoritmo simmetrico è un algoritmo che utilizza la medesima chiave sia per cifrare un messaggio, sia per decifrarlo. Un mittente e un destinatario che comunicano sfruttando un algoritmo simmetrico devono innanzitutto mettersi d'accordo sulla chiave e possederla entrambi. Da un punto di vista prettamente tecnico questo fatto è contemporaneamente un punto di forza ma anche una debolezza intrinseca dell'algoritmo. Il perchè sta nel fatto che se mittente e destinatario abitano lontano è molto difficile scambiarsi la chiave fidandosi di una spedizione, qualunque essa possa essere. Una volta d'accordo, il mittente cifra un messaggio utilizzando la chiave (che è unica), lo spedisce al destinatario e questi decifra il messaggio usando la stessa chiave adoperata in precedenza dal mittente. Esempi moderni di algoritmi simmetrici sono il 3DES, il Blowfish e IDEA.
Un buon algoritmo di cifratura racchiude completamente la sicurezza nella chiave e solo in questa, senza lasciare nulla all'algoritmo. In altre parole, non dovrebbe essere di alcun aiuto per un malintenzionato conoscere il tipo di algoritmo utilizzato perchè il punto di forza di questo sistema crittografico sta nella segretezza della sola chiave. Anzi, si fa di tutto per pubblicizzare l'algoritmo adoperato in modo tale che gli utilizzatori del sistema di crittografia simmetrica provando e riprovando l'algoritmo possono trovarne i punti deboli e pubblicizzandoli si possono trovare dei rimedi. 
Poiché tutta la sicurezza è riposta nella chiave, è importante che sia veramente difficile indovinare la chiave stessa e non l'algoritmo. In altre parole, l'insieme di chiavi possibili, cioè quello che viene chiamato tecnicamente *lo spazio delle chiavi*, deve essere grande, molto grande, il più grande possibile. 
A questo proposito ricordiamo che uno dei metodi che si adoperano per violare un messaggio cifrato è quello che permette di ridurre il numero di combinazioni che si devono provare per trovare la giusta combinazione. In altre parole, si riduce la dimensione dello spazio di chiavi.
Oggigiorno i computer possono indovinare una chiave molto rapidamente attraverso sistemi di forzatura lineari chiamati a "forza bruta" (brute force) e questo è il motivo per cui la dimensione della chiave è un requisito importantissimo per i moderni sistemi di crittografia. 

L'algoritmo DES usa una chiave da 56 bit. Ciò significa che ci sono 256 chiavi possibili. 256 sono circa settantamilioni di miliardi di chiavi. Più precisamente sono 72 057 594 037 927 936 chiavi: una enormità. Eppure, nonostante questo fatto, un computer non specializzato può controllarle tutte in pochi giorni. Un computer specializzato, cioè costruito ad hoc, lo può addirittura violare in poche ore. D'altro canto, algoritmi sviluppati più recentemente, come il 3DES, il Blowfish e IDEA, usano tutti chiavi da 128 bit. Ciò implica che ci sono 2128 possibili chiavi. Queste sono molte, molte di più del precedente spazio delle chiavi e, anche se tutti i computer della Terra cooperassero insieme per tentare di violare lo spazio delle chiavi, sarebbero necessari più di alcuni milioni di anni per trovare la chiave corretta.

2. Algoritmi a chiave pubblica

Come abbiamo visto in precedenza, il problema principale con gli algoritmi simmetrici non risiede nella loro sicurezza, ma nello scambio della chiave. Una volta che il mittente ed il destinatario si sono scambiati la chiave, quella chiave può essere usata per comunicare in sicurezza. Ma quale canale sicuro è stato utilizzato per comunicare la chiave stessa? In particolare sarebbe probabilmente più semplice per un malintenzionato cercare di intercettare la chiave piuttosto che provare tutte le chiavi possibili dello spazio di chiavi. Si capisce subito che il problema più delicato nei meccanismi crittografici di tipo simmetrico o a una sola chiave riguarda lo scambio dell'unica chiave che permette di cifrare e decifrare i messaggi.

Ma esiste anche un altro problema completamente diverso dal precedente che appesantisce e condiziona fortemente l'uso del sistema simmetrico di cifratura. Esso consiste nel numero di chiavi necessarie quando il numero delle persone che corrispondono è elevato. vediamo perchè. 

Se ci sono 3 persone  (Sergio, Miriam e  Maria) che vogliono comunicare privatamente tra loro, allora servono 3 chiavi per ogni coppia di persone (il numero delle chiavi si può ottenere moltiplicando il numero delle persone, che è 3, per il numero delle persone diminuito di una unità, che è 2, e dividendo il prodotto per 2, cioè 3(3-1)/2. La prima chiave riguarda la coppia Sergio-Maria, la seconda chiave riguarda la coppia Miriam-Maria e la terza chiave si riferisce alla coppia Sergio-Maria. Come si vede il numero delle chiavi è aumentato da 1 qualora vi siano solo due persone a 3 se le persone sono aumentate di una unità. Se poi le persone coinvolte nello scambio delle chiavi sono 4 (Davide, Andrea, Lucia e Rina) allora il numero delle chiavi aumenta a 4(4-1)/2, cioè 6 perchè è necessario soddisfare l'esigenza di produrre le seguenti coppie Davide-Andrea, Davide-Lucia, Davide-Rina, Andrea-Lucia, Andrea-Rina e Lucia-Rina.

 Se poi in generale ci sono n persone che vogliono comunicare privatamente fra loro, allora servono n(n-1)/2 chiavi per ogni coppia di persone. Questo significa che il meccanismo della crittografia a chiave simmetrica può andar bene per una ristretta cerchia di persone, ma il numero diventa rapidamente enorme per un gruppo numeroso. Pensiamo per esempio agli impiegati di un'azienda che è formata da 100 persone. Si comprende immediatamente che sarebbero necessari 4950 chiavi differenti!


Gli algoritmi a chiave pubblica furono inventati dagli specialisti per aggirare completamente il problema dello scambio di chiavi. Un algoritmo a chiave pubblica o asimmetrico utilizza una coppia di chiavi per spedire messaggi, entrambi appartenenti alla persona che riceve il messaggio. Una chiave è detta *chiave pubblica* e può essere data a chiunque. L'altra chiave è detta *chiave privata* e viene mantenuta segreta dal suo possessore, il quale la custodisce con attenzione e massima segretezza. Il mittente cifra un messaggio usando la chiave pubblica del destinatario e, una volta cifrato, il messaggio può essere decifrato solo con la corrispondente chiave privata posseduta per l'appunto solo dal destinatario.
Questo *protocollo* risolve il problema dello scambio di chiavi intrinseco agli algoritmi simmetrici che era il tallone d'Achille della crittografia simmetrica. Non c'è bisogno che mittente e destinatario si mettano d'accordo su una chiave comune a entrambi. Tutto ciò che serve è che, qualche tempo prima della effettiva comunicazione segreta, il mittente entri in possesso di una copia della chiave pubblica del destinatario. Inoltre una sola chiave pubblica (sempre la stessa) può essere utilizzata da chiunque desideri comunicare con il destinatario. Così solo n coppie di chiavi sono sufficienti a permettere ad n persone di comunicare segretamente una con l'altra. Questo è un gran risparmio da tutti i punti di vista.
Gli algoritmi a chiave pubblica sono basati sulle funzioni che sono difficilmente invertibili. Una *funzione difficilmente invertibile* è una funzione facile da calcolare (tecnicamente, con linguaggio specifico, si dice computare), ma la cui inversa è di difficile calcolo. Per esempio, è facile moltiplicare assieme due numeri primi per ottenere un numero composto, ma è difficile fattorizzare un numero composto nelle sue componenti prime. Una funzione del genere presenta certamente qualche problema: se si conosce una parte dell'informazione, diventa facile calcolarne l'inversa, ma se non si hanno informazioni diventa molto difficile individuare la soluzione. Per esempio, se si considera un numero composto da due fattori primi, allora, conoscendo uno dei due fattori, risulta facile calcolare l'altro. 

Dato un algoritmo a chiave pubblica basato sulla fattorizzazione in numeri primi, la chiave pubblica contiene un numero composto formato da due fattori primi molto grandi e l'algoritmo di cifratura usa questo numero composto per criptare il messaggio. L'algoritmo per decifrare il messaggio richiede la conoscenza dei due fattori primi. Così, possedendo la chiave privata che contiene uno dei due fattori, è facile decifrare il messaggio, mentre è estremamente difficile applicare la stessa procedura se non si conosce la chiave privata.
Così come accade per gli algoritmi simmetrici, anche per gli algoritmi asimmetrici a chiave pubblica tutta la sicurezza risiede nella chiave. Perciò la dimensione della chiave è una misura della sicurezza del sistema, anche se non è possibile paragonare la dimensione della chiave di un algoritmo simmetrico con quella di di un algoritmo asimmetrico a chiave pubblica per misurare il loro grado di sicurezza. In un attacco a forza bruta contro un algoritmo simmetrico con una chiave da 80 bit, un malintenzionato deve contare al massimo 280 chiavi per trovare quella giusta. In un attacco a forza bruta contro un algoritmo asimmetrico a chiave pubblica con una dimensione della chiave pari a 512 bit, lo stesso malintenzionato deve fattorizzare un numero composto codificato in 512 bit (fino a 155 cifre decimali). Il carico di lavoro per il malintenzionato è fondamentalmente differente a seconda dell'algoritmo che viene attaccato. Mentre 128 bit sono sufficienti per un algoritmo simmetrico, data la tecnologia odierna di fattorizzazione, sono raccomandate chiavi da 1024 bit per la maggior parte degli scopi, meglio se sono 2048 o addirittura 4096 bit nell'algoritmo asimmetrico.

3. Algoritmi misti

Gli algoritmi asimmetrici a chiave pubblica non costituiscono la perfezione della crittografia. Molti algoritmi simmetrici sono *più forti* dal punto di vista della sicurezza. Le operazioni di cifratura e decifratura a chiave pubblica sono più "costose" delle corrispondenti operazioni dei sistemi simmetrici sia perchè più lenti, sia perchè la struttura matematica del sistema è più complessa. Ciò nonostante, gli algoritmi a chiave pubblica rappresentano uno strumento efficace per distribuire le chiavi degli algoritmi simmetrici e per questo vengono usati in sistemi di crittografia mista che evidentemente sfrutta gli aspetti positivi di entrambi i sistemi.
Un algoritmo misto utilizza sia un sistema simmetrico "a monochiave", sia un sistema asimmetrico "a doppia chiave" (chiave pubblica e privata). In particolare esso funziona utilizzando un algoritmo a chiave pubblica per condividere una chiave per il sistema simmetrico. Il messaggio effettivo è quindi cifrato usando tale chiave e successivamente spedito al destinatario. Poiché il metodo di condivisione della chiave è sicuro, la chiave simmetrica utilizzata è differente per ogni messaggio spedito. Per questo viene detta a volte *chiave di sessione*.
Il sistema di crittografia PGP (Pretty Good Privacy) usa algoritmi misti. La chiave di sessione, cifrata utilizzando l'algoritmo a chiave pubblica, e il messaggio da spedire, cifrato con l'algoritmo simmetrico, sono automaticamente combinati in un solo pacchetto. Il destinatario usa la propria chiave privata per decifrare la chiave di sessione che viene poi usata per decifrare il messaggio.
Un algoritmo misto non è mai più forte del più debole algoritmo utilizzato, sia esso quello a chiave pubblica o quello simmetrico. In PGP l'algoritmo a chiave pubblica è probabilmente il più debole dei due. Fortunatamente, però, se un malintenzionato dovesse decifrare una chiave di sessione, egli sarebbe in grado di leggere solo un messaggio, quello cifrato con quella chiave di sessione. Il malintenzionato dovrebbe ricominciare di nuovo e decifrare un'altra chiave di sessione per poter leggere un altro messaggio. E non è poco.

Presentiamo adesso uno dei più semplici algoritmi, chiamato Algoritmo di sostituzione

Ecco un messaggio da cifrare:

PASSAMI IL COMPITO

v

PASSAMIILCOMPITO

 

SI SCRIVONO LE LETTERE DELL'ALFABETO ITALIANO E SUCCESSIVAMENTE LE STESSE LETTERE NON ORDINATE:

A B C D E F G H I L M N O P Q R S T U V Z

H E O F A Q M Z N S B G T I R C V U P D L

L'algoritmo di cifratura è semplice: si sostituisce ogni lettera del messaggio da cifrare con la lettera corrispondente che si trova nella riga sottostante. Alla A del testo in chiaro si sostituisce la lettera H del testo cifrato. Alla B del testo in chiaro si sostituisce la E del testo cifrato. E così via.

Riprendendo l'esempio 

PASSAMIILCOMPITO

il corrispondente testo cifrato diventa:

IHVVHBNNSOTBIUT

L'algoritmo di decifrazione è costituito dalla regola che si ottiene capovolgendo la precedente sostituzione:

IHVVHBNNSOTBIUT

PASSAMIILCOMPITO

Può interessare sapere che è possibile avere un numero di possibili permutazioni dell'alfabeto di 21 lettere uguale a 21!=1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21

I programmi di crittografia


Torna alla Home Page