Potrebbe una chiave privata da JavaScript WebCrypto resistere a un attacco di malware?

4

La recente API WebCrypto può generare chiavi private / pubbliche . Per impedire che la chiave privata sia estraibile con JavaScript, l'oggetto CryptoKey potrebbe essere memorizzato in questo modo in IndexedDB.

Suppongo che se lo memorizziamo in questo modo, un malware potrebbe leggerlo facilmente, è sicuramente il motivo per cui l'API WebCrypto può racchiudere la chiave con un altro tasto , in modo che la chiave privata possa essere memorizzata in IndexedDB crittografato. La chiave di wrapping viene archiviata sul lato server e inviata al client dopo un'autenticazione corretta.

Quindi, se il browser è chiuso, il malware dovrebbe essere in grado di ottenere la chiave privata ma è crittografato e in teoria inutile (eccetto per attacco brute-force).

Ma se il browser è aperto e l'utente effettua il login, il server invia la chiave segreta per scartare la chiave privata. Quindi, in questo momento, è possibile che un malware legga il traffico di rete, la RAM, i file, le cache, per leggere / estrarre la chiave privata non crittografata?

Riguardo al traffico di rete, presumo sia tutto in HTTPS, TLS 1.2 minimo con una suite di crittografia robusta, con HSTS impostato su età massima compresi sottodomini e con HPKP per prevenire attacchi MITM.

    
posta lakano 21.10.2017 - 15:10
fonte

2 risposte

2

Un malware estremamente intelligente con permessi di root (su un client * nix) può fare qualsiasi cosa, incluso reindirizza /dev/random o /dev/urandom a qualcosa che controllano. Se il malware può controllare la generazione di numeri casuali che il tuo computer utilizza per creare chiavi TLS, può interrompere la comunicazione HTTPS.

Se il browser è aperto e l'utente ha effettuato l'accesso, il malware con la possibilità di eseguire dump di mem raw può trovare la chiave.

In breve, se un utente può farlo, allora un programma di malware teorico può farlo .

Suggerisco che la domanda non dovrebbe essere è possibile che il malware ... come malware con una potenza illimitata possa fare qualsiasi cosa tu possa fare. Invece, la domanda è, che cosa occorrerebbe per il malware per ...? Da questa prospettiva, non stiamo misurando ciò che è possibile , ma che cosa è probabile .

La metodologia che hai descritto suona bene quanto può ottenere (al di fuori dell'utilizzo della password dell'utente per bloccare la chiave privata / il segreto condiviso in modo che il server non debba ricevere, archiviare e trasmetterlo). Non esiste una sicurezza perfetta.

    
risposta data 21.10.2017 - 17:37
fonte
0

Dipende dal computer, dal sistema operativo e dal programma utente che esegue Javascript e il sito web. Se uno di questi è compromesso, il malware può ottenere le informazioni inviate dal server al client. Ad esempio, gli attacchi XSS possono compromettere il sito Web e il venditore del browser può in teoria impersonare te su qualsiasi sito web, stai semplicemente credendo che il loro software non gli consenta di farlo.

Quindi sì, questo è quanto di meglio si possa ottenere. Più chiavi sono richieste, meglio è.

Il problema è, lakano, una volta che una chiave memorizzata è stata scartata in Web Crypto, non penso che ci sia un modo per contrassegnare il risultato come "non estraibile". Vorrei che ci fosse un modo per combinare le chiavi di avvolgimento e "non estraibili". Hai trovato un modo?

Ho chiesto un anno e nessuno lo sa davvero: link

    
risposta data 22.11.2018 - 07:45
fonte

Leggi altre domande sui tag