On 2019/03/30 13:43, Theo de Raadt wrote:
> I think we should switch, waiting doesn't help.
> 
> Reyk Floeter <[email protected]> wrote:
> 
> > I like the idea of switching it to the proper ID.
> > 
> > Reyk
> > 
> > > Am 30.03.2019 um 20:31 schrieb Stuart Henderson <[email protected]>:
> > > 
> > > curve25519 had a proper ID (31) assigned in 2016 but we still have
> > > the draft private-use ID in iked. Any thoughts on whether we can just
> > > cut across to the proper ID, or whether that will be too painful?
> > > Are many people using this already?
> > > 
> > 
> 

Here's the cut-across diff. OK?

To transition, before updating, configure the responder to allow both
curve25519 and another PFS group e.g.

...
  ikesa enc aes-256 prf hmac-sha2-256 auth hmac-sha2-256 group curve25519 \
  ikesa enc aes-256 prf hmac-sha2-256 auth hmac-sha2-256 group brainpool512 \
...

Then switch the initiators to the other group, then upgrade and switch
back as wanted.

This doesn't affect the default iked configuration, and is unlikely to
affect non-OpenBSD devices as curve25519 with the draft ID does not seem
widely used elsewhere, so shouldn't trouble too many people.

Index: dh.c
===================================================================
RCS file: /cvs/src/sbin/iked/dh.c,v
retrieving revision 1.21
diff -u -p -r1.21 dh.c
--- dh.c        27 Oct 2017 14:26:35 -0000      1.21
+++ dh.c        1 Apr 2019 19:06:18 -0000
@@ -244,9 +244,7 @@ const struct group_id ike_groups[] = {
        { GROUP_ECP, 28, 256, NULL, NULL, NID_brainpoolP256r1 },
        { GROUP_ECP, 29, 384, NULL, NULL, NID_brainpoolP384r1 },
        { GROUP_ECP, 30, 512, NULL, NULL, NID_brainpoolP512r1 },
-
-       /* "Private use" extensions */
-       { GROUP_CURVE25519, 1034, CURVE25519_SIZE * 8 }
+       { GROUP_CURVE25519, 31, CURVE25519_SIZE * 8 }
 };
 
 void
Index: iked.conf.5
===================================================================
RCS file: /cvs/src/sbin/iked/iked.conf.5,v
retrieving revision 1.53
diff -u -p -r1.53 iked.conf.5
--- iked.conf.5 31 Jan 2018 13:25:55 -0000      1.53
+++ iked.conf.5 1 Apr 2019 19:06:18 -0000
@@ -883,7 +883,7 @@ The currently supported group types are 
 MODP (exponentiation groups modulo a prime),
 EC2N (elliptic curve groups over GF[2^N]),
 ECP (elliptic curve groups modulo a prime),
-or the non-standard Curve25519.
+or Curve25519.
 Please note that the EC2N groups are considered as insecure and only
 provided for backwards compatibility.
 .Sh EXAMPLES
Index: ikev2.h
===================================================================
RCS file: /cvs/src/sbin/iked/ikev2.h,v
retrieving revision 1.28
diff -u -p -r1.28 ikev2.h
--- ikev2.h     27 Feb 2019 06:33:57 -0000      1.28
+++ ikev2.h     1 Apr 2019 19:06:18 -0000
@@ -231,16 +231,16 @@ extern struct iked_constmap ikev2_xforma
 #define IKEV2_XFORMDH_MODP_4096                16      /* DH Group 16 */
 #define IKEV2_XFORMDH_MODP_6144                17      /* DH Group 17 */
 #define IKEV2_XFORMDH_MODP_8192                18      /* DH Group 18 */
-#define IKEV2_XFORMDH_ECP_256          19      /* DH Group 19 */
-#define IKEV2_XFORMDH_ECP_384          20      /* DH Group 20 */
-#define IKEV2_XFORMDH_ECP_521          21      /* DH Group 21 */
-#define IKEV2_XFORMDH_ECP_192          25      /* DH Group 25 */
-#define IKEV2_XFORMDH_ECP_224          26      /* DH Group 26 */
-#define IKEV2_XFORMDH_BRAINPOOL_P224R1 27      /* DH Group 27 */
-#define IKEV2_XFORMDH_BRAINPOOL_P256R1 28      /* DH Group 28 */
-#define IKEV2_XFORMDH_BRAINPOOL_P384R1 29      /* DH Group 29 */
-#define IKEV2_XFORMDH_BRAINPOOL_P512R1 30      /* DH Group 30 */
-#define IKEV2_XFORMDH_X_CURVE25519     1034    /* 
draft-ietf-ipsecme-safecurves-00 */
+#define IKEV2_XFORMDH_ECP_256          19      /* RFC5114 */
+#define IKEV2_XFORMDH_ECP_384          20      /* RFC5114 */
+#define IKEV2_XFORMDH_ECP_521          21      /* RFC5114 */
+#define IKEV2_XFORMDH_ECP_192          25      /* RFC5114 */
+#define IKEV2_XFORMDH_ECP_224          26      /* RFC5114 */
+#define IKEV2_XFORMDH_BRAINPOOL_P224R1 27      /* RFC6954 */
+#define IKEV2_XFORMDH_BRAINPOOL_P256R1 28      /* RFC6954 */
+#define IKEV2_XFORMDH_BRAINPOOL_P384R1 29      /* RFC6954 */
+#define IKEV2_XFORMDH_BRAINPOOL_P512R1 30      /* RFC6954 */
+#define IKEV2_XFORMDH_CURVE25519       31      /* RFC8031 */
 
 extern struct iked_constmap ikev2_xformdh_map[];
 
Index: parse.y
===================================================================
RCS file: /cvs/src/sbin/iked/parse.y,v
retrieving revision 1.78
diff -u -p -r1.78 parse.y
--- parse.y     13 Feb 2019 22:57:07 -0000      1.78
+++ parse.y     1 Apr 2019 19:06:18 -0000
@@ -253,7 +253,7 @@ const struct ipsec_xf groupxfs[] = {
        { "grp29",              IKEV2_XFORMDH_BRAINPOOL_P384R1 },
        { "brainpool512",       IKEV2_XFORMDH_BRAINPOOL_P512R1 },
        { "grp30",              IKEV2_XFORMDH_BRAINPOOL_P512R1 },
-       { "curve25519",         IKEV2_XFORMDH_X_CURVE25519 },
+       { "curve25519",         IKEV2_XFORMDH_CURVE25519 },
        { NULL }
 };
 

Reply via email to