Trasferimento chiave pubblica tra due applicazioni

0

Ho un servizio scritto in c # che utilizza la crittografia asimmetrica per crittografare i dati e un'applicazione client che decrittografa i dati crittografati ricevuti dal servizio.

Come posso fare le seguenti cose?

  1. Ho bisogno di salvare la chiave privata in un modo sicuro che nessuno può leggerlo (preferibilmente in DB).
  2. Trasferisci la chiave pubblica in sicurezza nell'applicazione client.
  3. Come posso assicurarmi che la chiave possa essere utilizzata solo dall'applicazione client e non da altre applicazioni
posta alban 11.09.2014 - 16:35
fonte

2 risposte

0

1: Qui ci sono una serie di domande e risposte su come proteggere una chiave privata per un'app / database.

2: Nessuna necessità di trasferire in modo sicuro una chiave pubblica. Quello che presumo tu stia cercando è un mezzo sicuro per trasmettere un segreto condiviso (vedi successivo)

3: Per garantire che solo due nodi particolari possano vedere una comunicazione, è necessario un qualche tipo di doppia crittografia. In genere si utilizza un segreto condiviso per crittografare un messaggio e quindi crittografarlo nuovamente con la chiave privata del mittente. Questo è il fondamento di come viene creato un tunnel crittografato. In questo modo, solo quelli con il segreto condiviso possono alla fine leggere il messaggio. Leggi le nozioni di base su HTTPS e configurazione VPN per suggerimenti.

    
risposta data 11.09.2014 - 20:20
fonte
1

Per il n. 1 la solita risposta sarebbe al negozio la chiave in un HSM (modulo di sicurezza hardware). Questo è l'unico modo veramente sicuro per memorizzare una chiave privata, in quanto qualsiasi chiave memorizzata sul disco rigido verrà compromessa se la tua macchina è compromessa.

La domanda n. 2 è ciò che viene solitamente risolto da una PKI (infrastruttura a chiave pubblica). Altri hanno affermato che non è necessario trasferire in modo sicuro una chiave pubblica, ma ciò non è completamente vero; se qualcuno dovesse eseguire un attacco man-in-the-middle e inserire la sua chiave pubblica, allora sarebbe in grado di decodificare tutte le comunicazioni future. La chiave in sé non è sensibile e non ha bisogno di essere protetta, ma è necessario un modo per assicurarsi che sia autentica. La riservatezza non è richiesta ma l'autenticità è.

Quando si utilizza una PKI, la chiave pubblica viene firmata da un'altra chiave più in alto nella gerarchia per produrre un certificato e questa firma verifica che la chiave sia autentica. Certo, allora hai il problema di distribuire la chiave pubblica della prossima chiave nella gerarchia e così via. Generalmente questo viene risolto distribuendo la chiave pubblica root insieme alla propria applicazione, come una CA radice affidabile (autorità di certificazione), quindi può essere utilizzata per verificare l'autenticità di qualsiasi catena di certificati con questa CA alla radice.

La domanda n. 3 è di nuovo qualcosa che può essere raggiunta se si utilizza un HSM per proteggere le proprie chiavi.

    
risposta data 06.11.2014 - 17:57
fonte

Leggi altre domande sui tag