Archiviazione di dati crittografati leggibili solo dall'utente ma creati dal server

1

Contesto

In realtà sto creando un'applicazione di scansione di sicurezza automatica, il che significa che ogni utente sarà in grado di eseguire la scansione del proprio sito Web (la proprietà verificationpart è stata eseguita) e di individuare i difetti nei report.

Il problema è che voglio davvero proteggere i dati archiviati, il che significa che voglio che i miei dati siano leggibili solo dall'utente e dal server (Perché è esposto usando un'API RESTful, per eseguire il server di un'applicazione angularjs).

I dati sono memorizzati in un graphdb chiamato neo4j

Già pensato

  • Memorizzazione di una chiave di crittografia in ciascun nodo utente

    • Il problema è che se qualcuno ruba il mio database, devono solo trovare l'algoritmo usato per crittografare e possono ottenere ogni difetto di ogni sito web.
  • Crittografa i dati inviati dall'utente con la sua password (cancella) sul lato client, quindi il server non conosce la chiave poiché sta memorizzando solo la password con hash.

    • Il problema è che il server non sarà in grado di memorizzare i dati crittografati se non conosce la chiave di crittografia.

Come posso ottenerlo? Ho davvero bisogno di proteggere i miei dati a questo punto, il che significa che anche se rubi il database, è impossibile ottenere i dati da esso, a meno che tu non sia ... io o lo sviluppatore che ha creato il sistema di crittografia.

    
posta Supamiu 01.12.2015 - 18:37
fonte

1 risposta

1

Uno dei principi di crittografia principale è Il principio di Kerckhoffs : "Un crittosistema dovrebbe essere sicuro anche se tutto ciò che riguarda il sistema, ad eccezione della chiave, è di dominio pubblico".

Quindi l'opzione con tasto speciale per ogni utente sembra ragionevole. L'algoritmo e la lunghezza della chiave selezionati dovrebbero essere sufficientemente potenti da proteggere i dati in caso di furto del database. I consigli per la selezione dell'algoritmo e della lunghezza della chiave sono disponibili nella guida OWASP link

Il problema principale in questo caso sarebbe come proteggere le chiavi utente dal furto e dall'implementazione della gestione delle chiavi appropriata. I seguenti elementi dovrebbero essere presi in considerazione durante il processo di implementazione:

  • Memoria chiavi: file o HSM (come SafeNet)
  • Frequenza della rotazione delle chiavi (ad esempio, modifica delle chiavi una volta all'anno)
  • Protezione della chiave principale (una chiave dalla memoria con altre chiavi)
risposta data 01.12.2015 - 19:36
fonte

Leggi altre domande sui tag