Esempio di comunicazione protetta tramite Cryptography Next Generation (CNG)
Nell'esempio di comunicazione protetta tramite Cryptography Next Generation (CNG) viene modellata una soluzione di crittografia per un attacco di tipo man-in-the-middle.Vengono simulate le comunicazioni tra tre utenti, Alice, Bob e Mallory, in un'agenzia pubblicitaria fittizia.Nell'esempio vengono utilizzate classi CNG, un trasporto di named pipe e finestre della console interattive per illustrare le soluzioni di sicurezza per un attacco di tipo man-in-the-middle.
Si tratta di un esempio avanzato che presuppone familiarità con i concetti di crittografia, comunicazione interprocesso e sicurezza di rete.
Nota
Le classi CNG sono disponibili solo in Windows Vista e nelle versioni successive dei sistemi operativi Windows.
Nel presente argomento viene fornita una panoramica dell'esempio CNG,in particolare degli aspetti seguenti:
Scenario dell'esempio
Vulnerabilità di sicurezza dello strumento di messaggistica immediata
Versione 1: named pipe
Versioni 2-5: miglioramenti incrementali della sicurezza
Risultati dei test
Codice dell'esempio
Convenzioni di denominazione
Informazioni dettagliate
Scenario dell'esempio
Un'agenzia pubblicitaria sviluppa uno strumento di messaggistica immediata da eseguire sul desktop.Tutti i dipendenti possono visualizzare i messaggi immessi nello strumento.
Alice e Bob lavorano nello stesso reparto vendite.Utilizzano lo strumento di messaggistica immediata per scambiarsi contatti commerciali.Mallory è un tecnico di rete che si occupa di operazioni di sistema.In segreto, controlla i messaggi di Alice e Bob.Una volta al mese copia preziosi contatti commerciali e li vende alla concorrenza per tornaconto personale.
Dopo diversi mesi, la società si accorge del furto dei contatti commerciali e realizza che le comunicazioni interreparto sono state compromesse.Si decide quindi di creare un nuovo strumento di messaggistica immediata, iniziando con un'analisi della sicurezza dello strumento corrente.
Vulnerabilità di sicurezza dello strumento di messaggistica immediata
La società realizza che lo strumento di messaggistica immediata corrente presenta le seguenti vulnerabilità di sicurezza:
Trasferisce messaggi di testo normale (non crittografati).
Trasmette tali messaggi sulla rete aziendale.
I messaggi possono essere visualizzati e anche registrati da chiunque.
La società decide che è possibile risolvere questi problemi con il nuovo strumento di messaggistica immediata abilitando la comunicazione point-to-point nella rete aziendale.
Versione 1: named pipe
La società crea un nuovo strumento di messaggistica immediata che si basa su named pipe (o canali) per la comunicazione interprocesso (IPC).Questa versione non prevede l'utilizzo della crittografia o delle firme digitali.
Ad Alice e Bob vengono fornite le istruzioni seguenti:
Creare una connessione iniziale su un canale denominato PublicChannel.
Inviare il nome di un canale privato l'una all'altro, quindi disconnettersi immediatamente da PublicChannel.
Connettersi utilizzando il canale privato e scambiarsi contatti commerciali.
La società si augura che i canali di comunicazione point-to-point forniscano un isolamento sufficiente dal resto della rete aziendale.La soluzione si rivela ben presto insufficiente.Mallory scopre come aggirare il nuovo sistema.Continua con il furto di contatti commerciali e inizia a nascondere i suoi interventi modificando con attenzione gli indirizzi.
La società decide di aggiungere misure di sicurezza allo strumento di messaggistica immediata per interrompere i furti.
Versioni 2-5: miglioramenti incrementali della sicurezza
Il novo software viene testato e ottimizzato per diversi mesi.Al termine dei test, sono state create quattro nuove versioni dello strumento di messaggistica immediata,ognuna più avanzata di quella precedente:
La versione 2 incorpora crittografia basata su CNG che utilizza coppie di chiavi pubblica/privata.
Nella versione 3 viene applicata una firma digitale alle chiavi di crittografia e ai messaggi.
Nella versione 4 viene aggiunto un canale privato per trasmettere una firma digitale da applicare a chiavi di crittografia e messaggi.
Nella versione 5 le intrusioni vengono bloccate terminando tutte le sessioni di messaggistica immediata che ricevono chiavi con firme non valide.
Risultati dei test
Nella versione 2 viene utilizzato un algoritmo di crittografia ad alta sicurezza.I tentativi di decrittografia richiederebbero un utilizzo elevato di risorse e tempo.Pertanto, il fatto che la soluzione sia stata compromessa viene accolto con stupore nella società.
Neanche la versione 3, in cui si utilizzano le firme digitale, impedisce i furti.Tuttavia, consente alla società di fare un'importante scoperta: se le chiavi di crittografia e le firme digitali vengono intercettate e sostituite, il canale utilizzato per trasmetterle deve essere l'origine del problema.
Questa idea viene testata aggiungendo un canale privato alla versione 4 per trasmettere una firma digitale.In questa versione viene anche visualizzato un avviso quando una chiave o un messaggio è associato a una firma non valida.La versione 4 viene consegnata solo a due dipendenti della società: Alice e Bob.Non appena Alice e Bob inviano i primi messaggi, vengono visualizzati messaggi di avviso.La società comprende finalmente che la rete sta subendo un attacco di tipo man-in-the-middle.
La versione 5 è identica alla versione 4, con la differenza che la sessione viene chiusa alla prima violazione di sicurezza.Non appena viene installata questa versione, i furti di contatti commerciali si interrompono.
Codice dell'esempio
Il codice fornito con questo esempio modella le cinque versioni di sicurezza.Per una panoramica del codice, vedere Cenni preliminari sul codice sorgente (esempio CNG).
Nota
In questo esempio non viene fornita una soluzione di sicurezza completa.L'unico scopo è dimostrare l'API CNG in uno scenario di sicurezza plausibile.Un'applicazione di sicurezza completa esula dall'ambito di questo esempio.
Convenzioni di denominazione
Nella documentazione di questo esempio si fa riferimento a cinque versioni software e ai livelli di sicurezza corrispondenti tramite un numero, ad esempio "versione 1", "versione 2" e così via.
A seconda del contesto, i nomi "Alice", "Bob" e "Mallory" possono fare riferimento ai tre utenti coinvolti nello scenario di esempio e alle tre applicazioni di Visual Studio.Per semplicità, nella documentazione vengono utilizzati gli stessi nomi per fare riferimento a entrambi.Ad esempio, "Alice carica automaticamente Bob e Mallory" significa che l'applicazione Alice carica automaticamente le applicazioni Bob e Mallory.
Informazioni dettagliate
Negli argomenti seguenti vengono fornite informazioni dettagliate sullo scenario e sul codice dell'esempio:
In Implementazione di un attacco di tipo man-in-the-middle viene illustrata la rappresentazione utilizzata nell'esempio, che è un tipico attacco man-in-the-middle.
In Cenni preliminari sull'algoritmo ECDH vengono descritti brevemente i calcoli dell'algoritmo ECDH (Elliptic Curve Diffie-Hellman).
In Descrizione dettagliata dello scambio di chiavi e messaggi viene fornita una guida dettagliata alle procedure di scambio di chiavi e messaggi utilizzate nelle cinque versioni dell'esempio.
In Procedura: compilare ed eseguire l'esempio CNG viene descritta l'architettura dell'esempio e vengono fornite istruzioni per la compilazione, la fase di esecuzione e l'utilizzo.Questa sezione contiene anche elenchi di codice sorgente.
In Cenni preliminari sul codice sorgente vengono descritti l'interazione e il flusso dei componenti del codice.
In Analisi del codice delle classi di utilità vengono descritti il contenuto e lo scopo del file Utilities.cs.
In Analisi del codice della classe ChannelManager vengono descritti il contenuto e lo scopo del file ChannelManager.cs.
In Analisi del codice della classe Communicator vengono descritti il contenuto e lo scopo del file Communicator.cs.
In Output previsto viene visualizzato l'output del codice di esempio.
Vedere anche
Concetti
Modello di crittografia di .NET Framework