# Security Analysis of the Symmetric Cryptosystem Tiny Jambu
## 2 The TinyJambu Cryptosystem: An AEAD Scheme
### A Detailed Description of the TinyJambu Family  
TinyJambu is one of the 10 finalists in the search for a standard algorithm in the Lightweight Cryptography Project. At the same time, TinyJambu is part of a family of lightweight authenticated encryption algorithms that supports three variants related to three different key sizes: 128 bits, 192 bits and 256 bits. The remaining parameters such as the nonce (public number of the message), a tag computed for verification purposes and a state (a 128-bit register that is the core of the cryptosystem) have exactly the same number of bits in all the members of the family. In Table 1, the parameters of the three members of the TinyJambu family are listed. TinyJambu mode is mainly based on a keyed permutation that provides authenticated encryption/decryption. Indeed, it uses a secret key permutation in the form of a Nonlinear Feedback Shift Register (\(NLFSR\)); see Figure 2. Such an \(NLFSR\) is made up of a 128-bit register and a feedback function; no key schedule algorithm is implemented. In turn, the register is made up of 128 interconnected memory cells simultaneously controlled by a unique clock. At each clock pulse, the content of each cell is shifted to the next cell on the right. For cell 127, new content is generated by means of the feedback function. In the following, the following notation will be employed:  
* \(S\) is the 128-bit state of the permutation, and \(S_{i}\) is the \(i\)-th bit of the state (\(i\) = 0, \(\ldots\), 127), numbered from right to left. * \(P_{n}\) is the 128-bit permutation with \(n\) rounds (that is, \(n\) shifts of the \(NLFSR\)). * \(k_{i}\) (\(i\) = 0, \(\ldots\), 127) is the \(i\)-th bit of the key (\(k\)), \(N_{i}\) (\(i\) = 0, \(\ldots\), 95) is the \(i\)-th bit of the nonce (\(N\)), and \(T_{i}\) (\(i\) = 0, \(\ldots\), 63) is the \(i\)-th bit of the tag (\(T\)). * \(AD_{i}\) is the \(i\)-th bit of the associated data (\(AD\)), and \(M_{i}\) and \(C_{i}\) are the \(i\)-th bits of the plain text (\(M\)) and ciphered text (\(C\)), respectively. * _FrameBits_ is a three-bit function that takes different values depending on the application phase. More precisely, _FrameBits_ = 1 for nonce introduction, _FrameBits_ = 3 for associated data introduction, _FrameBits_ = 5 for encryption/decryption, and _FrameBits_ = 7 for the finalization process. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Name** & **Key** & **Nonce** & **Tag** & **State** \\ \hline TinyJambu-128 & 128 bits & 96 bits & 64 bits & 128 bits \\ TinyJambu-196 & 196 bits & 96 bits & 64 bits & 128 bits \\ TinyJambu-256 & 256 bits & 96 bits & 64 bits & 128 bits \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Parameters of the three members of the TinyJambu family. Figure 2: The 128-bit nonlinear feedback shift register in TinyJambu. * For the \(a\), \(b\in\mathbb{F}_{2}=\{0,1\}\) elements of the binary finite field, \(\overline{a}\), \(a\oplus b\), and \(a\cdot b\) denote the bit-wise \(NOT\), bit-wise exclusive \(OR\) and bit-wise \(AND\) logic operations, respectively. In Figure 2, it can be noticed that _feedback_ is the bit-wise \(XOR\) operation among three state bits (\(S_{0}\), \(S_{47}\), \(S_{91}\)), \(k_{i}\) is the \(i\)-th bit of the key, and the output of the \(NAND\) gate is represented by \(\overline{S_{70}\cdot S_{85}}\). The unique nonlinear component in the feedback function is the logical \(NAND\) gate. The permutation \(P_{n}\) is always the same but with a different number of rounds \(n\) depending on the phase in which it is applied. In the \(i\)-th round of the permutation, the 128-bit \(NLFSR\) is used to update the state as follows: \(\text{StateUpdate}(S,k,i)\): \(feedback=S_{0}\oplus S_{47}\oplus\overline{S_{70}\cdot S_{85}}\oplus S_{91} \oplus k_{i}\) for \(j\) from 0 to 126: \(S_{j}=S_{j+1}\) \(S_{127}=feedback\) end For instance, \(P_{1024}\) means that the state of the permutation is updated using the function \(\text{StateUpdate}(\ )\) 1024 times.