Applicazione client / server Java / Android. Certificati digitali e CA.

0

Attualmente sto sviluppando un'applicazione per Android che consentirà agli utenti di eseguire il backup dei loro dati su un server, che sto sviluppando anche in Java. Ho praticamente completato lo sviluppo delle funzionalità come il trasferimento dei file, la registrazione e l'accesso e così via (database MySQL che registra i dati degli utenti e delle password) e così via. Mi sono fermato nel mio sviluppo quando ho cercato di implementare funzionalità di sicurezza. Voglio utilizzare la crittografia asimmetrica per l'autenticazione e la crittografia simmetrica per crittografare le comunicazioni tra client e server. Quindi, ecco l'accordo:

La comunicazione tra client e server verrà eseguita utilizzando AES. Questo si basa su una chiave pre-condivisa tra entrambe le parti. Questa chiave pre-condivisa verrà generata sul lato client ogni volta che viene avviata una sessione e verrà inviata al server, crittografata utilizzando la chiave pubblica dei server. In questo modo, solo il server che possiede la chiave privata sarà in grado di decifrare la chiave pre-condivisa e leggere la comunicazione. Dove sono un po 'confuso è la condivisione della chiave pubblica dei server. Ora so che il modo migliore per farlo è usare un certificato digitale contenente la chiave pubblica dei server. So anche che questo certificato dovrebbe provenire da una CA affidabile.

La mia domanda è: come posso ottenere un certificato digitale per il mio server? La mia applicazione Android richiederà questo certificato dal server o dalla CA? Il mio pensiero iniziale è che deve ricevere questo certificato da una CA, come se lo ricevesse dal server, potrebbe essere fraudolento. Qual è il processo e il modo corretto di fare questo? Ovunque io legga, parla solo della connessione HTTPS dal client al server Web. Sto scrivendo un server in Java che comunicherà tramite prese con la mia applicazione Android. Come faccio a creare, ricevere e verificare i certificati in relazione alle CA di fiducia?

Grazie

    
posta George Windonski 07.04.2016 - 17:03
fonte

1 risposta

0

Dici:

My initial thought is that it has to receive this certificate from a CA, as if it receives it from the server, it may be fraudulent.

Tuttavia, qui sta il problema con il tuo pensiero: i certificati X.509 sono creati in modo tale da essere manomessi resistente. Se il server cambia il certificato, diventa non valido (con probabilità accettabile).

Puoi farlo nello stesso modo in cui lo fa TLS e lasciare che il server presenti al client il certificato da convalidare. Poiché è firmato da una CA che il cliente si fida, può essere accettato.

Inoltre, il solito disclaimer:

Perché non usi TLS? Ecco a cosa serve Crea ora la tua crittografia .

    
risposta data 07.04.2016 - 17:12
fonte

Leggi altre domande sui tag