Valor de curva con nombre 0xffff en el mensaje 'Servidor Hola'

2

Estoy usando el proveedor RSA BSAFE Crypto-J 6.2 JCE en Java como servidor SSL / TLS (en el modo compatible con FIPS 140 para SunJSSE).

Parece que al menos Chrome y Firefox no pueden establecer una conexión si se usa TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ( 0xc02b ).

El error en Firefox al conectarse al servidor es: " sec_error_unsupported_elliptic_curve "

Con el mensaje de error como sugerencia, miré el apretón de manos (usando Wireshark). En el "Cliente Hola" veo 3 curvas:

Elliptic curve: secp256r1 (0x0017)
Elliptic curve: secp384r1 (0x0018)
Elliptic curve: secp521r1 (0x0019)

En el mensaje correspondiente "Hola del servidor" veo el valor de la curva con el nombre 0xffff

Named Curve: Unknown (0xffff)

Como resultado, el navegador finaliza la conexión con el mensaje de error mencionado anteriormente.

Si utilizo Java estándar en el lado del servidor (no hay un proveedor BSAFE Crypto-J), la curva nombrada en el "Hola del servidor" es:

Named Curve: secp256r1 (0x0017)

... y el apretón de manos termina con éxito.

  1. La pregunta ahora es, ¿cuál es el significado si 0xffff ? ¿Significa que el servidor no comprende el conjunto de curvas sugerido por el cliente? Busqué en la sección 5.1.1 de RFC4492 pero no pude encontrar nada sobre el valor de 0xffff
  2. Si alguien tiene experiencia con RSA BSAFE Crypto-J y Java ejecutándose en modo FIPS. Cualquiera que haya encontrado ese problema y haya encontrado una solución.
pregunta Cris 19.08.2015 - 15:52
fuente

3 respuestas

1
  

La pregunta ahora es, ¿cuál es el significado si 0xffff? ¿Significa que el servidor no comprende el conjunto de curvas sugerido por el cliente?

No creo que oficialmente signifique esto. Pero tengo la sensación de que la implementación todavía lo está haciendo con esa intención.

Sin asignar en la IANA

El identificador 0xFFFF (65535 decimal) es marcado como Unassigned en el registro oficial de la IANA .

Es decir, esto también significa que NO es Reserved ni está marcado como especial de ninguna otra manera.

Re. definición de enumeración

El TLS 1.2 RFC contiene una definición de la sintaxis para enumeraciones:

RFC 5246 - El Protocolo de Seguridad de la capa de transporte (TLS), Versión 1.2 , sección 4.5 Enumerados :

One may optionally specify a value without its associated tag to
force the width definition without defining a superfluous element.

In the following example, Taste will consume two bytes in the data
stream but can only assume the values 1, 2, or 4.

   enum { sweet(1), sour(2), bitter(4), (32000) } Taste;

Estoy leyendo RFC4492 Sección 5.1.1 para que signifique lo mismo.

    
respondido por el StackzOfZtuff 20.08.2015 - 09:07
fuente
2

Mire RFC4492 Sección 5.1.1 que menciona en su publicación, vemos el siguiente estructura:

enum {
        sect163k1 (1), sect163r1 (2), sect163r2 (3),
        sect193r1 (4), sect193r2 (5), sect233k1 (6),
        sect233r1 (7), sect239k1 (8), sect283k1 (9),
        sect283r1 (10), sect409k1 (11), sect409r1 (12),
        sect571k1 (13), sect571r1 (14), secp160k1 (15),
        secp160r1 (16), secp160r2 (17), secp192k1 (18),
        secp192r1 (19), secp224k1 (20), secp224r1 (21),
        secp256k1 (22), secp256r1 (23), secp384r1 (24),
        secp521r1 (25),
        reserved (0xFE00..0xFEFF),
        arbitrary_explicit_prime_curves(0xFF01),
        arbitrary_explicit_char2_curves(0xFF02),
        (0xFFFF)
    } NamedCurve;

Me parece que 0xFFFF es un valor reservado que se envía (¿tal vez por error?) para indicar que el servidor no es compatible con ECC, o para indicar el final de la matriz de curvas.

Es posible que el proveedor de BSAFE Crypto-J no esté configurado correctamente.

    
respondido por el RoraΖ 19.08.2015 - 19:37
fuente
-1

Tuve exactamente el mismo problema, todo funcionaba con Java 7 y cuando actualicé el JRE a Java 8, comencé a recibir este error sec_error_unsupported_elliptic_curve .

Solucioné el problema configurando el parámetro JVM com.sun.net.ssl.enableECC en false

-Dcom.sun.net.ssl.enableECC=false

    
respondido por el Mircea Stan 07.12.2015 - 09:30
fuente

Lea otras preguntas en las etiquetas