|
|
|
| << | < | > | >> |Indice
Prefazione 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.
|