Generazione della chiave segreta condivisa utilizzando i destinatari esistenti chiave pubblica e chiave privata dei mittenti

2

Ho la chiave pubblica del destinatario e la chiave privata del mittente. Voglio generare una nuova chiave utilizzando la chiave privata dei destinatari e della chiave privata dei mittenti (nota anche come chiave di firma) per crittografare un file per questo processo, ovvero utilizzando entrambi i tasti allo stesso tempo conosciuti come una chiave segreta condivisa. / p>

Potresti dirmi come dovrei generare un segreto condiviso usando una chiave pubblica e una chiave privata dei ricevitori esistenti?

    
posta MaheshAthuluru 09.08.2015 - 18:13
fonte

2 risposte

1

Non è necessario farlo; questo è già risolto dall'handshake SSL / TLS.

L'handshake SSL / TLS va un po 'oltre, in quanto non solo stabilisce un segreto utilizzando sia le chiavi pubbliche e private di entrambe le parti, ma utilizza anche un certificato per stabilire che il server è chi segnala di essere - prevenire un attacco man-in-the-middle.

Una descrizione rapida e dettagliata dei passaggi coinvolti è qui .

Ma dal momento che hai taggato la domanda con "HTTP", presumo che tu voglia inviare il file tramite HTTP. Il solo utilizzo di HTTPS significa che stai già utilizzando SSL o TLS per lo scambio di chiavi, la negoziazione di una chiave segreta e l'utilizzo di tale chiave segreta per crittografare il file mentre è in transito. E una certa protezione contro MITM nel processo.

    
risposta data 09.08.2015 - 19:12
fonte
0

Non sei sicuro di quale sia il tuo caso d'uso. Se stai solo crittografando un file in modo che il tuo partner possa leggerlo e nessun altro e non si preoccupi dell'autenticazione, replay o MitM e sei completamente sicuro del processo che tu e il tuo partner utilizzate per scambiare le chiavi pubbliche , quindi puoi utilizzare una procedura molto semplice.

  1. Genera una chiave simmetrica utilizzando un algoritmo di tua preferenza.
  2. Cripta il file con la chiave simmetrica
  3. Cripta la chiave simmetrica con la chiave pubblica del destinatario
  4. Invia 2 e 3 al tuo partner.

Non sono sicuro del motivo per cui desideri includere la tua chiave privata nel processo. Finché il ricevitore può decrittografare la chiave (e lui può, perché hai usato la sua chiave pubblica), il segreto è già "condiviso" perché lo hai generato in modo che tu lo sappia ovviamente.

L'unica cosa che posso pensare è che tu voglia che il ricevitore sia certo che il file provenga da te e da nessun altro. In tal caso, suppongo che potresti

  1. Prendi un hash di tutto il casino
  2. Cripta l'hash con la tua chiave privata
  3. Invia il risultato di 6 insieme a 2 e 3

... assumendo che il ricevitore abbia modo di essere sicuro di avere una copia corretta della chiave pubblica (che non è necessariamente banale).

Se non sei completamente sicuro del processo che tu e il tuo partner utilizzate per scambiare le chiavi pubbliche, dovrete sfruttare un'infrastruttura PKI o passare a uno schema più semplice come un segreto condiviso con scambio fuori banda.

    
risposta data 03.09.2016 - 03:04
fonte

Leggi altre domande sui tag