Project

General

Profile

IKEv1 Cipher Suites » History » Version 16

Tobias Brunner, 11.07.2014 11:58

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 15 Andreas Steffen
Since the Diffie-Hellman Group Transform IDs 1030..1033 selected by the strongSwan project to designate the four NTRU key exchange strengths 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:
130 15 Andreas Steffen
<pre>
131 15 Andreas Steffen
charon {
132 15 Andreas Steffen
  send_vendor_id = yes
133 1 Andreas Steffen
}
134 1 Andreas Steffen
</pre>