ELEMENTI DI CRITTOGRAFIA La crittografia (parola che deriva dai termini greci kryptos-segreto e graphos-scrittura) è la tecnica con la quale è possibile trasformare un messaggio da inviare ad altre persone per esigenze di segretezza cioè impedire che un estraneo possa leggere il messaggio e comprenderne il contenuto. L’unica persona che potrà capirne il contenuto sarà il destinatario ovviamente facendo l’operazione contraria. Quindi si hanno due operazioni: - Crittografia trasforma un testo in chiaro in un testo cifrato - Decifrazione trasforma il testo cifrato nel testo originale Affinchè il destinatario possa effettuare l’operazione contraria a quella effettuata dal mittente si utilizza un apposito meccanismo detto chiave. Il destinatario potrà decifrare il messaggio crittato solo se in possesso della stessa chiave utilizzata dal mittente per crittografare il testo così come è possibile aprire un lucchetto chiuso da un’altra persona solo si ha una copia della chiave utilizzata per chiuderlo. La crittografia è una tecnica antica utilizzata soprattutto in ambito militare per evitare che il nemico possa intercettare e comprendere i messaggi inviati. Si distingue tra: - Crittografia classica utilizzata prima dell’avvento delle nuove tecnologie - Crittografia moderna utilizzata ad esempio nell’informatica per crittografare password oppure le comunicazioni verso un sito di commercio elettronico come il numero di una carta di credito, … I principali algoritmi di crittografia si basano su due operazioni: - Sostituzione sostituire ogni singolo carattere del messaggio in chiaro con un altro - Permutazione mischiare i caratteri del messaggio Vediamo degli esempi. CIFRARIO DI CESARE È un algoritmo a sostituzione. Consiste nel sostituire ogni lettera del messaggio in chiaro con quella che la segue di tre posizioni nell’alfabeto. Quindi la A deve essere cifrata con la D, la B con la E, e cos`ı via. Ovviamente, la regola di decifratura richiede che si applichi la sostituzione inversa (D con A, E con B, etc). Esempio: La chiave in questo caso è il numero 3 e l’alfabeto è considerato circolare. È possibile generalizzare il procedimento utilizzando come chiave un qualsiasi numero compreso tra 1 e 25. ALGORITMO Possiamo implementare l’algoritmo anche utilizzando una tabella come nella figura sottostante. In base al valore della chiave è possibile con una semplice somma trovare il carattere da utilizzare (ad esempio se la chiave è 3 allora la lettera g in posizione 6 viene sostituita dalla j in posizione 6+3=9). Per decifrare sarà sufficiente fare l’operazione contraria (sottrazione). Occorre ricordarsi che il cifrario è circolare quindi, ad esempio, la lettera x (23) è sostituita dalla a (23+3>25). CIFRARIO DI VIGENERE È un algoritmo a sostituzione polialfabetico. Il cifrario: - adopera un quadro di caratteri, detto quadro di Vigenere una parola chiave e prevede la divisione del messaggio in chiaro in blocchi della stessa lunghezza della chiave Le lettere della prima colonna corrispondono alle lettere della parola chiave mentre quelle della prima riga corrispondono alle lettere del messaggio in chiaro. L’operazione di cifratura di ogni blocco in cui il messaggio viene originariamente diviso, avviene al modo seguente: ogni lettera del blocco in chiaro viene sostituita da quella all’interno del quadro che si trova nel punto di intersezione della colonna individuata dalla lettera in chiaro con la riga associata alla lettera della parola chiave che deve essere usata in quella posizione. L’operazione di decifratura richiede ovviamente il passo inverso. Esempio: - Testo in chiaro Chiave CODICE MOLTO SICURO REBUS Come prima operazione viene formata una stringa composta da una ripetizione della chiave fino alla lunghezza del testo da cifrare (tutti gli spazi vengono eliminati). Ad esempio la prima lettera del testo (C) deve essere trasformata utilizzando come chiave la lettera R. Utilizzando la tabella e incrociando la colonna C con la riga R si ottiene la lettera T e così via. ALGORITMO È possibile implementare l’algoritmo creando e utilizzando la matrice di sostituzione. L’algortimo dovrà chiedere la frase da cifrare e la parola chiave. CIFRARIO A PERMUTAZIONE (O TRASPOSIZIONE) Vediamo un esempio di algorimto a trasposizione colonnare. Dato un testo in chiaro e una chiave numerica (numero intero) l’algoritmo procede con i seguenti passi: - Creazione di una tabella avente un numero di colonne pari alla chiave e un numero di righe sufficienti a contenere tutte le lettere del testo da cifrare Riempimento per righe della tabella con le lettere del testo in chiaro (le eventuali celle vuote vengono riempite con un punto) - Il testo cifrato si ottiene leggendo la tabella per colonne Esempio: - Testo in chiaro Chiave CODICE MOLTO SICURO 6 Si ottiene la seguente tabella: C O M S . O D O I . I L C . C T U . E O R . Il testo cifrato sarà: C OOMS.DOI.ILC.CTU.EOR. Un altro esempio di algoritmo a trasposizione colonnare prevede l’utilizzo di una parola chiave (invece di un numero). Viene sempre creata una tabella questa volta con un numero di colonne pari alla lunghezza della parola chiave. Il testo cifrato si ottiene leggendo le colonne nell’ordine alfabetico delle lettere della parola chiave (che deve avere tutte lettere diverse). Esempio: messaggio= PIANTARE IL CAMPO DIETRO LA COLLINA e parola chiave=VETRINA V 7 P E O L N E 2 I I D A A T 6 A L I C . R 5 N C E O . I N A 3 4 1 T A R A M P T R O L L I . . . (nota: sono stati eliminati gli spazi) Leggendo le colonne nell’ordine segnato (1-2-3…) si ottiene il testo cifrato: RPOI. IIDAA TATL. AMRL. NCEO. ALIC. PEOLN