Project

General

Profile

IKEv1 Cipher Suites » History » Version 30

Andreas Steffen, 20.11.2018 10:15

1 1 Andreas Steffen
{{>toc}}
2 1 Andreas Steffen
3 27 Andreas Steffen
h1. IKEv1 Cipher Suites
4 27 Andreas Steffen
5 18 Tobias Brunner
The keywords listed below can be used with the _ike_ and _esp_ directives in [[ipsec.conf]] or the _proposals_ settings in [[swanctl.conf]] to define cipher suites.
6 1 Andreas Steffen
7 1 Andreas Steffen
IANA provides lists of algorithm identifiers for "IKEv1":http://www.iana.org/assignments/ipsec-registry/ipsec-registry.xhtml and "IPsec":https://www.iana.org/assignments/isakmp-registry.
8 1 Andreas Steffen
9 16 Tobias Brunner
h2. Encryption Algorithms
10 1 Andreas Steffen
11 28 Andreas Steffen
|_<. Keyword                     |_<. Description                       |_.IANA |_.IKE  |_.ESP|_. Built-in Plugins|_. Deprecated|
12 20 Noel Kuntze
|*null*                          |Null encryption                       |=.11   |       |=.k  |||
13 20 Noel Kuntze
|*aes128* or *aes*               |128 bit AES-CBC                       |/3=.7  |x o g a|=.k  |aes||
14 20 Noel Kuntze
|*aes192*                        |192 bit AES-CBC                               |x o g a|=.k  |aes||
15 20 Noel Kuntze
|*aes256*                        |256 bit AES-CBC                               |x o g a|=.k  |aes||
16 20 Noel Kuntze
|*aes128ctr*                     |128 bit AES-COUNTER                   |/3=.13 |       |=.k  |||
17 20 Noel Kuntze
|*aes192ctr*                     |192 bit AES-COUNTER                           |       |=.k  |||
18 20 Noel Kuntze
|*aes256ctr*                     |256 bit AES-COUNTER                           |       |=.k  |||
19 20 Noel Kuntze
|*aes128ccm8*  or *aes128ccm64*  |128 bit AES-CCM with  64 bit ICV      |/3=.14 |       |=.k  |||
20 20 Noel Kuntze
|*aes192ccm8*  or *aes192ccm64*  |192 bit AES-CCM with  64 bit ICV              |       |=.k  |||
21 20 Noel Kuntze
|*aes256ccm8*  or *aes256ccm64*  |256 bit AES-CCM with  64 bit ICV              |       |=.k  |||
22 20 Noel Kuntze
|*aes128ccm12* or *aes128ccm96*  |128 bit AES-CCM with  96 bit ICV      |/3=.15 |       |=.k  |||
23 20 Noel Kuntze
|*aes192ccm12* or *aes192ccm96*  |192 bit AES-CCM with  96 bit ICV              |       |=.k  |||
24 20 Noel Kuntze
|*aes256ccm12* or *aes256ccm96*  |256 bit AES-CCM with  96 bit ICV              |       |=.k  |||
25 20 Noel Kuntze
|*aes128ccm16* or *aes128ccm128* |128 bit AES-CCM with 128 bit ICV      |/3=.16 |       |=.k  |||
26 20 Noel Kuntze
|*aes192ccm16* or *aes192ccm128* |192 bit AES-CCM with 128 bit ICV              |       |=.k  |||
27 20 Noel Kuntze
|*aes256ccm16* or *aes256ccm128* |256 bit AES-CCM with 128 bit ICV              |       |=.k  |||
28 20 Noel Kuntze
|*aes128gcm8*  or *aes128gcm64*  |128 bit AES-GCM with  64 bit ICV      |/3=.18 |       |=.k  |||
29 20 Noel Kuntze
|*aes192gcm8*  or *aes192gcm64*  |192 bit AES-GCM with  64 bit ICV              |       |=.k  |||
30 20 Noel Kuntze
|*aes256gcm8*  or *aes256gcm64*  |256 bit AES-GCM with  64 bit ICV              |       |=.k  |||
31 20 Noel Kuntze
|*aes128gcm12* or *aes128gcm96*  |128 bit AES-GCM with  96 bit ICV      |/3=.19 |       |=.k  |||
32 20 Noel Kuntze
|*aes192gcm12* or *aes192gcm96*  |192 bit AES-GCM with  96 bit ICV              |       |=.k  |||
33 20 Noel Kuntze
|*aes256gcm12* or *aes256gcm96*  |256 bit AES-GCM with  96 bit ICV              |       |=.k  |||
34 20 Noel Kuntze
|*aes128gcm16* or *aes128gcm128* |128 bit AES-GCM with 128 bit ICV      |/3=.20 |       |=.k  |||
35 20 Noel Kuntze
|*aes192gcm16* or *aes192gcm128* |192 bit AES-GCM with 128 bit ICV              |       |=.k  |||
36 20 Noel Kuntze
|*aes256gcm16* or *aes256gcm128* |256 bit AES-GCM with 128 bit ICV              |       |=.k  |||
37 20 Noel Kuntze
|*aes128gmac*                    |Null encryption with 128 bit AES-GMAC |/3=.23 |       |=.k  |||
38 20 Noel Kuntze
|*aes192gmac*                    |Null encryption with 192 bit AES-GMAC         |       |=.k  |||
39 20 Noel Kuntze
|*aes256gmac*                    |Null encryption with 256 bit AES-GMAC         |       |=.k  |||
40 22 Noel Kuntze
|*3des*                          |168 bit 3DES-EDE-CBC                  |=.5    |x o g a|=.k  |des|=.s|
41 22 Noel Kuntze
|*blowfish128* or *blowfish*     |128 bit Blowfish-CBC                  |/3=.3  |x o g a|=.k  |blowfish|=.s|
42 22 Noel Kuntze
|*blowfish192*                   |192 bit Blowfish-CBC                          |x o a  |=.k  |blowfish|=.s|
43 22 Noel Kuntze
|*blowfish256*                   |256 bit Blowfish-CBC                          |x o a  |=.k  |blowfish|=.s|
44 20 Noel Kuntze
|*camellia128* or *camellia*     |128 bit Camellia-CBC                  |/3=.8  |       |=.k  |||
45 20 Noel Kuntze
|*camellia192*                   |192 bit Camellia-CBC                          |       |=.k  |||
46 20 Noel Kuntze
|*camellia256*                   |256 bit Camellia-CBC                          |       |=.k  |||
47 20 Noel Kuntze
|*serpent128* or *serpent*       |128 bit Serpent-CBC                   |/3=.252|>.g a  |=.k  |||
48 20 Noel Kuntze
|*serpent192*                    |192 bit Serpent-CBC                           |>.g a  |=.k  |||
49 20 Noel Kuntze
|*serpent256*                    |256 bit Serpent-CBC                           |>.g a  |=.k  |||
50 20 Noel Kuntze
|*twofish128* or *twofish*       |128 bit Twofish-CBC                   |/3=.253|>.g a  |=.k  |||
51 20 Noel Kuntze
|*twofish192*                    |192 bit Twofish-CBC                           |>.  a  |=.k  |||
52 20 Noel Kuntze
|*twofish256*                    |256 bit Twofish-CBC                           |>.g a  |=.k  |||
53 20 Noel Kuntze
|\7(level2). IKE support|
54 20 Noel Kuntze
|\7(level3).*x* default built-in crypto plugin(s) (see separate column)
55 16 Tobias Brunner
*o* OpenSSL crypto library (_openssl_ plugin)
56 16 Tobias Brunner
*g* Gcrypt crypto library (_gcrypt_ plugin)
57 16 Tobias Brunner
*a* AF_ALG userland crypto API for Linux 2.6.38 kernel or newer (_af-alg_ plugin)|
58 20 Noel Kuntze
|\7(level2). ESP support|
59 20 Noel Kuntze
|\7(level3).*k* Linux 2.6+ kernel|
60 30 Andreas Steffen
|\7(level2). Deprecated|
61 1 Andreas Steffen
|\7(level3).*s* broken by "SWEET32":https://sweet32.info/|
62 12 Tobias Brunner
63 16 Tobias Brunner
h2. Integrity Algorithms
64 12 Tobias Brunner
65 16 Tobias Brunner
|_<. Keyword                  |_<. Description   |_.IANA|_=.IKE   |_=.ESP/AH|_.Length |_.Built-in Plugins|
66 16 Tobias Brunner
|*md5*                        |MD5 HMAC          |=.1   |=. x o a |=.k      |>. 96 bit|md5, hmac |
67 16 Tobias Brunner
|*sha1* or *sha*              |SHA1 HMAC         |=.2   |=. x o a |=.k      |>. 96 bit|sha1, hmac|
68 16 Tobias Brunner
|*sha256* or *sha2_256*       |SHA2_256_128 HMAC |=.5   |=. x o a |=.n      |>.128 bit|sha2, hmac|
69 16 Tobias Brunner
|*sha384* or *sha2_384*       |SHA2_384_192 HMAC |=.6   |=. x o a |=.k      |>.192 bit|sha2, hmac|
70 16 Tobias Brunner
|*sha512* or *sha2_512*       |SHA2_512_256 HMAC |=.7   |=. x o a |=.k      |>.256 bit|sha2, hmac|
71 16 Tobias Brunner
|*sha256_96* or *sha2_256_96* |SHA2_256_96  HMAC |=.p   |=.       |=.n      |>. 96 bit|          |
72 16 Tobias Brunner
|*aesxcbc*                    |AES XCBC          |=.9   |=.       |=.k      |>. 96 bit|          |
73 16 Tobias Brunner
|*aes128gmac*                 |128-bit AES-GMAC  |=.11  |=.       |=.q      |>.128 bit|          |
74 16 Tobias Brunner
|*aes192gmac*                 |192-bit AES-GMAC  |=.12  |=.       |=.q      |>.128 bit|          |
75 16 Tobias Brunner
|*aes256gmac*                 |256-bit AES-GMAC  |=.13  |=.       |=.q      |>.128 bit|          |
76 16 Tobias Brunner
|\7(level2). IKE support|
77 16 Tobias Brunner
|\7(level3). *x* default built-in crypto plugin(s) (see separate column)
78 16 Tobias Brunner
*o* OpenSSL crypto library (_openssl_ plugin)
79 16 Tobias Brunner
*a* AF_ALG userland crypto API for Linux 2.6.38 kernel or newer (_af-alg_ plugin)
80 16 Tobias Brunner
It's also possible to use the hash implementations provided by the _gcrypt_ or _openssl_ plugin together with the _hmac_ plugin.|
81 16 Tobias Brunner
|\7(level2). ESP/AH support|
82 16 Tobias Brunner
|\7(level3). *k* Linux 2.6+ kernel
83 16 Tobias Brunner
*q* for AH, AES-GMAC is negotiated as encryption algorithm for ESP
84 16 Tobias Brunner
*n* before version 2.6.33 the Linux kernel incorrectly used 96 bit truncation for SHA-256, _sha256_96_ is only supported for compatibility with such kernels
85 16 Tobias Brunner
*p* strongSwan uses the value 252 from the IANA private use range|
86 1 Andreas Steffen
87 8 Andreas Steffen
h2. Diffie Hellman Groups
88 1 Andreas Steffen
89 29 Andreas Steffen
|_.Keyword      |_.DH Group|_.Modulus   |_.Subgroup |_.IKE|_.Deprecated|
90 29 Andreas Steffen
|\6(level2). Regular Groups                                            |
91 29 Andreas Steffen
|*modp768*      |=.  1     |>.768 bits  |           |m o g|=.l         |
92 29 Andreas Steffen
|*modp1024*     |=.  2     |>.1024 bits |           |m o g|=.l         |
93 29 Andreas Steffen
|*modp1536*     |=.  5     |>.1536 bits |           |m o g|=.l         |
94 29 Andreas Steffen
|*modp2048*     |=. 14     |>.2048 bits |           |m o g|            |
95 29 Andreas Steffen
|*modp3072*     |=. 15     |>.3072 bits |           |m o g|            |
96 29 Andreas Steffen
|*modp4096*     |=. 16     |>.4096 bits |           |m o g|            |
97 29 Andreas Steffen
|*modp6144*     |=. 17     |>.6144 bits |           |m o g|            |
98 29 Andreas Steffen
|*modp8192*     |=. 18     |>.8192 bits |           |m o g|            |
99 29 Andreas Steffen
|\6(level2). Modulo Prime Groups with Prime Order Subgroup             |
100 29 Andreas Steffen
|*modp1024s160* |=. 22     |>.1024 bits |>.160 bits |m o g|=.x         |
101 29 Andreas Steffen
|*modp2048s224* |=. 23     |>.2048 bits |>.224 bits |m o g|=.x         |
102 29 Andreas Steffen
|*modp2048s256* |=. 24     |>.2048 bits |>.256 bits |m o g|=.x         |
103 29 Andreas Steffen
|\6(level2). NIST Elliptic Curve Groups                                |
104 29 Andreas Steffen
|*ecp192*       |=. 25     |>.192 bits  |           |=.o  |=.w         |
105 29 Andreas Steffen
|*ecp224*       |=. 26     |>.224 bits  |           |=.o  |            |
106 29 Andreas Steffen
|*ecp256*       |=. 19     |>.256 bits  |           |=.o  |            |
107 29 Andreas Steffen
|*ecp384*       |=. 20     |>.384 bits  |           |=.o  |            |
108 29 Andreas Steffen
|*ecp521*       |=. 21     |>.521 bits  |           |=.o  |            |
109 29 Andreas Steffen
|\6(level2). Brainpool Elliptic Curve Groups                           |
110 29 Andreas Steffen
|*ecp224bp*     |=. 27     |>.224 bits  |           |=.o  |            |
111 29 Andreas Steffen
|*ecp256bp*     |=. 28     |>.256 bits  |           |=.o  |            |
112 29 Andreas Steffen
|*ecp384bp*     |=. 29     |>.384 bits  |           |=.o  |            |
113 29 Andreas Steffen
|*ecp512bp*     |=. 30     |>.512 bits  |           |=.o  |            |
114 1 Andreas Steffen
|\6(level2). Elliptic Curve 25519 - _only standardized for IKEv2 but also supported for IKEv1 by strongSwan_ |
115 26 Tobias Brunner
|*curve25519* or *x25519* |=. 31     |>.256 bits  |           |=.c  |                       |
116 25 Andreas Steffen
|\6(level2). IKE support                                                          |
117 24 Andreas Steffen
|\6(level3). *c* _curve25519_ plugin
118 24 Andreas Steffen
*m* GMP multi-precision library (_gmp_ plugin)
119 24 Andreas Steffen
*o* OpenSSL crypto library (_openssl_ plugin)
120 19 Noel Kuntze
*g* Gcrypt crypto library (_gcrypt_ plugin)|
121 29 Andreas Steffen
|\6(level2). Deprecated|
122 16 Tobias Brunner
|\6(level3). *x* questionable source of the primes. Potentially trapdoored (https://eprint.iacr.org/2016/961).
123 29 Andreas Steffen
*l* broken by "LogJam":https://weakdh.org
124 29 Andreas Steffen
*w* less than 112 bit security strength|
125 15 Andreas Steffen
126 15 Andreas Steffen
h3. Post-Quantum Key Exchange using NTRU Encryption
127 15 Andreas Steffen
128 15 Andreas Steffen
|Keyword    |DH Group |Strength   |IKE |
129 15 Andreas Steffen
|*ntru112*  |=. 1030  |>.112 bits |=.n |
130 15 Andreas Steffen
|*ntru128*  |=. 1031  |>.128 bits |=.n |
131 15 Andreas Steffen
|*ntru192*  |=. 1032  |>.192 bits |=.n |
132 15 Andreas Steffen
|*ntru256*  |=. 1033  |>.256 bits |=.n |
133 16 Tobias Brunner
|\4(level2). IKE support|
134 16 Tobias Brunner
|\4(level3). *n* _ntru_ plugin (includes "ntru-crypto":https://github.com/NTRUOpenSourceProject/ntru-crypto library)|
135 15 Andreas Steffen
136 17 Andreas Steffen
h3. Post-Quantum Key Exchange using NewHope
137 17 Andreas Steffen
138 17 Andreas Steffen
|_.Keyword  |_.DH Group|_.Strength |_.IKE|
139 17 Andreas Steffen
|*newhope128*  |=. 1040   |>.128 bits |=.n  |
140 17 Andreas Steffen
|\4(level2). IKE support|
141 17 Andreas Steffen
|\4(level3). *n* _newhope_ plugin|
142 17 Andreas Steffen
143 17 Andreas Steffen
Since the Diffie-Hellman Group Transform IDs 1030..1033 and 1040 selected by the strongSwan project to designate the four NTRU key exchange strengths and the NewHope key exchange algorithm, respectively, were taken from the private-use range, the strongSwan vendor ID *must* be sent by the charon daemon. This can be enabled by the following statement in /etc/strongswan.conf:<pre>
144 15 Andreas Steffen
charon {
145 15 Andreas Steffen
  send_vendor_id = yes
146 1 Andreas Steffen
}
147 19 Noel Kuntze
</pre>