Prima di tutto, non mi riferirei a me stesso come un esperto di sicurezza, ma sono stato nella posizione di dover rispondere a questa domanda. Quello che ho scoperto mi ha sorpreso un po ': non esiste un sistema completamente sicuro . Bene, immagino che un sistema completamente sicuro sarebbe uno in cui i server sono tutti spenti :)
Qualcuno che lavorava con me all'epoca descrisse la progettazione di un sistema sicuro in termini di innalzamento del livello di intrusione. Pertanto, ogni livello di protezione riduce l'opportunità di un attacco.
Ad esempio, anche se è possibile proteggere perfettamente la chiave privata, il sistema non è completamente sicuro. Tuttavia, l'uso corretto degli algoritmi di sicurezza e l'aggiornamento delle patch alzano il livello. Ma sì, un super computer abbastanza potente e dotato di tempo sufficiente può interrompere la crittografia. Sono sicuro che tutto ciò sia compreso, quindi risponderò alla domanda.
La domanda è chiara, quindi cercherò innanzitutto di affrontare ciascuno dei tuoi punti:
Supponiamo che la chiave sia protetta dal modello di sicurezza del filesystem; ma per quanto riguarda i superutente (dannosi) o le piattaforme che non forniscono tale fedeltà?
Sì, se usi qualcosa come Windows Key Store o una chiave privata TLS crittografata con password, sei esposto agli utenti che hanno la password (o l'accesso) alle chiavi private. Ma penso che sarai d'accordo sul fatto che alzi il livello. Gli ACL del file system (se implementati correttamente) offrono un livello di protezione abbastanza buono. E sei nella posizione di controllare personalmente e conoscere i tuoi super utenti.
Oppure la chiave è codificata in file binari software, ma potrebbe sempre essere decompilata e che dire del software open source o del codice interpretato?
Sì, ho visto le chiavi codificate nei file binari. Ancora una volta, questo aumenta un po 'l'asticella. Qualcuno che attacca questo sistema (se è Java) deve capire che Java produce un codice byte (ecc.) E deve capire come decompilarlo, lo legge. Se stai usando un linguaggio che scrive direttamente nel codice macchina, puoi vedere che questo aumenta la barra un po 'più in alto. Non è una soluzione di sicurezza ideale, ma potrebbe fornire un certo livello di protezione.
Se la chiave viene generata, un tale algoritmo dovrebbe essere deterministico (presumibilmente) e quindi lo stesso problema si applica al seme.
Sì, in sostanza l'algoritmo diventa le informazioni sulla chiave privata per la creazione della chiave privata. Quindi, ora dovrebbe essere protetto.
Quindi, penso che tu abbia identificato un problema fondamentale con qualsiasi politica di sicurezza, gestione delle chiavi . Avere una politica di gestione delle chiavi in atto è fondamentale per fornire un sistema sicuro. Ed è un argomento piuttosto ampio .
Quindi, la domanda è: quanto deve essere sicuro il tuo sistema (e, quindi, la chiave privata)? Quanto in alto, nel tuo sistema, è necessario alzare la barra?
Ora, se sei disposto a pagare, ci sono alcune persone là fuori che producono soluzioni a questo. Abbiamo finito per usare un HSM (Hardware Security Module) . È fondamentalmente un server a prova di manomissione che contiene una chiave nell'hardware. Questa chiave può quindi essere utilizzata per creare altre chiavi utilizzate per la crittografia. L'idea qui è che (se configurato correttamente), la chiave non lascia mai l'HSM. Gli HSM costano molto . Ma in alcune aziende (diciamo per proteggere i dati delle carte di credito), il costo di una violazione è molto più elevato. Quindi, c'è un equilibrio.
Molti HSM utilizzano le carte chiave di manutenzione e amministrazione delle funzionalità. Un quorum di carte chiave (diciamo 5 su 9) deve essere fisicamente inserito nel server per cambiare una chiave. Quindi, questo aumenta il livello piuttosto elevato consentendo una violazione solo se un quorum di super utenti collude.
Potrebbero esserci soluzioni software che offrono funzionalità simili a un HSM ma non sono consapevole di cosa siano.
So che questo serve solo a rispondere alla domanda, ma spero che questo aiuti.