Cifrar contenido de manera que solo pueda ser desencriptado por una aplicación específica

0

¿Existe un enfoque de administración clave para el siguiente escenario:

  • Cliente Alice usa una aplicación S1 para generar un archivo. Se espera que los contenidos estén encriptados de manera tal que solo puedan ser descifrados por alguien que posea otra aplicación S2.

  • Alice distribuye el archivo públicamente.

  • El cliente Bob posee la aplicación S2 y puede descifrar el archivo.

En este caso, Alice no conoce a Bob y no está intercambiando ninguna clave directamente con él. El intercambio de claves está fuera de línea y entre las aplicaciones S1 y S2!

¿Cómo almacenará la aplicación S2 su clave de descifrado? Ocultarlo en el binario es una mala idea. Digamos que usar un servidor de claves no es un iniciador en mi escenario. ¿Hay alguna otra solución?

¿Se encuentra algún producto conocido en este escenario? ¿Cómo lo resolvieron?

    
pregunta SkypeMeSM 06.07.2017 - 16:45
fuente

1 respuesta

1

El cifrado verdadero significa que se requerirá un secreto para recuperar los datos originales. El almacenamiento de secretos comunes son:

  • el cerebro del destinatario (algo que sabes)
  • una tarjeta inteligente de otro HSM (algo que tienes)

Tan pronto como abandone este caso de uso de cifrado seguro , caiga en la confusión con dos formas comunes:

  • un algoritmo personalizado: es difícil de configurar y probar de forma segura, y es difícil de proteger contra la ingeniería inversa, por favor, manténgase alejado de eso
  • una clave oculta dentro de una aplicación ejecutable: es difícil de cambiar si está comprometida y es difícil de proteger contra la ingeniería inversa, no es realmente mejor

Si todo lo que necesitas es que Alice y Bob no están obligados a intercambiar ninguna clave, puedes usar un concentrador central:

  • la aplicación S2 se distribuye de tal manera que cada cliente recibe un par de claves asimétricas personales y la aplicación central solo almacena la parte pública, idealmente el par debe ser generado por el cliente, por ejemplo, durante una inicialización de la aplicación.
  • cuando Alice envía un mensaje a través de S1, el mensaje está encriptado con una clave simétrica aleatoria, y esa clave se transmite de forma segura al concentrador central. Un UUID del mensaje se transmite al destinatario y al concentrador central
  • cuando Bob recibe el mensaje y la UUID, la aplicación S2 abre un canal seguro (TLS) al concentrador central. Bob se autentica con su clave privada como propietario legítimo de S2, por lo que el concentrador acepta la solicitud de la clave simétrica para el mensaje identificado por su UUID
  • S2 puede descifrar el mensaje y Bob puede leerlo

Límites:

  • lo que se controla es solo la propiedad de una clave válida, si Bob se vuelve malo y decide vender copias de sus claves, no puede evitarlo. Lo mismo si él no se convierte en malvado, pero es hackeado
  • si Bob descubre que su aplicación S2 no es lo que quiere y utiliza una aplicación de terceros que imita la interfaz, no tiene forma técnica de evitarla, pero pueden existir formas legales ...
  • incluso si el concentrador central no recibe los mensajes, usted tiene control total sobre S1 y S2, por lo que puede obtener fácilmente todos los mensajes intercambiados. Debe saberlo cuando presente su solución a los clientes.
respondido por el Serge Ballesta 10.07.2017 - 12:00
fuente

Lea otras preguntas en las etiquetas