Autenticazione tramite firma o MAC?

5

Sono ancora nuovo per la sicurezza, quindi mi dispiace se questa domanda non ha senso o se sono completamente fuori base con qualcosa. Ho alcuni messaggi che voglio crittografare (probabilmente con AES-256-CBC) e inviarli a una varietà di destinatari approvati. So che dovrei anche usare una sorta di meccanismo di autenticazione in modo che il destinatario possa verificare l'integrità del messaggio originale, ma non sono sicuro di come andare al meglio. Sembra che posso farlo anticipando un MAC del messaggio al messaggio. In che modo la firma del messaggio con un certificato firmato dalla CA è diversa? Realizzano la stessa cosa o sono usati esclusivamente per casi d'uso diversi? Questo cambia se uso AES-256-GCM invece?

    
posta jeffaudio 05.03.2013 - 15:17
fonte

1 risposta

3

La principale differenza tra un MAC e un firma digitale è che con un MAC, la stessa chiave viene utilizzata per generare il valore MAC e per verificarlo; mentre con una firma si usano chiavi distinte. In una firma, la chiave generazione e la chiave verifica sono collegate matematicamente insieme, ma non è possibile ricalcolare la chiave di generazione dalla chiave di verifica - che è il motivo per cui la chiave la chiave di verifica può essere pubblica mentre la chiave di generazione è mantenuta privata .

Le firme sono per situazioni asimmetriche, dove le persone che possono verificare le firme non dovrebbero avere il potere di generare firme. Se questa funzione non è necessaria nel tuo sistema, allora un MAC sarà più semplice.

Combinare il MAC e la crittografia, o una firma e una crittografia, non è facile (puoi facilmente fare qualcosa che funziona , ma non facilmente fare qualcosa che è sicuro ). Quindi sei incoraggiato a fare affidamento su un protocollo già studiato che fa il lavoro, specialmente se sei "nuovo alla sicurezza". Per i trasferimenti di dati sincroni, utilizza SSL / TLS . Per le comunicazioni asincrone (come le e-mail), utilizza OpenPGP . Le implementazioni opensource di entrambi esistono già in molte lingue. Il protocollo che è più semplice da progettare e implementare in modo sicuro è il protocollo che è già stato progettato e implementato in modo sicuro da qualcun altro.

    
risposta data 05.03.2013 - 15:27
fonte

Leggi altre domande sui tag