Branch number
In cryptography, the branch number is a numerical value that characterizes the amount of diffusion introduced by a vectorial Boolean function F that maps an input vector a to output vector [math]\displaystyle{ F(a) }[/math]. For the (usual[1]) case of a linear F the value of the differential branch number is produced by:
- applying nonzero values of a (i.e., values that have at least one non-zero component of the vector) to the input of F;
- calculating for each input value a the Hamming weight [math]\displaystyle{ W }[/math] (number of nonzero components), and adding weights [math]\displaystyle{ W(a) }[/math] and [math]\displaystyle{ W(F(a)) }[/math] together;
- selecting the smallest combined weight across for all nonzero input values: [math]\displaystyle{ B_d(F) = \underset {a \ne 0} {\min} (W(a) + W(F(a))) }[/math].
If both a and [math]\displaystyle{ F(a) }[/math] have s components, the result is obviously limited on the high side by the value [math]\displaystyle{ s+1 }[/math] (this "perfect" result is achieved when any single nonzero component in a makes all components of [math]\displaystyle{ F(a) }[/math] to be non-zero). A high branch number suggests higher resistance to the differential cryptanalysis: the small variations of input will produce large changes on the output and in order to obtain small variations of the output, large changes of the input value will be required.[2]
The term was introduced by Daemen and Rijmen in early 2000s and quickly became a typical tool to assess the diffusion properties of the transformations.[1]
Mathematics
The branch number concept is not limited to the linear transformations, Daemen and Rijmen provided two general metrics:[3]
- differential branch number, where the minimum is obtained over inputs of F that are constructed by independently sweeping all the values of two nonzero and unequal vectors a, b ([math]\displaystyle{ \oplus }[/math] is a component-by-component exclusive-or): [math]\displaystyle{ B_d(F) = \underset {a \ne b} {\min} (W(a \oplus b) + W(F(a) \oplus F(b)) }[/math];
- for linear branch number, the independent candidates [math]\displaystyle{ \alpha }[/math] and [math]\displaystyle{ \beta }[/math] are independently swept; they should be nonzero and correlated with respect to F (the [math]\displaystyle{ LAT(\alpha,\beta) }[/math] coefficient of the linear approximation table of F should be nonzero): [math]\displaystyle{ B_l(F) = \underset {\alpha \ne 0,\beta,LAT(\alpha,\beta) \ne 0} {\min} (W(\alpha) + W(\beta)) }[/math].[4]
References
- ↑ 1.0 1.1 Zhang et al. 2009, p. 327.
- ↑ Liu & Sim 2016, p. 105.
- ↑ Daemen & Rijmen 2013, pp. 131-132.
- ↑ SAGE. "S-Boxes and Their Algebraic Representations". SageMath. https://doc.sagemath.org/html/en/reference/cryptography/sage/crypto/sbox.html.
Sources
- Liu, Meicheng; Sim, Siang Meng (25 July 2016). "Branch Number of the Diffusion Layer". in Thomas Peyrin. Fast Software Encryption: 23rd International Conference, FSE 2016, Bochum, Germany, March 20-23, 2016, Revised Selected Papers. Springer. pp. 101–121. ISBN 978-3-662-52993-5. OCLC 1008648217. https://books.google.com/books?id=xUG8DAAAQBAJ&pg=PA105.
- Zhang, Wentao; Wu, Wenling; Feng, Dengguo; Su, Bozhan (2009). "Some New Observations on the SMS4 Block Cipher in the Chinese WAPI Standard". Information Security Practice and Experience. Lecture Notes in Computer Science. 5451. Springer Berlin Heidelberg. pp. 324–335. doi:10.1007/978-3-642-00843-6_28. ISBN 978-3-642-00842-9. https://books.google.com/books?id=h13tzZqbcDcC&pg=PA327.
- Daemen, Joan; Rijmen, Vincent (9 March 2013). The Design of Rijndael: AES - The Advanced Encryption Standard. Springer Science & Business Media. ISBN 978-3-662-04722-4. OCLC 1259405449. https://cs.ru.nl/~joan/papers/JDA_VRI_Rijndael_2002.pdf.
Original source: https://en.wikipedia.org/wiki/Branch number.
Read more |