Come recapitare un messaggio crittografato a più destinatari senza rivelare le chiavi

5

Diciamo che ho generato una chiave privata e una pubblica. Creo un messaggio e lo crittografo con la chiave pubblica. Consegno questo messaggio crittografato e una chiave privata a più destinatari.

Perché dovrei farlo?

Voglio essere in grado di consegnare un messaggio che può essere decodificato. Non voglio che qualcuno sia in grado di crittografare un messaggio fittizio e consegnarlo a tutti i destinatari con loro supponendo che provenga da me.

Penso di essere sulla strada giusta usando RSA - ma in qualche modo ho bisogno di tutto al contrario.

Inoltre, se fornisco alle persone la chiave privata e mantengo la chiave pubblica al sicuro, ho ragione nel ritenere che sia possibile generare una nuova chiave pubblica semplicemente utilizzando la chiave privata stessa?

Facciamo un esempio del mio problema.

Creo un messaggio crittografato utilizzando la mia chiave pubblica:

ajjfjdksdjkdfjfjdjfd

L'utente finale lo decripta usando la chiave privata per:

green:1234:table

Tutto bene finora. Il messaggio sopra riportato e autenticato ha sostanzialmente verificato le tre stringhe all'interno di : .

Tuttavia, poiché questi messaggi crittografati potrebbero provenire da fonti non attendibili, desidero che qualsiasi fonte non attendibile sia in grado di creare questi messaggi poiché conoscono il formato semplice. Non voglio che la chiave che fornisco sia sufficiente per far decodificare la chiave pubblica.

Sto trovando difficile spiegare, spero che questo possa essere risolto.

    
posta Chris Denman 09.09.2015 - 21:45
fonte

3 risposte

11

Penso che tu abbia ottenuto la crittografia a chiave pubblica completamente fuori luogo, qui.

  1. Non si rilascia una chiave privata. Periodo. Sono definiti "privati" per un motivo.

  2. Non si invia un messaggio crittografato lungo lo stesso canale, figuriamoci allo stesso tempo, quando si invia l'unica chiave necessaria per decrittografarlo. In primo luogo, sconfigge completamente lo scopo della crittografia.

  3. Una coppia di chiavi è utile solo per l'autenticazione (es .: firma digitale) se la chiave pubblica è stata verificata dai destinatari (o da una terza parte fidata) prima dell'uso.

Quindi, come consegnare un codice crittografato e amp; messaggio firmato a più parti senza consentire loro di impersonare in cambio? La risposta risale al n. 1: non ci sono due persone che hanno la stessa chiave privata.

Se sei l'unico con una copia della tua chiave privata di firma, nessuno può impersonare te. Basta firmare il messaggio con la chiave privata di firma prima che venga eseguita qualsiasi crittografia. I destinatari quindi utilizzano la chiave di firma pubblica per verificare l'autenticità del messaggio dopo averlo decrittografato.

La porzione di crittografia è una questione completamente diversa. E per questo, hai alcune opzioni.

  1. Nessuna crittografia. firma e consegna. L'autenticità è protetta a prescindere, ma questo metodo non offre alcuna riservatezza.

  2. Cifra con chiave pre-condivisa (PSK). Enfasi su precondivisa - questa non viene spedita insieme al messaggio. Dovrebbe essere condiviso tra il gruppo prima, preferibilmente fuori banda. La PSK viene utilizzata solo per la crittografia / decrittografia. La tua chiave di firma è ciò che fornisce autenticità.

  3. Encrypt individualmente con le chiavi pubbliche. prendi il messaggio firmato e creane una copia per ciascun destinatario. Quindi, crittografa ogni copia con la chiave pubblica di un destinatario e invialo insieme. I destinatari useranno le loro chiavi private per decodificare il messaggio.

  4. Utilizza le chiavi private come chiavi di crittografia delle chiavi (KEK) per una chiave condivisa. A seconda delle dimensioni del messaggio, questa può essere più veloce della # 3 pur mantenendo i benefici di crittografia a chiave pubblica. Genererai una chiave condivisa, casuale, usa e getta. Usalo per crittografare il messaggio firmato. Crea una copia della chiave condivisa per ciascun destinatario. Cripta ogni copia della chiave con la chiave pubblica di un destinatario. Raggruppa tutte le chiavi crittografate insieme al messaggio crittografato e invia una copia dello stesso pacchetto a ciascun destinatario. Ogni destinatario utilizzerà la propria chiave privata per tentare la decrittografia di ciascuna copia della chiave condivisa finché non troverà la sua copia, quindi la useranno per decrittografare il messaggio.

Ancora una volta, la cosa principale che protegge l'autenticità e amp; l'origine verificabile del messaggio qui è il fatto che solo tu hai una copia della chiave privata che è stata usata per firmarlo. Oltre a ciò, solo a scopo di autenticazione, non importa come o anche se il messaggio è effettivamente crittografato. Alla fine di ciascuno di questi processi, quando i destinatari hanno una copia in chiaro del messaggio firmato, la tua chiave di pubblica è quella che useranno per verificarne l'origine e l'integrità.

    
risposta data 10.09.2015 - 00:32
fonte
2

Chris vuole inviare un messaggio ad Alice e Bob.

Chris non vuole che Dave invii un messaggio ad Alice e Bob e pretende di appartenere a Chris.

Pertanto, Alice e Bob devono essere in grado di distinguere tra un messaggio autentico di Chris e un'imitazione di Dave. Tipo, qualcosa come una firma di Chris. Questo metodo esiste e viene chiamato (appropriatamente) una firma .

Concettualmente, vuoi che Chris sia in grado di fare qualcosa (inviando un messaggio che sarà accettato da Alice e Bob) che non Chris (in particolare Dave) non può fare - quindi ci deve essere un valore segreto che Chris sa ma non Dave, perché, in crittografia, la conoscenza è potere. Inoltre, questo valore segreto non deve trapelare nel processo e, in particolare, non vuoi che Alice e Bob lo imparino (altrimenti, Alice potrebbe quindi provare a Davify Bob, cioè inviare a Bob un messaggio come se fosse Chris) .

Quindi, un valore segreto sul lato mittente, per un'azione verificabile sul lato ricevente, senza perdere il segreto stesso. Questo è esattamente il concetto di firma digitale.

Questo vale indipendentemente da qualsiasi nozione di crittografia. Questa è una discussione completamente ortogonale.

    
risposta data 09.09.2015 - 22:05
fonte
0

Non devi rivelare alcuna chiave, questo è il punto principale di un sistema di crittografia a chiave pubblica.

In questo messaggio dalla lista di gnupg, spiegano un modo per creare un messaggio con più destinatari.

Basandoci su, puoi creare qualcosa di simile a questo:

  1. Genera una chiave simmetrica casuale S1

  2. Cripta l'intero messaggio con S1 , creando il testo cifrato C1

  3. Encrypt S1 con ogni chiave pubblica per i destinatari, generando D1 , D2 , ..., Dn

  4. Genera un hash sicuro di S1 , creando H1

  5. Genera il messaggio come segue:

-- BEGIN CYPHERTEXT --
C1
-- END CIPHERTEXT --
-- BEGIN HASH --
H1
-- END HASH --
-- BEGIN KEYS --
D1
D2
D3
-- END KEYS--

Invia il messaggio a tutti. Decodificheranno D1 in Dn per generare S1 . Confrontando il risultato con l'hash sul messaggio, sapranno quando avranno ottenuto la chiave simmetrica.

Con la chiave simmetrica a portata di mano, possono decodificare il messaggio in modo indipendente, senza conoscersi a vicenda.

Per creare un messaggio autenticabile, aggiungi una firma all'intero messaggio e nessuno sarà in grado di creare un messaggio in posa come te, a meno che non ottenga la tua chiave privata.

    
risposta data 09.09.2015 - 22:23
fonte

Leggi altre domande sui tag