Usa combinazione di certificati digitali e crittografia a chiave simmetrica

2

Supponendo che:  
- A have CertA e chiave segreta KsA  
- B ha CertB e la chiave segreta KsB
La necessità di trasferire i dati da M a B con il requisito di riservatezza e autenticità , MA la crittografia dei dati deve essere eseguita da crittografia simmetrica .
Come fanno A e B per raggiungere tutti i requisiti?

    
posta Việt Dũng Lê 21.12.2018 - 05:15
fonte

2 risposte

1

Per risolvere questo problema, una soluzione comune sta utilizzando un Hybrid Cryptosystem .

Crea una nuova chiave di sessione casuale ( chiave effimera ) per la crittografia simmetrica (AES) quindi crittografare i dati con questa chiave con una corretta modalità di funzionamento con un appropriato schema di riempimento come pkcs # 5

key = generate_random_key()
encrypted_data = AES(k, data)

Ora, A crittografa la chiave di sessione con la chiave pubblica di B.

encrypted_key = Encrypt(key, B_private_key)

Infine, A firma digitalmente tutto

sign = Sign(Hash(encrypted_key || encrypted_data)

e invia

Send(encrypted_data, encrypted_key, sign)

In questo modo;

  • dati crittografati con un algoritmo simmetrico che è molto più veloce della crittografia asimmetrica.
  • i dati sono riservati poiché crittografati con una chiave.
  • i dati sono autenticati poiché A utilizza la sua chiave segreta per firmare e B può verificarlo con il certificato pubblico di A.
risposta data 21.12.2018 - 08:53
fonte
1

Questo è il modo in cui tutti HTTPS e TLS lavoro di comunicazione.

2x certs / chiavi asincroni vengono utilizzati per creare un segreto condiviso che viene utilizzato come chiave simmetrica per la condivisione di leoni della comunicazione.

Nel passaggio 6/7 di questo diagramma, è dove viene creata la chiave simmetrica e entrambi i lati ChangeCipherSpec per utilizzare questa chiave condivisa appena stabilita.

    
risposta data 21.12.2018 - 08:53
fonte