¿Dónde puedo encontrar una lista canónica de nombres de curvas elípticas y sus alias?

6

Recientemente tuve un problema donde creé un certificado de cliente EC que usaba la curva sect571k1 y obtuve algunos errores extraños al intentar usarlo como certificado de cliente a través de Mozilla Firefox. Resulta que Firefox soporta secp521r1 pero no sect571k1 .

Creé el certificado usando keytool de Java, que reporta la curva como 570-bit EC key , mientras que openssl x509 me dice que es tanto ASN1 OID: sect571k1 como NIST CURVE: K-571 . Un poco de googlear me lleva a RFC 4492 que enumera varias claves y sus diversos alias, pero no enumere muchas de las curvas que se discuten popularmente, como Curve25519 de djb y cualquiera de las brainpool curvas. (Parece que keytool de Java no le permite elegir la curva exacta, solo el tamaño de bits de la clave, por lo que realmente no tenía una opción).

Mi LibreSSL admite ~ 90 curvas diferentes, mientras que mi Java admite ~ 50 curvas diferentes. Me gustaría asegurarme de que cualquier cosa que haga con cualquier herramienta "más capaz" sea compatible con los navegadores web, y sería bueno saber cuáles son los equivalentes para todos estos nombres.

    
pregunta Christopher Schultz 14.05.2018 - 18:07
fuente

1 respuesta

1

Para TLS, por supuesto, hay lista oficial de curvas, pero no conozco una sola lista completa de nombres de curvas elípticas. Pero cuando observa diferentes implementaciones de TLS, notará rápidamente que solo hay un número limitado de curvas elípticas que son compatibles con todas las implementaciones principales.

Para una máxima interoperabilidad, debe usar secp256r1 (NIST P-256) o secp384r1 (NIST P-384), ya que son utilizadas por la mayoría de las CA para sus propios certificados, son compatibles con todas las implementaciones principales de TLS y también se incluyen en TLS 1.3 (que solo contiene un total de cinco curvas (secp256r1, secp384r1, secp521r1, curve25519 (x25519) y curve448 (x448)).

Curve25519 probablemente desempeñará un papel importante en el futuro, ya que tiene muchas propiedades deseables (muy rápido, fácil de implementar, evita la pérdida de información a través de canales laterales), pero solo recientemente se ha incluido en muchos estándares importantes.

    
respondido por el dhe25519 27.06.2018 - 17:56
fuente

Lea otras preguntas en las etiquetas