Codifica dei Caratteri: Character Encoding Explained

Summary

This document explains character encoding, ASCII, Unicode, and cryptography. It details character coding, data alphabetics and the fundamentals of encryption. The presentation also covers symmetric and asymmetric cryptography, and attacks.

Full Transcript

CODIFICA DEI CARATTERI Vogliamo codificare un testo Supponiamo, per ora, che sia in lingua inglese Occorre innanzitutto codificare i caratteri a-z  26 simboli Ma ci sono le maiuscole A-Z  altri 26 simboli E i segni di punteggiatura Almeno i più comuni...

CODIFICA DEI CARATTERI Vogliamo codificare un testo Supponiamo, per ora, che sia in lingua inglese Occorre innanzitutto codificare i caratteri a-z  26 simboli Ma ci sono le maiuscole A-Z  altri 26 simboli E i segni di punteggiatura Almeno i più comuni ,.;:?!’"()[] Eppure manca ancora un protagonista assoluto. Chi? 1 CODIFICA DEI CARATTERI Lo spazio bianco! Altrimentileggeremmosoloun’indefinitasequenzadicaratteri E se c’è qualche numero? 0-9  10 simboli Le quattro operazioni 4 simboli per + - / * Altri alfabeti: caratteri accentati Aggiungiamo à è é ì ò ù (e anche À È É Ì Ò Ù) 2 CODIFICA DEI CARATTERI E così via Insomma, i 256 valori distinti rappresentabili con un byte fanno comodo Ciascun carattere è rappresentato da un byte e corrisponde ad un valore numerico 3 CODIFICA DI DATI ALFABETICI O CARATTERI codifiche standard: per rimediare all’apparente incomunicabilità fra linguaggio binario comprensibile dai computer e i dati alfabetici con cui di solito ci esprimiamo sono state definite alcune convenzioni (o codici) mediante le quali è possibile rappresentare in modo univoco un certo numero di caratteri attraverso configurazioni di bit prestabilite. – ASCII (American Standard Code for Information Interchange) standard: 7 bit per carattere, rappresenta 128 caratteri – ASCII esteso: 8 bit per carattere, rappresenta 256 caratteri – UNICODE: 16 bit per carattere: (ASCII + caratteri etnici), rappresenta circa 65.000 caratteri codifiche proprietarie: 4 – MS Windows: 16 bit per carattere, simile a UNICODE CODIFICA ASCII L’acronimo ASCII sta per American Standard Code for Information Interchange ossia Codice Standard Americano per lo scambio di informazioni. Questo è il nome scelto per indicare il sistema di codifica dei caratteri a 7 bit utilizzato inizialmente nei calcolatori ed in seguito implementato nei sistemi operativi dei computer e di altri dispositivi informatici. Ed è proprio grazie a questo sistema di codifica di caratteri e simboli e le sue successive evoluzioni se oggi possiamo scrivere email e testi e possiamo arricchire i nostri messaggi con gli emoji. Il Codice ASCII è stato ideato nel 1961 da Bob Bemer un ingegnere dell’IBM ed è stato pubblicato nel 1968 dall’ANSI (American National Standards Institute). Il sistema basato su 7 bit consentiva la 5 rappresentazione di 128 caratteri e la possibilità di impartire particolari comandi al computer. CODIFICA ASCII ESTESA Il codice ASCII standard è costituito da 128 caratteri, non tutti alfanumerici. I primi 32 caratteri servono infatti per inviare comandi. Per comprenderne il funzionamento, facciamo un passo indietro. I processi di un PC si basano sul sistema binario: 1 e 0 determinano i processi. Il codice ASCII si basa su questo sistema. Essendo basato su 7 bit, ogni carattere corrisponde ad una sequenza di 7 cifre di 0 ed 1. Il codice esteso è basato su 8 bit, il bit aggiuntivo veniva principalmente utilizzato per fini di verifica e per aggiungere altri caratteri al codice. 6 7 CODIFICA ASCII I carattere ASCII standard si suddividono in 4 gruppi. Caratteri di comando (da 0 a 31, 127): si tratta di caratteri non stampabili e servono per inviare comandi al PC. Un esempio è il comando per spostare il cursore uno spazio indietro. Il codice a 7 bit in questo caso è 0001000 e lo stesso comando si può inviare tenendo premuto il tasto ALT della tastiera e premendo in successione sul tastierino numerico i numeri 0 e 8. Attualmente non utilizziamo il codice binario o la combinazione di tasti indicata, ci basta premere semplicemente il tasto backspace. Caratteri speciali: da 32 a 47, da 58 a 64, da 91 a 96 e da 123 a 126: sono caratteri speciali stampabili che non corrispondono a numeri o lettere. Si tratta dei segni di punteggiatura. Curiosità: in questo gruppo rientra anche lo spazio, che sebbene non visibile è stampabile. Ed è per questo motivo che non rientra nel gruppo dei caratteri da comando. 8 Per le cifre: da 48 a 57: comprende le 10 cifre arabe da 0 a CODIFICA UNICODE Nel 1991 è stata sviluppata una nuova codifica, chiamata Unicode, che si è diffusa rapidamente ed è in continua evoluzione: è diventata lo standard di fatto per la rappresentazione delle informazioni nei documenti elettronici, in particolare nelle pagine Web, utilizzando i simboli delle numerose lingue esistenti nel mondo I primi caratteri di Unicode sono esattamente gli stessi della codifica ASCII, in modo da mantenere la compatibilità con il sistema preesistente. All’inizio la codifica utilizzava 2 byte (16 bit, con la possibilità di codificare 65.536 caratteri), ma poi è stata estesa a 32 bit, permettendo la rappresentazione di più di un milione di caratteri differenti. 9 CODIFICA UNICODE L’obiettivo generale di Unicode è di creare una codifica che comprenda tutti i caratteri, con tutte le variazioni possibili, di tutte le lingue esistenti, oltre ai simboli utilizzati in matematica e nelle scienze. Per semplificare le operazioni sono state poi create versioni ridotte del codice che permettono di scrivere i caratteri di uso più frequente in modo più breve: UTF-8 (a 8 bit), UTF-16 (a 16 bit) e UTF-32 (a 32 bit). http://www.unicode.org/charts/ 10 Inserimento caratteri speciali su Windows Se hai Windows come sistema operativo puoi inserire i caratteri che non sono presenti sulla tastiera ricorrendo alla Mappa dei caratteri. Ti basta cliccare sul pulsante Start, digitare la parola “charmap" nel campo di ricerca e cliccare sul risultato proposto Inserimento caratteri: pressione sul tasto ALT+ codice costituito da numeri 11 Inserimento caratteri speciali su MAC Sul Mac puoi richiamare la Mappa dei caratteri in due modi: utilizzando i tasti della tastiera: premi ctrl+cmd+spazio; cliccando su Preferenze di Sistema> Tastiera > e selezionando “Mostra visori tastiera ed emoji nella barra dei menu". In alto a destra comparirà un simbolo, cliccaci su e seleziona la voce: mostra visore tastiera. Se premi su shift vedrai i caratteri in maiuscolo mentre se premi su Alt visualizzi sulla tastiera i caratteri speciali. Per digitare ˜ ti basta cliccare il tasto alt e N. Se il carattere speciale che intendi aggiungere nel tuo testo manca sulla tastiera o vuoi aggiungere un emoji, clicca sul simbolo 12 indicato in precedenza e poi su “Visore Caratteri". A sinistra troverai tutti i simboli ed i caratteri che puoi inserire: emoji, frecce, lettere latine, SICUREZZA: UN NOME, TANTI SIGNIFICATI Confidenzialità Autenticità Integrità Non-ripudio Disponibilità Controllo accessi Privacy 13 SICUREZZA Confidenzialità Solo mittente e destinatario devono avere accesso al contenuto del messaggio Autenticità Integrità Non-ripudio Disponibilità Controllo accessi Privacy 14 SICUREZZA Confidenzialità Autenticità Il messaggio deve effettivamente provenire dal mittente Integrità Non-ripudio Disponibilità Controllo accessi Privacy 15 SICUREZZA Confidenzialità Autenticità Integrità Il messaggio deve raggiungere il destinatario senza alterazioni Non-ripudio Disponibilità Controllo accessi Privacy 16 SICUREZZA Confidenzialità Autenticità Integrità Non-ripudio Il mittente non può negare di aver inviato proprio quel messaggio Disponibilità Controllo accessi Privacy 17 SICUREZZA Confidenzialità Autenticità Integrità Non-ripudio Disponibilità Dati e funzionalità di un sistema restano accessibili quando li si desidera Controllo accessi Privacy 18 SICUREZZA Confidenzialità Autenticità Integrità Non-ripudio Disponibilità Controllo accessi Si deve poter regolare l’accesso a dati e funzionalità in base alle credenziali dell’utente Privacy 19 SICUREZZA Confidenzialità Autenticità Integrità Non-ripudio Disponibilità Controllo accessi Privacy Non è possibile ricondurre un’azione a uno specifico utente 20 DISPONIBILITÀ Ridondanza Più istanze dei sistemi Più copie dei dati Backup copia di sicurezza o copia di riserva dei dati Va fatto frequentemente Dove conservare la copia? 21 BACKUP Backup dei dati in informatica è sinonimo di continuità operativa. Compiere questa operazione di backup, infatti, significa fare un duplicato e quindi creare una copia di sicurezza di informazioni e file. Per quanto noioso, questo è l’unico modo che permette agli utenti di proteggere i dati. 22 BACKUP Il metodo più semplice di realizzare un backup dei propri file è quella di copiarli, uno per uno, su un qualsiasi dispositivo esterno o archivio cloud, così da averli sempre a disposizione anche in caso di problemi. Senza ombra di dubbio, questa è un’operazione abbastanza lunga e complessa, specie se si rivela necessario effettuarla a intervalli regolari 23 Tipi di backup Backup completo: è il tipo di backup più semplice. Come la parola stessa fa capire, un backup completo consiste in una copia dei file e delle cartelle così come sono. I file vengono presi e copiati sul dispositivo scelto, senza nessuna esclusione. E’ il backup più facile da creare e gestire. Backup incrementale – memorizza i file creati e modificati dall’ultimo backup effettuato, lasciando intatti quelli che invece non sono stati modificati. Prima di salvare i backup in modo incrementale, deve essere creato almeno un backup completo. È molto più piccolo in dimensioni rispetto al backup completo, ma per recuperare i dati da un backup incrementale c’è bisogno dell’ultimo backup completo e di tutti i backup incrementali precedenti. 24 Tipi di backup Backup completo sintetico: funziona esattamente come il backup incrementale e memorizza soltanto i cambiamenti dall’ultimo backup completo/incrementale, con la differenza che questi cambiamenti non vengono memorizzati in un file separato ma uniti al backup completo più recente. Unisce i vantaggi del backup completo e di quello incrementale, tuttavia impiega più tempo per essere creato rispetto a quest’ultimo. Backup differenziale: è molto simile al backup incrementale, con la differenza che memorizza i file creati e modificati dall’ultimo backup completo effettuato, lasciando intatti quelli che non sono stati modificati. Anche in questo caso, prima di procedere al salvataggio tramite backup incrementale c’è bisogno di creare almeno un backup completo. È leggermente più grande rispetto al backup 25 incrementale, ma per recuperare i dati c’è bisogno del backup completo più recente e soltanto dell’ultimo backup differenziale. CIFRATURA La definizione delle misure di sicurezza da applicare al proprio sistema di gestione dei dati personali rappresenta una delle sfide principali, se non la più importante, posta ai titolari del trattamento dal Regolamento UE sulla protezione dei dati – General Data Protection Regulation, comunemente noto come GDPR. https://gdpr.eu/ 26 CIFRATURA Crittografia: maneggiare con cura La cifratura è essenzialmente quel processo che rende un determinato dato incomprensibile, al fine di garantire la sua confidenzialità. I concetti alla base di questo processo sono l’informazione da proteggere, l’algoritmo di cifratura, il crittogramma (cypher-text) e un valore segreto definito chiave (key). La crittografia dovrebbe garantire che, senza conoscere la chiave, non si possa mai avere la possibilità di ottenere il messaggio in chiaro da cui proviene il crittogramma. 27 CIFRATURA La crittografia in teoria è un meccanismo forte e affidabile, soprattutto perché è basato su teorie e concetti matematici dimostrabili e dimostrati. In pratica, invece, è potenzialmente affetta da tutti i problemi che affliggono le implementazioni di tutti gli altri sistemi di sicurezza. Questo è ancora più evidente quando i sistemi di cifratura vengono, in qualche modo, ideati o concepiti da persone non esperte che, in un impeto di creatività – e forse anche egocentrismo – immaginano di aver inventato l’algoritmo di crittografia perfetto. 28 CIFRATURA Cosa significa in realtà avere una cifratura sicura? In maniera molto intuitiva, dato un crittogramma generato da un certo algoritmo di cifratura, il sistema non permette, in un determinato intervallo di tempo, di risalire al testo in chiaro se non conoscendo la relativa chiave di cifratura utilizzata. 29 CIFRATURA Testo in chiaro Messaggio originale Testo cifrato Messaggio incomprensibile per tutti, tranne che per mittente e destinatario Cifrare Trasformare il testo in chiaro in testo cifrato Decifrare Recuperare il testo in chiaro dal testo cifrato 30 PRINCIPIO DI KERCKHOFFS Dr. August Kerckhoffs, linguista olandese formatosi all’Università di Liegi, è diventato professore all’École des Hautes Études Commerciales di Parigi, dove ha insegnato tedesco. Era anche un appassionato sostenitore del volapük, una lingua costruita. Il suo forte interesse per la crittografia lo portò a pubblicare due articoli intitolati La Cryptograptographie Militaire (“Crittografia militare”) in cui esaminava lo stato dell’arte della crittografia e proponeva sei principi fondamentali per ogni sistema crittografico, oltre a regole del pollice e consigli pratici generali. All’epoca, l’obiettivo principale dei crittografi era quello di creare un sistema telegrafico sicuro. 31 PRINCIPIO DI KERCKHOFFS Il Principio di Kerckhoffs afferma che la sicurezza di un sistema crittografico deve risiedere solo nella scelta delle sue chiavi; tutto il resto (compreso l’algoritmo stesso) deve essere considerato di dominio pubblico In altre parole questo principio afferma che un crittosistema deve essere sicuro anche se il suo funzionamento è di pubblico dominio, con l’eccezione della chiave. 32 PRINCIPIO DI KERCKHOFFS Ci sono inoltre altri principi che Kerckhoffs stilò per sviluppare il sistema di cifratura perfetto: Il sistema deve essere praticamente, se non matematicamente, indecifrabile. Questo non deve essere segreto, dev’essere in grado di cadere nelle mani del nemico senza inconvenienti. La sua chiave deve essere comunicabile senza l’aiuto di note scritte, e modificabile o modificabili a piacimento dei corrispondenti. Deve essere applicabile alla corrispondenza telegrafica. Deve essere portatile e il suo utilizzo e uso non deve richiedere il concorso di più persone. È necessario che la sua applicazione sia facile da usare e 33 che non richieda la conoscenza e l’uso di una lunga serie di regole. CIFRARIO Un cifrario, nella crittografia, è un algoritmo utilizzato per eseguire operazioni o una serie di passaggi ben definiti che possono essere seguiti come una procedura, volte a rendere oscuro, ossia semanticamente non leggibile, un testo di un messaggio in chiaro (plain text) o, al contrario, al ripristino in chiaro di un messaggio precedentemente cifrato. 34 CIFRARIO A SCIVOLAMENTO Inventato da Giulio Cesare, è uno dei cifrari più semplici sia da capire, ma anche da decriptare. Considerato all’epoca molto sicuro, ma al giorno d’oggi senz’altro non più utilizzato. Cifrario a sostituzione monoalfabetico in cui ogni singola lettera del messaggio da nascondere viene sostituita con una lettera dell’alfabeto che si trova un numero di posizioni dopo. In particolare Cesare utilizzava uno spostamento di 3 posizioni Esempio: Produciamo un alfabeto modificato facendo scivolare l’alfabeto originale di 5 posizioni a sinistra La chiave è, in questo caso, 5. 35 CIFRARIO A SCIVOLAMENTO Alfabeto originale: ABCDEFGHIJKLMNOPQRSTUVXYZ Alfabeto modificato: FGHIJKLMNOPQRSTUVXYZABCDE Plaintext: DOMANI Ciphertext: ITRFSN Possiamo decifrare applicando la trasformazione inversa Questo sistema ha però una grande vulnerabilità, e cioè che una volta stabilita la chiave di cifratura, le lettere avranno sempre la stessa identica corrispondenza numerica. Ad esempio con il cifrario di Cesare la D sarà sempre G e la A sarà sempre D 36 CIFRARIO DI VIGENERE Il cifrario di Vigenère corregge proprio il neo che presenta il cifrario di Cesare. Il cifrario di Vigenère, consiste nello spostare sempre le lettere in avanti ma di un numero variabile di posizioni. Le posizioni sono determinate da una chiave prestabilita tra mittente e destinatario. Il testo cifrato lo otterremo quindi spostando in avanti la lettera in chiaro di un numero di posizioni pari al numero ordinale della lettera dell’alfabeto che compone la chiave. Praticamente si fa una somma tra la posizione nell’alfabeto della lettera in chiaro e quella della chiave, A=0 B=1 e così via arrivati alla Z si riparte dalla A. 37 UN CIFRARIO PERFETTO Finora l’unico cifrario perfetto, dimostrato matematicamente, è il cifrario di Vernam. Questo cifrario è basato su quello di Vigenère, ma con l’aggiunta del requisito che la chiave sia lunga quanto il testo da nascondere e che non sia riutilizzabile (One Time Pad). 38 UN CIFRARIO PERFETTO L’apice della tecnica OTP (On Time Pad) si raggiunse durante la guerra fredda. Il cifrario era formato da parole rappresentate da numeri a 4 cifre (es. cane=1024). Esse venivano poi raggruppate a gruppi di cinque e sommate ad un numero casuale. Se l’ultimo numero non dovesse essere di cinque cifre è possibile compensarlo con degli zeri, ad esempio se l’ultimo numero è 420 diventerà 42000. In tutto il processo è fondamentale come già detto usare una sola volta la sequenza di numeri casuali per cifrare il testo. 39 CRITTOGRAFIA Come abbiamo già accennato, il fine ultimo della crittografia è proteggere un’informazione. Permettere a questa informazione di essere condivisa solo tra i soggetti interessati e proteggerla da occhi indiscreti. Che sia un’informazione di guerra, un’informazione elettorale, dati personali o anche una lettera d’amore, il fine rimane lo stesso: che sia garantita la sua confidenzialità. A questo fine si può arrivare in modi diversi, ci limiteremo a presentare quelli più noti ed utilizzati. 40 CRITTOGRAFIA SIMMETRICA Questo tipo di crittografia è quella classica, quella che intuitivamente possiamo immaginare ed utilizzare nella vita di tutti i giorni. Facciamo un esempio: Mario e Anastasia hanno un’informazione da scambiare; un’informazione che reputano così importante da non poter rischiare che qualcun altro possa conoscerla. Mettiamo che tale informazione sia un documento testuale che Mario deve inviare ad Anastasia in modo che possa revisionarlo prima di inviarlo a un cliente. 41 CRITTOGRAFIA SIMMETRICA Il concetto alla base della crittografia simmetrica è che la chiave usata per cifrare il documento è la stessa utilizzata per decifrarlo. Quindi, Mario non dovrà fare altro che scegliere una chiave di cifratura, magari di un certo livello di complessità, cifrare il documento utilizzando un software adeguato e inviarlo ad Anastasia. Quest’ultima, con un software compatibile (non per forza lo stesso) decifrerà il documento, fornendo la chiave di cifratura utilizzata da Mario e potrà quindi leggere il documento in chiaro. La confidenzialità dell’informazione è quindi garantita in quanto, se anche un utente malintenzionato fosse in 42 grado di rubare e/o copiare l’informazione, non avrebbe modo di decifrarla senza conoscere la chiave. CRITTOGRAFIA SIMMETRICA A prima vista tutto sembra funzionare correttamente, ma resta un problema: in che modo Mario e Anastasia hanno condiviso la chiave di cifratura utilizzata? Di certo non possono condividerla tramite lo stesso canale che utilizzano per scambiarsi l’informazione. A tal fine, potrebbero incontrarsi o telefonarsi e scambiarla a voce, inviarla via sms o utilizzare un altro sistema di messaggistica. In questi casi, diciamo che i due hanno scambiato la chiave in modalità OOB (Out Of Band): hanno utilizzato quindi un canale diverso da quello in cui viaggia l’informazione da proteggere, in modo da rendere più complicata la vita al malintenzionato. Attenzione: diciamo più complicata, non impossibile. Le motivazioni risiedono tutte nell’importanza dell’informazione da proteggere. Se questa ha un’elevata importanza, diciamo di sicurezza nazionale, è 43 probabile che sia Mario, sia Anastasia, possano essere tenuti sotto controllo e spiati. Non si può quindi considerare sicuro il canale che hanno utilizzato per scambiare la chiave. CRITTOGRAFIA SIMMETRICA Il problema da risolvere è quello di proteggere il modo in cui i due attori si scambiano la chiave di cifratura. 44 CRITTOGRAFIA SIMMETRICA 45 CRITTOGRAFIA ASIMMETRICA Il problema della condivisione della chiave di cifratura è stato risolto, in maniera davvero elegante, dalla crittografia definita asimmetrica. Proprio nel termine asimmetrica risiede la vera novità di questo nuovo tipo di crittografia: si usano due chiavi diverse per cifrare e decifrare l’informazione. Ogni attore ha quindi due chiavi: una per cifrare, definita chiave pubblica o pubkey, una per decifrare, definita chiave privata. 46 CRITTOGRAFIA ASIMMETRICA Quindi, tornando ai due attori di prima, Mario userà la chiave pubblica di Anastasia per cifrare il messaggio; Anastasia userà la sua chiave privata per decifrarlo. Non c’è più il problema della condivisione della chiave di cifratura perché, per definizione, questa è pubblica: tutti possono vederla. Ma per decifrare, bisognerà utilizzare la chiave privata, quella che ognuno dovrà gelosamente custodire e che non dovrà mai condividere con nessuno. 47 CRITTOGRAFIA ASIMMETRICA Si basa su due chiavi differenti: una pubblica e una privata 48 CRITTOGRAFIA ASIMMETRICA Scenario 1 - Alice cifra il messaggio con la chiave pubblica di Bob Alice conosce la chiave pubblica di Bob (è pubblica) Solo Bob (il solo a conoscere la propria chiave privata) può decifrare il messaggio 49 CRITTOGRAFIA ASIMMETRICA Quindi la crittografia asimmetrica ha risolto tutti i problemi della confidenzialità nello scambio delle informazioni? Effettivamente ne risolve tanti, ma non proprio tutti. Per sua stessa natura, è molto lenta e dunque poco utilizzabile all’interno di processi che richiedono prestazioni real-time, quali quelli autorizzativi nei pagamenti elettronici. Cosa che non capita con la cifratura simmetrica, che invece è semplice e, quindi, veloce. Ecco perché il connubio tra le due è la soluzione scelta unanimemente: si può utilizzare la crittografia a chiave pubblica per trasmettere la chiave di cifratura per poi proseguire con la crittografia simmetrica. 50 ANALISI E ATTACCHI In teoria, i sistemi crittografici sono robusti Analisi molto approfondite “In theory, theory and practice are the same. In practice, they are not.” (Einstein) Il successo di attacchi contro un sistema crittografico dipende da errori nell’implementazione, p. es. Random Number Generators di bassa qualità riutilizzo 51