Project

General

Profile

IKEv1 Cipher Suites » History » Version 17

Andreas Steffen, 12.08.2016 08:26
Add NewHope DH group

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