From dbae7afbbc13c39f167bad9c2d72d5d670c06c83 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Wed, 13 Feb 2019 14:02:28 +0100 Subject: Renommage des fichiers implémentant les modes AE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour qu'ils soient plus proches du nom donné dans la spécification. --- README.md | 4 +- nist/make-package.sh | 3 +- src/add_tweakeysequences/lilliput-ae-i.c | 1 - src/add_tweakeysequences/lilliput-ae-ii.c | 1 - src/add_tweakeysequences/lilliput-i.c | 1 + src/add_tweakeysequences/lilliput-ii.c | 1 + src/add_tweakeyunrolled/lilliput-ae-i.c | 1 - src/add_tweakeyunrolled/lilliput-ae-ii.c | 1 - src/add_tweakeyunrolled/lilliput-i.c | 1 + src/add_tweakeyunrolled/lilliput-ii.c | 1 + src/ref/lilliput-ae-i.c | 212 ------------------------------ src/ref/lilliput-ae-ii.c | 177 ------------------------- src/ref/lilliput-ae.h | 2 +- src/ref/lilliput-i.c | 212 ++++++++++++++++++++++++++++++ src/ref/lilliput-ii.c | 177 +++++++++++++++++++++++++ test/check-implementation.sh | 3 +- test/common.mk | 6 +- test/felics/Makefile | 2 +- traces/traces-ae.patch | 12 +- 19 files changed, 410 insertions(+), 408 deletions(-) delete mode 120000 src/add_tweakeysequences/lilliput-ae-i.c delete mode 120000 src/add_tweakeysequences/lilliput-ae-ii.c create mode 120000 src/add_tweakeysequences/lilliput-i.c create mode 120000 src/add_tweakeysequences/lilliput-ii.c delete mode 120000 src/add_tweakeyunrolled/lilliput-ae-i.c delete mode 120000 src/add_tweakeyunrolled/lilliput-ae-ii.c create mode 120000 src/add_tweakeyunrolled/lilliput-i.c create mode 120000 src/add_tweakeyunrolled/lilliput-ii.c delete mode 100644 src/ref/lilliput-ae-i.c delete mode 100644 src/ref/lilliput-ae-ii.c create mode 100644 src/ref/lilliput-i.c create mode 100644 src/ref/lilliput-ii.c diff --git a/README.md b/README.md index 92e90ef..cd59350 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ Contains two kinds of subfolders: Each implementation folder contains: - `lilliput-ae.h`: main API -- `lilliput-ae-i.c`: implementation of Lilliput-Ⅰ (ΘCB3-based) -- `lilliput-ae-ii.c`: implementation of Lilliput-Ⅱ (SCT-2-based) - `lilliput-ae-utils.h`: helper functions used by both AE schemes +- `lilliput-i.c`: implementation of Lilliput-Ⅰ (ΘCB3-based) +- `lilliput-ii.c`: implementation of Lilliput-Ⅱ (SCT-2-based) - `tweakey.*`: implementation of Lilliput-TBC's tweakey schedule - `cipher.*`: implementation of the tweakable block-cipher Lilliput-TBC diff --git a/nist/make-package.sh b/nist/make-package.sh index dd50f54..30debe3 100755 --- a/nist/make-package.sh +++ b/nist/make-package.sh @@ -46,7 +46,8 @@ add-variant () source_files=( cipher.{c,h} constants.h - lilliput-ae{.h,-utils.h,-${mode}.c} + lilliput-ae{.h,-utils.h} + lilliput-${mode}.c tweakey.{c,h} ) diff --git a/src/add_tweakeysequences/lilliput-ae-i.c b/src/add_tweakeysequences/lilliput-ae-i.c deleted file mode 120000 index 2ed1026..0000000 --- a/src/add_tweakeysequences/lilliput-ae-i.c +++ /dev/null @@ -1 +0,0 @@ -../ref/lilliput-ae-i.c \ No newline at end of file diff --git a/src/add_tweakeysequences/lilliput-ae-ii.c b/src/add_tweakeysequences/lilliput-ae-ii.c deleted file mode 120000 index af141f8..0000000 --- a/src/add_tweakeysequences/lilliput-ae-ii.c +++ /dev/null @@ -1 +0,0 @@ -../ref/lilliput-ae-ii.c \ No newline at end of file diff --git a/src/add_tweakeysequences/lilliput-i.c b/src/add_tweakeysequences/lilliput-i.c new file mode 120000 index 0000000..46688d4 --- /dev/null +++ b/src/add_tweakeysequences/lilliput-i.c @@ -0,0 +1 @@ +../ref/lilliput-i.c \ No newline at end of file diff --git a/src/add_tweakeysequences/lilliput-ii.c b/src/add_tweakeysequences/lilliput-ii.c new file mode 120000 index 0000000..09abf10 --- /dev/null +++ b/src/add_tweakeysequences/lilliput-ii.c @@ -0,0 +1 @@ +../ref/lilliput-ii.c \ No newline at end of file diff --git a/src/add_tweakeyunrolled/lilliput-ae-i.c b/src/add_tweakeyunrolled/lilliput-ae-i.c deleted file mode 120000 index 2ed1026..0000000 --- a/src/add_tweakeyunrolled/lilliput-ae-i.c +++ /dev/null @@ -1 +0,0 @@ -../ref/lilliput-ae-i.c \ No newline at end of file diff --git a/src/add_tweakeyunrolled/lilliput-ae-ii.c b/src/add_tweakeyunrolled/lilliput-ae-ii.c deleted file mode 120000 index af141f8..0000000 --- a/src/add_tweakeyunrolled/lilliput-ae-ii.c +++ /dev/null @@ -1 +0,0 @@ -../ref/lilliput-ae-ii.c \ No newline at end of file diff --git a/src/add_tweakeyunrolled/lilliput-i.c b/src/add_tweakeyunrolled/lilliput-i.c new file mode 120000 index 0000000..46688d4 --- /dev/null +++ b/src/add_tweakeyunrolled/lilliput-i.c @@ -0,0 +1 @@ +../ref/lilliput-i.c \ No newline at end of file diff --git a/src/add_tweakeyunrolled/lilliput-ii.c b/src/add_tweakeyunrolled/lilliput-ii.c new file mode 120000 index 0000000..09abf10 --- /dev/null +++ b/src/add_tweakeyunrolled/lilliput-ii.c @@ -0,0 +1 @@ +../ref/lilliput-ii.c \ No newline at end of file diff --git a/src/ref/lilliput-ae-i.c b/src/ref/lilliput-ae-i.c deleted file mode 100644 index 5e91e4e..0000000 --- a/src/ref/lilliput-ae-i.c +++ /dev/null @@ -1,212 +0,0 @@ -/* -Implementation of the Lilliput-AE tweakable block cipher. - -Author: Kévin Le Gouguec, 2019. - -For more information, feedback or questions, refer to our website: -https://paclido.fr/lilliput-ae - -To the extent possible under law, the implementer has waived all copyright -and related or neighboring rights to the source code in this file. -http://creativecommons.org/publicdomain/zero/1.0/ - ---- - -This file implements Lilliput-AE's nonce-respecting mode based on ΘCB3. -*/ - -#include -#include -#include - -#include "cipher.h" -#include "lilliput-ae.h" -#include "lilliput-ae-utils.h" - - -static const uint8_t _0n[BLOCK_BYTES] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - - -static void _fill_msg_tweak( - uint8_t prefix, - const uint8_t N[NONCE_BYTES], - uint64_t block_nb, - uint8_t tweak[TWEAK_BYTES] -) -{ - /* The 192-bit tweak is filled as follows: - * - * - bits 1- 68: block number - * 1- 64: actual 64-bit block number - * 64- 68: 0-padding - * - bits 67-188: nonce - * - bits 189-192: constant 4-bit prefix - */ - - for (size_t i=0; i> 8*i; - - tweak[i] = b; - } - - tweak[sizeof(block_nb)] = lower_nibble(N[0]) << 4; - - for (size_t i=1; i -#include -#include - -#include "cipher.h" -#include "lilliput-ae.h" -#include "lilliput-ae-utils.h" - - -static void _init_msg_tweak(const uint8_t tag[TAG_BYTES], uint8_t tweak[TWEAK_BYTES]) -{ - /* The t-bit tweak is filled as follows: - * - * - bits [ 1, t-1]: tag + block index - * [ 1, 64]: tag[ 1.. 64] XOR block index - * [ 65, t-1]: tag[65..t-1] - * - bit t: 1 - */ - - memcpy(tweak+sizeof(uint64_t), tag+sizeof(uint64_t), TAG_BYTES-sizeof(uint64_t)); - tweak[TWEAK_BYTES-1] |= 0x80; -} - -static void _fill_msg_tweak(const uint8_t tag[TAG_BYTES], uint64_t block_index, uint8_t tweak[TWEAK_BYTES]) -{ - /* Assume bits 65 to t-1 are set. */ - for (size_t i=0; i> i*8 & 0xff; - tweak[i] = tag[i] ^ index_i; - } -} - -static void _fill_tag_tweak(const uint8_t N[NONCE_BYTES], uint8_t tweak[TWEAK_BYTES]) -{ - /* The t-bit tweak is filled as follows: - * - * - bits [ 1, t-7]: N - * - bits [t-7, t]: 0001||0^4 - */ - - memcpy(tweak, N, TWEAK_BYTES-1); - tweak[TWEAK_BYTES-1] = 0x10; -} - -static void _generate_tag( - const uint8_t key[KEY_BYTES], - size_t M_len, - const uint8_t M[M_len], - const uint8_t N[NONCE_BYTES], - const uint8_t Auth[BLOCK_BYTES], - uint8_t tag[TAG_BYTES] -) -{ - uint8_t Ek_Mj[BLOCK_BYTES]; - uint8_t tag_tmp[TAG_BYTES]; - uint8_t tweak[TWEAK_BYTES]; - - memset(tweak, 0, TWEAK_BYTES); - memcpy(tag_tmp, Auth, TAG_BYTES); - - size_t l = M_len / BLOCK_BYTES; - size_t rest = M_len % BLOCK_BYTES; - - for (size_t j=0; j +#include +#include + +#include "cipher.h" +#include "lilliput-ae.h" +#include "lilliput-ae-utils.h" + + +static const uint8_t _0n[BLOCK_BYTES] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + + +static void _fill_msg_tweak( + uint8_t prefix, + const uint8_t N[NONCE_BYTES], + uint64_t block_nb, + uint8_t tweak[TWEAK_BYTES] +) +{ + /* The 192-bit tweak is filled as follows: + * + * - bits 1- 68: block number + * 1- 64: actual 64-bit block number + * 64- 68: 0-padding + * - bits 67-188: nonce + * - bits 189-192: constant 4-bit prefix + */ + + for (size_t i=0; i> 8*i; + + tweak[i] = b; + } + + tweak[sizeof(block_nb)] = lower_nibble(N[0]) << 4; + + for (size_t i=1; i +#include +#include + +#include "cipher.h" +#include "lilliput-ae.h" +#include "lilliput-ae-utils.h" + + +static void _init_msg_tweak(const uint8_t tag[TAG_BYTES], uint8_t tweak[TWEAK_BYTES]) +{ + /* The t-bit tweak is filled as follows: + * + * - bits [ 1, t-1]: tag + block index + * [ 1, 64]: tag[ 1.. 64] XOR block index + * [ 65, t-1]: tag[65..t-1] + * - bit t: 1 + */ + + memcpy(tweak+sizeof(uint64_t), tag+sizeof(uint64_t), TAG_BYTES-sizeof(uint64_t)); + tweak[TWEAK_BYTES-1] |= 0x80; +} + +static void _fill_msg_tweak(const uint8_t tag[TAG_BYTES], uint64_t block_index, uint8_t tweak[TWEAK_BYTES]) +{ + /* Assume bits 65 to t-1 are set. */ + for (size_t i=0; i> i*8 & 0xff; + tweak[i] = tag[i] ^ index_i; + } +} + +static void _fill_tag_tweak(const uint8_t N[NONCE_BYTES], uint8_t tweak[TWEAK_BYTES]) +{ + /* The t-bit tweak is filled as follows: + * + * - bits [ 1, t-7]: N + * - bits [t-7, t]: 0001||0^4 + */ + + memcpy(tweak, N, TWEAK_BYTES-1); + tweak[TWEAK_BYTES-1] = 0x10; +} + +static void _generate_tag( + const uint8_t key[KEY_BYTES], + size_t M_len, + const uint8_t M[M_len], + const uint8_t N[NONCE_BYTES], + const uint8_t Auth[BLOCK_BYTES], + uint8_t tag[TAG_BYTES] +) +{ + uint8_t Ek_Mj[BLOCK_BYTES]; + uint8_t tag_tmp[TAG_BYTES]; + uint8_t tweak[TWEAK_BYTES]; + + memset(tweak, 0, TWEAK_BYTES); + memcpy(tag_tmp, Auth, TAG_BYTES); + + size_t l = M_len / BLOCK_BYTES; + size_t rest = M_len % BLOCK_BYTES; + + for (size_t j=0; j