Rischi di crittografia lato client utilizzando Stanford Crypto Library

7

Sto costruendo una semplice applicazione web per chat crittografate. Ogni messaggio verrà sottoposto a crittografia AES a 256 bit sul lato client, utilizzando la libreria di crittografia Javascript di Stanford. Nessun dato non crittografato o informazioni sulla password lasceranno mai il browser dell'utente.

È sicuro implementare questo schema, usando la crittografia lato client, anche senza SSL?

    
posta hawkharris 25.12.2013 - 06:31
fonte

2 risposte

7

Javascript viene inviato dal server al client; qualunque crittografia si faccia lato client fornirà sicurezza solo nella misura in cui il codice che il client esegue non è stato alterato in transito - il che significa che SSL è ancora richiesto, almeno per assicurarsi che ciò che il client riceve ed esegue realmente è autentica implementazione del tuo protocollo.

Ciò implica che se il server è ostile al client, il server vince e il client è condannato. Di conseguenza, è inutile tentare di proteggere i calcoli del client dal server. Da questo argomento (un po 'semplicistico), possiamo concludere che non ha senso crittografare i dati sul client; basta usare SSL, inviare i dati al server e lasciare che il server faccia il suo lavoro. Il server è fidato , il che significa che se il server vuole tradirti, allora sei indifeso.

La libreria crittografica Javascript di Stanford è ancora buona scienza, ma non si adatta bene all'utilizzo di Javascript in un classico Contesto Web. Avrebbe molto più senso come parte di un'estensione del browser o qualcosa di simile script che tragga vantaggio da un meccanismo di distribuzione specifico, indipendente e sicuro per il codice.

(Nota che tutto quanto sopra si applica anche se il tuo protocollo è solido da un punto di vista crittografico - e non molti crittografi oserebbero fingere di poter realizzare una tale impresa da soli , senza un'estesa revisione tra pari).

    
risposta data 25.12.2013 - 16:09
fonte
1

Non abbastanza informazioni ma dal suono ... NO! Non implementare il tuo schema.

Il problema con qui non è la crittografia .. AES è molto strong. Il problema è il protocollo, che ha molte sfumature come l'accordo chiave, come l'integrità è garantita, ecc.

Ecco un esempio recente che viene rimosso dai titoli di alcuni sviluppatori che implementano il proprio protocollo per la messaggistica sicura. Moxie fa un buon lavoro sottolineando alcuni luoghi in cui potresti aver fatto un errore.

Crittografare con AES usando sjcl una volta risulterà in un testo cifrato che probabilmente un avversario non può capire il risultato di.

L'implementazione di un intero protocollo di chat sicuro in cui AES è usato per la riservatezza potrebbe essere buono ... ma potrebbe avere gravi problemi che potrebbero far precipitare qualcuno in prigione.

    
risposta data 25.12.2013 - 06:48
fonte

Leggi altre domande sui tag