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
- 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
- Alice quiere enviarle a Bob un mensaje firmado y encriptado
- Alice tiene Bobs
Public Signature Key
(brainpoolP320r1) - Bob tiene Alices
Public Signature Key
(brainpoolP320r1) - Alice crea un
'throw-away' Key
solo para el cifrado, pero obtiene un secreto compartido con BobsPublic Signature Key
¿No es esto una reutilización prohibida de claves? - Alice firmó los datos con el
Signature Key
antes con la transmisión
Pregunta
- ¿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? - ¿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.