2. Related Works
Many methods exist to construct different kinds of
AE schemes [
22]. The simple method is to immediately use the
AE modes already existed, recommended and standardized by
NIST. A more complicated way that forms a challenging way is to design a completely new
AE mode. Note that in the third round of the
CAESAR competition, most candidates proposed, designed, and implemented new
AE modes. In fact, Berton et al. designed in 2016 a new
AE mode adopted by the
Ketje scheme, an authenticated encryption scheme based on
Keccak-p, called
MonkeyWrap [
23]. Actually, it is very similar to the
SpongeWrap method proposed by Bertoni et al. in 2011 [
7]. The major difference between these two schemes is that
MonkeyWrap adopts, during its whole process lifecycle,
MonkeyDuplex permutations. In fact,
MonkeyWrap uses two mixing layers to obtain the ciphertexts; the first one is applied on the input data, while the second one is applied on the output data. Additionally, between these two mixing layers,
MonkeyWrap XORs the message number with the internal data processed by the system. On the other hand,
MonkeyWrap iterates the obtained message blocks several times in order to calculate the authenticated tag. Furthermore, Bertoni et al. [
24] designed in 2015 another
AE scheme based on a
Sponge function, called
Motorist, that was adopted by the
Keyak scheme. First, it encrypts the message blocks and its number with a unique private vector in order to obtain the authenticated tag and the corresponding cipher blocks.
Motorist applies the same procedure to all message blocks in parallel, and that is performed by supporting more than one duplex operation at the same time. In 2016, Jean et al. designed an
AE scheme, called
Deoxys, based on
Deoxys-BC [
25].
Deoxys is an efficient scheme for small messages (few dozen bytes), which is essentially important for various lightweight applications [
26]. In this proposed scheme, Jean et al. combines the inputs of authenticated ciphers to obtain the authenticated tags and ciphertexts. Additionally, with the same techniques as the Advanced Encryption Standard algorithm, it can resist side-channel attacks [
27].
Moreover, Dobraunig et al. [
8] proposed in 2016 an
AE scheme, intuitively defined on words with 64-bit length, called
Ascon. The words used in this scheme are only composed from the bitwise Boolean functions like
OR,
AND,
XOR,
ROT, and
NOT [
28]. The permutation of
Ascon scheme is similar to this used in
MonkeyDuplex construction. The authenticated tag and ciphertexts are produced after processing input data including the nonce, secret key,
AD, and message blocks. For both software and hardware implementation,
Ascon provides, in terms of speed and size, lightweight characteristics and has also good performance on both implementation. Hence, it is highly recommended in the Internet of Things (
IoT) use case, where various lightweight computing devices communicate with a back-end server using different protocols. In 2019, Bao et al. [
9] designed an authenticated encryption and hash family called
PHOTON-Beetle, that adopts the
Sponge-based construction mode
Beetle with permutation value equal to
(it is also used for the
PHOTON hash [
29]). In fact,
PHOTON-Beetle can be categorized into two classes based on its functionalities:
PHOTON-Beetle-AEAD which is a family of authenticated encryption, and
PHOTON-Beetle-Hash which is a family of hash functions. These two families are parameterized by the rate of message absorption
r. The main innovation behind
Beetle Sponge mode is the combination of two values, i.e., the ciphertext block and the feedback of the permutation output, to generate the next permutation input. Bhattacharjee et al. proposed
Oribatida, a family of lightweight
AE schemes, where its design is based on the known duplex construction mode [
10]. At its core,
Oribatida, a variant of the
MonkeyWrap AE mode, extended by a ciphertext masking that boosts the security, inherits the minimal security guarantees of the well-known duplex construction mode. Moreover, all members of this proposed family are expected to provide 128-bit security for hashing and encryption.
3. Description of the Proposed AEADS Based on the Keyed MDS-CNNR Structure
The architecture of the proposed
AEADS based on the
Keyed MDS-CNNR structure is composed of two phases: Initialization phase and Duplexing phase (see
Figure 2).
The initialization phase uses the Initial Value
IV of
b-bit length to set the value of
. Additionally, the secret key of 160-bit length is used to supply the Chaotic System (
CS),
=
K, formed by a recursive cell of order one which contains a discrete Skew tent map [
30].
Then, the Chaotic compression function , composed CS and Chaotic Neural Network (CNN), takes and to produce the first chaining variable of b-bit length.
For this phase, we define the function
CNND.initialize() for our proposed
CNN-Duplex construction. This function is explained by Algorithm 1.
Algorithm 1 The initialization function |
Require: Interface: Return.
|
Where CNND is a CNN-Duplex object of the CNNDuplex[Cf, Pad, r] function.
Notice that for the input data of the other cells, we choose two values of the bitrate r and the capacity c: the first choice is r = 256 bits and c = 256 bits (b = 512 bits = 64 bytes), and the second choice is r = 512 bits and c = 512 bits (b = 1024 bits = 128 bytes).
The duplexing phase takes an input string
S and returns an output of
b bits. In Algorithm 2, we define the
CNND.duplexing() function for our proposed
CNN-Duplex construction.
Algorithm 2 The duplexing function |
Require: Interface: Return.
|
Where, l is the length of input string S; bf is the bit-frame equal to 0 or 1; and the input string S of (r-2)-bit length can be AD, M, or 0. Notice that the length of the last block can be arbitrary. Additionally, the calls where S is an empty string are referred to as blank calls, while the calls with b = 0 are referred to as mute calls.
In this phase, the sub-keys of the CS of size = 128 bits are extracted from the intermediate chaining variable HM of size = b bits (). These HM are XORed with to produce the input h of b-bit length used by the CNN function. The output of CS supplies the parameters of CNN.
The authenticated encryption with associated data function CNNDuplex-AEAD takes the following elements as inputs:
An Initial Value IV, and a secret key K;
An Associated Data (AD) that will be authenticated but not encrypted;
A message M that will be both authenticated and encrypted.
In general, the Associated Data
AD and the message
M, when they are available, are divided into multiple blocks
and
, respectively. It must be noted that the blocks of
AD (
) are concatenated by a
bf equal to 1, except for the last block, wherein its
bf is equal to 0. Moreover, the blocks of
M (
) are concatenated by a
bf equal to 0, except for the last block, wherein its
bf is equal to 1. The bit-frame
bf is used for two goals: first, to ensure that both the generated key stream and the obtained authentication tag blocks are in two separate domains; second, to assure that the
AD and
M input blocks can be recovered later from the input sequence of the duplex construction [
12]. After the absorption of
, the scheme absorbs
and, then generates the ciphertext
C, block by block:
of length
; and
HM is the response of the
CNND to the previous
CNND.duplexing() call. If the needed authentication tag
T’s length (
Tlen) is greater than
r-2, then the duplexing phase enters in the tag generation phase, where all input strings are equal to 0. The obtained ciphertext
C and the authentication tag
T will be sent to the receiver.
For each
CNNDAEAD.encrypt(
AD,
M,
b) request, the latter transmits the blocks of the
AD and the message
M to the
CNND.duplexing(
S,
b). A formal definition and description of
CNNDuplex-AEAD encryption function is provided in Algorithm 3.
Algorithm 3 The Authenticated Encryption function |
Require: Require: This algorithm treats AD, M, C instances equal to the empty string as a single (empty) block Interface: Interface: Let Let fordo end for fordo end for whiledo end while Return.
|
Where, CNNDAEAD is an instance of the authenticated encryption function CNNDuplex-AEAD[Cf, Pad, r, ].
The structure of the decryption process is shown in
Figure 3. It takes the following elements as inputs:
The same Initial Value IV and the same secret key K taken from the encryption process;
The same Associated Data AD used in the encryption process;
The ciphertext C to be decrypted;
The authentication tag T used to check the integrity of the Associated Data AD and the authenticity of the message M.
As observed from
Figure 3, the decryption process is similar to the encryption process by exchanging message
and ciphertext
blocks. This means that
, where
HM is the response of
CNND to the previous
CNND.duplexing() call. If the calculated tag
is equal to the received authentication tag
T, then the original message
M is delivered. Otherwise, an
Error message is delivered.
For each
CNNDAEAD.decrypt(
AD,
C,
T) request, the latter transmits the blocks of the
AD and the retrieved message
M from C to
CNND.duplexing(
S,
b). A formal definition and description of the
CNNDuplex-AEAD decryption process is provided in Algorithm 4.
Algorithm 4 The Authenticated Encryption function |
Require: Require: This algorithm treats AD, M, C instances equal to the empty string as a single (empty) block Interface: Interface: Let Let Let fordo end for fordo end for whiledo end while ifthen Return . else Return Error. end if
|
Note that the
AD plays the same role as the header of the message in all network applications [
31]. The role of the
IV is similar to that used in the stream cipher.
The structure of the proposed Chaotic function
Cf is shown in
Figure 4. It contains a
CS and a single layer
CNN, followed by a set of non-linear (
NL) functions. The input layer of
CNN is composed of four neurons. The activation function of each neuron is composed of the Discrete Skew Tent map (
DSTmap) and the Discrete Piecewise Linear Chaotic map (
DPWLCmap). The
CS produces a Key Stream
KS (all necessary samples) in order to supply the two layers, as represented in Equation (
2):
The size of
KS is represented in the following equation:
For the first choice (
r = 256 bits,
c = 256 bits), each input neuron has four input data and three 32-bit parameters
, and
(see
Figure 5).
is the bias of the neurons at the input layer while
and
are the control parameters for the activation function of
DSTmap and
DPWLCmap, respectively. Indeed, for this case, the necessary sizes of 32-bit parameters are calculated as follows:
= 8 samples,
= 4 samples,
= 16 samples,
= 4 samples, and so the total size of
is equal to 32 samples. For the second choice (
r = 512 bits,
c = 512 bits), each input neuron has eight input data and three 32-bit parameters
,
, and
(see
Figure 6). Indeed, for this case, the necessary sizes of 32-bit parameters are calculated as follow:
= 8 samples,
= 4 samples,
= 32 samples,
= 4 samples, and so the total size of
is equal to 48 samples.
For the first choice, each at the input layer is formed by . The first two input blocks , weighted by the appropriate input weights , are both added with the input bias (weighted by 1) to construct the input of the first DSTmap function. The second two input blocks , weighted by the appropriate input weights , are both added with the same input bias to construct the input of the second DPWLCmap function.
For the second choice, each
at the input layer is formed by
. The first four input blocks
, weighted by the appropriate input weights
, are all added with the input bias
(weighted by 1) to construct the input of the first
DSTmap function. The second four input blocks
, weighted by the appropriate input weights
, are all added with the same input bias
to construct the input of the second
DPWLCmap function. All inputs
are 32-bit samples (integer values), and the all input biases
are necessary in case having a null input message. The
DSTmap and the
DPWLCmap are represented by Equations (
4) and (
5), respectively.
where,
N is the finite precision equal to 32 bits length; and
Q1 represents the control parameter of the
DSTmap.
KSs(n) and
KSs(n-1) are the outputs of
DSTmap at the
nth and
th iterations, respectively.
Q1,
KSs(n), and
KSs(n − 1) range between 1 and
.
where
Q2 represents the control parameter of the
DPWLCmap.
KSp(n) and
KSp(n-1) are the outputs of
DPWLCmap at the
nth and
th iterations, respectively.
Q2,
KSp(n), and
KSp(n-1), and range between 1 to
.
After computing, both outputs of the chosen chaotic maps
DSTmap and
DPWLCmap are combined together using XOR operation to calculate the outputs of neurons denoted by the parameter
, which is given by Equation (
6) for the first choice, and by Equation (
7) for the second choice.
The values of
, weighted by
, form the inputs
of the
NL output layer:
, which are truncated to 32-bit lengths. The final output values
are given by the following equation (see
Figure 7):
The
are values of 32-bit size.
The four non-linear functions (
and
,
Ma, and
Ch) are represented as follows:
where
.
In the proposed AEADS, and in order to calculate the b-bit intermediate hash values, we first iterate the output layer times, with = 1, 8, 24, according to the required security level and speed. Then, with the chosen value of , we iterate again the output layer twice for the first choice (r = 256 bits, c = 256 bits) and four times for the second choice (r = 512 bits, c = 512 bits) to obtain the intended b-bit intermediate hash values.