¿Está roto el ECDH para SEC P-384 y P-521 en Windows 10 / Windows Server 2016 TP3?

10

ACTUALIZACIÓN: Código de prueba de concepto aquí , la salida de la consola se muestra a continuación y todos los certificados involucrados son aquí .

Noté que ECDiffieHellmanCng.DeriveKeyMaterial (...) se comporta de manera diferente en Windows 8.1 Enterprise (x64) y Windows 10 Prof (x64).

Específicamente, cuando haces algo como

byte[] SymKey12 = party1.DeriveKeyMaterial(party2);
byte[] SymKey21 = party2.DeriveKeyMaterial(party1);

los valores de SymKey12 y SymKey21 son diferentes en Windows 10 para varios escenarios ECDH secp384 y ECDH secp521 que pasaron muy bien en Windows 8.1.

¿Alguna idea?

Windows Server 2016 Tech Preview 3 (versión NT 10.0.10514.0) y salida de Windows 10 (versión NT 10.0.10240.0)

'Test ECC Alice secp521r1 SS' <=> 'Test ECC Bob secp521r1 SS'
> FAILURE < ECDH Keys are different!
SymKey12 = 22-46-6B-15-0F-9B-65-B0-D6-7D-AA-0E-C5-8A-7F-F3-18-1F-5F-62-88-26-90-67-DC-99-1B-98-73-3B-58-FF
SymKey21 = FD-C3-24-27-4C-4C-56-01-62-1E-B2-AE-B1-F6-68-64-61-72-EB-2E-6D-F4-30-21-F1-8A-73-C6-85-38-25-FA
------------------------------
'Test ECC Alice secp384r1 SS' <=> 'Test ECC Bob secp384r1 SS'
> FAILURE < ECDH Keys are different!
SymKey12 = F3-55-B0-72-49-DA-A5-6B-D7-3E-B7-F5-87-E7-4B-D1-20-A1-6E-67-EE-FF-C2-A9-12-E4-B0-20-46-F7-A5-FA
SymKey21 = 8C-63-5E-21-AC-BB-C1-AB-17-73-E2-E9-4D-95-20-07-6A-60-69-B1-E6-3B-18-EA-B6-56-FF-38-9F-F8-46-2F
------------------------------
'Test ECC Alice secp256r1 SS' <=> 'Test ECC Bob secp256r1 SS'
Success, ECDH Keys agree
------------------------------
'Alice secp521 test cert' <=> 'Bob secp521 test cert'
> FAILURE < ECDH Keys are different!
SymKey12 = B3-90-1C-1B-B0-66-BB-D8-A2-46-37-A9-E4-84-1F-FE-B8-ED-14-17-A8-D8-0C-EB-20-A0-98-5F-3A-85-73-3D
SymKey21 = 44-62-AD-3F-DA-D4-7E-17-49-05-C4-22-93-DD-36-B7-0D-28-47-93-E5-D4-63-03-00-BC-F8-99-DF-BA-A3-92
------------------------------
'Alice secp384 test cert' <=> 'Bob secp384 test cert'
Success, ECDH Keys agree
------------------------------
'Alice secp256 test cert' <=> 'Bob secp256 test cert'
Success, ECDH Keys agree
------------------------------
Press any key to exit ...

Salida de Windows 8 (versión NT 6.3.9600.0)

'Test ECC Alice secp521r1 SS' <=> 'Test ECC Bob secp521r1 SS'
Success, ECDH Keys agree
------------------------------
'Test ECC Alice secp384r1 SS' <=> 'Test ECC Bob secp384r1 SS'
Success, ECDH Keys agree
------------------------------
'Test ECC Alice secp256r1 SS' <=> 'Test ECC Bob secp256r1 SS'
Success, ECDH Keys agree
------------------------------
'Alice secp521 test cert' <=> 'Bob secp521 test cert'
Success, ECDH Keys agree
------------------------------
'Alice secp384 test cert' <=> 'Bob secp384 test cert'
Success, ECDH Keys agree
------------------------------
'Alice secp256 test cert' <=> 'Bob secp256 test cert'
Success, ECDH Keys agree
------------------------------
Press any key to exit ...   
    
pregunta DeepSpace101 01.08.2015 - 06:30
fuente

3 respuestas

3

Actualización: corregida en KB3093266 ( enlace )

Ejecuta lo siguiente en una ventana de PowerShell para ver si lo tienes ...

Get-HotFix -id KB3093266

Las fuentes confirman que esto es realmente un error. El problema relacionado con el análisis de archivos PFX en Windows 10 y Windows Server 2016 Beta cuando se instalan inicialmente los certificados y las claves privadas.

La solución debería estar disponible en una actualización de seguridad en algún momento de septiembre de 2015. Honestamente, estamos bastante sorprendidos de ser los únicos que realmente utilizan criptografía de curva elíptica en Windows ya que el nuestro parece ser el informe original.

    
respondido por el DeepSpace101 22.09.2015 - 23:29
fuente
0

No tengo la reputación de agregar un comentario ...

..pero, ¿puede enumerar a qué versiones de .NET está apuntando? ¿Obtiene el mismo resultado en Windows 8.1 al apuntar (y forzar en el archivo de configuración de la aplicación) .NET Framework 4.6?

Las diferentes versiones de Windows vinieron con diferentes versiones de .NET: enlace

También aprendí recientemente que una máquina con .NET 4 solo intentará ejecutar una aplicación orientada a .NET 4.5+

  

Si la versión de .NET Framework en la que se construyó la aplicación no está presente y un archivo de configuración no especifica una versión en un elemento, la aplicación intenta ejecutarse en la versión más reciente de .NET Framework que está presente en la computadora del usuario.

enlace

    
respondido por el Matthew1471 02.08.2015 - 16:56
fuente
0

Sólo quiero añadir algunos detalles; También me he topado con estos cambios de bloqueo en el subsistema CNG.

En la siguiente lista, hay dos archivos; una que describe algunos escenarios que funcionan en Win7 / Win8.1 pero no en Win10, y otra que describe algunas soluciones en Win10, pero no cómo adquirir un contexto criptográfico y obtener la clave privada CNG subyacente de un certificado X.509: /

enlace

La última actualización no oficial de Microsoft es que esto se tratará el próximo martes de parches (si he contado correctamente, 13 de octubre).

    
respondido por el larsw 08.10.2015 - 08:59
fuente

Lea otras preguntas en las etiquetas