Come conservare una chiave di crittografia su hosting condiviso?

3

Sto progettando un semplice sistema di gestione dei pazienti online in esecuzione su hosting condiviso. Secondo la normativa nazionale, i dati sensibili dovrebbero essere crittografati se usati online, quindi ho crittografato tutti i campi sensibili come nome, telefono, indirizzo e gruppo sanguigno.

Il mio problema è ora come dovrei conservare la chiave? Se la chiave è posizionata sul server e il server è compromesso, i dati possono essere facilmente decifrati. Dopo la ricerca, ho ottenuto le seguenti soluzioni che non sono ancora sicuro se sono corrette o meno:

  1. Codifica del codice sorgente per tutti i file PHP.
  2. Posizionare la chiave su un altro server e scaricarla dall'host tramite la connessione HTTPS utilizzando la crittografia asimmetrica. L'host fornisce la chiave pubblica e il server remoto fornisce la chiave principale crittografata, quindi la decrittografa e la utilizza per crittografare i dati del paziente.

Per queste soluzioni dovremmo affrontare di nuovo lo stesso problema su come nascondere le chiavi.

Ho anche esaminato la domanda " dove memorizzare una chiave per crittografia? ", ma la maggior parte dei punti richiede un account amministratore che non è disponibile per l'hosting condiviso.

    
posta Akam 29.08.2013 - 21:21
fonte

2 risposte

5

L'unica risposta corretta a questa domanda, come ha commentato Xander, è che non ci si può aspettare una sicurezza adeguata per i dati sensibili in un ambiente "Condiviso". Non sei l'amministratore del server, il che significa che qualsiasi difetto di sicurezza o errata configurazione lasciata aperta da "qualcun altro" può comportare la compromissione dei dati. E comunemente in questi casi quando le parti coinvolte trovano qualcosa che assomiglia a una chiave di crittografia e alcuni file apparentemente crittografati, la prima cosa che viene provata è decifrare e vedere cosa c'è dentro.

Quindi tutto sommato è meglio avere un host che possa assicurare HIPAA o PCI-DSS come la riservatezza dei dati o ospitare i dati in un ambiente di cui tu o la tua organizzazione avete il controllo completo in modo da poterlo assicurare a livelli accettabili te stesso.

    
risposta data 29.08.2013 - 22:24
fonte
2

Firma con @Xander e @Michael Hampton.

Questi schemi di crittografia del codice sorgente si basano tutti su ... una chiave privata. In modo che non risolva il tuo problema, sposta semplicemente il problema da un'altra parte.

Ottenere la chiave da un server separato [1] ha lo stesso problema: è necessario autenticarsi su quell'altro server e le credenziali di autenticazione devono essere memorizzate da qualche parte sull'host condiviso. Quindi, tutto ciò che hai fatto è stato spostare il problema un po '.

È possibile archiviare la chiave nel database stesso o nella memoria, nessuno dei quali dovrebbe essere letto da altri utenti sul proprio host condiviso a meno che non sfrutti qualche vulnerabilità per aumentare i privilegi [2]. Nel caso dell'archiviazione in memoria, ciò richiederebbe il collegamento all'applicazione ogni volta che viene riavviato e fornire la chiave in remoto, il che richiederebbe una connessione sicura.

Non ho idea di quali siano le leggi nel tuo paese [e IANAL], ma da un punto di vista puramente etico, non potrei mai ospitare informazioni sulla salute personale in una struttura di hosting condiviso non accreditata . Potresti riuscire a tirarlo fuori; potresti persino essere in grado di rispettare le leggi e i regolamenti locali, ma non sarebbe mai molto sicuro.

Hai anche imbattuto in un problema molto più grande in generale: anche la migliore crittografia è strong quanto la sicurezza delle chiavi private coinvolte. Anche in un ambiente di hosting dedicato, una vulnerabilità nell'applicazione può consentire a un utente malintenzionato di recuperare la chiave e inoltre è vulnerabile a chiunque abbia accesso fisico al server stesso, ad esempio a qualsiasi dipendente del provider di hosting.

Anche se la chiave è perfettamente sicura, devi ancora pensare a come la tua applicazione gestisce i dati dopo che è stata decifrata. I tuoi controlli di accesso assicurano che gli utenti vedano solo le informazioni che sono autorizzati a vedere? I tuoi controlli di sicurezza impediscono o attenuano il rischio che un utente malintenzionato ruba una sessione autorizzata e quindi la utilizza per scopi non autorizzati?

Le risposte a queste domande dipendono, in parte, dai requisiti legali in cui stai operando.

  1. Presumibilmente l'altro server è non su un host condiviso, altrimenti quali vantaggi ha questa separazione? Ma se hai accesso a un host non condiviso, perché stai ospitando la tua applicazione su un host condiviso, in primo luogo?
  2. L'escalation dei privilegi sembra fuori portata per la domanda che stai chiedendo.
risposta data 30.08.2013 - 18:21
fonte

Leggi altre domande sui tag