Uno de los propósitos principales para esto es poder decir "Nosotros (como compañía) no tenemos absolutamente ninguna forma de descifrar sus comunicaciones", por lo que es un no-go. Debe ser de dispositivo a dispositivo, o cifrado con la clave privada de un dispositivo, etc.
Bueno, en ese caso, hemos establecido que ambos dispositivos deben poder comunicarse entre sí, de forma bidireccional y en tiempo real, para completar la transferencia.
En ese caso, realmente no hay necesidad de elaborar esquemas de cifrado de clave pública. De hecho, es más probable que presenten problemas.
También sabemos que muchas personas no están realmente preparadas para destruir físicamente los medios de comunicación, tienen la capacidad de hacerlo de forma segura o incluso entender por qué podría ser importante hacerlo. En su lugar, la mayoría de las personas tienden a simplemente eliminar el archivo a través del sistema operativo, dejando todos los datos intactos en los medios de comunicación para que cualquiera que venga a buscarlos. Por lo tanto, la sugerencia de M'vy de permitir que el usuario copie la clave en los medios sobre los que tiene control físico, mientras que en teoría es buena , no es realmente una gran idea en la práctica.
En su lugar, use un algoritmo de intercambio de claves como Diffie-Hellman Key Exchange ( Wikipedia , RFC 2631 ) para permitir que los dos dispositivos involucrados acuerden interactivamente un secreto compartido. Como no queremos reinventar la rueda, usamos cualquier TLS o tal vez haya bibliotecas SSH / SFTP / SCP disponibles para que su plataforma objetivo haga el trabajo pesado. (En términos generales, nunca escriba el código criptográfico usted mismo . Las probabilidades son grandes de que hazlo mal , introduce errores sutiles y deja la información de tus usuarios en riesgo de exposición. Deja que alguien más cometa esos errores.)
Aunque no está relacionado con la criptografía en sí, asegúrese de que este proceso implique que el usuario se autentique en ambos dispositivos de alguna manera.
Una vez que los dos dispositivos hayan acordado un secreto compartido que consiste en, digamos, 32 bytes aleatorios, use ese secreto compartido como una clave de cifrado simétrica. AES -256 es lo suficientemente bueno para la mayoría de los propósitos en estos días , la clave de 256 bits tiene el beneficio adicional de proporcionar un margen de seguridad también en Criptografía post-cuántica , y para un factor de trabajo dado, AES no es muy computacional.
Una vez que haya transferido la clave a largo plazo de un dispositivo a otro y haya verificado que la copia es correcta, simplemente borre las claves de cifrado temporales de ambos dispositivos y posiblemente borre la clave a largo plazo del dispositivo desde el que se transfirió (este último probablemente sea tu mayor problema).