Possiamo nascondere una chiave hash costante utilizzata per la crittografia AES di una password?

0

Esistono metodi in java per nascondere una chiave hash costante che è incorporata in una classe? Per vostra informazione, la chiave viene utilizzata per crittografare AES una password utilizzata per autenticare un servizio Web che richiede solo un testo normale.

    
posta user2350096 18.09.2014 - 21:07
fonte

2 risposte

1

No. Se si incorpora qualcosa nel codice sorgente, è disponibile per chiunque disponga del codice sorgente.

Nella maggior parte dei casi, vuoi che ogni sistema abbia le proprie chiavi, in modo che due utenti del tuo software non possano attaccarsi a vicenda. In un ambiente ospitato, si desidera la separazione dei compiti tra le operazioni di sviluppo: dev non deve avere le chiavi utilizzate dalle operazioni per proteggere i dati, poiché la descrizione del lavoro di dev è quella di scrivere il codice per non essere custodi dei dati.

Raramente, vorrai incorporare la tua chiave pubblica per assicurarti che il tuo software possa comunicare con il tuo server. Questo è un po 'più flessibile senza hard coding, e più facile da cambiare se non è hard coded.

Tutto ciò detto, se vuoi porre una domanda diversa che parla del problema che stai cercando di risolvere invece di come stai cercando di risolverlo, possiamo probabilmente darti un consiglio migliore.

Da quando hai cambiato la tua domanda e hai aggiunto che stai cercando di inviare una password a un servizio web, ho il seguente consiglio: non farlo in questo modo. Stai inventando il tuo protocollo crittografico per autenticarti e hai intenzione di proteggere solo la password. Se puoi usare TLS, usalo. Se si utilizza SOAP, è possibile utilizzare WS-Security. Il tuo protocollo personalizzato non protegge dalla ripetizione della password (non ho bisogno della password in chiaro, solo la password crittografata che qualcun altro ha inviato), non protegge altri messaggi inviati al server ed è decifrabile da chiunque abbia una copia di il tuo software client. E non cercare di correggere il tuo protocollo - ci sono gadget di libri scritti su come sottili difetti possono distruggere la sicurezza di un protocollo di rete, e se provi a aggiustare il tuo, finirai solo reinventando TLS (se sei fortunati)

    
risposta data 19.09.2014 - 04:10
fonte
0

Probabilmente vale la pena di pensare a cosa stai cercando di fare, piuttosto che a come ottenerlo.

  1. Hai un client distribuito che utilizza un servizio web.

  2. Il servizio web limita l'uso tramite una password.

Quindi la domanda è: come puoi distribuire una versione del client proteggendo al tempo stesso la password di cui ha bisogno per accedere al servizio web?

Se controlli il processo di installazione e utilizzi Windows, puoi memorizzare la password nel contesto di un account di servizio e utilizzare DPAPI per accedervi.

Se controlli il servizio web, puoi frontarlo con un altro servizio che richiede certificati digitali o password univoche e rilasciarne uno con ciascun client.

Potresti anche essere in grado di limitare l'accesso al servizio web con una whitelist di indirizzi IP.

Ciò che non puoi fare, però, è impedire a qualcuno di ottenere un segreto di codice che tu li distribuisci, per quanto ci provi.

    
risposta data 19.09.2014 - 07:41
fonte

Leggi altre domande sui tag