An apparatus for encryption and decryption, capable of use in encryption and decryption of advanced encryption standard. Byte substitution operation and inverse byte substitution operation are to be combined. Byte substitution operation can be expressed as y=M*multiplicative_inverse(x)+c while inverse byte substitution operation can be expressed as x=multiplicative_inverse(M−1*(y+c)), wherein M and M−1 are inverse matrix of each other and c is a constant matrix. Since the two equations employ a look-up table, that is, multiplicative_inverse(x), the lookup tables for use in byte substitution and inverse byte substitution operations are to be combined according to the invention so as to lower hardware complexity of the implementation. In addition, main operations of column mixing operation and inverse column mixing operation are to be rearranged to combine the two operations in part, resulting in simplified hardware implementation.
Legal claims defining the scope of protection, as filed with the USPTO.
1. An apparatus for performing a byte substitution operation (SubBytes) and an inverse byte substitution operation (InvSubBytes) selectively on an input data code so as to output a required output data code, capable of use in encryption and decryption of advanced encryption standard (AES), the apparatus comprising: an inverse matrix operation module for receiving the input data code so as to perform an inverse matrix operation on the input data code and output the result of the inverse matrix operation; a first multiplexer having a first input terminal and a second input terminal, the first input terminal being coupled to the inverse matrix operation module so as to receive the result of the inverse matrix operation and the second input terminal receiving the input data code, wherein the first multiplexer selects one of the input data code and the result of the inverse matrix operation as the first multiplexer's output data code, according to a selection signal; a multiplicative inverse operation module coupled to the first multiplexer for outputting a table-lookup data code based on the output data code from the first multiplexer after table-look up; a matrix operation module for receiving the table-lookup data code, performing a matrix operation, and outputting the result of the matrix operation; and a second multiplexer having a first terminal and a second terminal, the second terminal of the second multiplexer being coupled to the matrix operation module so as to receive the result of the matrix operation and the first terminal of the second multiplexer being coupled to the multiplicative inverse operation module so as to receive the table-lookup data code, wherein the second multiplexer selects one of the table-lookup data code and the result of the matrix operation as the second multiplexer's output data code, according to the selection signal, and wherein the output data code from the second multiplexer is the required output data code for the apparatus.
2. The apparatus according to claim 1 , wherein SubBytes is performed when the selection signal is equal to 1 and InvSubBytes is performed when the selection signal is equal to 0.
3. The apparatus according to claim 1 , wherein the selection signal is a one-bit digital signal having a first digital state or a second digital state.
4. The apparatus according to claim 3 , wherein SubBytes is performed when the digital signal has the first digital state and InvSubBytes is performed when the digital signal has the second digital state.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
March 29, 2002
June 26, 2007
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.