Crittografia dei dati prima di inviarli allo strumento SaaS e decrittografia sulla vista del browser

2

Vorrei inviare i dati a uno strumento SaaS, in cui i dati sono archiviati nel cloud. Userò Google Analytics come esempio, ma si applica a qualsiasi servizio simile.

Google Analytics non ti consente di memorizzare informazioni personali identificabili (PII) e ci sono molti esempi di servizi online in cui potresti voler inviare dati utente ma non vuoi che il servizio sia in grado di visualizzare tali dati.

La soluzione migliore che ho per questo problema è la crittografia dei dati prima che vengano inviati a terzi, aggiungendo un token speciale che distingue i dati da altri hash e quindi memorizzando sia il valore originale che il valore hash in un database. Ad esempio, un nome utente come johndoe potrebbe essere sottoposto a hash in s8d7f89sd7f , quindi aggiunto a hashed- per ottenere hashed-s8d7f89sd7f . Dovresti quindi memorizzare sia johndoe che hashed-s8d7f89sd7f nel tuo database.

Quando visiti il sito web di terze parti (ad esempio un rapporto di Google Analytics con tutti i valori dell'hash), puoi eseguire la ricerca per indicizzazione del DOM alla ricerca di valori corrispondenti al modello speciale (ad es. parole che iniziano con hashed- ). Quindi, utilizzando un'estensione Chrome, un bookmarklet o qualche altro programma locale, è possibile sostituire tale valore con hash sul valore originale e visualizzarlo sulla pagina in formato leggibile. A meno che il sito web non stia controllando la pagina per le modifiche e non le abbia telefonate a casa, non avrebbero mai avuto accesso ai valori tradotti.

La soluzione più vicina a questo problema è questa estensione di Chrome , ma memorizza dati in un CSV (non così robusto come un database, ma è risolvibile) ed è specifico per Google Analytics.

Esiste una soluzione esistente a questo problema? Se no, perché? E la soluzione sopra proposta funzionerebbe?

    
posta zzz 02.08.2015 - 03:13
fonte

2 risposte

1

In base a ciò che hai delineato, la tua soluzione sembra eccessivamente complessa e non sono sicuro del motivo per cui non devi solo crittografare i dati piuttosto che eseguirne l'hashing. Potrebbero esserci limitazioni in ciò che è possibile memorizzare nell'app remota che potrebbe richiedere la codifica dei dati crittografati (simile a ciò che è necessario fare quando si invia l'e-mail crittografata). Ciò eliminerebbe la necessità di mantenere un hash di mapping del database locale al testo originale. Richiedere questo tipo di mappatura richiederebbe la condivisione del database tra tutti i possibili client, il che potrebbe essere un problema - più facile condividere una chiave segreta di un database nella maggior parte dei casi.

Tuttavia, fondamentalmente, penso che il problema stia cercando di aggiungere sicurezza a qualcosa che non è stato progettato per questo. Questo è raramente un ottimo percorso da intraprendere. La soluzione spesso finisce per essere eccessivamente complessa e spesso presenta buchi che non sono facili da individuare. La vera soluzione è utilizzare un SaaS che include il livello di sicurezza richiesto ed evitare qualsiasi soluzione che tenti di aggiungere sicurezza come ripensamento.

    
risposta data 07.08.2015 - 01:47
fonte
1

Quello che hai suggerito è un modo per farlo. Tuttavia, c'è un modo più semplice. Come suggerito da Tim X, la crittografia dei dati PII prima di inviarli allo strumento SaaS è un'idea migliore in quanto tutto ciò che serve per condividere con i client che hanno bisogno di vedere la versione in chiaro è una chiave segreta. E non un database.

Non hai menzionato il flusso di lavoro della raccolta di dati utente e mostrandoli. Quindi supporrò che la raccolta di PII avvenga quando l'utente esegue un'azione sul proprio browser, app, ecc. Supponiamo che tu abbia un sito web e quando un utente fa clic su un particolare link, una notifica viene inviata a Google Analytics per registra il clic.

In questo caso, puoi passare la notifica di clic al tuo codice lato server che crittografa i bit PII e li inoltra su Google Analytics -oppure- se Google Analytics richiede una connessione diretta, la crittografia deve avvenire sul lato client stesso (usando Javascript per esempio). La chiave segreta verrà archiviata sul lato server nel primo caso (consigliato) e sul lato client nel secondo caso (non consigliato).

Se non ti preoccupi della chiave segreta memorizzata dal rivenditore SaaS, è meglio scegliere uno strumento SaaS che crittografa automaticamente le PII per tutte le notifiche provenienti dall'utente, senza richiedere ulteriori azioni da parte tua.

    
risposta data 31.08.2016 - 16:36
fonte