IP Library Granted Patent US 8,437,470
Granted Patent B2
US 8,437,470 · App. 11/992,983 · Granted May 7, 2013

Method and system for block cipher encryption

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,437,470
App. No.
11/992,983
Granted
May 7, 2013
Kind
B2
Abstract

A method of encrypting a block of data, is described, the method including providing a combining unit operative to combine a key with a block of data, the block of data expressed as a block of bits, providing a mix and condense unit operative to mix bits included in the block of bits among themselves, receiving an input including the block of data expressed as the block of bits, combining, at the combining unit, the block of bits with a key, and mixing, at the mixing and condensing unit, the combined block of bits, wherein the mix and condense unit includes a plurality of layers, each layer among the plurality of layers including a plurality of mini-functions. Related apparatus and methods are described.

Claims (357)

1. A method of encrypting data, the method comprising:

combining a control input derived from a right part of a Feistel-like structure with a transformation input comprising a left part of the Feistel-like structure;

splitting, at a control input splitter, the control input, into a plurality of control input sub-blocks;

splitting, at a transformation input splitter, the transformation input, into a plurality of transformation input sub-blocks;

linearly combining each one of the plurality of control input sub-blocks with a corresponding one of the plurality of transformation input sub-blocks;

joining a plurality of results of the linear combining with each other at an output joiner; and

outputting a result of the joining,

wherein:

no bit of the output result comprises a linear combination of bits from the control input and bits from the transformation input;

the linearly combining comprises (A(C)×I)⊕C, where C represents the control input sub-block, I represents the transformation input sub-block, and A(C) comprises a matrix depending on C, of size m×m, where m is a size of the control input sub-block, and A(C)×I represents matrix multiplication of A(C) and I; and

A

(

C

)

=

[

1

C

[

0

]

0

0

0

1

C

[

1

]

0

0

0

1

C

[

2

]

0

0

0

1

]

×

[

1

0

0

0

C

[

1

]

1

0

0

0

C

[

2

]

1

0

0

0

C

[

3

]

1

]

where C[0 . . . 3] comprise bits comprised in the control input.

2. A method of encrypting data, the method comprising:

receiving an input comprising a block of data expressed as a block of bits;

expanding the block of data from a first bit size to a second bit size;

combining the block of data of the second bit size with data derived from an encryption key and producing a first output;

mixing the first output at a mix and condensing unit, the mixing comprising key-independent mixing;

condensing, at the mix and condensing unit, the mixed first output to the first bit size, the condensing comprising key-independent condensing, thereby producing a control input of the first bit size;

combining the control input with a transformation input; and

producing an output,

wherein the mix and condensing unit comprises a plurality of mixing and condensing layers and the output comprises a combination of bits comprised in the control input and bits comprised in the transformation input, the output comprising the encrypted data, and

the combining the control input with a transformation input comprises:

splitting, at a control input splitter, the control input, into a plurality of control input sub-blocks;

splitting, at a transformation input splitter, the transformation input, into a plurality of transformation input sub-blocks;

linearly combining each one of the plurality of control input sub-blocks with a corresponding one of the plurality of transformation input sub-blocks, the linearly combining comprising linearly transforming; and

joining the result of the linear combining at an output joiner,

wherein no bit of the combination of bits comprises a linear combination of bits from the control input and bits from the transformation input and the linearly combining comprises (A(C)×I)⊕C, where C represents the control input sub-block, I represents the transformation input sub-block and A(C) comprises a matrix depending on C, of size m×m, where m is a size of the control input sub-block, and A(C)×I represents matrix multiplication of A(C) and I; and

A

(

C

)

=

[

1

C

[

0

]

0

0

0

1

C

[

1

]

0

0

0

1

C

[

2

]

0

0

0

1

]

×

[

1

0

0

0

C

[

1

]

1

0

0

0

C

[

2

]

1

0

0

0

C

[

3

]

1

]

where C[0 . . . 3] comprise bits comprised in the control input.

3. The method according to claim 2 and wherein the producing comprises producing an output comprising a combination of bits comprised in the control input and bits comprised in the transformation input.

4. The method according to claim 2 and wherein the plurality of mixing and condensing layers comprises between 20 and 50 layers.

5. The method according to claim 2 and wherein the layers comprise a plurality of mini-functions, each mini-function comprising a non-linear and substantially balanced function.

6. The method according to claim 5 , and wherein each mini-function receives at least 3 input bits and outputs at least 1 output bit.

7. The method according to claim 2 and wherein the input comprises a right part of a Feistel-like structure.

8. The method according to claim 2 and wherein the second bit size is larger than the first bit size.

9. The method according to claim 2 and wherein the data derived from an encryption key comprises a round key.

10. The method according to claim 2 and wherein each layer of the plurality of mixing and condensing layers comprises a mini-function layer comprising two micro-functions:

one balanced micro-function; and

one non-linear micro-function.

11. The method according to claim 10 and wherein the mini-function layer is operative to perform:

receiving an input;

splitting the input, at a splitter, into a block of balancing bits and a block of remaining input bits;

executing the method of the non-linear micro-function on the block of remaining input bits;

inputting the result of the non-linear micro-function into the balanced micro-function;

executing the method of the balanced micro-function on the result of the non-linear micro-function and the block of balancing bits; and

outputting a result.

12. The method according to claim 11 and further comprising performing an invertible transformation on the block of balancing bits prior to the executing the method of the balanced micro-function.

13. The method according to claim 12 and Wherein the invertible transformation comprises an S-box.

14. The method according to claim 13 and wherein the S-box comprises a 2 bit-to-2 bit S-box.

15. The method according to claim 10 and further comprising:

providing a first function F i and a second function F j ;

providing a round key generation function, the round key generation function being operative to utilize, in any given round, exactly one of:

the first function F i ; and

the second function F j ;

providing a round mixing function, the round mixing function being operative to utilize, in any given round, exactly one of:

the first function F i ; and

the second function F j ;

utilizing the round key generation function in at least a first round to generate a second round key for use in a second round; and

utilizing the round mixing function in at least the first round to mix a first round key with a cipher state,

wherein one of the following is performed in the first round:

the round key generation function utilizes the first function F i to generate the second round key for use in the second round, substantially simultaneously with the round key mixing function utilizing the second function F j to mix the first round key with the cipher state; and

the round key generation function utilizes the second function F j to generate the second round key for use in the second round, substantially simultaneously with the round key mixing function utilizing the first function F i to mix the first round key with the cipher state.

16. The method according to claim 2 and wherein the transformation input comprises a left part of the Feistel-like structure.

17. The method according to claim 2 and wherein the plurality of mix and condensing layers comprises at least 5 layers.

18. A data encryption apparatus comprising:

a combiner operative to combine a control input derived from a right part of a Feistel-like structure with a transformation input comprising a left part of the Feistel-like structure;

a control input splitter operative to split the control input into a plurality of control input sub-blocks;

a transformation input splitter operative to split the transformation input into a plurality of transformation input sub-blocks;

a linear combiner operative to linearly combine each one of the plurality of control input sub-blocks with a corresponding one of the plurality of transformation input sub-blocks;

an output joiner operative to join a plurality of results of the linear combining with each other; and

an outputter operative to output a result of the output joiner,

wherein:

no bit of the output result comprises a linear combination of bits from the control input and bits from the transformation input; and

the linearly combining comprises (A(C)×I)⊕C, where C represents the control input sub-block, I represents the transformation input sub-block, and A(C) comprises a matrix depending on C, of size m×m, where m is a size of the control input sub-block, and A(C)×I represents matrix multiplication of A(C) and I; and

A

(

C

)

=

[

1

C

[

0

]

0

0

0

1

C

[

1

]

0

0

0

1

C

[

2

]

0

0

0

1

]

×

[

1

0

0

0

C

[

1

]

1

0

0

0

C

[

2

]

1

0

0

0

C

[

3

]

1

]

where C[0 . . . 3] comprise bits comprised in the control input.

19. A data encryption apparatus comprising:

an input receiver operative to receive a block of data expressed as a block of bits;

an expander operative to expand the block of data from a first bit size to a second bit size;

a combiner operative to combine the block of data of the second bit size with data derived from an encryption key thereby producing a first output;

a mix and condensing unit operative to mix the first output, the mixing comprising key-independent mixing;

the mix and condensing unit being further operative to condense the mixed first output to the first bit size, the condensing comprising key-independent condensing, thereby producing a control input of the first bit size;

a combiner operative to combine the control input with a transformation input; and

a producer operative to produce an output,

wherein the mix and condensing unit comprises a plurality of mixing and condensing layers and the output comprises a combination of bits comprised in the control input and bits comprised in the transformation input, the output comprising the encrypted data, and the combiner comprises:

a control input splitter operative to split the control input into a plurality of control input sub-blocks;

a transformation input splitter operative to split the transformation input into a plurality of transformation input sub-blocks;

a linear combiner operative to linearly combining each one of the plurality of control input sub-blocks with a corresponding one of the plurality of transformation input sub-blocks, the linearly combining comprising linearly transforming; and

a joiner operative to join the result of the linear combining at an output joiner,

wherein no bit of the combination of bits comprises a linear combination of bits from the control input and bits from the transformation input and the linearly combining comprises (A(C)×I)⊕C, where C represents the control input sub-block, I represents the transformation input sub-block and A(C) comprises a matrix depending on C, of size m×m, where m is a size of the control input sub-block, and A(C)×I represents matrix multiplication of A(C) and I; and

A

(

C

)

=

[

1

C

[

0

]

0

0

0

1

C

[

1

]

0

0

0

1

C

[

2

]

0

0

0

1

]

×

[

1

0

0

0

C

[

1

]

1

0

0

0

C

[

2

]

1

0

0

0

C

[

3

]

1

]

where C[0 . . . 3] comprise bits comprised in the control input.

20. The apparatus according to claim 19 and wherein the producer produces an output comprising a combination of bits comprised in the control input and bits comprised in the transformation input.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2013
From: NDS LIMITED
To: CISCO TECHNOLOGY, INC.
Reel/Frame 030258/0465 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2011
From: MANTIN, ITSIK; WAISBARD, EREZ; KIPNIS, AVIAD; GRABOVSKY, AHARON
To: NDS LIMITED
Reel/Frame 027361/0976 →
RELEASE OF PATENT SECURITY INTERESTS Recorded Mar 29, 2011
From: J.P.MORGAN EUROPE LIMITED
To: NDS LIMITED; NEWS DATACOM LIMITED
Reel/Frame 026042/0124 →
RELEASE OF INTELLECTUAL PROPERTY SECURITY INTERESTS Recorded Mar 11, 2011
From: NDS HOLDCO, INC.
To: NDS LIMITED; NEWS DATACOM LIMITED
Reel/Frame 025940/0710 →
SECURITY AGREEMENT Recorded May 18, 2009
From: NDS LIMITED; NEWS DATACOM LIMITED
To: NDS HOLDCO, INC.
Reel/Frame 022703/0071 →
SECURITY AGREEMENT Recorded May 14, 2009
From: NDS LIMITED; NEWS DATACOM LIMITED
To: J.P. MORGAN EUROPE LIMITED
Reel/Frame 022678/0712 →