Nella firma del messaggio, il digest è crittografato con una chiave simmetrica generata o con la chiave privata del mittente?

1

Comprendo che il processo di crittografia utilizza una chiave simmetrica generata per crittografare un messaggio, quindi crittografa la chiave simmetrica con la chiave pubblica del destinatario prima che venga inviata attraverso il filo. Ciò crea una situazione in cui solo il proprietario della chiave privata correlata può decodificare la chiave simmetrica e quindi decrittografare il messaggio crittografato.

Mi piacerebbe capire l'ordine esatto delle cose per la firma dei messaggi. Principalmente, qualcosa che assomiglia a questo , ma per le firme.

Capisco che possa variare a seconda del protocollo e, in tal caso, descrivere il modo esatto in cui un particolare protocollo sarebbe comunque una buona risposta se è possibile elencare almeno alcuni pro / contro di farlo in questo modo, contro qualsiasi altro protocollo strategia.

All'interno di questo, il mio principale punto di confusione è:

  • Se le operazioni di crittografia asimmetrica sono più onerose per la CPU e sto pianificando l'invio di molti messaggi, non ci sarebbe un modo migliore (più efficiente) usando una sorta di chiave simmetrica per crittografare i digest dei messaggi che possono essere riutilizzato per molti messaggi? Quindi usando la crittografia asimmetrica per scambiare la chiave simmetrica? Potrebbe ancora dimostrarsi che un messaggio è stato inviato da un mittente, sfruttando al contempo l'efficienza della crittografia simmetrica?
posta Eddie 22.10.2015 - 19:51
fonte

3 risposte

7

Nel messaggio firma , non c'è crittografia. Altrimenti dovremmo chiamarlo encryption .

Un algoritmo di firma è, nominalmente, la combinazione di tre sotto-algoritmi:

  • Generazione di coppie di chiavi: quell'algoritmo produce una nuova coppia di chiavi pubblica / privata, utilizzando una strong fonte casuale e utilizzando come parametro un "livello di sicurezza" da raggiungere (cioè la dimensione della chiave che deve essere generata).

  • Generazione firma: gli input sono il messaggio da firmare m e la chiave privata. L'output è il valore della firma s .

  • Verifica firma: gli input sono il messaggio m , la firma s e la chiave pubblica. L'output è un valore booleano: "true" se la firma corrisponde al messaggio e alla chiave pubblica, "false" altrimenti.

Gli algoritmi di generazione e verifica della firma dovrebbero essere in grado di elaborare messaggi di lunghezza arbitraria, possibilmente gigabyte. E lo fanno. Gli algoritmi di firma esistenti sono già molto efficienti nel gestire enormi input. Quindi non c'è alcun problema che richiederebbe una costruzione aggiuntiva, contrariamente alla crittografia asimmetrica in cui è necessario qualcos'altro per far fronte ai severi limiti di questi algoritmi.

La maggior parte dei testi che parlano di crittografia ibrida dicono che dobbiamo farlo perché la crittografia asimmetrica è lenta, ma è sbagliato . Il motivo reale per cui viene utilizzata la crittografia ibrida è perché i noti algoritmi di crittografia asimmetrica non possono semplicemente elaborare messaggi di lunghezza arbitraria e non abbiamo alcuna idea reale su come potremmo modificarli al fine di farlo in modo sicuro . Fondamentalmente, le "modalità di concatenamento" per i codici a blocchi non hanno equivalenti per la crittografia asimmetrica che sarebbe ovviamente sicura. Tuttavia, gli algoritmi di firma non hanno mai avuto una limitazione sulla lunghezza dell'input, quindi questo è un non-problema.

Succede, internamente, che la maggior parte degli algoritmi di firma sono efficienti nel gestire grandi input perché il loro primo passo è elaborare il messaggio completo attraverso un funzione di hash crittografica , quindi funziona solo sul valore hash. Questo è un elemento di progettazione della maggior parte degli algoritmi di firma e non dovrebbe interessare gli estranei che usano solo usano l'algoritmo. Spiega, però, perché alcune persone che parlano di "firme RSA" iniziano improvvisamente a parlare di funzioni hash come SHA-1: questo perché l'algoritmo della firma include , come uno dei suoi elementi costruttivi, una funzione di hash. Nota che alcuni algoritmi non funzionano esattamente in questo modo; sarebbe sbagliato affermare che gli algoritmi di firma tutti iniziano con un semplice hashing.

In fin dei conti è una questione di terminologia. Nel caso di crittografia asimmetrica, ad es. RSA, è normale parlare di "algoritmo di crittografia" usando solo un breve input; e qualsiasi strato di crittografia simmetrica extra è considerato, in effetti, un livello esterno extra. Tuttavia, nel caso delle firme digitali, la stessa tradizione sostiene che il passaggio di hashing iniziale è parte di ciò che chiamiamo "algoritmo di firma".

Ci sono alcune buone ragioni per questa scelta terminologica; in particolare, vogliamo la funzione di hash di essere parte di ciò che chiamiamo "algoritmo di firma" perché utilizza un algoritmo di firma come RSA o ECDSA senza un passo di hashing (utilizzando un "input breve" direttamente senza hashing) può indurre gravi carenze. Tuttavia, al suo interno, è ancora un problema di terminologia.

    
risposta data 22.10.2015 - 20:34
fonte
2

Image Source

I dati vengono prima sottoposti a hash, in modo che venga generata una rappresentazione univoca di tali dati e la firma digitale di tale hash sia computazionalmente economica. Generalmente la firma dell'hash si applica solo allo scambio di chiavi per garantire che tutto sia stato ricevuto e inviato correttamente da entrambe le parti.

Generalmente ogni singolo messaggio viene verificato utilizzando un algoritmo HMAC. Questo è nell'ordine delle velocità di crittografia / decrittografia simmetrica in modo che la CPU non si sovraccarichi.

    
risposta data 22.10.2015 - 20:37
fonte
1

Se desideri che le proprietà di sicurezza non ripudiabilità e identificazione siano valide anche per cause legali, il mittente deve firmare il digest con la chiave privata che deve essere valida al segno tempo dall'autorità di certificazione.

Se queste proprietà non sono necessarie, una chiave simmetrica, con una lunghezza adeguata per la robustezza, può essere utilizzata per crittografare il digest e, se la fase di scambio delle chiavi è stata fatta in privato, è sufficiente fornire solo integrità del messaggio perché esiste la possibilità di provare che il messaggio proviene da un peer specifico.

    
risposta data 23.10.2015 - 00:04
fonte

Leggi altre domande sui tag