ECC Cómo intercambiar datos firmados y encriptados

2

Con .NET Framework 4.7 se mejoró considerablemente la criptografía de curva elíptica (ECC):

  

.NET Framework 4.7 ha mejorado la funcionalidad disponible con   Criptografía de curva elíptica (ECC). Importar Parámetros (ECParámetros)   Se agregaron métodos a las clases ECDsa y ECDiffieHellman para permitir   para que un objeto represente una clave ya establecida. Un   También se agregó el método ExportParameters (bool) para exportar la clave   utilizando parámetros de curva explícitos.

     

.NET Framework 4.7 también agrega soporte para curvas adicionales   (incluida la suite de curvas Brainpool), y ha agregado predefinidos   Definiciones de facilidad de creación a través de la nueva ECDsa.Create (ECCurve) y   Métodos de fábrica ECDiffieHellman.Create (ECCurve).

Soy un desarrollador .NET que desea utilizar ECC con un HSM, por lo que surgen algunas preguntas.

Suposición

  1. No está permitido usar la misma instancia de un EC para firmar y cifrar
    (Leí esta declaración varias veces, soy un desarrollador, no un especialista en criptografía, por lo que lamentablemente falta la experiencia para entender esto en su integridad)

Problema

  1. Alice quiere enviarle a Bob un mensaje firmado y encriptado
  2. Alice tiene Bobs Public Signature Key (brainpoolP320r1)
  3. Bob tiene Alices Public Signature Key (brainpoolP320r1)
  4. Alice crea un 'throw-away' Key solo para el cifrado, pero obtiene un secreto compartido con Bobs Public Signature Key ¿No es esto una reutilización prohibida de claves?
  5. Alice firmó los datos con el Signature Key antes con la transmisión

Pregunta

  1. ¿La derivación de un secreto compartido entre una EC para la firma y un 'throw-away' Key es una violación de la suposición de no usar una clave para la firma y el cifrado?
  2. ¿Cómo es posible agregar denegación plausible ? (con respecto a la identificación del remitente y el destinatario)

Actualizar

Con los comentarios que proporcionó, usaría este formato de mensaje para archivar la posibilidad de autenticación y denegación plausible.

    
pregunta dh_cgn 09.04.2017 - 20:57
fuente

2 respuestas

2

Para asegurarse de que solo Bob pueda leer el mensaje, el mensaje debe cifrarse con la clave pública de Bob. Para probar que Alice envió el mensaje, debe estar firmado con la clave privada de Alice.

I.e. Si está utilizando el cifrado en el contexto de un mensaje entre dos partes, el uso de claves separadas para el cifrado y la firma es una necesidad.

Si el pedido se invierte y el mensaje está firmado antes se cifra, la firma también se cifra y se oculta para todos, excepto Bob.

    
respondido por el symcbean 09.04.2017 - 22:36
fuente
2

Esto parece ser una tarea, así que solo daré algunos consejos:

Con respecto a la declaración It is not allowed to use the same EC for signing and encryption : las curvas elípticas tienen parámetros, por lo que hay muchos de ellos. Sin embargo, exigir el uso de diferentes curvas no tiene sentido.

Con respecto a 1: depende de cómo se firma y cifra exactamente. Probablemente esta bien Solo utiliza la clave de firma para derivar un secreto común. Por lo general, esto se puede hacer de manera segura.

Respecto a 2 .: Tenga en cuenta que desea que las firmas autentiquen los mensajes a la otra parte, pero también desea una negación plausible. Eso debería darte una buena pista.

    
respondido por el Elias 09.04.2017 - 23:43
fuente

Lea otras preguntas en las etiquetas