LAC: a Lightweight Authenticated Encryption Cipher
Total Page:16
File Type:pdf, Size:1020Kb
LAC: A Lightweight Authenticated Encryption Cipher Version 1 | 15 March 2014 Designers and Submitters: Lei Zhang, Wenling Wu, Yanfeng Wang, Shengbao Wu, Jian Zhang fzhanglei, wwl, wangyanfeng, wushengbao, [email protected] Trusted Computing and Information Assurance Laboratory Institute of Software, Chinese Academy of Sciences Contents 1 Introduction 1 2 Specification 2 2.1 Symbols and Notations . 2 2.2 Specification of LAC . 2 2.3 Description of LBlock-s . 4 2.4 Round-reduced LBlock-s . 5 2.5 Encryption/Authentication Procedure . 5 2.6 Decryption/Verification Procedure . 6 3 Security Goals 7 4 Security Analysis 8 4.1 Extinguishing Differentials Analysis . 8 4.2 State Recovery . 8 4.3 Key Recovery . 8 4.4 Forgery without State Recovery . 9 4.5 Distinguishing Attack . 9 4.6 Guess-and-Determine Attack . 9 4.7 Slide Attack . 9 5 Features 11 5.1 Main Features . 11 5.2 Hardware Performance Evaluation . 11 5.3 Software Performance Evaluation . 12 5.4 Potential Applications . 13 5.5 Security and Performance Comparison . 13 6 Design Rationale 14 6.1 Structure . 14 6.2 The Underlying Encryption Cipher LBlock-s . 14 6.3 Parameter Choices . 15 7 Intellectual Property 16 8 Consent 17 9 Test Vector 18 i Chapter 1 Introduction LAC is a lightweight authenticated encryption cipher based on a similar structure of ALE [2] and a simplified version of the lightweight block cipher LBlock as underlying primitive. The recommended parameter set for LAC is as follows. Recommended Parameter (in bits) Key 80 Public Message Number 64 Secret Message Number 0 Tag 64 Its encryption/authentication procedure accepts an 80-bit master key K, a 64-bit public message number (PMN ), a message m, an associated data α, and outputs the ciphertext c of exactly the same length as message and a 64-bit authentication tag τ. Its decryption/verification procedure accepts an 80-bit key K, a 64-bit public message number (PMN ), a ciphertext c, an associated data α, a 64-bit tag τ, and returns the decrypted message m if tag is correct or ? otherwise. LAC is a nonce-respecting design, and the public message number is used as nonce. We assume a public message number (PMN ) is only used once with the same master key for encryption. Moreover, we restrict that an equivalent of at most 240 bits are allowed to be authenticated or both authenticated and encrypted with the same master key. 1 Chapter 2 Specification 2.1 Symbols and Notations Notations Descriptions K 80-bit master key PMN 64-bit public message number SMN 0-bit secret message number m message α associate data c ciphertext τ 64-bit authentication tag ? a special symbol denotes the verification failure of LAC 0n the binary string of n-bit successive "0" jj concatenation of two binary strings <<< left rotation operation [i]2 binary form of an integer i jXj the bit length of string X LBlock-s the simplified version of lightweight block cipher LBlock E the full 32-round LBlock-s G the reduced 16-round LBlock-s G=leak the reduced 16-round LBlock-s with data-leaked KS round-reduced key schedule algorithm of LBlock-s T runcHigh(X; l) truncate and output the higher l-bit of X T runcLow(X; l) truncate and output the lower l-bit of X 2.2 Specification of LAC LAC is a lightweight authenticated encryption cipher based on a similar structure of ALE [2] and a simplified version of the lightweight block cipher LBlock. Its encryption/authentication procedure accepts an 80-bit master key K, a 64-bit public message number (PMN ), a mes- sage m, and an associated data α. We do not support secret message number (SMN ) here, namely the length of SMN is 0. Then the encryption/authentication procedure outputs the ciphertext c of exactly the same length as message and a 64-bit authentication tag τ. Its decryption/verification procedure accepts an 80-bit key K, a 64-bit public message number (PMN ), a ciphertext c, an associated data α and a 64-bit tag τ. It returns the decrypted message m if tag is correct or ? otherwise. Meanwhile, we assume a public message number (PMN ) is only used once with the same master key for encryption, and an equivalent of at most 240 bits are allowed to be authenticated or both authenticated and encrypted with the 2 same master key. The encryption/authentication procedure is shown in Figure 2.1. E is the full 32-round LBlock-s cipher, KS is the key schedule algorithm of 16-round LBlock-s and one more round key state update with the fixed constant 0x15, G is 16-round LBlock-s, G=leak is 16-round LBlock-s with 48 bits leaked from the data state. The detailed procedure can be described in five steps: k k PMN E E 128-bit /6% KS KS KS KS 06% k G G E G G E tag 0 " " leak " leak " a1 a r " " m1 mt c c1 t Figure 2.1: The encryption/authentication operation of LAC Padding: Assume that the length of message m is len bits. It first appends the small- est number x (with (x + len + 40) mod 48 = 0; 0 ≤ x < 48) of zeros to the message, and then appends the message length len coded on 40 bits such that the length of the result is a multiple of 48-bit. Finally, the resulting padded message is split into t blocks of 48-bit each, M = m1jj ::: jjmt. Note that for associated data α the same padding method is used and the padded associated data is split into r blocks, A = a1jj ::: jjar. Initialization: The internal state consists of an 80-bit key state and a 64-bit data state. Firstly, the PMN is encrypted with LBlock-s under the master key K and secondly the 64-bit output is also encrypted under the master key K for full rounds. The 64 bits of the first output and the 64 bits of the second output compose a new 128-bit key UKey. The lower 80 bits of UKey are used as the initialized key state. Meanwhile, the data state is initialized by encrypting 064 with LBlock-s under the key obtained from the higher 80-bit of UKey. Up to now, both states are initialized. Processing associated data: Associated data A is processed block by block: The data state is encrypted with 16-round LBlock-s (G function) using the key state as key. The final round subkey is updated one more time using the LBlock-s round key schedule with round constant 0x15. This value is stored in the key state. Finally, the current block of A is xored to the lower 48-bit of the internal state. Processing message: Message M is also processed block by block: The data state is encrypted with data-leaked 16-round LBlock-s (G=leak function) using the key state as key. At the same time, the higher 24 bits after the 8-round output and the higher 24 bits after 16-round output, 48 bits in all are leaked from the data state. The leaked bits are xored to the current message block mi to produce the ciphertext block ci. The final round subkey is updated one more time using the LBlock-s round key schedule with round constant 0x15. The current message block mi is also xored to the lower 48-bit of the internal state. Finally, the result data C = c1jj ::: jjct is truncated to exactly the same length as message and output as ciphertext c. The last few bits corresponding to padding data will be processed as above but without outputting as the ciphertext. 3 Finalization: Finally, the data state is encrypted with LBlock-s using the master key K. The output of this encryption is returned as the authentication tag for the message and associated data. The decryption/verification procedure of LAC can be defined correspondingly. The only two differences are that one works with the ciphertext c = c1jj ::: jjct instead of the message m while xoring with the stream and that the supplied tag value is compared to the one computed by the algorithm. Moreover, only if the tag is correct the decrypted message is returned. 2.3 Description of LBlock-s LBlock-s is a simplified version of lightweight block cipher LBlock. To reduce the cost in software and hardware implementation, 10 different 4-bit sboxes in LBlock are replaced with a same 4-bit sbox. Besides, the modified key schedule algorithm proposed in [5] are used to avoid the implementation restriction of n 29 in 8-bit platform and to improve the diffusion effect of key schedule algorithm. Moreover, since LAC does not need the decryption procedure of LBlock-s, we can apply 32 identical rounds and do not have to omit the switch operation in the last round. This can avoid additional control operation in hardware implementation. Specifically, the round function of LBlock-s can be described as follows: X i 1 X i 2 8 S Ki 1 " P " X i X i 1 Figure 2.2: The round function of block cipher LBlock-s Encryption Algorithm. The general structure of LBlock-s is a variant of Feistel Network, which is depicted in Figure 2.2. The number of iterative rounds is 32. The round function of LBlock-s includes three basic functions: round subkey addition AK, confusion function S and diffusion function P . The non-linear layer S consists of 8 identical 4-bit sbox (Table 2.1) in parallel.