Come si memorizza una chiave RSA privata per un'applicazione?

8

Mi chiedevo in che modo un'applicazione che ha una chiave privata la manterrà protetta?

Se la chiave privata è al di fuori del binario, chiunque può accedervi, ma memorizzarla nel binario non lo rende più sicuro (credo). Possiamo provare a offuscare la chiave ma può ancora essere scoperta!

Quindi qual è la migliore pratica per questo?

    
posta darkheir 13.02.2013 - 15:10
fonte

4 risposte

5

Aspettatevi che sia compromesso. Non c'è un buon modo per fare altro che offuscare una chiave privata. La soluzione migliore è probabilmente memorizzarla nella libreria crittografica del sistema su cui è in esecuzione il software. Se sei fortunato potrebbe avere un TPM o HSM in grado di memorizzare la chiave in modo sicuro. Cosa stai cercando di ottenere con la chiave privata? Ciò potrebbe contribuire a fornire un feedback migliore sul modo migliore per raggiungere il tuo obiettivo in modo sicuro.

    
risposta data 13.02.2013 - 15:22
fonte
6

Non esiste un modo affidabile al 100% per nascondere un segreto di qualsiasi tipo, sia esso una chiave privata RSA o qualsiasi altro tipo di oggetto, all'interno di un'applicazione in modo tale da resistere al reverse engineering. Tutti quelli che hanno provato, hanno fallito. Ci sono buone ragioni teoriche per cui non dovrebbe essere possibile: vale a dire, ad un certo punto, la CPU utilizzerà il valore segreto e quindi lo avrà sotto le sue dita; eseguendo il codice in un emulatore, anche gli aggressori possono ottenerlo.

(L'emulatore è il tipo di soluzione just-drop-a-nuke-on-it, funziona ed è sufficiente per dimostrare l'impossibilità di protezione, ma gli hacker usano invariabilmente un po 'più di cervello nel loro reverse engineering.)

Il meglio che puoi avere sono i segreti specifici dell'utente, in modo che almeno , puoi gestire le cose lato server chiudendo l'accesso per i trasgressori (se una chiave di accesso è compromessa, semplicemente informa il server che questa chiave specifica non sarà più accettata). Questo è ciò che viene fatto in TV satellitare : il segnale viene trasmesso, con crittografia con una chiave K (che cambia ogni pochi minuti), e il tasto K è esso stesso crittografato con la chiave segreta che si trova nella smart card del ricevitore; ogni ricevitore ha la sua smart card. Quando una carta sembra essere massicciamente clonata (rompere una carta è costoso, ma una volta che è rotto, fare 3000 copie è economico), il distributore TV si ferma a distribuire la versione di K crittografata con la chiave che si trova nella scheda compromessa, bloccando così in modo efficace l'accesso per tutte le copie.

    
risposta data 13.02.2013 - 17:31
fonte
0

Sebbene il sistema in uso non contenga al suo interno un modulo di sicurezza hardware (HSM), è possibile acquistarli separatamente (ad esempio come schede aggiuntive, smart card o box separati). A seconda della situazione (valore della chiave, esposizione, ecc.), Questo potrebbe essere utile.

L'uso corretto di un HSM assicurerà che anche l'applicazione non possa accedere direttamente alla chiave privata. Questo sposta il problema a proteggere (ab) l'uso dei servizi offerti da HSM (ad esempio decifrare i file), dove si è assistiti da qualsiasi opzione di autenticazione fornita da HSM.

    
risposta data 14.02.2013 - 14:26
fonte
0

Se stai usando il .Net Framework, dai un'occhiata a ProtectedData (come menzionato in questa risposta StackOverflow )

Utilizza l'API di protezione dei dati di Windows (DPAPI) per "fornire protezione utilizzando le credenziali dell'utente o della macchina per crittografare o decrittografare i dati" . (tratto dai documenti).

    
risposta data 29.08.2018 - 17:30
fonte

Leggi altre domande sui tag