I migliori schemi di progettazione della crittografia dei dati utente?

6

Diciamo che ho un sito Web che consente agli utenti di caricare file (molto simile a Dropbox), e ho bisogno di crittografare quei file in modo che solo gli utenti che hanno accesso a loro possano visualizzare i dati del file. Gli utenti devono essere in grado di visualizzare i nomi / le dimensioni dei file tramite un'interfaccia web (ma nessun altro dovrebbe essere in grado di farlo) e scaricare la versione non crittografata quando lo desiderano. Quale sarebbe l'impostazione di crittografia più sicura?

Mi sembra che potresti criptare una chiave di decrittazione con la password degli utenti (e associare quella chiave solo a quell'utente / usarla per crittografare i suoi dati), ma poi per accedere alle informazioni del file o permetterle per scaricare i dati del file il server dovrebbe avere accesso alla chiave di decrittografia oltre il punto di accesso. Ciò richiederebbe la persistenza della password dell'utente in una certa capacità (o il salvataggio della chiave di decrittografia) con la sessione, che sembrano entrambi molto insicuri. Mi è anche venuto in mente che potremmo (un po '?) Memorizzare in modo sicuro una chiave master, ma i dati dell'utente sono a rischio se questa chiave viene rubata.

Come è fatto in pratica? Inoltre, se qualcuno là fuori ha dei buoni articoli / post su questo argomento sarei estremamente interessato a leggerli.

    
posta FuZion 18.12.2011 - 07:58
fonte

3 risposte

5

Esiste una vasta gamma di modi per fornire questo tipo di archiviazione online:

  • Completamente non crittografato: nessuna protezione

  • Crittografia a livello di sito sul lato server: i dati vengono caricati dall'utente nel suo modulo non crittografato e memorizzati sul server remoto. Il server ha, ad esempio, un disco completamente crittografato. Questo protegge fisicamente solo i dati.

  • Chiavi individuali lato server: il server genera chiavi, fornisce la gestione delle chiavi e fornisce tutta la crittografia / decrittografia per i dati dell'utente in base all'utente specifico. Il server è a conoscenza dei valori chiave.

  • Crittografia lato client: i client gestiscono il materiale della chiave sensibile effettiva, gestiscono tutte le crittografie e decrittografie e gestiscono tecnicamente tutte le funzioni di gestione delle chiavi (sebbene il server tenga traccia di tutto per te). Il server non può decodificare i dati affatto.

Sembra che tu voglia fornire una variante della crittografia sul lato client in cui il server non ha conoscenza delle chiavi, ma è preso dall'idea che il server debba fornire il servizio di crittografia / decrittografia reale. Non puoi avere entrambi. Dovrai determinare cosa farà effettivamente il tuo server. È semplicemente un veicolo di stoccaggio? Deve esserci collaborazione? Vuoi essere in grado di condividere i dati tra gli utenti? Tutte queste domande influenzano il ruolo che il server giocherà e l'effettivo caso d'uso / caso aziendale che stai cercando di risolvere.

In termini di creazione effettiva della chiave di crittografia basata sulla password dell'utente, ti consigliamo di verificare "derivazione della chiave basata sulla password". Tale chiave di crittografia potrebbe funzionare come chiave principale per le altre chiavi basate su client.

    
risposta data 18.12.2011 - 19:25
fonte
1

Fornire en / decrittazione lato client e fornire lo strumento per l'utente. Perché tu lo vuoi semplice, veloce, strong, gratuito, multipiattaforma (dal momento che non sai cosa l'utente potrebbe utilizzare) e molto facile da usare, ti consiglio la Cifratura guidata della US Air Force, vedi link .

Una cosa grandiosa di Encryption Wizard sono i metadati in chiaro. Il tuo sito web può leggere & pubblica questi dati (nomi, dimensioni, parola chiave, autore, ecc.)

    
risposta data 19.02.2012 - 02:04
fonte
0

Come spesso accade nella sicurezza, un ottimo punto di partenza è chiedersi: "Qual è il mio modello di minaccia?" Cosa stai cercando di difendere contro? Chi è l'avversario e quali sono le sue capacità e le loro motivazioni?

Se si desidera proteggere dal provider cloud, è necessario crittografare i dati sul lato client, in modo che il file archiviato nel cloud sia in forma crittografata. Ad esempio, potresti dare un'occhiata a Tarsnap, SpiderOak o Wuala. Se la sicurezza è fondamentale, vorrei dare un'occhiata a Tarsnap; l'autore (Colin Percival) è un rispettato ingegnere della sicurezza, che è stato molto aperto riguardo al suo design, e mi aspetterei che l'architettura di sicurezza di Tarsnap fosse progettata con estrema cura.

Se sei pronto a fidarti del cloud provider, allora hai più opzioni. È possibile crittografare i dati sul lato client oppure caricarli sul cloud e lasciare che il cloud si occupi di proteggerli (sia che il provider del cloud lo crittografi, sia affidandosi al provider cloud per implementare il controllo degli accessi) . Ad esempio, Dropbox rientra in questa categoria.

    
risposta data 19.02.2012 - 03:11
fonte

Leggi altre domande sui tag