Algorithm 959

José Antonio Álvarez-Cubero, Pedro J. Zufiria
2016 ACM Transactions on Mathematical Software  
VBF is a collection of C++ classes designed for analyzing vector Boolean functions (functions that map a Boolean vector to another Boolean vector) from a cryptographic perspective. This implementation uses the NTL library from Victor Shoup, adding new modules that call NTL functions and complement the existing ones, making it better suited to cryptography. The class representing a vector Boolean function can be initialized by several alternative types of data structures such as Truth Table,
more » ... e Representation, and Algebraic Normal Form (ANF), among others. The most relevant cryptographic criteria for both block and stream ciphers as well as for hash functions can be evaluated with VBF: it obtains the nonlinearity linearity distance, algebraic degree, linear structures, and frequency distribution of the absolute values of the Walsh Spectrum or the Autocorrelation Spectrum, among others. In addition, operations such as equality testing, composition, inversion, sum, direct sum, bricklayering (parallel application of vector Boolean functions as employed in Rijndael cipher), and adding coordinate functions of two vector Boolean functions are presented. Finally, three real applications of the library are described: the first one analyzes the KASUMI block cipher, the second one analyzes the Mini-AES cipher, and the third one finds Boolean functions with very high nonlinearity, a key property for robustness against linear attacks. the robustness against attacks) of Boolean and vector Boolean functions. Moreover, because of the size and complexity of modern ciphers, automatic analysis programs are very helpful in reducing the time required to study cryptographic properties of vector Boolean functions. In this article, a library of C++ classes for analyzing cryptographic properties of vector Boolean functions (VBFs) is presented. This library is called VBF and uses some modules from the well-known Number Theory Library (NTL) implemented by Victor Shoup (VBF works with any version of NTL, up to the latest one [NTL 2015]). A preliminary version of VBF, lacking several of the modules and features in the current package, was presented in Alvarez-Cubero and Zufiria [2010]. NTL is a high-performance, portable C++ library providing data structures and algorithms for manipulating signed, arbitrary length integers, as well as vectors, matrices, and polynomials over the integers and over finite fields. The decision to use this library is mainly based on four reasons:
doi:10.1145/2794077 fatcat:4tgey4sslzbxjfly4t3sra6hc4