Ho un caso d'uso in cui ho bisogno di crittografare un pezzo di informazione PII in un database, che poi può essere decodificato e accessibile da più ruoli utente in un'applicazione (ad esempio l'utente a cui appartiene, servizio clienti, ingegneria, ecc. ..).
Che cos'è una strategia standard del settore per questo genere di cose?
UPDATE: LEGGERE PRIMA DEL POSTING : oltre a postare commenti per la mia idea qui sotto (che apprezzo molto), proponi anche una strategia. Credo che sarebbe molto utile a tutti coloro che cercano di criptare ogni risorsa condivisa al giorno d'oggi.
Ecco quello che ho in mente al momento che, si spera, descriverò quello che mi riferisco meglio:
Full Disclosure : le informazioni riportate di seguito servono anche per ottenere un'opinione o una recensione tra pari sulla mia attuale strategia che ho trovato
Come parte di una strategia di difesa dei livelli, il mio criterio è di avere almeno 3 fattori per la strategia di crittografia / decrittografia in questo modo se vengono danneggiati 2 pezzi i dati non possono essere ancora decifrati.
I 3 fattori: Il software che accede alle informazioni, Un DB con dati crittografati (DB1), Un DB con le chiavi di crittografia (DB2).
La strategia di crittografia:
- I dati vengono immessi nel software
- A, diciamo, la chiave a 128 bit viene generata
- I dati vengono crittografati con quel tasto
- I dati crittografati sono archiviati nel DB (presentato come DB1 nei 3 fattori precedenti)
- La chiave 128b viene crittografata con una chiave master codificata nel software
- La chiave crittografata a 128 bit viene archiviata nell'altro DB (presentato come DB2 nei 3 fattori precedenti)
La strategia di decrittografia è il contrario.
Il punto è che il software contiene la chiave principale (Fattore 1), DB1 ha i dati crittografati (Fattore 2) e DB2 detiene le chiavi crittografate (yay per la ripetizione delle parole ... anche fattore 3) che può essere decodificato con la chiave principale.
Nella mia testa se qualcuno di questi viene esposto, è un'informazione inutile che non rivela le PII crittografate.
Btw presuppone algoritmi di crittografia solidi come AES (più probabile AES solo dato che DES, 3DES e Blowfish sono deprecati).
Aggiornamento mi rendo conto che non mi sono reso chiaro sul punto in cui questi tre fattori si reiscriveranno. Tutti e 3 saranno in diversi ambienti di hosting su 3 server diversi Stiamo parlando di una strategia su larga scala (che potrebbe funzionare anche su piccola scala) dove i DB sono entità hardware intrinsecamente separate. Nella mia mente questa era l'assunzione iniziale.
Aggiornamento 2 Molti dei commenti qui giustamente suggeriscono che il software è il tallone d'Achile qui. Questo è anche il mio grande canandrum. Non riesco a pensare a nessuna strategia software in cui, se il software è compromesso, i dati non sono a rischio, dato che il software ha sempre un aprire la connessione nel DB e contiene tutta la logica aziendale per visualizzare / gestire tali dati. Anche implementando mydiamo nel software, ciò significa che i dati vengono compromessi se qualcuno prende il controllo del software.