One of the primary purposes for this is to be able to say "We (as a company) have absolutely no way of decrypting your communications", so that's a no-go. It needs to be device-to-device, or encrypted with the private key of a device, etc.
Bene, in tal caso, abbiamo stabilito che entrambi i dispositivi devono essere in grado di comunicare tra loro, in modo bidirezionale e in tempo reale, al fine di completare il trasferimento.
In tal caso, non c'è davvero bisogno di elaborati schemi di crittografia a chiave pubblica. In effetti, sono più propensi a introdurre problemi.
Sappiamo anche che molte persone non sono realmente preparate a distruggere fisicamente i media, hanno la capacità di farlo in modo sicuro, o persino a capire perché potrebbe essere importante farlo. Invece, la maggior parte delle persone tende a cancellare semplicemente il file attraverso il sistema operativo, lasciando tutti i dati intatti sul supporto per chiunque visiti. Quindi il suggerimento di M'vy di lasciare che l'utente copi la chiave sui media su cui ha il controllo fisico, mentre in teoria è buona , non è davvero una grande idea in pratica.
Utilizza invece un algoritmo di scambio di chiavi come Diffie-Hellman Key Exchange ( Wikipedia , RFC 2631 ) per consentire ai due dispositivi coinvolti di concordare interattivamente su un segreto condiviso. Poiché non vogliamo reinventare la ruota, utilizza qualsiasi TLS o perhaps SSH / SFTP / SCP sono disponibili per la piattaforma di destinazione per il sollevamento di carichi pesanti. (In generale, non scrivere mai codice crittografico da soli. Le probabilità sono ottime che tu sbagliare , introdurre bug sottili e lasciare i dati degli utenti a rischio di esposizione. Lascia che qualcun altro faccia questi errori.)
Sebbene non correlato alla crittografia stessa, assicurati che questo processo implichi l'autenticazione dell'utente su entrambi i dispositivi in qualche modo.
Una volta che i due dispositivi hanno concordato un segreto condiviso composto, ad esempio, da 32 byte casuali, utilizzare tale segreto condiviso come chiave di crittografia simmetrica. AES -256 è abbastanza buono per la maggior parte degli scopi in questi giorni , la chiave a 256 bit con l'ulteriore vantaggio di fornire un margine di sicurezza anche in un crittografia post-quantistica , e per un dato fattore di lavoro AES non è molto intensivo dal punto di vista computazionale.
Dopo aver trasferito la chiave a lungo termine da un dispositivo all'altro e verificato che la copia è buona, basta cancellare le chiavi di crittografia temporanea da entrambi i dispositivi e probabilmente cancellare la chiave a lungo termine dal dispositivo che è stato trasferito da (probabilmente questo è il tuo problema più grande)