Domanda

Ho un'applicazione client / server C ++ in cui il client e il server sono il mio eseguibile. Ogni volta che viene effettuata una connessione tra il client e il server, ho generare una nuova chiave di crittografia per quella sessione e desidero trasmettere questa chiave di sessione e crittografare questa chiave di sessione utilizzando una chiave statica che è costruito in sia il client e il server.

Tuttavia, l'esecuzione stringhe sul mio eseguibile rivela la chiave statica.

Come posso nascondere la chiave statica incorporato nella mia applicazione client e il server in modo che essi non sono facilmente estratte e consentendo in tal modo a qualcuno di decodificare la mia chiave di sessione.

È stato utile?

Soluzione

Il suo metodo di scambio di chiavi "assicura" il cliente è valido e non un impostore. Basta scambiare in modo sicuro le chiavi utilizzando D-H non lo farà. Al fine di ottenere la stessa funzionalità avrà bisogno di implementare un sistema PKI. SSL / TLS è stata costruita per questo scopo, che sotto di esso farà ciò che gli serve.

È necessario creare una CA per il server e client segno certificati per garantire che essi sono chi dicono di essere.

Altri suggerimenti

Ci sono soluzioni a questo problema che non comportano il tentativo di nascondere le chiavi (che, in generale, è impossibile). Ad esempio, Diffie-Hellman scambio di chiavi consente al client e server di negoziare una nuova sessione segreta chiave senza mai inviarlo oltre il filo.

Quindi, hai intenzione di nascondere il tuo segreto (la chiave nel file eseguibile) con un particolarmente difficile da undo metodo che può solo essere annullata se si conosce il segreto del metodo, che è anche necessario nascondere con un nuovo metodo di super-segreto che non può che essere annullata se si conosce il segreto di quel metodo, che abbiamo bisogno di nascondere con un altro metodo segreto che richiede un altro segreto che abbiamo bisogno di nascondere ...

Si tratta di un "problema di overflow". Spero che si può vedere che non si risolverà in questo modo. Generare le chiavi per computer (ssh / sshd fa questo) e proteggere coloro. Lo stesso problema di cui sopra si applica in realtà, perché se ho la chiave è ancora gioco fino, ma in questo modo non lo fanno codificare nella tua soluzione che significa fissare una chiave compromessa è molto più facile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top