Method and apparatus for advanced symmetric key block cipher with variable length key and block
First Claim
1. In a computer environment, computer-readable code for providing a symmetric key block cipher which supports a variable length symmetric input key, a variable length block, and a variable number of rounds, said computer-readable code embodied on a computer-readable medium and comprising:
- computer-readable program code means for determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
computer-readable program code means for generating a plurality of sub-keys using said symmetric input key as an input value, wherein each of said generated sub-keys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
computer-readable program code means for obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
computer-readable program code means for iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing function, a permitting function, and a key-dependent substitution function, and wherein said computer-readable program code means for iteratively performing further comprises;
computer-readable program code means for performing said mixing function by mixing each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operation are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a plurality of mixed segments;
computer-readable program code means for performing said permuting unction by swapping each of said mixed segments, thereby creating a permuted block;
computer-readable program code means for performing said key-dependent substitution function on said permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
computer-readable program code means for treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said computer-readable program code means for iteratively performing, provided said number of times has not been reached.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for an advanced symmetric key cipher for encryption and decryption, using a block cipher algorithm. Different block sizes and key sizes are supported, and a different sub-key is used in each round. Encryption is computed using a variable number of rounds of mixing, permutation, and key-dependent substitution. Decryption uses a variable number of rounds of key-dependent inverse substitution, inverse permutation and inverse mixing. The variable length sub-keys are data-independent, and can be precomputed.
81 Citations
47 Claims
-
1. In a computer environment, computer-readable code for providing a symmetric key block cipher which supports a variable length symmetric input key, a variable length block, and a variable number of rounds, said computer-readable code embodied on a computer-readable medium and comprising:
-
computer-readable program code means for determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
computer-readable program code means for generating a plurality of sub-keys using said symmetric input key as an input value, wherein each of said generated sub-keys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
computer-readable program code means for obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
computer-readable program code means for iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing function, a permitting function, and a key-dependent substitution function, and wherein said computer-readable program code means for iteratively performing further comprises;
computer-readable program code means for performing said mixing function by mixing each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operation are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a plurality of mixed segments;
computer-readable program code means for performing said permuting unction by swapping each of said mixed segments, thereby creating a permuted block;
computer-readable program code means for performing said key-dependent substitution function on said permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
computer-readable program code means for treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said computer-readable program code means for iteratively performing, provided said number of times has not been reached. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
computer-readable program code means for dividing said plurality of input data segments into a left input half and a right input half;
computer-readable program code means for performing a first mixing operation on said left input half, as a single unit, and a second mixing operation on said right input half, as a single unit, wherein said second mixing operation uses a different selection of operands for said first and second XOR operations than does said first mixing operation;
computer-readable program code means for using each byte of a result of said second XOR operation of said first mixing operation as a lookup index for said first S-box lookup operation to retrieve bytes of a new left half; and
computer-readable program code means for using each byte of an output of said second XOR operation of said second mixing operation as said lookup index for said first S-box lookup operation to retrieve bytes of a new right half.
-
-
3. The computer-readable code according to claim 2, wherein:
-
said computer-readable program code means for performing said first mixing operation further comprises;
computer-readable program code means for using said left input half and said right input half as operands of said first XOR operation; and
computer-readable program code means for using a result of said first XOR operation and said right input half that has been effectively rotated right one byte as operands of said second XOR operation; and
said computer-readable program code means for performing said second mixing operation further comprises;
computer-readable program code means for using said right input half and said new left half that has been effectively rotated right one byte as operands of said first XOR operation; and
computer-readable program code means for using an output of said first XOR operation and said new left half that has been effectively rotated left two bytes as operands of said second XOR operation.
-
-
4. The computer-readable code according to claim 1, wherein said computer-readable program code means for performing said permitting function further comprises:
-
computer-readable program code means for dividing said plurality of mixed segments into a left mixed half and a right mixed half; and
computer-readable program code means for swapping said left mixed half with said right mixed half.
-
-
5. The computer-readable code according to claim 1, wherein said computer-readable program code means for performing said key-dependent substitution function further comprises:
-
computer-readable program code means for using a selected one of said generated sub-keys which is uniquely associated with a current round number as an operand of said third XOR operation, along with said permuted block; and
computer-readable program code means for performing said second S-box lookup operation using each byte of a result of said third XOR operation as an index to retrieve each of said substituted bytes.
-
-
6. The computer-readable code according to claim 1, wherein said computer-readable program code means for performing said mixing function and said computer-readable program code means for performing said key-dependent substitution function perform said first S-box lookup operation and said second S-box lookup operation, respectively, by accessing a selected one of two distinct S-boxes using a one-byte index, each of said S-boxes having 256 distinct entries, each of said entries being a one-byte value.
-
7. The computer-readable code according to claim 1, wherein one or more of said computer-readable program code means is embodied in a hardware chip.
-
8. The computer-readable code according to claim 1, wherein:
-
particular values for one or more of said key length, said block length, and said number of rounds are input by a user prior to a final production of said computer-readable code;
said final production is then optimized for said one or more particular value; and
said computer-readable program code means for determining therefore operates as if said one or more particular values are fixed.
-
-
9. The computer-readable code according to claim 1, further comprising:
computer-readable program code means for decrypting said encrypted data segments, resulting in restoration of said plurality of input data segments, by performing a set of inverse round functions said number of times equal to said number of rounds, wherein said set of inverse round functions comprises an inverse key-dependent substitution function which is inverse to said key-dependent substitution function, an inverse permutation function which is inverse to said permutation function, and an inverse mixing function which is inverse to said mixing function.
-
10. Computer-readable code for performing a symmetric key block cipher which supports a variable length input key, a variable length block, and a variable number of rounds, said computer-readable code embodied on a computer-readable medium and comprising:
-
computer-readable program code means for determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
computer-readable program code means for generating a plurality of sub-keys using said symmetric input key as an input value, wherein each of said generated sub-keys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
computer-readable program code means for obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
computer-readable program code means for iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing and permuting function and a key-dependent substitution function, and wherein said computer-readable program code means for iteratively performing further comprises;
computer-readable program code means for performing said mixing and permuting function by mixing and permuting each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a mixed and permuted block;
computer-readable program code means for performing said key-dependent substitution function on said mixed and permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
computer-readable program code means for treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said computer-readable program code means for iteratively performing, provided said number of times has not been reached. - View Dependent Claims (11, 12, 13, 14, 15)
computer-readable program code means for dividing said input data segments into a left input half and a right input half;
computer-readable program code means for performing a first mixing and permuting operation on said right input half, as a single unit, and a second mixing and permuting operation on said left input half, as a single unit, wherein said second mixing and permuting operation uses a different selection of operands for said first and second XOR operations than does said first mixing and permuting operation;
computer-readable program code means for using each byte of a result of said second XOR operation of said first mixing and permuting operation as a lookup index for said first S-box lookup operation to retrieve bytes of a new right half; and
computer-readable program code means for using each byte of an output of said second XOR operation of said second mixing and permuting operation as said lookup index for said first S-box lookup operation to retrieve bytes of a new left half.
-
-
12. The computer-readable code according to claim 11, wherein:
-
said computer-readable program code means for performing said first mixing and permuting operation further comprises;
computer-readable program code means for using said left input half and said right input half as operands of said first XOR operation; and
computer-readable program code means for using a result of said first XOR operation and said right input half that has been effectively rotated right one byte as operands of said second XOR operation; and
said computer-readable program code means for performing said second mixing operation further comprises;
computer-readable program code means for using said right input half and said new right half that has been effectively rotated right one byte as operands of said first XOR operation; and
computer-readable program code means for using an output of said first XOR operation and said new right half that has been effectively rotated left two bytes as operands of said second XOR operation.
-
-
13. The computer-readable code according to claim 10, wherein said computer-readable program code means for performing said key-dependent substitution function further comprises:
-
computer-readable program code means for using a selected one of said generated sub-keys which in uniquely associated with a current round number as an operand of said third XOR operation, along with said mixed and permuted block; and
computer-readable program code means for performing said second S-box lookup operation using each byte of a result of said third XOR operation as an index to retrieve each of said substituted bytes.
-
-
14. The computer-readable code according to claim 10, wherein said computer-readable program code means for performing said mixing and permuting function and said computer-readable program code means for performing said key-dependent substitution function perform said first S-box lookup operation and said second S-box lookup operation, respectively, by accessing a selected one of two distinct S-boxes using a one-byte index, each of said S-boxes having 256 distinct entries, each of said entries being a one-byte value.
-
15. The computer-readable code according to claim 10, further comprising:
computer-readable program code means for decrypting said encrypted data segments, resulting in restoration of said plurality of input data segments, by performing a set of inverse round functions said number of times equal to said number of rounds, wherein said set of inverse round functions comprises an inverse key-dependent substitution function which is inverse to said key-dependent substitution function and an inverse mixing and permuting function which is inverse to said mixing and permuting function.
-
16. A system for performing a symmetric key block cipher which supports a variable length symmetric input key, a variable length block, and a variable number of rounds, comprising:
-
means for determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
means for generating a plurality of sub-keys using said symmetric input key as an input value, wherein each of said generated subkeys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
means for obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
means for iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing function, a permuting function, and a key-dependent substitution function, and wherein said means for iteratively performing further comprises;
means for performing said mixing function by mixing each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a plurality of mixed segments;
means for performing said permuting function by swapping each of said mixed segments, thereby creating a permuted block;
means for performing said key-dependent substitution function on said permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
means for treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said means for iteratively performing, provided said number of times has not been reached. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24)
means for dividing said plurality of input data segments into a left input half and a right input half;
means for performing a first mixing operation on said left input half, as a single unit, and a second mixing operation on said right input half, as a single unit wherein said second mixing operation uses a different selection of operands for said first and second XOR operations than does said first mixing operation;
means for using each byte of a result of said second XOR operation of said first mixing operation as a lookup index for said first S-box lookup operation to retrieve bytes of a new left half; and
means for using each byte of an output of said second XOR operation of said second mixing operation as said hookup index for said first S-box lookup operation to retrieve bytes of a new right half.
-
-
18. The system according to claim 17, wherein:
-
said means for performing said first mixing operation further comprises;
means for using said left input half and said right input half as operands of said first XOR operation; and
means for using a result of said first XOR operation and said right input half that has been effectively rotated right one byte as operands of said second XOR operation; and
said means for performing said second mixing operation further comprises;
means for using said right input half and said new left half that has been effectively rotated right one byte as operands of said first XOR operation; and
means for using an output of said first XOR operation and said new left half that has been effectively rotated left two bytes as operands of said second XOR operation.
-
-
19. The system according to claim 16, wherein said means for performing said permuting function further comprises:
-
means for dividing said plurality of mixed segments into a left mixed half and a right mixed half; and
means for swapping said left mixed half with said right mixed half.
-
-
20. The system according to claim 16, wherein said means for performing said key-dependent substitution function further comprises:
-
means for suing a selected one of said generated sub-keys which is uniquely associated with a current round number as an operand of said third XOR operation, along with said permuted block; and
means for performing said second S-box lookup operation using each byte of a result of said third XOR operation as an index to retrieve each of said substituted bytes.
-
-
21. The system according to claim 16, wherein said means for performing said mixing function and said means for performing said key-dependent substitution function perform said first S-box lookup operation and said second S-box lookup operation, respectively, by accessing a selected one of two distinct S-boxes using a one-byte index, each of said S-boxes having 256 distinct entries, each of said entries being a one-byte value.
-
22. The system according to claim 16, wherein one or more of said means is embodied in a hardware chip.
-
23. The system according to claim 16, wherein:
-
particular values for one or more of said key length, said block length, and said number of rounds are input by a user prior to a final production of said system;
said final production is then optimized for said one or more particular value; and
said means for determining therefore operates as if said one or more particular values are fixed.
-
-
24. The system according to claim 16, further comprising:
means for decrypting said encrypted data segments, resulting in restoration of said plurality of input data segments, by performing a set of inverse round functions said number of times equal to said number of rounds, wherein said set of inverse round functions comprises an inverse key-dependent substitution function which is inverse to said key-dependent substitution function, an inverse permutation function which is inverse to said permutation functions, and an inverse mixing function which is inverse to said mixing function.
-
25. A system for performing a symmetric key block cipher which supports a variable length input key, a variable length block, and a variable number of rounds, comprising:
-
means for determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
means for generating a plurality of subkeys using said symmetric input key as an input value, wherein each of said generated sub-keys is equal in length to said block length and where a distinct one of said subkeys is generated for each of said number of rounds;
means for obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
means for iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing and permuting function and a key-dependent substitution function, and wherein said means for iteratively performing further comprises;
means for performing said mixing and permuting function by mixing and permuting each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a mixed and permuted block;
means for performing said key-dependent substitution function on said mixed and permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
means for treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said means for iteratively performing, provided said number of times has not been reached. - View Dependent Claims (26, 27, 28, 29, 30, 31)
means for dividing said input data segments into a left input half and a right input half;
means for performing a first mixing and permuting operation on said right niput half, as a single unit, and a second mixing and permuting operation on said left input half, as a single unit, wherein said second mixing and permuting operation uses a different selection of operands for said first and second XOR operations than does said first mixing and permuting operation;
means for using each byte of a result of said second XOR operation of said first mixing and permuting operation as a lookup index for said first S-box lookup operation to retrieve bytes of a new right half; and
means for using each byte of an output of said second XOR operation of said second mixing and permuting operation as said lookup index for said first S-box lookup operation to retrieve bytes of a new left half.
-
-
27. The system according to claim 26, wherein:
-
said means for performing said first mixing and permuting operation further comprises;
means for using said left input half and said right input half as operands of said first XOR operation; and
means for using a result of said first XOR operation and said right input half that has been effectively rotated right one byte as operands of said second XOR operation; and
said means for performing said second mixing operation further comprises;
means for using said right input half and said new right half that has been effectively rotated right one byte as operands of said fist XOR operation; and
means for using an output of said first XOR operation and said new right half that has been effectively rotated left two bytes as operands of said second XOR operation.
-
-
28. The system according to claim 25, wherein said means for performing said key-dependent substitution function further comprises:
-
means for using a selected one of said generated sub-keys which is uniquely associated with a current round number as an operand of said third XOR operation, along with said mixed and permuted block; and
means for performing said second S-box lookup operation using each byte of a result of said third XOR operation as an index to retrieve each of said substituted bytes.
-
-
29. The system according to claim 25, wherein said means for performing said mixing and permuting function and said means for performing said key-dependent substitution function perform said first S-box lookup operation and said second S-box lookup operation, respectively, by accessing a selected one of two distinct S-boxes using a one-byte index, each of said S-boxes having 256 distinct entries, each of said entries being a one-byte value.
-
30. The system according to claim 25, further comprising;
means for decrypting said encrypted data segments, resulting in restoration of said plurality of input data segments, by performing a set of inverse round functions said number of times equal to said number of rounds, wherein said set of inverse round functions comprises an inverse key-dependent substitution function which is inverse to said key-dependent substitution function and an inverse mixing and permuting function which is inverse to said mixing and permuting function.
-
31. The method according to claim 25, further comprising the step of
decrypting said encrypted data segments, resulting in restoration of said plurality of input data segments, by performing a set of inverse round functions said number of times equal to said number of rounds, wherein said set of inverse round functions comprises an inverse key-dependent substitution function which is inverse to said key-dependent substitution function and an inverse mixing and permuting function which is inverse to said mixing and permuting function.
-
32. A method of performing a symmetric key block cipher which supports a variable length symmetric input key, a variable length block, and a variable number of rounds, comprising the steps of:
-
determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
generating a plurality of subkeys using said symmetric input key as an input value, wherein each of said generated sub-keys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing function, a permuting function, and a key-dependent substitution function, and wherein said step of iteratively performing further comprises the steps of performing said mixing function by mixing each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a plurality of mixed segments;
performing said permuting function by swapping each of said mixed segments, thereby creating a permuted block;
performing said key-dependent substitution function on said permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said iteratively performing step, provided said number of times has not been reached. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40)
dividing said plurality of input data segments into a left input half and a right input half;
performing a first mixing operation on said left input half, as a single unit, and a second mixing operation on said right input half, as a single unit, wherein said second mixing operation uses a different selection of operands for said first and second XOR operations than does said first mixing operation;
using each byte of a result of said second XOR operation of said first mixing operation as a lookup index for said first S-box lookup operation to retrieve bytes of a new left half; and
using each byte of an output of said second XOR operation of said second mixing operation as said lookup index for said first S-box lookup operation to retrieve bytes of a new right half.
-
-
34. The method according to claim 33, wherein:
-
said step of performing said first mixing operation further comprises the steps of using said left input half and said right input half as operands of said first XOR operation; and
using a result of said first XOR operation and said right input half that has been effectively rotated right one byte as operands of said second XOR operation; and
said step of performing said second mixing operation further comprises the steps of;
using said right input half and said new left half that has been effectively rotated right one byte as operands of said firs XOR operation; and
using an output of said first XOR operation and said new left half that has been effectively rotated left two bytes as operands of said second XOR operation.
-
-
35. The method according to claim 32, wherein said step of performing said permuting function further comprises the steps of:
-
dividing said plurality of mixed segments into a left mixed half and a right mixed half; and
swapping said left mixed half with said right mixed half.
-
-
36. The method according to claim 32, wherein said step of performing said key-dependent substitution function further comprises the steps of:
-
using a selected one of said generated sub-keys which is uniquely associated with a current round number as an operand of said third XOR operation, along with said permuted block; and
performing said second S-box lookup operation using each byte of a result of said third XOR operation as an index to retrieve each of said substituted bytes.
-
-
37. The method according to claim 32, wherein said step of performing said mixing function and said step of performing said key-dependent substitution function perform said first S-box lookup operation and said second S-box lookup operation, respectively, by accessing a selected one of two distinct S-boxes using a one-byte index, each of said S-boxes having 256 distinct entries, each of said entries being a one-byte value.
-
38. The method according to claim 32, wherein one or more of said steps is embodied in a hardware chip.
-
39. The method according to claim 32, wherein:
-
particular values for one or more o said key length, said block length, and said number of rounds are input by a user prior to a final production of said method;
said final production is then optimized for said one or more particular values; and
said determining step therefore operating as if said one or more particular values are fixed.
-
-
40. The method according to claim 32, further comprising the step of:
decrypting said encrypted data segments, resulting in restoration of said plurality of input data segments, by performing a set of inverse round functions said number of times equal to said number of rounds, wherein said set of inverse round functions comprises an inverse key-dependent substitution function which is inverse to said key-dependent substitution function, an inverse permutation function which is inverse to said permutation function, and an inverse mixing function which is inverse to said mixing function.
-
41. A method of performing a symmetric key block cipher which supports a variable length input key, a variable length block, and a variable number of rounds, comprising the steps of:
-
determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
generating a plurality of sub-keys using said symmetric input key as an input value, wherein each of said generated sub-keys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
obtaining an input data block to be encrypted, wherein said input data block comprises a plurality of input data segments, each of said input data segments comprised of a plurality of input data bytes wherein said plurality of input data bytes is equal in number to said block length; and
iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data segments, wherein said set of round functions comprises a mixing and permuting function and a key-dependent substitution function, and wherein said step of iteratively performing farther comprises the steps of;
performing said mixing and permuting function by mixing and permuting each of said input data segments using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a mixed and permuted block, performing said key-dependent substitution function on said mixed and permuted block by performing a third XOR operation followed by a second S-box lookup operation, thereby creating a plurality of substituted bytes; and
treating said plurality of substituted bytes as said plurality of input data bytes of said input data segments for a subsequent iteration of said iteratively performing step, provided said number of times has not been reached. - View Dependent Claims (42, 43, 44, 45)
dividing said input data segments into a left input half and a right input half;
performing a first mixing and permuting operation on said right input half, as a single unit, and a second mixing and permuting operation on said left input half, as a single unit, wherein said second mixing and permuting operation uses a different selection of operands for said first and second XOR operations than does said first mixing and permuting operation;
using each byte of a result of said second XOR operation of said first mixing and permuting operation as a lookup index for said first S-box lookup operation to retrieve bytes of a new right half; and
using each byte of an output of said second XOR operation of said second mixing and permuting operation as said lookup index for said first S-box lookup operation to retrieve bytes of a new left half.
-
-
43. The method according to claim 42, wherein:
-
said step of performing said first mixing and permuting operation further comprises the steps of;
using said left input half and said right input half as operands of said first XOR operation; and
using a result of said first XOR operation and said right input half that has been effectively rotated right one byte as operands of said second XOR operation; and
said step of performing said second mixing operation further comprises the steps of;
using said right input half and said new right half that has been effectively rotated right one byte as operands of said first XOR operation; and
using an output of said first XOR operation and said new right half that has been effectively rotated left two bytes as operands of said second XOR operation.
-
-
44. The method according to claim 41, wherein said step of performing said key-dependent substitution function further comprises:
-
using a selected one of said generated sub-keys which is uniquely associated with a current round number as an operand of said third XOR operation, along with said mixed and permuted block; and
performing said second S-box lookup operation using each byte of a result of said third XOR operation as an index to retrieve each of said substituted bytes.
-
-
45. The method according to claim 41, wherein said step of performing said mixing and permuting function and said step of performing said key-dependent substitution function perform said first S-box lookup operation and said second S-box lookup operation, respectively, by accessing a selected one of two distinct S-boxes using a one-byte index, each of said S-boxes having 256 distinct entries, each of said entries being a one-byte value.
-
46. A method of performing a symmetric key block cipher which supports a variable length symmetric input key, a variable length block, and a variable number of rounds and which may be used in a single-byte mode or in a multi-byte mode, said method comprising the steps of:
-
determining a number of rounds of cipher processing to use as said variable number of rounds, a key length of said variable length symmetric input key, and a block length of said variable length block;
generating a plurality of sub-keys using said symmetric input key as an input value, wherein each of said generated subkeys is equal in length to said block length and where a distinct one of said sub-keys is generated for each of said number of rounds;
obtaining an input data block to be encrypted, said input data block comprised of a plurality of input data bytes wherein said plurality is equal in number to said block length;
processing said input data bytes of said input data block as a number of groups, wherein each of said groups comprises a number of bytes and said number of groups is equal to said block length when using said single-byte mode; and
iteratively performing a set of round functions a number of times equal to said number of rounds in order to encrypt said input data groups, wherein said set of round functions comprises a mixing function, a permuting function, and a key-dependent substitution function, and wherein said step of iteratively performing further comprises the steps of;
performing said mixing function by mixing each of said input data groups using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a plurality of mixed groups;
performing said permuting function by swapping each of said mixed groups while maintaining a length of each of said mixed groups, thereby creating a permuted block;
performing said key-dependent substitution function by performing a third XOR operation using a selected one of said generated sub-keys which is uniquely associated with a current round number and said permuted block as operands, followed by a second S-box lookup operation, thereby creating one or more substituted groups; and
treating said one or more substituted groups as said input data groups for a subsequent iteration of said iteratively performing step, provided said number of times has not been reached. - View Dependent Claims (47)
combining said mixing function with said permuting function, thereby creating a mixing and permuting function; replacing said steps of performing said mixing function and performing said permuting function with the step of performing said mixing and permuting function, wherein said step of performing said mixing and permuting function further comprises the step of;
mixing and permuting each of said input data groups using a first XOR operation and a second XOR operation, wherein said first and second XOR operations are different, followed by a first substitution-box (S-box) lookup operation, thereby creating a mixed and permuted block; and
using said mixed and permuted block as said permuted block for said step of performing said key-dependent substitution function.
-
Specification