NaCL: Encripta el archivo a múltiples destinatarios

3

Estoy tratando de entender la Biblioteca de redes y criptografía (NaCL).

Considere que tengo un archivo que quiero enviar a varios destinatarios. PGP o S / MIME admite múltiples destinatarios cifrando el archivo con una sola clave simétrica y cifrando esta clave simétrica con las claves públicas de los destinatarios. ¿Esta tarea también se logra fácilmente con NaCL? ¿Cómo? Gracias por las sugerencias.

Actualizar Una idea que tuve es hacerlo de forma similar a pgp. Calcular las claves de intercambio de mi propia clave privada y las claves públicas de los destinatarios. Crear una clave simétrica. Cifrar archivo de clave simétrica. Cifre la clave simétrica con cada clave de intercambio. enviar archivo cifrado y clave simétrica cifrada al destinatario.

La razón principal de esto: quiero cargar el archivo cifrado solo una vez en un servidor donde los destinatarios pueden descargarlos.

    
pregunta esskar 29.09.2014 - 23:34
fuente

2 respuestas

4

El formato real de la salida de NaCL no está completamente especificado, o, más bien, se especifica como la salida en bruto de algunos primitivos criptográficos (como se describe there ). Por lo tanto, el formato no es extensible y no incluye ninguna función que admita múltiples destinatarios. La capacidad de enviar un mensaje a múltiples destinatarios parece ser una funcionalidad que se ha sacrificado en el altar de la simplicidad.

Si desea utilizar NaCL y seguir enviando un solo mensaje a múltiples destinatarios sin duplicar la mayor parte de los datos, debe diseñar su propio formato, básicamente haciendo esto:

  • Genera una clave secreta aleatoria K .
  • Utiliza K para cifrar el mensaje (con crypto_secretbox ).
  • Encripta K como si fuera el "mensaje" con crypto_box .

Pero entonces está definiendo su propio protocolo, construido sobre primitivas existentes. Este es el tipo exacto de cosas que NaCL debía evitar. O, dicho de otro modo, si vuelve a hacer su propio diseño de protocolo, ¿por qué usaría NaCL? Y, en cualquier caso, estaría solo, tanto para el análisis de seguridad como para la implementación (ya que no interactuaría con nadie más).

Si lo que necesita es lo que OpenPGP proporciona, entonces use OpenPGP.

    
respondido por el Tom Leek 20.11.2014 - 20:49
fuente
1

Parece que necesitas tu propio protocolo, como explicó Tom. Si decide hacer esto, debe firmar el mensaje (con cryto_sign() ).

Cuando Alice le envía un mensaje a Bob, ella quiere asegurarse de que Eve no altere el mensaje. Por lo tanto, tiene autenticación (de la cual crypto_box() se encarga automáticamente). Cuando Alice envía el mensaje a Bob y a Charlie, ella también quiere asegurarse de que Bob no altere el mensaje y se lo pase a Charlie. Entonces la autenticación ya no es suficiente, quiere firmas.

    
respondido por el Olli 11.02.2015 - 01:24
fuente

Lea otras preguntas en las etiquetas