Distribuzione di chiavi per un'applicazione di messaggistica python

4

Sto sviluppando un'applicazione di messaggistica, più simile a una chat, in python solo per insegnare a me stesso come funzionano i socket e per saperne di più sulla crittografia in generale utilizzando PyCrypto.

Informazioni sulla mia applicazione:

Lo scopo principale di questa applicazione crittografica è quello di proteggere i messaggi inviati su Internet utilizzando una crittografia asimmetrica. Dal momento che sto facendo questo per aumentare le mie conoscenze sulla crittografia, lo voglio il più sicuro possibile. In questa applicazione, un client si connette a un server e viene aggiunto a un elenco contenente tutti gli utenti attualmente connessi. Il client può ora inviare un messaggio al server che rimanda il messaggio a tutti gli altri utenti connessi.

La mia domanda:

Come piccolo disclaimer: sono abbastanza nuovo per la crittografia in generale e ci sono un paio di cose che non riesco a capire. Non riesco a capire come distribuire le chiavi pubbliche in modo da poter utilizzare una crittografia asimmetrica per proteggere i messaggi inviati al server. Da quello che ho letto, ci dovrebbe essere una specie di server in cui posso recuperare le chiavi generate ma non riesco a trovare un servizio simile.

Inoltre, se potessi recuperare una chiave pubblica da un server delle chiavi, come dovrei generare una chiave privata in modo che possa essere decifrata?

Tutti gli aiuti, i suggerimenti e le correzioni sono molto apprezzati!

-Tommy

    
posta Steffen Ullrich 13.03.2017 - 00:42
fonte

1 risposta

1

Una soluzione semplice sarebbe che ogni client crittografasse i messaggi inviati al server usando la chiave pubblica del server, che di solito viene inviata al client come parte della negoziazione della connessione. Il server può quindi decrittografare il messaggio del client utilizzando la sua chiave privata e quindi crittografarlo nuovamente utilizzando la chiave privata per distribuire il messaggio agli altri client, che possono quindi leggere il messaggio utilizzando la chiave pubblica del server per decodificare.

Le soluzioni "migliori" implicano la distribuzione di ciascuna chiave pubblica di tutti i client connessi come parte dell'handshake iniziale. Il client avrebbe bisogno di alcuni mezzi per sapere come associare una chiave pubblica al mittente del messaggio, il che significa che c'è qualche perdita di informazioni al di fuori del testo crittografato. Questo è meglio perché ora il server può essere compromesso e le informazioni trasmesse sono ancora al sicuro, ma a costo di velocità di connessione più lente e complessità aggiuntiva.

    
risposta data 13.03.2017 - 01:31
fonte

Leggi altre domande sui tag