La crittografia lato client è davvero migliore del lato server?

17

L'applicazione Web può crittografare tutti i dati utente sul lato client per convincere gli utenti che non è in grado di decrittografarli.

Quando l'utente immette la password, viene utilizzato per crittografare i dati nel browser e quindi viene inviato al server in stato crittografato. Il server non conosce la password, la chiave di crittografia e quindi non può decodificarlo.

Ma la maggior parte degli utenti non è in grado di esaminare il codice utilizzato per la crittografia. Tutto quello che possono fare è fidarselo. La crittografia lato client può dare la sensazione di controllo ma:

  • Il server può inviare un codice di crittografia a un utente e un altro all'altro
  • L'organizzazione governativa può esortare la società sul lato server a disabilitare la crittografia per determinati utenti

Quindi c'è qualche vantaggio nella crittografia lato client dal punto di vista dell'utente?

    
posta Andrei Botalov 09.07.2012 - 14:05
fonte

5 risposte

11

Hai ragione. Dati i tuoi obiettivi, la crittografia lato client probabilmente non ha molto senso. Non è che sia inutile, solo che ci sono alcune trappole significative e il valore è limitato, quindi il tuo tempo sarebbe probabilmente speso meglio su altre misure. Un riferimento tecnico classico su questo argomento è Javascript Cryptography Considerato Nocivo .

Se pensate che l'utilizzo della crittografia lato client possa aiutare la percezione, anche se in realtà non migliora la sicurezza reale, non penso che sia un angolo molto promettente. L'utente medio non avrà alcuna idea di cosa significhi la frase "crittografia lato client" e quindi non credo che la assoceranno a sentimenti caldi e sfocati.

Penso che sia meglio adottare misure standard per creare fiducia con gli utenti e migliorare la protezione dei dati degli utenti. Ti sei trasferito sul sito HTTPS sul sito? Hai una politica sulla privacy strong e orientata al cliente? Sei concentrato sul servire bene i tuoi clienti e renderli appassionati del tuo sito?

    
risposta data 11.07.2012 - 04:55
fonte
3

Come altri utenti hanno menzionato, molte delle discussioni intorno a questo argomento saranno più sotto l'egida di IT Security. Comunque penso che ci sia una prospettiva UX su questo (o almeno l'inizio di una discussione), che proverò a dettagliare sotto.

Hai menzionato la risposta nella domanda stessa:

Client side encryption may give feeling of control

Come hai detto, né la crittografia lato client né quella lato server sono infallibili in termini di sicurezza, quindi non c'è nulla da scegliere tra loro, giusto?

Bene, c'è - riguarda la percezione. Se i tuoi utenti percepiscono che i loro dati vengono trattati in modo sicuro, è probabile che siano più felici, indipendentemente dal fatto che questo sia effettivamente il caso .

Certo, è importante non mentire ai tuoi utenti sui rischi, ma dal momento che solo una piccola minoranza di utenti nella maggior parte delle applicazioni è interessata, puoi discutere i dettagli nitidi della tua soluzione di sicurezza da qualche parte dove non sarà intralciare gli utenti disinteressati.

Dato questo, la soluzione che suggerirei sarebbe quella di eseguire la crittografia lato client per dare agli utenti una sensazione di controllo, e quindi avere qualche divulgazione progressiva del meccanismo di sicurezza, i suoi dettagli e esattamente quanto è sicuro, per gli utenti che si prendono cura.

EDIT: sono consapevole che questa posizione può avere implicazioni etiche a seconda di ciò che i tuoi utenti devono vedere. Da una prospettiva spassionata, tuttavia, la percezione è il re.

    
risposta data 09.07.2012 - 14:41
fonte
0

Potresti scrivere un client in modalità offline per il browser, come il client offline di Google Mail per Google Chrome (è un client spesso eseguito all'interno di un thin client!).

In questo modo il codice JS:

  • è in esecuzione nel browser, con la solita sandboxing (non si può confondere con file utente, ecc.)
  • ma viene scaricato solo una volta e non può essere modificato per utente / per connessione

Per essere sicuri che ogni utente abbia lo stesso pacchetto, la sua impronta digitale deve essere pubblicata in un archivio pubblico, preferibilmente replicata su molti siti, e controllata automaticamente dopo il download, prima dell'installazione.

Avviso: questo è solo il suggerimento di un suggerimento di un'idea. Non ho studiato il modello di sicurezza "lettore offline".

Nota: le estensioni di Firefox hanno pieno accesso a tutto ciò che nel browser (non sono in sandbox), quindi non sarebbero una buona idea qui, poiché implicano una piena fiducia da parte dell'utente che non è un dato (invece del limitato "I fidati di te con queste informazioni, mi fido di te seguire la tua politica sulla privacy ").

    
risposta data 11.07.2012 - 05:20
fonte
0

Effettuare la crittografia in JavaScript sul lato client presenta i vantaggi della protezione open source: non si nasconde uno schema di "crittografia" ROT-13, quindi gli utenti si fidano di più. Ciò vale anche se qualcuno si rompe nel tuo server e sostituisce detto codice JavaScript con codice nefasto.

La maggior parte degli utenti non leggerà il codice JavaScript o lo confronterà con le versioni memorizzate nella cache e alcuni utenti otterranno il furto dei loro segreti in caso di violazione. Ma sei molto meno probabile che sia quella società che ha divulgato inconsapevolmente tutti i segreti degli utenti negli ultimi cinque anni.

    
risposta data 01.05.2018 - 22:02
fonte
-4

Tutto ciò che non è crittografato sul lato client, è fondamentalmente aperto a tutti. Se vuoi avere un minimo di privacy, non c'è modo di aggirare la crittografia lato client.

    
risposta data 01.06.2013 - 13:10
fonte

Leggi altre domande sui tag