Vorrei iniziare affermando che questa è davvero la mia prima incursione nella crittografia.
Ho scritto un nome utente / sistema di password, e così, e ho familiarità con le password di salatura e hashing ... ma non ho mai fatto nulla con la crittografia.
Ho un'idea per un sistema che voglio costruire ... e ho (quello che credo sia) una soluzione intelligente per archiviare i dati dell'utente senza sapere nulla su di loro ... ma non sono sicuro se Sto aprendo la porta a una sorta di "promessa di non sbirciare".
La mia idea è questa: voglio poter memorizzare informazioni crittografate senza sapere nulla sull'utente.
Il design nella mia testa è questo: l'utente imposta un account (nome utente e password). Un blob crittografato, digitato con la password, viene creato lato client (crittografia a chiave segreta tramite libsodium in JavaScript). Il nome utente è hash (lato client ... forse salato con la password?). Questo hash e il blob crittografato vengono inviati al server, dove sono collegati insieme nel database. Quando l'utente effettua il login, l'hash viene inviato al server e il blob crittografato viene rinviato al browser, dove la password viene utilizzata per decrittografare il blob. Tutto questo, ovviamente, accade su HTTPS.
C'è un difetto qui? Sto trascurando qualcosa?
Voglio essere in grado di rispondere, anche a un mandato di un governo, con "Non lo so. E non riesco a scoprirlo".
Ovviamente, il malware sul lato client sarebbe un problema ... ma non sono stato in grado di pensare ad altro modo ... e non è questo il problema che sto cercando di affrontare in questo momento . Voglio solo trovare un modo per archiviare le informazioni sui clienti senza sapere nulla, sui miei clienti.