Come gestire le chiavi di crittografia fornite dal cliente in un cloud multi-tenant SaaS?

4

Lavoro in un'azienda con sede nell'UE e vorremmo offrire ai clienti business una piattaforma SaaS basata su cloud indipendente dal sistema operativo per elaborare e archiviare dati sensibili (sanitari). Vorremmo implementare il nostro software su Google Cloud Platform.

Tutti i dati sensibili devono essere crittografati con chiavi simmetriche fornite dal cliente e non archiviate sulla piattaforma cloud. (Ci fidiamo di google ma l'atto patriottico è un problema.)

Tuttavia, l'interfaccia del client dovrebbe preferibilmente essere eseguita come app web nel browser. Ciò rende complicata la crittografia lato client. Inoltre, molti dipendenti dovrebbero avere accesso ai dati crittografati all'interno del dominio del cliente commerciale. Pertanto, la chiave di crittografia deve essere condivisa in qualche modo tra i dipendenti.

Un'idea è di generare la chiave di crittografia da una passphrase condivisa (usando PBKDF2), di memorizzarla all'interno di un cookie di sessione (lifetime = 0) e di trasferirla sul server cloud per ogni richiesta di accesso ai dati sensibili. Il server esegue l'operazione richiesta e quindi elimina la chiave dalla sua memoria.

Naturalmente, potrebbero esserci sempre dei modi per estrarre la chiave se noi o Google volessimo farlo, ma possiamo assicurarci che i dati siano archiviati crittografati con una chiave fornita dall'utente gestita solo dal cliente.

Mi chiedo se qualcuno ha idee migliori. Grazie mille in anticipo.

    
posta Lucas 07.04.2017 - 17:22
fonte

2 risposte

1

È impossibile garantire la sicurezza nel cloud dal provider cloud stesso, il provider cloud può (essere obbligato a) fare un dump della memoria di qualsiasi istanza VM in esecuzione ed estrarre qualsiasi chiave di crittografia da un'istanza in esecuzione. È persino possibile monitorare continuamente e automaticamente una VM in esecuzione ed estrarre le chiavi AES non appena vengono utilizzate, specialmente quando la VM utilizza AES-NI.

Una soluzione veramente sicura eviterebbe la decifrazione, e tanto meno l'uso, delle chiavi sul server. Così fa la crittografia lato client e usa il server esclusivamente come memoria BLOB.

Al giorno d'oggi puoi fare un bel po 'di crittografia nel browser, che include KDF e AES. Per KDF puoi usare per es. scrypt-js e per AES aes-js o aes-es .

    
risposta data 09.06.2018 - 10:40
fonte
0

Non pensate che questo sia possibile con le chiavi simmetriche se vi aspettate che il server accetti i dati in chiaro e quindi lo cripta; solo mantenere la chiave di crittografia in memoria durante la sessione non è in realtà una protezione dei dati, in quanto (per un servizio relativamente occupato) quella chiave sarà in memoria, quindi i dati vulnerabili alla decrittazione, tutto il giorno lavorativo.

Potrebbe essere una valida difesa contro chi intercetta i tuoi backup, o cerca di rubare i dati direttamente dal disco; ma non contro gli hack di un servizio attivo.

Potrebbe funzionare se la crittografia avviene sul client e tutto ciò che ricevi nel cloud SaaS è ciphertext, ma in questo caso il cloud non sarebbe in grado di eseguire alcuna elaborazione di tali dati.

    
risposta data 10.01.2018 - 00:00
fonte

Leggi altre domande sui tag