From 1d00efa72c5340d72c1663245bcc941a5e1b942a Mon Sep 17 00:00:00 2001 From: Logan007 Date: Sat, 19 Sep 2020 02:37:59 +0545 Subject: [PATCH] adopted aes key-length trigger values --- doc/Crypto.md | 2 ++ src/transform_aes.c | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/Crypto.md b/doc/Crypto.md index 4741578..3288a05 100644 --- a/doc/Crypto.md +++ b/doc/Crypto.md @@ -40,6 +40,8 @@ AES also prepends a random value to the plaintext. Its size is adjustable by cha Apart from n2n's plain C implementation, Intel's AES-NI is supported – again, please have a look at the [Building document](./Building.md). In case of openSSL support its `evp_*` interface gets used which also offers hardware acceleration where available (SSE, AES-NI, …). It however is slower than the following stream ciphers because the CBC mode cannot compete with the optimized stream ciphers. +This cipher's different key-sizes are triggered by the length of the user-provided key: 22 characters or less make n2n use AES-128, between 23 and 32 characters lead to AES-192, and 33 or more characters trigger AES-256. + ### ChaCha20 ChaCha20 was the first stream cipher supported by n2n. diff --git a/src/transform_aes.c b/src/transform_aes.c index d04b060..965dde2 100644 --- a/src/transform_aes.c +++ b/src/transform_aes.c @@ -187,10 +187,11 @@ static int setup_aes_key(transop_aes_t *priv, const uint8_t *password, ssize_t p pearson_hash_256(key_mat, password, password_len); // the length-dependant scheme for key setup was discussed on github: - // https://github.com/ntop/n2n/issues/101 - if(password_len >= 65) { + // https://github.com/ntop/n2n/issues/101 -- as no iv encryption required + // anymore, the key-size trigger values were roughly halved + if(password_len >= 33) { key_size = AES256_KEY_BYTES; // 256 bit - } else if(password_len >= 44) { + } else if(password_len >= 23) { key_size = AES192_KEY_BYTES; // 192 bit } else { key_size = AES128_KEY_BYTES; // 128 bit