Mi pregunta es un poco importante, porque asumo que el número de Claves Privadas es un número finito.
Sin embargo, es posible que el número sea tan grande que, en teoría, nunca se alcanzaría.
Todo esto me lleva a la pregunta real en la que estoy tratando de encontrar la respuesta a:
Pregunta principal
¿Por qué no generar un par de clave privada / clave pública para un solo uso y luego eliminarlos después del uso?
¿Por qué querría hacer eso?
Digamos que quiero enviar algo privado a Alice, pero nunca hemos hablado antes.
- Alice abriría la aplicación que desarrollé usando su teléfono y presionó un botón.
- Esto se pondría en contacto con mi servidor. El servidor generaría 1 clave privada y 1 clave pública.
- Enviaría la clave pública a su aplicación.
- Luego vería un formulario donde puede escribir los datos que estoy esperando de ella. Luego presiona un botón para enviar los datos.
- La aplicación usaría la clave pública que recibió de mí y cifraría los datos.
- la aplicación también creará una nueva clave privada en su teléfono para firmar los datos cifrados.
- la aplicación generará una clave pública a partir de su clave privada
- finalmente, la aplicación enviaría todos los datos a mi servidor y publicaría su clave pública (para que pueda autenticar que ella envió los datos).
- después de que se publicara con éxito, eliminaría su clave privada, la clave pública que le envié y la clave pública que me acaba de enviar.
- Finalmente, mi lado de la aplicación autenticaría los datos que recibí, descifraré y eliminaré mi clave privada, la clave pública que envié y su clave pública.
El punto Tendría sus datos seguros que ella quería enviarme. Las claves privadas utilizadas para todo esto nunca podrían volver a utilizarse.
Esto ayudaría a aliviar el problema donde está su clave privada expuesto ya que solo se usa para un intercambio de una sola vez.
¿Por qué no se produce este tipo de cifrado ad hoc?
¿Ofrecería esto una capa adicional de seguridad ya que está basada en el tiempo? Usado una vez para este intercambio en vivo.
¿Se quedaría sin claves privadas? Es poco probable, ya que solo genera otro valor que se utiliza durante un período de tiempo específico.
¿La colisión de la clave privada ocurrirá con más frecuencia? ¿Imagina si millones de personas utilizan una aplicación que hace esto todos los días? ¿Haría que los datos de las personas se descifren accidentalmente con la clave privada de otra persona? Improbable.
¿Sería esta una manera de permitir el intercambio ad hoc de datos privados?
Por último, tengo curiosidad de si esta sería una manera de permitir un intercambio más ad hoc de datos privados de manera segura.
Por ejemplo, Alice llama a Bob y necesita la información de su tarjeta de crédito.
¿No estaría esto más cerca de la idea de un pad de una sola vez? ¿Y ofrecer más seguridad?