Sto lavorando a un'applicazione che verrà utilizzata da utenti relativamente non esperti di tecnologia e mentre le macchine avranno accesso a Internet, l'app non può avere alcun tipo di intermediario ospitato.
L'app consente alle persone di prendere un file, comprimerlo e codificarlo come immagine da condividere su siti come GitHub per aiutare a condividere cose come i file di test, ecc.
La prima versione dell'app funziona perfettamente, ma a volte ci sono dati che richiedono una condivisione sensibile e un certo livello di crittografia.
Idealmente voglio andare giù per la coppia di chiavi pubbliche / private, ma condividerle è complicato e complicato dal punto di vista dell'utente.
Mi piacerebbe essere in grado di (in qualche modo):
- Prendi l'indirizzo e-mail di un utente e usalo come chiave pubblica
- Prendi una password dall'utente e usala per ottenere una chiave privata
- Interagisci questi in qualche modo in modo che possano essere usati in questo modo.
Non importa se l'indirizzo di posta elettronica si risolve in definitiva su qualcos'altro che viene poi utilizzato, ma il flusso generale deve essere tale che:
- Alice vuole criptare un'immagine per essere utilizzata da un particolare utente
- tipi di Alice nell'indirizzo di posta elettronica dell'utente (o un'altra stringa per la destinazione, ad esempio un gruppo)
- Bob scarica l'immagine nell'app e digita la sua password privata per decomprimerla.
L'app potrebbe anche firmare i dati utilizzando le chiavi private per la verifica anche sull'altro lato.
So che potrei usare una chiave pubblica / privata derivata da password, ma ciò significa che la singola password potrebbe essere utilizzata per ricavare entrambe le parti e renderla in definitiva inutile.