Crittografia a chiave pubblica per chiavi precondivise con MAC

4

Quali algoritmi noti sono adatti per il seguente compito?

Ho bisogno che il sistema A (e solo il sistema A) sia in grado di crittografare alcuni dati, con il sistema B in grado di decrittografarli. Al sistema B, voglio essere sicuro che il testo cifrato non sia stato temperato. E voglio pre-condividere la chiave pubblica del sistema A (memorizzarla al sistema B).

Sono nuovo della crittografia e dopo alcuni scavi ho ritenuto necessario un algoritmo di crittografia a chiave pubblica con MAC. Penso che RSA sia solo per questo compito, ma non sono sicuro.

    
posta Yuri Ushakov 13.10.2015 - 15:52
fonte

1 risposta

1

Credo che tu abbia bisogno sia di una risposta generale che di una specifica: generale per fornire una visione d'insieme della soluzione e specifica per guidarti verso strumenti particolari. Iniziamo con l'immagine grande.

Quello che stai descrivendo è un messaggio firmato e crittografato che viene realizzato con la crittografia a chiave pubblica. Il messaggio viene crittografato utilizzando la chiave pubblica del destinatario che garantisce che solo il destinatario, utilizzando la propria chiave privata, possa decrittografarlo. Il messaggio viene firmato utilizzando la chiave privata del mittente in modo che il destinatario possa essere sicuro che il messaggio è stato inviato dal mittente. La firma contiene anche un hash crittografico del messaggio (crittografato con la chiave pubblica del mittente) al momento della firma, che garantisce al destinatario che non è stato modificato da quando il mittente l'ha firmato. Se necessario, è possibile utilizzare un server Timestamp attendibile per aggiungere un timestamp all'hash del messaggio e crittografare la combinazione con la sua chiave privata prima che il mittente crittografi la firma in modo che il destinatario sappia anche quando il messaggio è stato firmato dal mittente.

NOTA: ho fornito una spiegazione più lunga e un po 'più chiara di questo processo in altro risposta ieri.

Per quanto riguarda gli algoritmi, per codificarlo a un livello basso è necessario utilizzare un algoritmo chiave asimmetrico (noto anche come chiave pubblica) di cui RSA è sicuramente il più noto, ma sarà necessario altro per completare il processo. Hai bisogno di un algoritmo di hash [ti consiglio SHA-3.] Ma hai anche bisogno di un protocollo di livello superiore che standardizza il modo in cui i pezzi sono messi insieme per garantire coerenza e affidabilità. Questi esistono in un numero di moduli per vari casi d'uso, S / MIME, x509 e TLS sono esempi.

Come accennato, è necessaria un'infrastruttura per generare coppie di chiavi pubbliche e private e distribuirle in modo sicuro, denominato Public Key Infrastructure (PKI). Esistono numerosi approcci a questo che si applicano a diversi casi d'uso. Per l'uso all'interno di una singola organizzazione, il sistema Microsoft Active Directory include un servizio di certificazione che può emettere certificati (che includono le coppie di chiavi e avere una scadenza e un proprietario definito) e confermare la loro validità e proprietà per altri utenti. Nell'ambiente pubblico di Internet, i servizi di certificazione pubblica sono disponibili da aziende come VeriSign, DigiCert, Entrust e molti altri.

Esattamente come questi pezzi sono messi insieme è in qualche modo non banale. Se stai cercando di codificare una soluzione, ti esorto a cercare soluzioni di crittografia off-the-self che forniscano le funzionalità di cui hai bisogno. Costruire in modo affidabile il codice di crittografia non è facile e non è necessario in quasi tutti i casi. Soluzioni solide, sia commerciali che open source sono abbastanza comuni.

Dovrai scegliere un algoritmo di hash. Raccomando il SHA3 pubblicato di recente, se possibile. Molti altri ampiamente usati sono stati incrinati o almeno mostrati come deboli negli ultimi anni, quindi sarebbe saggio usare il più recente.

    
risposta data 13.10.2015 - 22:08
fonte

Leggi altre domande sui tag