Memorizzazione della chiave di crittografia dei dati (lato client)

1

Ho una conoscenza moderata della programmazione e attualmente scrivo un'applicazione di messaggistica client-server per Windows. Il mio progetto è stato scritto da zero usando i socket, e tutto ciò che fa è la trasmissione dei dati da un client al server, e quindi il server al resto dei client in una stanza (ho implementato le chat room). Al momento, i miei dati vengono trasmessi come una serie di byte di righe (usando .encode ('utf-8') se hai familiarità con python). Ma ovviamente, ho bisogno di creare un algoritmo di crittografia adeguato per questo. Sto pianificando di creare il mio, così sono sicuro della mancanza di vulnerabilità (so che può essere il contrario, ma mi fido di me stesso). Tuttavia, non sono sicuro di come dovrei memorizzare la chiave di crittografia. Se memorizzo senza mezzi termini la chiave nel client, è considerata sicura? Perché generare una chiave casuale e inviarla al destinatario sembra orribile non sicuro, dal momento che anche un bambino con MITM sarà in grado di vederlo. Quindi cosa faccio? Come generare e inviare / memorizzare le chiavi in modo da essere sicuro che sia almeno un po 'sicuro

    
posta Alex Leence 10.07.2017 - 16:05
fonte

1 risposta

0

Prima di tutto, non mai lancia la tua crittografia per il software commerciale. È molto, molto, molto facile commettere un errore.

Ma se stai solo facendo questo per un progetto personale per animali domestici, o forse come un progetto scolastico, puoi fare qualcosa di simile a questo:

  1. Il client genera una chiave di crittografia simmetrica casuale
  2. Il client crittografa il messaggio utilizzando la chiave simmetrica
  3. Il client crittografa la chiave simmetrica utilizzando la chiave pubblica del tuo server
  4. Il client invia sia il messaggio crittografato che la chiave crittografata al server
  5. Il server può decodificare la chiave simmetrica utilizzando la sua chiave privata, quindi utilizzare la chiave simmetrica per decodificare il messaggio.

Questo schema è vulnerabile in vari modi, ma risolve il problema specifico che stai ponendo nella tua domanda.

    
risposta data 10.07.2017 - 21:49
fonte

Leggi altre domande sui tag