Sto cercando di capire una strategia di crittografia decente per un'applicazione di piccole imprese. Il mio obiettivo principale è quello di espormi al più piccolo PI non criptato possibile.
Non ho idea se sto pensando troppo a questo e c'è un modo semplice, quindi ho pensato di chiedere. Mi piacerebbe anche sentire se qualcuno dei miei pensieri è completo di spazzatura.
Ho pensato finora a 2 strategie:
-
Quando un utente effettua l'accesso, gli viene richiesto di immettere una password di decrittografia principale. Questa password viene utilizzata per decrittografare la chiave privata e viene generata una stringa casuale & memorizzato in un cookie (o forse nella memoria locale + trasmesso con ogni richiesta di posta). La chiave privata viene nuovamente crittografata con la stringa casuale e ogni volta che viene richiesto un dato crittografato, la stringa del cookie viene utilizzata per decrittografare la chiave, quindi i dati.
-
Svantaggio: come amministratore / hacker del server, potevo ovviamente intercettare la password principale e decifrare la chiave, quindi i dati.
-
Vantaggio: abbastanza semplice.
-
-
La chiave pubblica è solo memorizzata sul server. Tra il server e il client c'è un proxy inverso che analizza il contenuto (simile a come funziona ESI). Questo server proxy conterrebbe la chiave privata e decrittografare i dati prima di servire al client. Le chiavi su questo server non sarebbero gestite dallo stesso amministratore.
- Svantaggio: come amministratore / hacker proxy, puoi ovviamente intercettare i dati mentre passano. Avresti anche l'accesso con chiave privata.
- Vantaggio: come amministratore / hacker proxy non avresti le credenziali per l'applicazione, quindi saresti in grado di annusare solo i dati richiesti dagli utenti finali.
- Vantaggio: in un ambiente aziendale, è probabile che questo server possa essere protetto molto più facilmente da fonti esterne. Nessuna connessione in entrata potrebbe essere consentita.
I seguenti sono trattati come dati:
- Tutto il trasporto è protetto da SSL.
- In tutti gli scenari avrei accesso ai dati così come sono stati inseriti. Questo potrebbe essere mitigato utilizzando la crittografia a chiave pubblica JS.
- L'autentica autenticazione dell'applicazione è adatta allo scopo. OSSIA Ingegneria sociale, forza bruta ecc. Sono tutti scontati. Problemi / bug basati sul browser non sono scontati.
- I dati crittografati devono essere accessibili da un team di persone autorizzate.
- È necessario accedervi tramite un browser.
- L'intero disco è crittografato a riposo, il che non è di beneficio, ad esempio, per violare la root tramite SSH.
Ho attualizzato quanto segue:
- Decodifica JS: da quello che ho visto, questo significa che la chiave privata è stata mostrata all'utente finale.
- Chiavi e ampli simmetrici; chiavi pub / priv non cifrate sul server, DB su un altro server. Non sono veramente sicuro del valore di questi. Come amministratore o come hacker, avrei tutto il necessario per decrittografare i dati MySQL se dovessi violare il server delle applicazioni.
- Server di chiavi di terze parti: questo sembra passare inosservato a qualcun altro che è in grado di vedere il contenuto (anche se mi chiedo se c'è un processo a più fasi che potrebbe funzionare insieme).