Qual è la migliore pratica per archiviare un segreto sul cloud?

8

Questo post su Protezione dei dati delle applicazioni Java per il cloud computing offre una buona introduzione all'utilizzo di un KeyStore Java per la protezione dei dati crittografati nel cloud. Trascura, tuttavia, di rispondere alla domanda fondamentale, come indicato in uno dei commenti: come proteggeresti la password del keystore sul cloud?

Stiamo progettando un'applicazione web SAAS nel cloud pubblico AWS, che avrà molti utenti finali (ridimensionamento a milioni). Tutti i dati dell'utente saranno crittografati per utente con crittografia standard. Le chiavi di crittografia protette da password verranno archiviate su un server di chiavi sicuro remoto, che richiede l'accesso a una chiave segreta API. Questo ha essenzialmente lo stesso problema notato nella domanda precedente, con la chiave segreta dell'API di keyserver direttamente comparabile alla password del keystore: come proteggere la chiave segreta dell'API del server di chiavi sul cloud?

Si noti che la nostra applicazione web ha bisogno di accedere a questa chiave segreta in modo che possa ottenere chiavi per utente per crittografare e decrittografare i dati dell'utente. Stiamo utilizzando la crittografia simmetrica AES-256, ma il problema fondamentale rimane anche per una soluzione PKI, poiché è ancora necessario proteggere la chiave privata. Nota anche che potremmo usare un keystore al posto di un keyserver remoto, ma questo si riduce alla domanda precedente e ancora il problema fondamentale rimane.

Alcuni ulteriori vincoli:

  • Memorizzare il segreto sul server di chiavi sicuro remoto è impossibile, ovviamente, dato che è usato per accedere a quel server delle chiavi.
  • La memorizzazione del segreto sul file system cloud non è sicura, poiché il punto principale è quello di impedire che il segreto sia accessibile a tutti coloro che violano il file system cloud. (Se il filesystem del cloud fosse perfettamente sicuro, non avremmo bisogno di crittografare i dati lì.) Inoltre, dato che le risorse del cloud sono previste in calo e necessitano di riavvio, affidarsi al cloud per mantenere il segreto è inaffidabile.
  • Memorizzare il segreto nel codice è inaccettabile, per molte ragioni tra cui: controllo della versione, memorizzazione di testo normale, reverse engineering, rotazione delle chiavi, ecc. Vedi anche Un sito Web di origine chiuso dovrebbe conservare una chiave segreta nella sua origine? .
  • La memorizzazione del segreto in un HSM non è pratica, poiché non è possibile collegarne uno a un server cloud virtuale. Vedi anche Memorizzazione di "segreti", keystore, HSM e il resto .
  • Anche l'archiviazione del segreto al di fuori del cloud per il caricamento remoto da parte dell'applicazione è problematica: stiamo cercando un approccio puramente cloud-based per evitare l'eventuale manutenzione dei server interni; l'affidabilità della rete non è garantita; l'autenticazione della richiesta di segreto del server cloud sul server interno ha i suoi problemi; ecc.
  • Qualsiasi interazione manuale dovrebbe essere ridotta al minimo, dal momento che vogliamo che i server inizino e si riavviino il più automaticamente possibile per ridurre i tempi di inattività o gli errori umani. La mia ipotesi è che l'interazione manuale potrebbe essere necessaria.

Quindi, qual è la migliore pratica per archiviare un segreto sul cloud? Come dovrebbe un'app Web caricare un tale segreto? Sarei particolarmente interessato a una soluzione Java, ma questo è un problema generale in qualsiasi lingua.

    
posta Richard 13.03.2013 - 20:44
fonte

1 risposta

5

"In the Cloud" significa "su una macchina virtuale che funziona sull'infrastruttura di una grande azienda con la quale abbiamo una relazione contrattuale". Per definizione, quando si memorizzano le cose "nel cloud", si è fidati del provider cloud. Quel fornitore ha tutta la potenza tecnica per esaminare i minimi dettagli delle viscere del codice e dei dati e tutto ciò che memorizzi su queste macchine.

È come cercare di mantenere l'integrità del tuo corpo, quando sei già sul tavolo operatorio, sotto anestesia generale, e il chirurgo ha in mano il suo bisturi. È un po 'tardi diffidare del chirurgo ...

Se il segreto è prezioso, non memorizzarlo nel cloud. Detto altrimenti: se non puoi permetterti il costo aggiuntivo di un server hardware dedicato, i dati segreti non possono valere così tanto - o forse sei troppo avaro per il tuo bene.

    
risposta data 13.03.2013 - 20:52
fonte

Leggi altre domande sui tag