|
|
| << | < | > | >> |IndicePrefazione XV Capitolo 1 La filosofia di questo volume 1 1.1 Inconvenienti delle prestazioni 2 1.2 Inconvenienti della ricchezza di funzionalità 4 Capitolo 2 Ruolo della crittografia 5 2.1 Compito della crittografia 6 2.2 La proprietà dell'anello più debole 6 2.3 L'ambiente antagonistico 8 2.4 Paranoia pratica 9 2.4.1 L'attacco 10 2.5 Il modello delle minacce 11 2.6 La crittografia non è la soluzione 12 2.7 La crittografia è molto difficile 13 2.8 La crittografia è la parte più semplice 14 2.9 Letture consigliate 15 Capitolo 3 Introduzione alla crittografia 17 3.1 La codifica 17 3.1.1 Il principio di Kerckhoffs 18 3.2 L'autenticazione 19 3.3 Crittografia a chiave pubblica 21 3.4 Firme digitali 22 3.5 Infrastruttura a chiave pubblica 23 3.6 Attacchi 24 3.6.1 Attacco con solo testo cifrato 25 3.6.2 Attacco con testo in chiaro noto 25 3.6.3 Attacco con testo in chiaro scelto 25 3.6.4 Attacco con testo cifrato scelto 26 3.6.5 Attacco discriminante 26 3.6.6 Attacco del compleanno 27 3.6.7 Attacco della convergenza 27 3.6.8 Altri tipi di attacco 29 3.7 Il livello di sicurezza 29 3.8 Efficienza 3O 3.9 Complessità 31 Parte I La sicurezza dei messaggi Capitolo 4 I codici a blocchi 35 4.1 Che cos'è un codice a blocchi? 35 4.2 Tipi di attacco 36 4.3 Il codice a blocchi ideale 37 4.4 Definizione della sicurezza di un codice a blocchi 38 4.4.1 Parità di una permutazione 40 4.5 Codici a blocchi reali 41 4.5.1 DES 41 4.5.2 AES 44 4.5.3 Serpent 47 4.5.4 Twofish 47 4.5.5 Gli altri finalisti di AES 49 4.5.6 Attacchi basati sulla soluzione di equazioni 50 4.5.7 Quale codice a blocchi scegliere? 51 4.5.8 Quale dovrebbe essere la dimensione della chiave? 52 Capitolo 5 Modalità operative dei codici a blocchi 55 5.1 Riempimento 56 5.2 ECB 57 5.3 CBC 57 5.3.1 VI fisso 57 5.3.2 VI a contatore 58 5.3.3 VI casuale 58 5.3.4 VI generati con "nonce" 59 5.4 OFB 60 5.5 CTR 61 5.6 Le modalità più recenti 62 5.7 Quale modalità utilizzare? 62 5.8 Fughe di informazioni 63 5.8.1 Probabilità di collisione 65 5.8.2 Come contrastare le fughe di informazioni 65 5.8.3 Una nota sulle formule matematiche 66 Capitolo 6 Funzioni di hashing 67 6.1 Sicurezza delle funzioni di hashing 68 6.2 Funzioni di hashing reali 69 6.2.1 MD5 70 6.2.2 SHA-1 71 6.2.3 SHA-256, SHA-384 e SHA-512 71 6.3 Punti deboli delle funzioni di hashing 72 6.3.1 Estensione della lunghezza 72 6.3.2 Collisione dei messaggi parziali 73 6.4 Correzione dei punti deboli 74 6.4.1 Una rettifica radicale 74 6.4.2 Una rettifica più efficiente 75 6.5 Quale funzione di hashing scegliere? 76 6.6 Il lavoro futuro 77 Capitolo 7 I codici MAC 79 7.1 Utilità delle funzioni MAC 79 7.2 La funzione MAC ideale 80 7.3 Sicurezza di una funzione MAC 80 7.4 CBC-MAC 81 7.5 HMAC 82 7.5.1 HMAC e SHAd 83 7.6 UMAC 84 7.6.1 Dimensione di un MAC 84 7.6.2 Quale UMAC utilizzare? 85 7.6.3 Flessibilità delle piattaforme 86 7.6.4 La profondità dell'analisi 86 7.6.5 Perché abbiamo menzionato UMAC allora? 87 7.7 Quale MAC scegliere? 87 7.8 Utilizzo di una funzione MAC 88 Capitolo 8 Il canale sicuro 91 8.1 Definizione del problema 91 8.1.1 I ruoli 91 8.1.2 La chiave 92 8.1.3 Sequenza o flusso 92 8.1.4 Le proprietà di sicurezza 93 8.2 Ordine di autenticazione e codifica 94 8.3 Profilo della soluzione 96 8.3.1 Numerazione dei messaggi 96 8.3.2 Autenticazione 97 8.3.3 Codifica 97 8.3.4 Formato del frame 98 8.4 I dettagli 98 8.4.1 Inizializzazione 98 8.4.2 Invio di un messaggio 99 8.4.3 Ricezione di un messaggio 100 8.4.4 Ordine dei messaggi 101 8.5 Le alternative 102 8.6 Conclusione 103 Capitolo 9 Problematiche di implementazione (I) 105 9.1 Una corretta implementazione dei programmi 106 9.1.1 Le specifiche 107 9.1.2 Test e correzioni 107 9.1.3 L'indolenza dell'industria 108 9.1.4 Che fare? 109 9.2 La realizzazione di software sicuro 119 9.3 Mantenere i segreti 110 9.3.1 Azzeramento dello stato 110 9.3.2 Il file di paginazione 112 9.3.3 La cache 113 9.3.4 La permanenza dei dati in memoria 114 9.3.5 L'accesso di programmi esterni 116 9.3.6 Integrità dei dati 116 9.3.7 Che cosa fare 117 9.4 La qualità del codice 117 9.4.1 Semplicità 117 9.4.2 Suddivisione in moduli 118 9.4.3 Istruzioni ASSERT 119 9.4.4 Overflow dei buffer 120 9.4.5 La fase di test 120 9.5 Attacchi del canale laterale 121 9.6 Conclusioni 122 Parte II La negoziazione delle chiavi Capitolo 10 Generare la casualità 125 10.1 La reale casualità 126 10.1.1 Impiego di dati realmente casuali: i problemi127 10.1.2 Dati pseudocasuali 127 10.1.3 Dati realmente casuali e PRNG 128 10.2 Modelli di attacco per un PRNG 129 10.3 Fortuna 130 10.4 Il generatore 130 10.4.1 Inizializzazione 132 10.4.2 Rinnovo del seme 132 10.4.3 Generazione dei blocchi 133 10.4.4 Generazione di dati casuali 133 10.4.5 Efficienza del generatore 134 10.5 L'accumulatore 134 10.5.1 Fonti di entropia 134 10.5.2 Pool di eventi 135 10.5.3 Considerazioni sull'implementazione 137 10.5.4 Inizializzazione 139 10.5.5 Richiesta di dati casuali 139 10.5.6 Introduzione di un evento 140 10.6 Gestione del file del seme 141 10.6.1 Scrittura del file del seme 142 10.6.2 Aggiornamento del file del seme 142 10.6.3 Quando leggere e scrivere il file del seme 143 10.6.4 Back-up 143 10.6.5 Atomicità degli aggiornamenti del file system144 10.6.6 Primo riavvio 144 10.7 Quale soluzione adottare? 145 10.8 Scelta di elementi casuali 145 Capitolo 11 I numeri primi 147 11.1 Divisibilità e numeri primi 147 11.2 Generazione di piccoli numeri primi 150 11.3 Calcoli con i primi e aritmetica modulare 151 11.3.1 Addizione e sottrazione 152 11.3.2 Moltiplicazione 152 11.3.3 Gruppi e campi finiti 153 11.3.4 Algoritmo del MCD 154 11.3.5 Algoritmo di Euclide esteso 155 11.3.6 Effettuare operazioni modulo 2 156 11.4 I grandi numeri primi 156 11.4.1 Il test di primalità 159 11.4.2 Calcolo delle potenze 161 Capitolo 12 Diffie-Hellman 163 12.1 Gruppi 164 12.2 Protocollo DH di base 165 12.3 L'intruso 166 12.4 Insidie del protocollo 167 12.5 Numeri primi sicuri 168 12.6 Adozione di un sottogruppo più piccolo 169 12.7 Dimensione di p 169 12.8 Regole pratiche 171 12.9 Potenziali pericoli 172 Capitolo 13 RSA 175 13.1 Introduzione 175 13.2 Il teorema cinese del resto (TCR) 176 13.2.1 Formula di Garner 176 13.2.2 Generalizzazioni 177 13.2.3 Applicazioni del TRC 177 13.2.4 Conclusione 178 13.3 Moltiplicazione modulo n 179 13.4 Definizione del sistema RSA 179 13.4.1 Firma digitale con RSA 180 13.4.2 Esponenti pubblici 180 13.4.3 Chiave privata 181 13.4.4 La dimensione di n 182 13.4.5 La generazione delle chiavi RSA 182 13.5 Insidie di RSA 184 13.6 Codifica 185 13.7 Firma digitale 187 Capitolo 14 Introduzione ai protocolli crittografici 191 14.1 I ruoli 191 14.2 La fiducia 192 14.2.1 Il rischio 193 14.3 L'incentivo 193 14.4 La fiducia nei protocolli crittografici 195 14.5 Messaggi e operazioni 196 14.5.1 Livello di trasporto 196 14.5.2 Identità del protocollo e dei messaggi 197 14.5.3 Codifica e parsing dei messaggi 198 14.5.4 Stati di esecuzione del protocollo 198 14.5.5 Errori 199 14.5.6 Repliche e ripetizioni 200 Capitolo 15 Protocollo di negoziazione della chiave 203 15.1 Scenario 203 15.2 Un primo passo 204 15.3 Un protocollo è per sempre 205 15.4 Una convenzione per l'autenticazione 206 15.5 Un secondo passo 207 15.6 Un terzo passo 208 15.7 Protocollo finale 209 15.8 Prospettive del protocollo 211 15.8.1 La prospettiva di Alice 211 15.8.2 La prospettiva di Bob 211 15.8.3 La prospettiva dell'hacker 212 15.8.4 Quando la chiave è compromessa 213 15.9 Complessità di calcolo del protocollo 213 15.9.1 Alcune ottimizzazioni 214 15.10 Complessità del protocollo 214 15.11 Un (sommesso) avvertimento 216 15.12 Negoziazione a partire da una password 216 Capitolo 16 Problematiche di implementazione (II) 217 16.1 L'aritmetica sugli interi di grandi dimensioni 217 16.1.1 Wooping 219 16.1.2 Verifica dei calcoli DH 221 16.1.3 Verifica della codifica RSA 221 16.1.4 Verifica delle firme RSA 222 16.1.5 Conclusione 222 16.2 Velocizzare la moltiplicazione 222 16.3 Attacchi del canale laterale 223 16.3.1 Contromisure 224 16.4 Protocolli 225 16.4.1 Protocolli che operano su un canale sicuro 226 16.4.2 Ricezione di un messaggio 226 16.4.3 Timeout 228 Parte III La gestione delle chiavi Capitolo 17 L'orologio 231 17.1 Impieghi dell'orologio 231 17.1.1 Scadenze 231 17.1.2 Un valore unico 232 17.1.3 Monotonicità 232 17.1.4 Transazioni in tempo reale 232 17.2 Chip dell'orologio di sistema 233 17.3 Pericoli per la sicurezza 233 17.3.1 Spostamento indietro dell'orologio 234 17.3.2 Arresto dell'orologio 234 17.3.3 Spostamento in avanti dell'orologio 235 17.4 Realizzare un orologio affidabile 235 17.5 Il problema dello stato invariante 236 17.6 L'ora 238 17.7 Conclusione 239 Capitolo 18 I server delle chiavi 241 18.1 Concetti fondamentali 242 18.2 Kerberos 242 18.3 Alcune soluzioni più semplici 243 18.3.1 La connessione sicura 243 18.3.2 Impostazione di una chiave 244 18.3.3 Il rinnovo delle chiavi 244 18.3.4 Altre proprietà 244 18.4 La scelta 245 Capitolo 19 Il sogno delle PKI 247 19.1 Breve panoramica delle PKI 247 19.2 Esempi di PKI 248 19.2.1 PKI universale 248 19.2.2 Accesso tramite VPN (rete privata virtuale) 248 19.2.3 Transazioni bancarie online 248 19.2.4 I sensori delle raffinerie 249 19.2.5 Circuiti delle carte di credito 249 19.3 Altri dettagli 249 19.3.1 Certificati multilivello 249 19.3.2 La scadenza 251 19.3.3 Un'autorità di registrazione distinta 251 19.4 Conclusione 252 Capitolo 20 La realtà delle PKI 253 20.1 I nomi 253 20.2 L'autorità 255 20.3 La fiducia 255 20.4 L'autorizzazione indiretta 256 20.5 Autorizzazione diretta 257 20.6 Sistemi di credenziali 258 20.7 Il sogno modificato 260 20.8 La revoca 260 20.8.1 CRL 261 20.8.2 La scadenza rapida 262 20.8.3 La revoca è tassativa 262 20.9 La reale utilità delle PKI 262 20.10 La scelta 264 Capitolo 21 Aspetti pratici delle PKI 265 21.1 Formato dei certificati 265 21.1.1 Il linguaggio dei permessi 265 21.1.2 La chiave radice 266 21.2 Vita di una chiave 267 21.3 Perché le chiavi si logorano 268 21.4 La decisione 269 Capitolo 22 Conservazione dei segreti 271 22.1 Dischi 271 22.2 Memoria umana 272 22.2.1 Il salt e l'allungamento 273 22.3 Conservazione su carta e supporti portatili 275 22.4 Dispositivi sicuri 276 22.5 Interfaccia utente sicura 277 22.6 Biometria 278 22.7 Sistemi di login centralizzato 279 22.8 Il rischio dello smarrimento delle password 279 22.9 Distribuzione di quote di segreti 280 22.10 Cancellazione dei segreti 281 22.10.1 Carta 281 22.10.2 Supporti magnetici 281 22.10.3 Supporti non meccanici 283 Parte IV Miscellanea Capitolo 23 Gli standard 287 23.1 Definizione degli standard 287 23.1.1 Standard 289 23.1.2 Funzionalità 289 23.1.3 Sicurezza 289 23.2 SSL 290 23.3 AES: la gara per la definizione degli standard 291 Capitolo 24 I brevetti 293 24.1 La prior art, ovvero la questione dell'innovazione 293 24.2 La continuazione 294 24.3 Tecnologie vaghe 294 24.4 La lettura dei brevetti 295 24.5 Le licenze 295 24.6 I brevetti difensivi 296 24.7 Correggere il sistema dei brevetti 297 24.8 Limitazione di responsabilità 298 Capitolo 25 Il consulto di esperti 299 Bibliografia 303 Indice analitico 311 |
| << | < | > | >> |Pagina XVPrefazioneNell'ultimo decennio l'impatto della crittografia sulla sicurezza dei sistemi digitali ha avuto effetti più negativi che positivi. Questa scienza cominciò ad essere propagandata agli inizi degli anni '90 come lo strumento in grado di rendere Internet sicura. Alcuni la consideravano una "livella" tecnologica, cioè uno strumento matematico in grado di porre sullo stesso piano gli individui comuni, interessati alla garanzia delle propria privacy, e le grandi agenzie di intelligence; altri la consideravano un'arma potenzialmente capace di rovesciare i governi, se questi ultimi avessero perduto la capacità di controllare i movimenti delle persone nel cyberspazio; altri ancora la consideravano uno strumento perfetto e terribile per la comunicazione confidenziale tra mercanti di stupefacenti, terroristi e pedopornofili. Persino coloro che avevano i piedi per terra più di tutti gli altri ritenevano che la tecnologia crittografica avrebbe permesso l'espandersi del commercio globale nel mondo online. Dieci anni dopo, nessuna di queste profezie si è rivelata fondata. Nonostante l'imporsi della crittografia, i confini nazionali di Internet sono oggi più apparenti di quanto non lo siano mai stati. La possibilità di rilevare e spiare comunicazioni criminali è correlata maggiormente alla politica e alle risorse umane che alla matematica. Gli individui non possono ancora nulla contro le agenzie governative, troppo potenti e ben finanziate. Infine, l'aumento del commercio globale non è in alcuna relazione con l'imporsi della crittografia. Fondamentalmente, la crittografia si è limitata a dare agli utenti di Internet un falso senso di sicurezza, promettendola ma non assicurandola. Ciò non è positivo, eccetto che per gli hacker. I motivi di ciò non sono tanto in relazione con la crittografia come branca della matematica, quanto con la crittografia come disciplina dell'ingegneria del software. Noi abbiamo sviluppato, implementato e installato sul campo diversi sistemi crittografici nell'ultimo decennio, ma non siamo riusciti a convertire con altrettanta efficacia le promesse teoriche e matematiche della crittografia in sicurezza reale. Difatti, è proprio questo l'obiettivo più difficile. Fin troppi progettisti considerano la crittografia come una sorta di polvere magica in grado di rendere sicuri l'hardware o il software che ne sono toccati, imbevendoli della mitica proprietà della "sicurezza"; fin troppi consumatori, d'altra parte, sono abbagliati da etichette come "cifratura" e finiscono per credere nella stessa polvere magica. Non sono da meno i recensori, che si limitano a confrontare la lunghezza delle chiavi e, sulla base di essa, a proclamare un prodotto più sicuro di un altro. La sicurezza di un sistema ha la robustezza del suo anello più debole e la matematica della crittografia non costituisce praticamente mai tale anello. I concetti fondamentali della crittografia sono importanti, ma sono ancora più importanti la loro implementazione e il loro impiego. Discutere se una chiave debba essere lunga 112 i 128 bit equivale a piantare una grossa palizzata nel terreno sperando che l'hacker non sappia far altro che scavalcarla per entrarvi. Si può discutere variamente e a lungo sull'altezza della palizzata, ma l'hacker sicuramente tenterà di aggirarla e non di valicarla. La sicurezza è una grossa palizzata: è tutto ciò che circonda la crittografia a renderla efficace. I testi crittografici degli ultimi dieci anni hanno dato il propri ontributo a quest'aura di magia. Uno dopo l'altro hanno esaltato le doti del 3DES a 112 bit, per esempio, senza soffermarsi gran che sul modo in cui tali chiavi dovrebbero essere generate o utilizzate. Essi hanno presentato protocolli complicati per questo o quello scopo, senza menzionare i vincoli commerciali e sociali in cui essi devono inserirsi nella realtà. Ancora, tali testi hanno illustrato la crittografia come un'ideale puramente matematico, non contaminato dalle condizioni del mondo reale. Tuttavia, sono proprio tali vincoli e tali condizioni a fare la differenza tra una polvere magica inconsistente e un vero sistema di sicurezza digitale. Il nostro libro è anche un libro sulla crittografia teorica, ma diremmo piuttosto che è un libro sulla realtà della crittografia. Nostro obiettivo è descrivere esplicitamente i vincoli e le condizioni che il mondo reale impone alla crittografia, illustrando quindi come progettare un sistema crittografico sicuro. In qualche modo, questi libro è il seguito del precedente di Bruce Schneier Crittografia applicata, pubblicato ormai dieci anni or sono. Mentre quel testo illustrava una panoramica più ampia della crittografia e delle miriadi di possibilità offerte da questa scienza, l'argomento di questo libro è molto circoscritto. Non vi diamo decine di opzioni: ve ne diamo una e vi diciamo come implementarla correttamente. Il testo precedente mostra le meravigliose possibilità della crittografia, intesa come scienza matematica, illustrando che cosa è concepibile e che cosa è possibile ottenere; questo testo, invece, è gravido di consigli concreti, a uso di coloro che progettano e implementano sistemi crittografici. Questo libro rappresenta il nostro tentativo di riempire il vuoto tra la promessa teorica della crittografia e la sua realtà: cerchiamo di insegnare ai progettisti come avvalersi della crittografia per elevare la sicurezza dei sistemi. Noi siamo qualificati a scrivere un libro di questo genere, perché siamo da molti anni crittanalisti: Bruce è ben noto per i suoi libri precedenti e per la sua newsletter "Crypto-Gram"; Niels Ferguson ha affinato le proprie arti di crittanalista realizzando sistemi di pagamento presso il CWI (Istituto nazionale delle ricerche olandese nella matematica e nell'informatica) di Amsterdam e in seguito presso una Society olandese denominata DigiCash; Bruce ha progettato l'algoritmo di codifica Blowfish ed entrambi abbiamo fatto parte del team di progetto di Twofish. Le ricerche di Niels hanno portato al primo esempio efficiente di protocollo di pagamento in anonimato della generazione corrente; abbiamo scritto non decine, bensì centinaia di documenti di livello accademico sull'argomento.
Cosa più importante, abbiamo entrambi un'esperienza di lunga data nella
progettazione e nell'implementazione di sistemi crittografici. Dal 1991 al 1999,
la Società di consulenza di Bruce (Counterpane Systems) ha progettato e
analizzato servizi per alcune delle aziende informatiche e finanziarie più
grandi del mondo. Più recentemente, Counterpane Internet Security Inc. ha
fornito sistemi di gestione e monitoraggio della sicurezza a grandi gruppi
commerciali e ad agenzie governative di tutto il mondo. Anche Niels ha lavorato
a Counterpane prima di fondare la propria Società di consulenza, la MacFergus.
Abbiamo visto l'applicazione della crittografia in svariate realtà operative,
constatandone a volte lo stridente contrasto con la realtà dell'ingegneria del
software o peggio delle necessità commerciali. Siamo qualificati a scrivere
questo libro perché abbiamo dovuto "scriverlo" di continuo e svariate volte per
i clienti delle nostre Società di consulenza.
Come leggere questo volume Questo volume è piuttosto una narrazione anziché una guida di riferimento canonica. Esso esamina la progettazione dei sistemi crittografici considerando innanzitutto gli algoritmi vagliati per ogni caso specifico, giungendo man mano, come in una serie di cerchi concentrici via via più grandi, a illustrare l'infrastruttura necessaria per il loro funzionamento. Il problema crittografico che abbiamo affrontato è unico. Esso è alla base di quasi ogni applicazione della crittografia: consentire a due persone di comunicare in modo sicuro. Concentrandoci su un solo problema e una sola filosofia di progettazione, abbiamo ritenuto che il risultato avrebbe illustrato in maniera più adeguata la realtà dell'ingegneria del software crittografico. | << | < | > | >> |Pagina 132.7 La crittografia è molto difficileLa crittografia è maledettamente difficile. Persino i progettisti più esperti elaborano sistemi che vengono violati nell'arco di qualche anno. È una situazione talmente comune che ormai non ci sorprende più. La proprietà dell'anello più debole e l'ambiente antagonistico cospirano per rendere la vita del crittografo molto dura. Un altro problema degno di nota è l'impossibilità di condurre test. Non possiamo in alcun modo, da noi conosciuto, testare se un sistema è sicuro. Al massimo possiamo renderlo pubblico e farlo esaminare da altri esperti, ma la seconda parte non è automatica: ci sono molti sistemi pubblici che nessuno ha avuto interesse a esaminare sin dalla loro pubblicazione. Persino gli atti delle conferenze e le riviste specializzate ricevono soltanto recensioni elementari e limitate e l'esame di tali documenti è teso a setacciare più che altro il lavoro degli altri, piuttosto che a controllare l'affidabilità o la correttezza dei risultati; su tale documentazione si conduce un controllo limitato, ma tipicamente da parte di persone che non hanno il tempo di condurre un'analisi troppo approfondita e, tra l'altro, raramente remunerata: una recensione di 20 o 30 atti condotta nel proprio tempo libero difficilmente produrrà risultati rigorosamente scrupolosi. Esistono piccole aree della crittografia che comprendiamo piuttosto bene. Ciò non significa che siano semplici, ma soltanto che ci lavoriamo da qualche decennio, per cui presumiamo di conoscerne le problematiche. Questo volume illustra prevalentemente queste aree. Il nostro impegno nella sua stesura è stato quello di raccogliere le informazioni disponibili sulla progettazione e la realizzazione di sistemi crittografici pratici, presentandole tutte in forma organica. Per qualche motivo, le persone che non sono addentro al campo sembrano pensare che la crittografia sia semplice. Svariate volte abbiamo incontrato ingegneri elettrici o programmatori che hanno leggiucchiato un libro (in genere, Applied cryptography) e hanno deciso di progettare un proprio sistema. Finora non abbiamo mai visto un risultato decente da questo tipo di approccio, e di risultati ne abbiamo visti un bel po' nello scorso decennio. Sarebbe come se uno studente con due semestri di ingegneria civile volesse progettare un nuovo ponte rivoluzionario sullo Stretto di Bering: chi lo costruirebbe realmente o lo utilizzerebbe, senza un ulteriore esame? Per qualche motivo, invece, nel caso della crittografia le persone pagano e utilizzano sistemi realizzati da principianti. Una cattiva crittografia non è molto diversa, all'apparenza, da una realmente efficace, per cui, finché i sistemi non vengono seriamente attaccati, alcuni clienti ne sono abbagliati e acquistano il prodotto.
Non cadete nella tentazione di pensare che la crittografia sia semplice,
perché non lo è.
2.8 La crittografia è la parte più semplice Sebbene la crittografia in sé sia difficile, resta una delle parti più semplici di un sistema di sicurezza. Come una serratura, un componente crittografico ha dei limiti e dei requisiti abbastanza ben definiti. L'intero sistema di sicurezza è molto più difficile da definire con chiarezza, dato che coinvolge molti più aspetti. Per esempio, le politiche aziendali deputate a fornire l'accesso e quelle deputate a controllare che siano seguite le altre procedure rappresentano aspetti molto più complicati da gestire perché la situazione si evolve continuamente. Un altro notevole problema nel campo della sicurezza informatica è la qualità atroce di quasi tutto il software: un sistema software di sicurezza non può essere efficace se i programmi sottostanti della macchina contengono migliaia di bug che aprono ampi varchi ai malintenzionati. La crittografia è la parte più semplice perché ci sono persone che sanno come realizzare un lavoro ragionevolmente buono. Ci sono esperti che realizzano un sistema crittografico a pagamento. Essi non sono a buon mercato e spesso è antipatico lavorarci insieme, perché insistono sulla necessità di cambiare altre parti del sistema per ottenere gli standard di sicurezza desiderati. Nondimeno, per tutti gli scopi pratici, la crittografia pone dei problemi che sappiamo come risolvere.
È il resto del sistema di sicurezza a contenere problemi che non sappiamo
come risolvere. La gestione e la conservazione delle chiavi sono cruciali per
ogni sistema crittografico, ma gran parte dei computer non prevede alcun luogo
sicuro in cui conservare una chiave. La scarsa qualità del software, poi, è un
problema che non sappiamo affatto come gestire, per non parlare della sicurezza
delle reti. Aggiungendo infine al tutto gli utenti, il problema diventa quasi
irrisolvibile.
|