Esiste un modo per archiviare file utente senza poterli decifrare?

3

Vorrei creare un'applicazione web per l'archiviazione sicura dei file.

Attualmente per l'accesso viene utilizzata l'autenticazione della password ordinaria. Dopo l'accesso, questa password viene utilizzata per la crittografia e la decrittografia dei file utente sul lato server. Quindi solo questo utente ha accesso ad essi.

Ma l'utente non può essere sicuro che:

  • un utente sul lato server non è in grado di decrittografarli
  • I file
  • sono effettivamente crittografati.

C'è un modo per archiviare i file utente in modo sicuro e risolvere questi problemi?

Nota che gli utenti dovrebbero poter accedere ai file non solo da un solo computer.

    
posta Andrei Botalov 05.07.2012 - 19:35
fonte

1 risposta

7

Se si desidera assicurarsi che il server non sia in grado di decodificare il file, non è necessario rivelare la password al server. Pertanto

  • la password di crittografia non deve essere utilizzata per l'autenticazione lato server;
  • i dati devono essere crittografati sul lato client .

Puoi costruire architetture complesse, ma fondamentalmente, se non ti fidi del server, non dargli la tua password.

Una semplice applicazione web (PHP lato server più JavaScript lato client) che fa questo è ZeroBin . Raccomando di leggere questo articolo su Ars Technica su un sito basato su Zerobin . ZeroBin non esegue alcuna autenticazione, che può o non può essere quello che vuoi - questo è solo un esempio (open source) per illustrare il principio.

Per essere sicuri che ZeroBin non riveli i tuoi dati al server, devi rivedere il codice JavaScript che viene eseguito nel browser e convincerti che si comporta come pubblicizzato.

In alternativa, se si desidera eseguire la crittografia lato server, è necessario assicurarsi che il server sia sufficientemente sicuro per le proprie esigenze. Ciò significa che devi fidarti (o avere qualcuno di terze parti (che ti fidi) verificare attraverso un audit) che:

  • Il server non memorizza o perde le password.
  • Il codice server si comporta come pubblicizzato; in particolare, memorizza solo dati crittografati e cancella prontamente eventuali copie temporanee di testo in chiaro.
  • I dati in transito sono protetti correttamente.
  • Il server è fisicamente sicuro, in modo che nessun intruso possa accedere ai tuoi dati o alla tua password mentre è in uso.
  • Le persone con accesso legittimo al server (ad esempio amministratori di sistema) sono affidabili.
  • Questo stato di cose rimarrà vero finché usi il servizio.
risposta data 05.07.2012 - 20:48
fonte