Come crittografare i dati in modo asimmetrico per decifrare i miei utenti multipli

1

Sto progettando un'applicazione simile a una chat. Ogni messaggio inviato deve essere crittografato. Più utenti devono essere in grado di decrittografarlo.

Nella fase iniziale, una chat conterrà solo due chatter. In questo modo posso implementarlo con una semplice crittografia asimmetrica. Ma più tardi un utente potrebbe unirsi a una chat.

Ad esempio, se Bob, Alice e John vogliono chattare insieme, quando Bob invia un messaggio, deve crittografarlo utilizzando una chiave pubblica conosciuta da tutti, quindi Alice e John devono essere in grado di decodificarlo, ciascuno con la propria chiave privata (non può essere la stessa cosa se le chiavi private non possono lasciare il dispositivo per motivi di sicurezza a meno che tu non abbia un modo per proteggere lo scambio di chiavi private).

Suppongo che non ci sia implementazione di tale crittografia asimmetrica, ma deve essere una soluzione per farlo funzionare.

EDIT: Dopo qualche ricerca in più ho scoperto che la crittografia di trasmissione sarebbe stata la cosa da usare. Ma non capisco come possa funzionare. Diciamo che le mie tre chatter hanno una chiave pubblica / privata. Quando Bob invia un messaggio, deve comunque inviarlo per crittografarlo una volta per ogni utente con la chiave corrispondente? Altrimenti, come possono le diverse chiavi private decodificare un messaggio crittografato con una sola chiave pubblica?

EDIT 2: per quello che ho capito ora, devo scegliere:

  • Memorizza una stessa chiave simmetrica per la chat e la invia a tutti i chatter dopo averla crittografata con la chiave pubblica personale. Non è bello, penso ... Non dovrei memorizzare una chiave così importante, vero?
  • Archivia una chiave pubblica per chatter e invia una versione crittografata di ciascun messaggio a ciascuno di essi (crittografata con la propria chiave pubblica personale)
posta Bancarel Valentin 06.06.2017 - 17:46
fonte

1 risposta

1

Un modo semplice sarebbe per il creatore della chat di generare una chiave di crittografia simmetrica unica, che getta via. Quindi il pacchetto "invito" a qualsiasi altro partecipante contiene la chiave di crittografia, stessa chiave pubblica crittografata con la chiave pubblica del destinatario. Oppure il pacchetto "annuncio" potrebbe contenere tutte le versioni crittografate necessarie della chiave.

In questo modo, solo i partecipanti interessati possono conoscere la chiave di decrittografia e, poiché è anche una chiave di crittografia, possono utilizzarla per inviare messaggi e riceverli.

Questo è non lo stesso problema della crittografia broadcast, poiché ciascun partecipante utilizza la stessa chiave e lo conosce.

Per revocare un partecipante, chiunque abbia il diritto di farlo invia un pacchetto di revoca contenente una nuova chiave simmetrica segreta, crittografata con le chiavi pubbliche dei partecipanti non revocati.

    
risposta data 06.06.2017 - 18:10
fonte

Leggi altre domande sui tag