Distribuzione della chiave pubblica. Il problema della distribuzione delle chiavi in ​​crittografia Distribuzione delle chiavi con la partecipazione di un centro di distribuzione delle chiavi

Protocollo di distribuzione delle chiavi Un protocollo di creazione della chiave è un protocollo crittografico in cui un segreto condiviso diventa disponibile a due o più parti per un utilizzo successivo per scopi crittografici.

I protocolli di distribuzione delle chiavi si dividono in due classi:

    Protocolli chiave di trasporto;

    Protocolli di scambio chiavi.

Principali protocolli di trasporto(trasporto delle chiavi) sono protocolli di distribuzione delle chiavi in ​​cui un partecipante crea o acquisisce in altro modo un segreto e lo trasmette in modo sicuro ad altri partecipanti.

Protocolli di scambio chiavi(accordo sulle chiavi, scambio di chiavi) sono protocolli di distribuzione delle chiavi in ​​cui un segreto condiviso viene elaborato da due o più partecipanti in funzione delle informazioni fornite da (o associate a) ciascuno di essi in modo tale che (idealmente) nessun altro parte può predeterminare il proprio segreto comune.

Esistono due forme aggiuntive di protocolli di distribuzione delle chiavi. Si dice che un protocollo esegua un aggiornamento della chiave se genera una chiave completamente nuova che è indipendente dalle chiavi generate nelle sessioni precedenti del protocollo. Il protocollo genera chiavi derivate (key derivation) se una nuova chiave viene “derivata” da quelle già esistenti tra i partecipanti al crittosistema.

Le proprietà principali dei protocolli di distribuzione delle chiavi includono le proprietà dell'autenticazione della chiave, della conferma della chiave e dell'autenticazione della chiave esplicita.

Autenticazione con chiave (implicita).(autenticazione implicita della chiave) - una proprietà mediante la quale un partecipante a un protocollo garantisce che nessun'altra parte diversa da un secondo partecipante specificatamente identificato nel protocollo (ed eventualmente un'autorità fiduciaria) possa accedere alle chiavi segrete ottenute nel protocollo. Non vi è alcuna garanzia che il secondo partecipante abbia effettivamente avuto accesso alla chiave, ma nessun altro oltre a lui potrebbe ottenerla. L'autenticazione implicita della chiave è indipendente dall'effettiva proprietà della chiave da parte dell'altra parte e non richiede alcuna azione da parte dell'altra parte.

Conferma chiave(conferma chiave) - una proprietà mediante la quale un partecipante al protocollo è convinto che un altro partecipante (possibilmente non identificato) possiede effettivamente le chiavi segrete ottenute nel protocollo.

Autenticazione con chiave esplicita(autenticazione esplicita della chiave) - una proprietà che viene eseguita quando l'autenticazione (implicita) della chiave e la conferma della chiave avvengono simultaneamente.

    1. Protocollo Needham-Schroeder su chiavi simmetriche

Questo protocollo è alla base di un gran numero di protocolli di distribuzione delle chiavi che utilizzano centri attendibili. Esistono due tipi di questo protocollo:

    Protocollo Needham-Schroeder su chiavi simmetriche;

    Protocollo Needham-Schroeder su chiavi asimmetriche.

Il protocollo a chiave simmetrica funziona come segue:

Fase preliminare:

La distribuzione delle chiavi è il processo più critico nella gestione delle chiavi. I requisiti per farlo sono due:

1.Efficienza e accuratezza della distribuzione

2. Segretezza delle chiavi distribuite.

Recentemente si è verificato un notevole spostamento verso l’uso di sistemi crittografici a chiave pubblica, in cui il problema della distribuzione delle chiavi viene eliminato. Tuttavia, la distribuzione delle informazioni chiave nel sistema informativo richiede nuove soluzioni efficaci.

La distribuzione delle chiavi tra gli utenti è implementata da due approcci diversi:

1.Creando uno o più centri di distribuzione chiave. Lo svantaggio di questo approccio è che il centro di distribuzione sa a chi sono assegnate le chiavi e questo rende possibile leggere tutti i messaggi che circolano nell'IS. Eventuali abusi hanno un impatto significativo sulla tutela.

2.Scambio diretto di chiavi tra gli utenti del sistema informativo.

La sfida quindi è autenticare in modo affidabile i soggetti.

In entrambi i casi deve essere garantita l'autenticità della sessione di comunicazione. Ciò può essere ottenuto in due modi:

1. Il meccanismo di richiesta-risposta, che consiste nel seguente. Se l'utente A vuole essere sicuro che i messaggi che riceve da B non siano falsi, include un elemento imprevedibile (richiesta) nel messaggio che invia a B. Quando risponde, l'utente B deve eseguire alcune operazioni su questo elemento (ad esempio, aggiungere 1). Questo non può essere fatto in anticipo, poiché non è noto quale numero casuale apparirà nella richiesta. Dopo aver ricevuto una risposta con i risultati delle azioni, l'Utente A può essere sicuro che la sessione sia autentica. Lo svantaggio di questo metodo è la possibilità di stabilire uno schema seppur complesso tra la richiesta e la risposta.

2. Meccanismo di marca temporale ("marca temporale"). Si tratta di registrare l'ora per ciascun messaggio. In questo caso ogni utente IS può sapere quanto è “vecchio” il messaggio in arrivo.

In entrambi i casi, è opportuno utilizzare la crittografia per garantire che la risposta non sia stata inviata da un utente malintenzionato e che il timestamp non sia stato alterato.

Quando si utilizzano i timestamp, si verifica un problema con l'intervallo di tempo di ritardo accettabile per verificare l'autenticità di una sessione. Dopotutto, un messaggio con un “time stamp” non può, in linea di principio, essere trasmesso istantaneamente. Inoltre gli orologi del computer del destinatario e del mittente non possono essere assolutamente sincronizzati. Quale ritardo nel “timbro” è considerato sospetto?

Pertanto, nei sistemi informativi reali, ad esempio nei sistemi di pagamento con carta di credito, viene utilizzato il secondo meccanismo per stabilire l'autenticità e proteggere dalla contraffazione. L'intervallo utilizzato va da uno a diversi minuti. Grande numero metodi conosciuti furto moneta elettronica, si basa sull’“incunearsi” in questo divario con false richieste di prelievo di denaro.

I sistemi crittografici a chiave pubblica possono essere utilizzati per scambiare chiavi utilizzando lo stesso algoritmo RSA, ma l'algoritmo Diffie-Hellman si è dimostrato molto efficace, consentendo a due utenti di scambiare senza intermediari una chiave, che può poi essere utilizzata per la crittografia simmetrica. Nonostante la semplicità dell’algoritmo Diffie-Hellman, il suo svantaggio rispetto al sistema RSA è la mancanza di un limite inferiore garantito per la complessità del rilevamento delle chiavi.

Inoltre, sebbene l'algoritmo descritto eluda il problema del trasferimento della chiave nascosta, rimane la necessità dell'autenticazione. Senza fondi aggiuntivi, uno degli utenti non può essere sicuro di aver scambiato le chiavi esattamente con l'utente di cui ha bisogno. Il pericolo dell'imitazione in questo caso rimane.

Soluzioni originali al problema delle "chiavi vaganti" vengono sviluppate attivamente da specialisti. Questi sistemi sono un compromesso tra i sistemi a chiave pubblica e gli algoritmi convenzionali, che richiedono che il mittente e il destinatario abbiano la stessa chiave.

L'idea del metodo è abbastanza semplice. Dopo che la chiave è stata utilizzata in una sessione, secondo alcune regole, viene sostituita da un'altra.

Questa regola deve essere nota sia al mittente che al destinatario. Conoscendo la regola, dopo aver ricevuto il messaggio successivo, anche il destinatario cambia la chiave. Se la regola per il cambio delle chiavi viene seguita attentamente sia dal mittente che dal destinatario, in ogni momento hanno la stessa chiave. La modifica costante della chiave rende difficile per un utente malintenzionato divulgare informazioni.

Il compito principale nell'implementazione di questo metodo è scegliere una regola di modifica chiave efficace. Il modo più semplice è generare un elenco casuale di chiavi. Le chiavi vengono modificate nell'ordine dell'elenco. Ovviamente però la lista dovrà essere trasmessa in qualche modo.

Un'altra opzione consiste nell'utilizzare algoritmi matematici basati sulle cosiddette sequenze iterative. Su un set di chiavi, la stessa operazione su un elemento produce un altro elemento. La sequenza di queste operazioni permette di spostarsi da un elemento all'altro fino a quando non è stato iterato l'intero insieme.

Il più accessibile è l'uso dei campi Galois. Elevando l'elemento generatore a una potenza è possibile passare in sequenza da un numero all'altro. Questi numeri sono accettati come chiavi.

L'informazione chiave in questo caso è l'elemento sorgente, che deve essere noto sia al mittente che al destinatario prima di iniziare la comunicazione.

L'affidabilità di tali metodi deve essere garantita tenendo conto della conoscenza da parte dell'aggressore della regola di modifica della chiave utilizzata.

La gestione delle chiavi segrete è collegata tramite protocolli per la loro distribuzione tra i sistemi di installazione delle chiavi e di gestione delle chiavi. Il sistema di installazione delle chiavi definisce gli algoritmi e le procedure per generare, distribuire, trasmettere e verificare le chiavi.
Il sistema di gestione delle chiavi determina la procedura per l'utilizzo, la modifica, la conservazione, la rimozione dalla circolazione delle chiavi compromesse e la distruzione delle vecchie chiavi.

Pre-distribuzione delle chiavi

I metodi di sicurezza crittografici vengono utilizzati per proteggere in modo affidabile le informazioni trasmesse su un canale di comunicazione aperto. Per utilizzare questi metodi, è necessario completare la selezione iniziale e l'installazione delle chiavi. In genere, per la distribuzione iniziale delle chiavi è necessario un canale di comunicazione sicuro.
Maggior parte modo affidabile distribuzione iniziale delle chiavi - incontro personale di tutte le parti interagenti, comunicazione tramite corriere. Con un gran numero di utenti è necessaria la distribuzione preliminare di una quantità significativa di informazioni chiave e la loro ulteriore archiviazione.
In pratica vengono utilizzati appositi sistemi di pre-distribuzione delle chiavi. Questi sistemi prevedono la distribuzione e la memorizzazione non delle chiavi stesse, ma di alcune informazioni più piccole sulla base delle quali ciascuna parte può calcolare la chiave di sessione.
Esistono due algoritmi per la distribuzione della pre-chiave:
  • vengono trasmesse informazioni, compresa una parte aperta, che può essere collocata su un server pubblico, nonché parti segrete destinate a ciascun soggetto;
  • Il valore chiave corrente per l'interazione tra gli abbonati viene calcolato utilizzando la parte segreta e aperta comune delle informazioni sulla chiave originale disponibili agli abbonati.
Ci sono due requisiti per un sistema di pre-distribuzione delle chiavi:
  • lei deve essere sostenibile , cioè. tenere conto della possibilità di divulgazione parziale delle chiavi in ​​caso di compromissione, inganno o collusione degli abbonati;
  • lei deve essere flessibile - consentire la possibilità di un rapido ripristino escludendo gli abbonati compromessi e collegando nuovi abbonati.

Inoltro chiavi

Dopo la distribuzione della prechiave, è necessario trasferire chiavi di sessione specifiche. Il trasferimento di queste chiavi viene effettuato mediante crittografia utilizzando chiavi precedentemente ottenute.
Quando si trasferiscono chiavi segrete su un canale di comunicazione aperto tra abbonati che non si fidano l'uno dell'altro, è necessario utilizzare l'intera gamma di attività di autenticazione.
Per gestire centralmente il trasferimento delle chiavi, sono stati creati appositi centri di fiducia che fungono da centri per la distribuzione o la ricodifica delle chiavi. Nel primo caso, le chiavi vengono generate presso il centro di distribuzione stesso, nel secondo caso le chiavi vengono generate dagli stessi abbonati.

Distribuzione della chiave pubblica

A causa dell'elevato numero di abbonati alla rete, gli approcci di distribuzione chiave sopra menzionati diventano molto scomodi. Diffie e Hellman hanno risolto questo problema utilizzando un canale di comunicazione non protetto.
Nel sistema di distribuzione della chiave pubblica da loro proposto, ciascuna parte inizialmente ha il proprio parametro segreto. Il protocollo di interazione viene effettuato su un canale di comunicazione aperto.
Le parti si scambiano alcuni messaggi formati utilizzando i loro parametri segreti. Sulla base dei risultati dello scambio, gli abbonati calcolano una chiave di comunicazione segreta condivisa. Tali protocolli non sono associati alla distribuzione e all'inoltro delle chiavi, poiché inizialmente nessuno degli abbonati possiede una chiave.
Nella sua forma migliorata, il sistema Diffie-Hellman consente di ottenere una chiave condivisa, verificare e confermare la correttezza dei calcoli e autenticare le parti.

Schema di condivisione segreta

Lo schema di condivisione del segreto prevede che a ogni abbonato venga assegnata una parte del segreto ed è determinato da due algoritmi che soddisfano la condizione che nessun utente abbia la chiave completa del gruppo.
Il primo algoritmo determina l'ordine di calcolo dei valori delle condivisioni in base a un determinato valore della chiave segreta, il secondo è progettato per ripristinare il segreto dalle condivisioni conosciute.
Una generalizzazione dello schema di condivisione segreta è relativa a:

  • con l'introduzione di una struttura di accesso, quando una decisione può essere presa non da uno, ma da più gruppi diversi, e ad alcuni partecipanti può essere concesso il diritto di “veto”;
  • introdurre un meccanismo per individuare frodi o collusioni tra i partecipanti;
  • con l'introduzione di un apposito protocollo per la ripartizione delle quote tra i partecipanti con conferma della correttezza delle informazioni ricevute e autenticazione delle parti.

Certificati

Il problema con la certificazione della firma digitale è il seguente. Prima di utilizzare una chiave pubblica, l'abbonato deve essere sicuro che la chiave pubblica appartenga al destinatario. Le chiavi pubbliche sono archiviate su un server pubblico e l'aggressore ha la possibilità di sostituire la chiave pubblica di uno degli abbonati e agire per suo conto.
Per proteggere le chiavi pubbliche sono stati creati appositi centri di certificazione, che svolgono il ruolo di terza parte e certificano le chiavi pubbliche di ciascun abbonato con la propria firma digitale.
Il certificato è un insieme di dati certificati da una firma digitale del centro, e comprende una chiave pubblica e un elenco di attributi appartenenti al sottoscrittore. Questo elenco include gli attributi:
  • nome utente e autorità di certificazione;
  • numero di certificato;
  • periodo di validità del certificato;
  • assegnazione di una chiave pubblica (crittografia, firma digitale), ecc.
Lo standard internazionale ISO X.509 definisce la struttura generale dei certificati e dei protocolli a chiave pubblica per il loro utilizzo per l'autenticazione nelle reti.

Autorità di certificazione

Il centro di certificazione è progettato per registrare gli abbonati, produrre certificati a chiave pubblica, archiviare i certificati prodotti, mantenere un elenco di certificati validi ed emettere un elenco di certificati revocati in anticipo.
Per le reti con un numero elevato di abbonati vengono create più autorità di certificazione in una struttura gerarchica. L'autorità di certificazione principale rilascia certificati ai centri industriali subordinati, confermando la fiducia nelle chiavi pubbliche di questi centri.
Conoscendo la gerarchia e la subordinazione reciproca delle autorità di certificazione, è possibile determinare se l'abbonato è il proprietario di una determinata chiave pubblica.
La principale difficoltà nella creazione di centri di certificazione è il loro status giuridico e la potenziale capacità finanziaria di risarcire i danni dovuti al mancato rispetto dei certificati firmati digitalmente emessi dal centro, agli accordi e ai contratti interrotti dal rifiuto della firma digitale o dalla sua falsificazione.

Questo approccio crea una sorta di circolo vizioso: per condividere un segreto (il messaggio trasmesso), mittente e destinatario devono già avere un segreto comune (la chiave di crittografia). Prima questo problemaè stato risolto utilizzando un metodo non crittografico, trasferendo la chiave su canali di comunicazione fisicamente protetti dalle intercettazioni (Fig. 1). Tuttavia, creare un canale di questo tipo e mantenerlo pronto per l'uso in caso di necessità urgente di trasferire una chiave è piuttosto dispendioso in termini di manodopera e costoso.

Riso. 1.

Il problema è stato risolto con successo nell'ambito della crittografia moderna, nata poco più di un quarto di secolo fa, così chiamata in contrasto con la "crittografia tradizionale" già conosciuta a quel tempo. La soluzione è utilizzare cifrari asimmetrici (a due chiavi) o schemi di distribuzione delle chiavi su canali di comunicazione aperti.

Nel primo caso le procedure di crittografia e decrittografia vengono eseguite su chiavi diverse, quindi non è necessario mantenere segreta la chiave di crittografia. Tuttavia, a causa delle caratteristiche di efficienza estremamente basse e della suscettibilità a determinati tipi speciali di attacchi, tali codici si sono rivelati di scarsa utilità per nascondere direttamente le informazioni dell'utente. Invece, le cifre asimmetriche vengono utilizzate come parte di schemi combinati, quando un array di dati viene crittografato con una cifratura simmetrica su una chiave monouso, che a sua volta viene crittografata con una cifratura a due chiavi e in questa forma viene trasmessa insieme ai dati. .

Gli schemi per la distribuzione delle chiavi su canali di comunicazione aperti risolvono lo stesso problema in un modo leggermente diverso: durante una sessione di interazione, due corrispondenti sviluppano una chiave segreta comune, che viene poi utilizzata per crittografare i dati trasmessi con una cifra simmetrica. Inoltre, intercettare le informazioni nel canale durante una sessione di generazione di tale chiave non dà al nemico l'opportunità di ottenere la chiave stessa: K=K(X,Y) non è computabile (Fig. 2).


Riso. 2.

Problemi di crittografia asimmetrica

Oggi, la crittografia asimmetrica risolve con successo il problema della distribuzione delle chiavi su canali di comunicazione aperti. Tuttavia, ci sono diversi problemi che causano qualche preoccupazione per il suo futuro. La forza di tutti gli schemi di crittografia asimmetrica si basa sull'impossibilità di una soluzione computazionale efficiente a una serie di problemi matematici (i cosiddetti problemi NP), come la fattorizzazione (fattorizzazione) di grandi numeri e il logaritmo in grandi campi discreti. Ma questa impossibilità è solo un'ipotesi che può essere confutata in qualsiasi momento se viene dimostrata l'ipotesi opposta, cioè NP=P. Ciò porterebbe al collasso di tutta la crittografia moderna, poiché i problemi su cui si basa l’irrisolvibilità sono strettamente correlati, e rompere anche un solo sistema crittografico significherebbe romperne la maggior parte degli altri. Si stanno conducendo intense ricerche in questa direzione, ma il problema rimane ancora aperto.

Un'altra minaccia per i moderni sistemi crittografici proviene dai cosiddetti computer quantistici: dispositivi di elaborazione delle informazioni basati sui principi della meccanica quantistica, la cui idea fu proposta per la prima volta dal famoso fisico americano R. Feynman. Nel 1994, P. Shor ha proposto un algoritmo di fattorizzazione per un computer quantistico, che consente di fattorizzare un numero in un tempo polinomiale che dipende dalla dimensione del numero. E nel 2001, questo algoritmo è stato implementato con successo sul primo prototipo funzionante di un computer quantistico creato da specialisti dell'IBM e dell'Università di Stanford.

Secondo gli esperti, un computer quantistico in grado di violare il crittosistema RSA potrà essere realizzato in circa 15-25 anni.

Un altro fatto spiacevole relativo ai crittosistemi asimmetrici è che la “dimensione sicura” minima delle chiavi è in costante aumento a causa dei progressi nel campo. Nell'intero quarto di secolo di storia di tali sistemi, è già cresciuto di circa 10 volte, mentre nello stesso periodo per i codici simmetrici tradizionali, la dimensione della chiave è cambiata meno di due volte.

Tutto quanto sopra rende le prospettive a lungo termine dei sistemi di crittografia asimmetrica non del tutto affidabili e ci costringe a cercare modi alternativi risolvendo gli stessi problemi. Alcuni di essi possono essere risolti nel quadro della cosiddetta crittografia quantistica o comunicazione quantistica.

La distribuzione delle chiavi è il processo più critico nella gestione delle chiavi. Ad esso si applicano i seguenti requisiti:

· efficienza e accuratezza della distribuzione;

· segretezza delle chiavi distribuite.

La distribuzione delle chiavi tra gli utenti di una rete di computer viene implementata in due modi:

1) utilizzando uno o più centri di distribuzione chiave;

2) scambio diretto di chiavi di sessione tra gli utenti della rete.

Lo svantaggio del primo approccio è che il centro di distribuzione delle chiavi sa quali chiavi vengono distribuite a chi e ciò consente di leggere tutti i messaggi trasmessi sulla rete. Eventuali abusi hanno un impatto significativo sulla tutela. Nel secondo approccio, la sfida è autenticare in modo affidabile l’identità delle entità della rete.

In entrambi i casi deve essere garantita l'autenticità della sessione di comunicazione. Questo può essere fatto utilizzando un meccanismo di richiesta-risposta o un meccanismo di timestamp.

Meccanismo di richiesta-rispostaè come segue. L'utente A include un elemento imprevedibile (ad esempio un numero casuale) nel messaggio (richiesta) inviato all'utente B. Quando risponde, l'utente B deve eseguire qualche operazione con questo elemento (ad esempio aggiungerne uno), cosa che non può essere eseguita in anticipo, poiché non è noto quale numero casuale arriverà nella richiesta. Dopo aver ricevuto il risultato delle azioni dell'Utente B (risposta), l'Utente A può essere sicuro che la sessione sia autentica.

Meccanismo di timestamp prevede la registrazione dell'ora per ciascun messaggio. Ciò consente a ciascuna entità della rete di determinare quanti anni ha un messaggio in arrivo e di rifiutarlo se ci sono dubbi sulla sua autenticità. Quando si utilizzano i timestamp, è necessario impostare un intervallo di ritardo accettabile.

In entrambi i casi, la crittografia viene utilizzata per proteggere il controllo per garantire che la risposta non sia stata inviata da un utente malintenzionato e che il timestamp non sia stato manomesso.



Il problema della distribuzione delle chiavi si riduce alla costruzione di un protocollo di distribuzione delle chiavi che fornisca:

· reciproca conferma dell'autenticità dei partecipanti alla sessione;

· conferma dell'autenticità della sessione mediante un meccanismo di richiesta-risposta o di timestamp;

· utilizzo di un numero minimo di messaggi in caso di scambio chiavi;

· la possibilità di eliminare gli abusi da parte del centro di distribuzione chiave (fino al suo abbandono).

È consigliabile basare la soluzione al problema della distribuzione delle chiavi sul principio di separare la procedura di conferma dell'autenticità dei partner dalla procedura di distribuzione delle chiavi stesse. Lo scopo di questo approccio è creare un metodo in cui, dopo l'autenticazione, i partecipanti stessi generano una chiave di sessione senza la partecipazione di un centro di distribuzione delle chiavi, in modo che il distributore delle chiavi non abbia modo di rivelare il contenuto dei messaggi.

Distribuzione delle chiavi con la partecipazione del centro di distribuzione delle chiavi. Quando si distribuiscono le chiavi tra i partecipanti al prossimo scambio di informazioni, deve essere garantita l'autenticità della sessione di comunicazione. Accettabile per l'autenticazione reciproca dei partner modello di stretta di mano. In questo caso nessuno dei partecipanti riceverà alcuna informazione sensibile durante la procedura di autenticazione.

L'autenticazione reciproca garantisce che venga chiamata l'entità corretta con un elevato grado di sicurezza che la connessione sia stata stabilita con il destinatario richiesto e che non siano stati effettuati tentativi di spoofing. La procedura effettiva per organizzare una connessione tra i partecipanti a uno scambio di informazioni comprende sia la fase di distribuzione sia la fase di conferma dell'autenticità dei partner.

Quando un centro di distribuzione delle chiavi (KDC) è incluso nel processo di distribuzione delle chiavi, interagisce con uno o entrambi i partecipanti alla sessione per distribuire chiavi pubbliche o segrete da utilizzare nelle sessioni di comunicazione successive.

La fase successiva, la verifica dell'autenticità dei partecipanti, prevede lo scambio di messaggi di autenticazione al fine di poter rilevare l'eventuale sostituzione o ripetizione di una delle chiamate precedenti.

Consideriamo i protocolli per crittosistemi simmetrici con chiavi segrete e per crittosistemi asimmetrici con chiavi pubbliche. Il chiamante (oggetto di origine) è indicato con A e il chiamato (oggetto di destinazione) con B. I partecipanti alla sessione A e B hanno identificatori univoci Id A e Id B, rispettivamente.

5.6.4. Protocollo di autenticazione e distribuzione
chiavi per crittosistemi simmetrici

Consideriamo come esempio il protocollo di autenticazione e distribuzione delle chiavi Kerberos (in russo - Cerberus). Il protocollo Kerberos è progettato per funzionare su reti TCP/IP e coinvolge una terza parte fidata nell'autenticazione e nella distribuzione delle chiavi. Kerberos fornisce una forte autenticazione di rete consentendo a un utente legittimo l'accesso a varie macchine sulla rete. Il protocollo Kerberos si basa su cifrari simmetrici (è implementato l'algoritmo DES, sebbene possano essere utilizzati altri algoritmi crittografici simmetrici). Kerberos genera una chiave segreta separata per ciascuna entità di rete e la conoscenza di tale chiave segreta equivale a dimostrare l'identità dell'entità di rete.

Il protocollo principale Kerberos è una variante del protocollo di autenticazione e distribuzione delle chiavi Needham-Schroeder. La versione 5 del protocollo principale Kerberos coinvolge due parti comunicanti, A e B, e un server affidabile, KS (Kerberos Server). Le parti A e B, ciascuna separatamente, condividono la propria chiave segreta con il server KS. Il server KS attendibile funge da centro di distribuzione per il centro di distribuzione delle chiavi.

Lascia che la parte A desideri ricevere una chiave di sessione per lo scambio di informazioni con la parte B.

La Parte A avvia la fase di distribuzione delle chiavi inviando in rete al server KS gli identificatori Id A e Id B:

(1) A® KS: Id A, Id B.

Il server KS genera un messaggio con un timestamp T, una data di scadenza L, una chiave di sessione casuale K e un identificatore Id A. Crittografa questo messaggio con una chiave segreta che condivide con la Parte B.

Il server KS prende quindi il timestamp T, la data di scadenza L, la chiave di sessione K, l'Id B della parte B e crittografa tutto con la chiave segreta che condivide con la parte A. Invia entrambi questi messaggi crittografati alla parte A :

(2) KS ® A: E A (T, L, K, Id B), E B (T, L, K, Id A).

La parte A decrittografa il primo messaggio con la sua chiave privata, controlla il timestamp T per garantire che il messaggio non sia una ripetizione della precedente procedura di distribuzione della chiave.

La parte A genera quindi un messaggio con il suo ID A e timestamp T, lo crittografa con la chiave di sessione di K e lo invia a B. Inoltre, A invia a B un messaggio da KS, crittografato con la chiave di B:

(3) A ® B: E K (Id A, T), E B (T, L, K, Id A).

Solo la Parte B può decrittografare i messaggi (3). La parte B riceve un timestamp T, una data di scadenza L, una chiave di sessione K e un identificatore Id A. Quindi la parte B decodifica la seconda parte del messaggio (3) con la chiave di sessione K. La coincidenza dei valori di T e Id A nelle due parti del messaggio conferma l'autenticità di A rispetto a B.

Per l'autenticazione reciproca, la parte B crea un messaggio costituito da un timestamp T più 1, lo crittografa con la chiave K e lo invia alla parte A:

(4) B® A: E K (T+1).

Se, dopo aver decriptato il messaggio (4), la parte A riceve il risultato atteso, sa che in realtà c'è B all'altro capo della linea di comunicazione.

Questo protocollo funziona correttamente a condizione che l'orologio di ciascun partecipante sia sincronizzato con l'orologio del server KS. È da notare che questo protocollo prevede uno scambio con KS per ottenere la chiave di sessione ogni volta che A vuole comunicare con B. Il protocollo prevede connessione affidabile oggetti A e B, a condizione che nessuna delle chiavi sia compromessa e che il server KS sia protetto.

Kerberos protegge la rete da accessi non autorizzati basandosi esclusivamente su soluzioni software e comporta la crittografia multipla delle informazioni di controllo trasmesse sulla rete.

Il sistema Kerberos ha una struttura client-server ed è costituito da parti client C installate su tutte le macchine della rete (workstation utente e server) e da un server Kerberos KS situato su alcuni computer (non necessariamente dedicati).

Il server Kerberos, a sua volta, può essere suddiviso in due parti: il server di identificazione AS (Authentication Server) e il server di autorizzazione TGS (Ticket Granting Server). Le risorse informative necessarie ai client C sono gestite dal server risorse di informazione RS (vedi figura successiva).

Il campo di applicazione del sistema Kerberos si estende a quella parte della rete in cui tutti gli utenti sono registrati con i loro nomi e password nella banca dati del server Kerberos.


Riso. 41. Schema e passaggi del protocollo Kerberos.

Designazioni:

KS: server di sistema Kerberos;

AS – server di identificazione;

TGS – server di rilascio dei permessi;

RS – server delle risorse informative;

C – Client del sistema Kerberos;

1: C ® AS: – richiedere l'autorizzazione a contattare il TGS;

2: AS ® C: – autorizzazione a contattare TGS;

3: C ® TGS: – richiesta di accesso a RS;

4: TGS ® C: – nulla osta all'ammissione alla RS;

5: C ® RS: – richiesta di ricevere una risorsa informativa da RS;

6: RS ® C: – conferma dell'autenticità del server RS ​​e fornitura

risorsa informativa.

In generale, il processo di identificazione e autenticazione di un utente in un sistema Kerberos può essere descritto come segue. L'utente (client) C, volendo accedere ad una risorsa di rete, invia una richiesta al server di identificazione AS. Quest'ultimo identifica l'utente tramite nome e password e concede il permesso di accedere al server di autorizzazione TGS, che a sua volta, su richiesta del client C, autorizza l'utilizzo delle risorse di rete necessarie utilizzando il server di risorse informative di destinazione RS.

Questo modello di interazione del client con i server può funzionare solo se è garantita la riservatezza e l'integrità delle informazioni di controllo trasmesse. Senza una rigorosa sicurezza informazioni di sicurezza il client non può inviare richieste ai server AS, TGS e RS e ricevere il permesso di accedere ai servizi sulla rete. Per evitare la possibilità di intercettazione e utilizzo non autorizzato delle informazioni, Kerberos viene utilizzato durante la trasmissione di informazioni di controllo sulla rete sistema complesso crittografia multipla utilizzando un set di chiavi segrete (chiave segreta client, chiave segreta server, chiavi segrete sessione, client-server).

5.6.5. Protocollo per crittosistemi asimmetrici
utilizzando certificati a chiave pubblica

Questo protocollo utilizza l'idea dei certificati a chiave pubblica.

Certificato a chiave pubblica Cè un messaggio proveniente da un centro di distribuzione delle chiavi (KDC) che certifica l'integrità di alcune chiavi pubbliche di un oggetto. Ad esempio, un certificato a chiave pubblica per l'utente A, indicato con C A, contiene un timestamp T, un identificatore Id A e una chiave pubblica K A, crittografata con la chiave segreta DKK k DKK, ovvero

CA = (T, Id A, K A).

Il timestamp T viene utilizzato per confermare che un certificato è aggiornato e quindi impedisce duplicati di certificati precedenti che contengono chiavi pubbliche e per i quali le chiavi private corrispondenti non sono valide.

La chiave segreta k del CRC è nota solo al gestore del CRC. La chiave pubblica K della DRC è nota ai partecipanti A e B. La DRC mantiene una tabella delle chiavi pubbliche di tutti gli oggetti di rete che serve.

Il chiamante A avvia la fase di creazione della chiave richiedendo un certificato alla DRC per la sua chiave pubblica e la chiave pubblica della parte B:

(1) A ® TsK: Id A, Id B, "Invia certificati delle chiavi A e B". Qui Id A e Id B sono identificatori univoci rispettivamente dei partecipanti A e B.

Il responsabile CRC risponde con un messaggio

(2) TsRK® A: (T, Id A, K A), (T, Id B, K B).

Il partecipante A, utilizzando la chiave pubblica del DRC To the DRC, decodifica la risposta del DRC e verifica entrambi i certificati. L'Id B assicura A che l'identità del chiamato è correttamente registrata nel DRC e K B è effettivamente la chiave pubblica del partecipante B, poiché entrambi sono crittografati con la chiave DRC k.

Anche se si presuppone che le chiavi pubbliche siano note a tutti, la mediazione del CRC consente di confermarne l'integrità. Senza tale mediazione, un utente malintenzionato può fornire ad A la sua chiave pubblica, che A considererà essere la chiave del partecipante B.
Allora l'aggressore può sostituirsi con B e stabilire una connessione con A, e nessuno sarà in grado di rilevarlo.

Il passo successivo del protocollo prevede di stabilire la comunicazione tra A e B:

(3) A® B: CA, (T), (r 1).

Qui CA è il certificato di chiave pubblica dell'utente A;

(T) è un timestamp crittografato con la chiave privata del partecipante A ed è la firma del partecipante A, poiché nessun altro può creare tale firma;

r 1 è un numero casuale generato da A e utilizzato per lo scambio con B durante la procedura di autenticazione.

Se il certificato C A e la firma A sono corretti, il partecipante B è sicuro che il messaggio provenga da A. Parte del messaggio (r 1) può essere decifrata solo da B, poiché nessun altro conosce la chiave privata k B corrispondente alla chiave pubblica chiave K B. Il partecipante B decifra il valore del numero r 1 e, per confermarne l'autenticità, invia un messaggio al partecipante A

(4) B® A: (r 1).

Il partecipante A recupera il valore di r 1 decrittografando questo messaggio utilizzando la chiave privata di A. K. Se questo è il valore atteso di r 1 , A riceve la conferma che il partecipante chiamato è effettivamente B.

Un protocollo basato sulla crittografia simmetrica è più veloce di un protocollo basato su sistemi crittografici a chiave pubblica. Tuttavia, la capacità dei sistemi a chiave pubblica di generare firme digitali che forniscono varie funzioni protezione, compensa la ridondanza dei calcoli richiesti.

Scambio diretto di chiavi tra utenti. Quando si utilizza un sistema crittografico con una chiave segreta simmetrica per lo scambio di informazioni, due utenti che desiderano scambiare informazioni protette crittograficamente devono avere una chiave segreta comune. Gli utenti devono scambiare una chiave condivisa su un canale di comunicazione in modo sicuro. Se gli utenti cambiano la chiave abbastanza spesso, la consegna della chiave diventa un problema serio.

Per risolvere questo problema si utilizzano due metodi:

1) utilizzo di un sistema crittografico a chiave pubblica per la crittografia e la trasmissione

chiave segreta di un crittosistema simmetrico;

2) utilizzo del sistema di distribuzione delle chiavi pubbliche Diffie-Hellman

(vedere sezione 5.4.2).

5.6.6. Utilizzo di un sistema crittografico a chiave pubblica per la crittografia e la trasmissione
chiave segreta di un crittosistema simmetrico

Gli algoritmi alla base dei sistemi crittografici a chiave pubblica sono i seguenti

screpolatura:

· la generazione di nuove chiavi segrete e pubbliche si basa sulla generazione di nuovi grandi numeri primi e il controllo della primalità dei numeri richiede molto tempo della CPU;

· Le procedure di crittografia e decrittografia associate all'elevazione a potenza di un numero a più cifre sono piuttosto complesse.

Pertanto, le prestazioni dei sistemi crittografici a chiave pubblica sono solitamente centinaia o più volte inferiori rispetto alle prestazioni dei sistemi crittografici simmetrici con chiave segreta.

Un metodo di crittografia ibrido combina i vantaggi dell’elevata segretezza dei sistemi crittografici a chiave pubblica asimmetrica con i vantaggi dell’alta velocità dei sistemi crittografici a chiave privata simmetrica. In questo approccio, un sistema crittografico a chiave pubblica viene utilizzato per crittografare, trasmettere e quindi decrittografare solo la chiave privata del sistema crittografico simmetrico. Un sistema crittografico simmetrico viene utilizzato per crittografare e trasmettere il testo in chiaro originale. Di conseguenza, un crittosistema a chiave pubblica non sostituisce un crittosistema simmetrico a chiave segreta, ma lo integra, consentendo di aumentare la sicurezza complessiva delle informazioni trasmesse. Se l'utente A desidera trasmettere un messaggio M crittografato utilizzando un metodo combinato all'utente B, l'ordine delle sue azioni sarà il seguente.

1. Creare (ad esempio, generare in modo casuale) una chiave simmetrica, chiamata in questo metodo chiave di sessione K S .

2. Crittografare il messaggio M utilizzando la chiave di sessione K S.

3. Crittografare la chiave di sessione K S sulla chiave pubblica K B dell'utente B.

4. Trasmettere un messaggio crittografato insieme a una chiave di sessione crittografata all'utente B su un canale di comunicazione aperto.

Le azioni dell'utente B dopo aver ricevuto un messaggio crittografato e una chiave di sessione crittografata dovrebbero essere opposte:

5. Decifrare la chiave di sessione K S utilizzando la chiave segreta k B .

6. Utilizzando la chiave di sessione ricevuta K S, decodifica e leggi il messaggio M.

Quando si utilizza un metodo di crittografia combinato, si può essere sicuri che solo l'utente B sarà in grado di decrittografare correttamente la chiave K S e leggere il messaggio M. Pertanto, quando si utilizza un metodo di crittografia combinato, vengono utilizzate chiavi crittografiche sia di sistemi di crittografia simmetrici che asimmetrici. Ovviamente, la scelta della lunghezza delle chiavi per ciascun tipo di crittosistema dovrebbe essere effettuata in modo tale che sia altrettanto difficile per un utente malintenzionato attaccare qualsiasi meccanismo di sicurezza del crittosistema combinato.

La tabella seguente mostra le lunghezze delle chiavi comuni dei crittosistemi simmetrici e asimmetrici, per i quali la difficoltà di un attacco di forza bruta è approssimativamente uguale alla difficoltà di fattorizzare i moduli corrispondenti dei crittosistemi asimmetrici (Schneier B. Applied Cryptography. - John Wiley & Sons, Inc., 1996. - 758 pag.

Pubblicazioni sull'argomento