Methods and apparatus for parallel implementations of table look-ups and ciphering
First Claim
1. A method comprising:
- responsive to a plurality of inputs, each input being defined by a first set of bits and a second set of at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
for each of a plurality of look-up tables each having a plurality of elements, looking-up one of the plurality of elements of the look-up table using the first set of bits that define the input to obtain an output, the output from each of the plurality of look-up tables collectively comprising a set of corresponding outputs; and
selecting a corresponding output from the set of corresponding outputs using the second set of a least one bit that defines the input.
4 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus are used to generate outputs according to a ciphering algorithm which for each of the outputs operates on a respective input using a respective key. The ciphering algorithm has a plurality of rounds in which functions are evaluated. For a least one of the functions, outputs are generated by looking up at least one look-up table with each look-up table being looked-up in parallel using respective inputs. Different methods for parallel table look-up are provided. The methods allows the ciphering algorithm to be implemented partially or entirely in parallel. An example parallel implementation involves the Kasumi algorithm in which S7 and S9 functions are evaluated in parallel for a plurality of inputs using vector instructions on an SIMD (Single Instruction Multiple Data) architecture.
14 Citations
76 Claims
-
1. A method comprising:
-
responsive to a plurality of inputs, each input being defined by a first set of bits and a second set of at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
for each of a plurality of look-up tables each having a plurality of elements, looking-up one of the plurality of elements of the look-up table using the first set of bits that define the input to obtain an output, the output from each of the plurality of look-up tables collectively comprising a set of corresponding outputs; and
selecting a corresponding output from the set of corresponding outputs using the second set of a least one bit that defines the input. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. An apparatus comprising:
-
a memory adapted to store a plurality of elements of each of a plurality of look-up tables; and
a processor adapted to;
responsive to receiving a plurality of inputs, each input being defined by a first set of bits and a second set of at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
for each of the plurality of look-up tables, look-up one of the plurality of elements of the look-up table using the first set of bits that define the input to obtain an output, the output from each of the plurality of look-up tables collectively comprising a set of corresponding outputs; and
select a corresponding output from the set of corresponding outputs using the second set of at least one bit that define the input. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method comprising:
-
responsive to a plurality of inputs each defined by a first plurality of bits, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
for each of a plurality of look-up tables each having a plurality of elements;
selecting a respective subset of bits of the first plurality of bits that define the input, the bits of the respective subset of bits comprising fewer bits than the first plurality of bits of the input; and
looking-up an element of the plurality of elements of the look-up table using the subset of bits to obtain an output; and
combining the outputs obtained from the plurality of look-up tables to obtain at least one bit. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. An apparatus comprising:
-
a memory adapted to store a plurality of elements of each of a plurality of look-up tables; and
a processor adapted to;
responsive to a plurality of inputs each defined by a first plurality of bits, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
for each look-up table of the plurality of look-up tables;
select a respective subset of bits of then first plurality of bits that define the input, the bits of the respective subset of bits comprising fewer bits than the first plurality of bits of the input; and
look-up an element of the plurality of elements of the look-up table using the subset of bits to obtain an output; and
combine the outputs obtained from the plurality of look-up tables to obtain at least one bit. - View Dependent Claims (36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48)
-
-
49. An article of manufacture comprising:
-
a computer usable medium having computer readable program code means embodied therein, the computer readable code means in said article of manufacture comprising;
responsive to a plurality of inputs, each input being defined by a first set of bits and a second set of at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
computer readable code means for, for each of a plurality of look-up tables each having a plurality of elements, looking-up one of the plurality of elements of the look-up table using the first set of bits that define the input to obtain an output, the output from each of the plurality of look-up tables collectively comprising a set of corresponding outputs; and
computer readable code means for selecting a corresponding output from the set of corresponding outputs using the second set of at least one bit that defines the input.
-
-
50. An article of manufacture comprising:
-
a computer usable medium having computer readable program code means embodied therein, the computer readable code means in said article of manufacture comprising;
responsive to a plurality of inputs each defined by a first plurality of bits, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
computer readable code means for, for each of a plurality of look-up tables each having a plurality of elements;
selecting a respective subset of bits of the first plurality of bits that define the input, the bits of the respective subset of bits comprising fewer bits than the first plurality of bits of the input; and
looking-up an element of the plurality of elements of the look-up table using the subset of bits to obtain an output; and
computer readable code means for combining the outputs obtained from each look-up table to obtain at least one bit.
-
-
51. A method comprising:
-
responsive to N Kin-bit inputs;
performing bit permutation/reordering on the N Kin-bit inputs to produce M parallel sets of outputs wherein N and Kin are integers satisfying N, Kin≧
2, an ith set of outputs of the M parallel sets of outputs containing N sets of bits Li,in bits in length with i and Li,in being integers satisfying i=1 to M and 1≧
Li,in<
Kin, the ith set of outputs defining a respective subset of the Kin bits of the inputs;
for each parallel set of outputs, performing a parallel lookup table operation to generate a corresponding parallel set of outputs containing N outputs, each being associated with a respective one of the N Kin-bit inputs and each being Li,out bits in length, Li,out being an integer satisfying Li,out≧
1; and
for each of the N Kin-bit inputs, generating a respective output by performing a bit combining operation on the outputs from the parallel look-up table operations associated with the input. - View Dependent Claims (52, 53, 54)
-
-
55. A method of generating a plurality of outputs according to a ciphering algorithm which for each of the plurality of outputs operates on a respective input using a respective key, the ciphering algorithm comprising a plurality of rounds in which functions are evaluated, the method comprising, for at least one function of the functions of at least one of the plurality of rounds:
-
responsive to a plurality of first inputs each being associated with one of the respective inputs, for each first input and in parallel with other first inputs of the plurality of first inputs;
generating an output by looking up at least one look-up table using the input, each look-up table having a plurality of elements. - View Dependent Claims (56, 57, 58, 59, 60, 61, 62, 63)
-
-
64. An apparatus for generating a plurality of outputs according to a ciphering algorithm which for each of the plurality of outputs operates on a respective input using a respective key, the ciphering algorithm comprising a plurality of rounds in which functions are evaluated, the apparatus comprising:
-
a memory adapted to store a plurality of elements of each of at least one look-up table; and
a processor adapted to;
for at least one function of the functions of at least one of the plurality of rounds;
responsive to a plurality of first inputs each being associated with one of the respective inputs, for each first input and in parallel with other first inputs of the plurality of first inputs;
generate an output by looking up at least one look-up table using the input, each look-up table having a plurality of elements. - View Dependent Claims (65, 66, 67, 68, 69, 70, 71, 72)
-
-
73. An article of manufacture comprising:
-
a computer usable medium having computer readable program code means embodied therein for generating a plurality of outputs according to a ciphering algorithm which for each of the plurality of outputs operates on a respective input using a respective key, the ciphering algorithm comprising a plurality of rounds in which functions are evaluated, the computer readable code means in said article of manufacture comprising;
computer readable code means for;
for at least one function of the functions of at least one of the plurality of rounds;
responsive to a plurality of first inputs each being associated with one of the respective inputs, for each first input and in parallel with other first inputs of the plurality of first inputs;
generating an output by looking up at least one look-up table using the input, each look-up table having a plurality of elements.
-
-
74. A method comprising:
-
responsive to a plurality of inputs, each input being defined by at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
looking-up a look-up table having a plurality of elements using the at least one bit that define the input to obtain an output.
-
-
75. An apparatus comprising:
-
a memory adapted to store a plurality of elements of a look-up table; and
a processor adapted to;
responsive to a plurality of inputs, each input being defined by at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
look-up the look-up table using the at least one bit that define the input to obtain an output.
-
-
76. An article of manufacture comprising:
-
a computer usable medium having computer readable program code means embodied therein, the computer readable code means in said article of manufacture comprising;
computer readable code means for, responsive to a plurality of inputs, each input being defined by at least one bit, for each input of the plurality of inputs and in parallel with other inputs of the plurality of inputs;
looking-up a look-up table having a plurality of elements using the at least one bit that define the input to obtain an output.
-
Specification