IKEv1 Cipher Suites » History » Version 19
Noel Kuntze, 25.10.2016 17:30
1 | 1 | Andreas Steffen | h1. IKEv1 Cipher Suites |
---|---|---|---|
2 | 1 | Andreas Steffen | |
3 | 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. |
4 | 10 | Tobias Brunner | |
5 | 18 | Tobias Brunner | 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. |
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 | 8 | Andreas Steffen | h2. Diffie Hellman Groups |
87 | 1 | Andreas Steffen | |
88 | 19 | Noel Kuntze | |_.Keyword |_.DH Group|_.Modulus |_.Subgroup |_.IKE|_.Questionable Security| |
89 | 19 | Noel Kuntze | |\6(level2). Regular Groups | |
90 | 19 | Noel Kuntze | |*modp768* |=. 1 |>.768 bits | |m o g| | |
91 | 19 | Noel Kuntze | |*modp1024* |=. 2 |>.1024 bits | |m o g| | |
92 | 19 | Noel Kuntze | |*modp1536* |=. 5 |>.1536 bits | |m o g| | |
93 | 19 | Noel Kuntze | |*modp2048* |=. 14 |>.2048 bits | |m o g| | |
94 | 19 | Noel Kuntze | |*modp3072* |=. 15 |>.3072 bits | |m o g| | |
95 | 19 | Noel Kuntze | |*modp4096* |=. 16 |>.4096 bits | |m o g| | |
96 | 19 | Noel Kuntze | |*modp6144* |=. 17 |>.6144 bits | |m o g| | |
97 | 19 | Noel Kuntze | |*modp8192* |=. 18 |>.8192 bits | |m o g| | |
98 | 19 | Noel Kuntze | |\6(level2). Modulo Prime Groups with Prime Order Subgroup | |
99 | 19 | Noel Kuntze | |*modp1024s160* |=. 22 |>.1024 bits |>.160 bits |m o g|x | |
100 | 19 | Noel Kuntze | |*modp2048s224* |=. 23 |>.2048 bits |>.224 bits |m o g| | |
101 | 19 | Noel Kuntze | |*modp2048s256* |=. 24 |>.2048 bits |>.256 bits |m o g|x | |
102 | 19 | Noel Kuntze | |\6(level2). NIST Elliptic Curve Groups | |
103 | 19 | Noel Kuntze | |*ecp192* |=. 25 |>.192 bits | |=.o | | |
104 | 19 | Noel Kuntze | |*ecp224* |=. 26 |>.224 bits | |=.o | | |
105 | 19 | Noel Kuntze | |*ecp256* |=. 19 |>.256 bits | |=.o | | |
106 | 19 | Noel Kuntze | |*ecp384* |=. 20 |>.384 bits | |=.o | | |
107 | 19 | Noel Kuntze | |*ecp521* |=. 21 |>.521 bits | |=.o | | |
108 | 19 | Noel Kuntze | |\6(level2). Brainpool Elliptic Curve Groups | |
109 | 19 | Noel Kuntze | |*ecp224bp* |=. 27 |>.224 bits | |=.o | | |
110 | 19 | Noel Kuntze | |*ecp256bp* |=. 28 |>.256 bits | |=.o | | |
111 | 19 | Noel Kuntze | |*ecp384bp* |=. 29 |>.384 bits | |=.o | | |
112 | 19 | Noel Kuntze | |*ecp512bp* |=. 30 |>.512 bits | |=.o | | |
113 | 19 | Noel Kuntze | |\6(level2). IKE support | |
114 | 19 | Noel Kuntze | |\6(level3). *m* GMP multi-precision library (_gmp_ plugin) |
115 | 16 | Tobias Brunner | *o* OpenSSL crypto library (_openssl_ plugin) |
116 | 16 | Tobias Brunner | *g* Gcrypt crypto library (_gcrypt_ plugin)| |
117 | 19 | Noel Kuntze | |\6(level2). Questionable security| |
118 | 19 | Noel Kuntze | |\6(level3). *x* questionable source of the primes. Potentially trapdoored (https://eprint.iacr.org/2016/961).| |
119 | 15 | Andreas Steffen | |
120 | 15 | Andreas Steffen | h3. Post-Quantum Key Exchange using NTRU Encryption |
121 | 15 | Andreas Steffen | |
122 | 15 | Andreas Steffen | |Keyword |DH Group |Strength |IKE | |
123 | 15 | Andreas Steffen | |*ntru112* |=. 1030 |>.112 bits |=.n | |
124 | 15 | Andreas Steffen | |*ntru128* |=. 1031 |>.128 bits |=.n | |
125 | 15 | Andreas Steffen | |*ntru192* |=. 1032 |>.192 bits |=.n | |
126 | 15 | Andreas Steffen | |*ntru256* |=. 1033 |>.256 bits |=.n | |
127 | 16 | Tobias Brunner | |\4(level2). IKE support| |
128 | 16 | Tobias Brunner | |\4(level3). *n* _ntru_ plugin (includes "ntru-crypto":https://github.com/NTRUOpenSourceProject/ntru-crypto library)| |
129 | 15 | Andreas Steffen | |
130 | 17 | Andreas Steffen | h3. Post-Quantum Key Exchange using NewHope |
131 | 17 | Andreas Steffen | |
132 | 17 | Andreas Steffen | |_.Keyword |_.DH Group|_.Strength |_.IKE| |
133 | 17 | Andreas Steffen | |*newhope128* |=. 1040 |>.128 bits |=.n | |
134 | 17 | Andreas Steffen | |\4(level2). IKE support| |
135 | 17 | Andreas Steffen | |\4(level3). *n* _newhope_ plugin| |
136 | 17 | Andreas Steffen | |
137 | 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> |
138 | 15 | Andreas Steffen | charon { |
139 | 15 | Andreas Steffen | send_vendor_id = yes |
140 | 1 | Andreas Steffen | } |
141 | 19 | Noel Kuntze | </pre> |