Sto progettando un'applicazione web che gestirà dati molto sensibili, archiviandola per conto dei suoi utenti. Una specie di cassastrong online, se vuoi.
I dati protetti di un utente dovrebbero essere visibili solo a lei, nemmeno al software o al proprietario del server. Ciò apre la strada a solide pratiche di sicurezza, come l'utilizzo di una password per l'utente finale per crittografare / decodificare i suoi dati, o meglio, per crittografare una chiave simmetrica utilizzata per crittografare i suoi dati. Quest'ultimo consentirebbe di cambiare la propria password senza ricodificare tutti i record sul DB.
Posso garantire che un utente malintenzionato non possa accedere ai dati protetti, anche se dovessero ottenere l'accesso root al mio server?
Mi è venuta in mente la necessità di crittografare / decrittografare i dati utente sul lato client. I moderni browser e hardware consentono alla password e alla chiave di crittografia dell'utente di non lasciare mai il suo browser. Tutte le altre tecniche che posso immaginare hanno difetti fatali, in cui un utente malintenzionato può leggere la memoria del mio software server in esecuzione e trovare la chiave di crittografia.
Ma poi, come posso evitare che l'attaccante pianta un bug web nel mio sito web, o semplicemente cambiando il mio script sul lato client, per inviare le chiavi di crittografia degli utenti a modo loro?
Esiste una tecnologia, supportata da uno o più browser, in cui posso richiedere che tutti gli script sul lato client del mio sito Web siano firmati con un mio certificato? Per rispondere a questa domanda, supponiamo che i miei utenti credano che io possa scrivere un buon software, quindi si fidano del mio certificato.
Esiste un'estensione del browser che esegue tali controlli, che potrei consigliare ai miei utenti di installare?
Nel caso in cui non ci sia, come viene affrontata questa minaccia nel settore? Il controllo è l'unica soluzione? Ad esempio, controllando periodicamente il mio sito web da IP esterni, per assicurarmi che gli script sul lato client non abbiano cambiato hash crittografico.
Devo rinunciare all'idea di fare qualcosa del genere con tecnologie web aperte e risolvere il problema utilizzando un sistema di distribuzione software affidabile come gli app store Apple / Google? Questo dovrebbe solo spostare il problema sul server di qualcun altro, o in realtà affronta il problema sottostante?
Puoi consigliare qualche buona pratica libri / blog / articoli sull'argomento?