È necessario crittografare i messaggi lato client se si utilizza HTTPS?

0

Sto creando un servizio di messaggistica per un'app che sto sviluppando e in questo momento il flusso di dati è il seguente:

Invia

messaggio inviato a server = > messaggio crittografato in base alla chiave pubblica dell'utente e firmato utilizzando la chiave segreta = > messaggio crittografato salvato nel database

Ricezione:

server riceve messaggi da database = > server verifica la firma utilizzando la chiave pubblica e decrittografa il messaggio utilizzando la chiave segreta = > messaggio decrittografato inviato al client

Tutta la crittografia / decodifica sul server dipende dal token JWT dell'utente che viene autenticato.

Ho due domande principali:

  1. Va bene criptare sul server poiché la comunicazione tra esso e il client sta utilizzando TLS?

  2. Le chiavi devono essere memorizzate sul server o nel database?

posta 16.10.2018 - 03:28
fonte

2 risposte

2

Non sono sicuro di capire esattamente come dovrebbe funzionare la configurazione, ma la parte chiave qui è che tutte le chiavi di crittografia sembrano risiedere sul server. Ciò significa:

  • HTTPS (se fatto bene) è sufficiente per proteggere i messaggi in transito . Se questo è il tuo unico obiettivo, la tua configurazione va bene.

  • Se vuoi proteggere i messaggi a riposo sul server, avere la chiave da qualche parte sul server è un problema. Ci sono diversi modi per affrontarlo. La semplice memorizzazione delle chiavi di crittografia nel database accanto ai dati che dovrebbero proteggere non è generalmente una buona idea. Vedi questa risposta per le alternative.

  • Questa configurazione non protegge gli utenti contro di te . Come operatore del servizio, puoi leggere facilmente i messaggi poiché ti siedi su tutte le chiavi di crittografia. Se questo è un problema, devi implementare la crittografia end-to-end.

risposta data 17.10.2018 - 10:38
fonte
1

Per 1: crittografare sul lato server suona bene, ma non pensi che i tuoi clienti preferirebbero se il messaggio fosse crittografato prima di lasciare la rete privata o il cellulare? Lo farei e quindi consiglio di utilizzare la crittografia lato client.

A 2: Per me i dati e in particolare le chiavi appartengono a un database e non a un costrutto di livello superiore come un server web

    
risposta data 16.10.2018 - 16:19
fonte

Leggi altre domande sui tag