IP Library Granted Patent US 8,374,351
Granted Patent B2
US 8,374,351 · App. 12/374,397 · Granted Feb 12, 2013

Encryption device, program, and method

Inventors: Yukiyasu Tsunoo (Tokyo, JP); Teruo Saito (Ishikawa, JP); Hiroyasu Kubo (Ishikawa, JP); Tomoyasu Suzaki (Ishikawa, JP)
Assignee: NEC Corporation
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,374,351
App. No.
12/374,397
Granted
Feb 12, 2013
Kind
B2
Abstract

Disclosed is an encryption device for generating a pseudo-random number based on a secret key and generates an encrypted text by applying the pseudo-random number sequence to a plain text, uses, an internal state in accordance with a state based on a permutation of a sequence of a finite number of numeric values, as an internal state used for generation of the pseudo-random number sequence, executes a predetermined leftward or rightward rotate shift, depending on a number smaller than an internal state number, based on the result of linear or non-linear, or combination of linear and non-linear using one or more numeric values of the internal state and sets at least one temporary variable used for generation of the pseudo-random number sequence to be a temporary variable having as a value a result of the execution of the predetermined leftward or rightward rotate shift, and generates the pseudo-random number by a predetermined prescribed operation on one or a plurality of numeric values of the internal state and the temporary variable.

Claims (81)

1. An encryption device including

a generator which generates a pseudo-random number sequence based on a secret key and applies the pseudo-random number sequence to a plain text so as to generate an encrypted text,

the generator comprising:

a section that uses an internal state in accordance with a state based on a permutation of a sequence of a finite number of numeric values, as an internal state used for generation of the pseudo-random number sequence, and

executes a predetermined leftward or rightward rotate shift, depending on a number smaller than an internal state number, based on the result of a linear operation or a non-linear operation, or a combination of a linear operation and a non-linear operation using one or more numeric values of the internal state, and sets at least one temporary variable used for generation of the pseudo-random number sequence to be a temporary variable having as a value a result of the execution of the predetermined leftward or rightward rotate shift, and

a section that generates the pseudo-random number by a predetermined prescribed operation on one or a plurality of numeric values of the internal state and the temporary variable.

2. The encryption device according to claim 1 , wherein, with respect to an internal state in accordance with a state based on a permutation of the sequence of the finite number of numeric values, updating the internal state is performed using a linear operation and a non-linear operation, outside of permutation.

3. The encryption device according to claim 1 , wherein, with respect to an internal state in accordance with a state based on a permutation of the sequence of the finite number of numeric values, updating of the internal state is performed using a linear operation and a non-linear operation, outside of permutation, and number of states with respect to the internal state is changed according to one of a monotonic increase and a monotonic decrease.

4. The encryption device according to claim 1 , wherein, with respect to an internal state in accordance with a state based on a permutation of the sequence of the finite number of numeric values, updating of the internal state is performed using a linear operation and a non-linear operation, outside of permutation, and number of states with respect to the internal state is oscillated.

5. The encryption device according to claim 1 , wherein updating of the internal state is performed by any one selected from

performing updating for each output of the pseudo-random number sequence,

performing updating more times than outputs of the pseudo-random number sequence, and

performing updating fewer times than the outputs of the pseudo-random number sequence.

6. The encryption device according to claim 1 , wherein direction and/or shift number of the rotate shift is dynamically changed depending on a numerical value of the internal state.

7. The encryption device according to claim 1 , wherein direction and shift number of the rotate shift are changed according to a value of a pre-determined table.

8. The encryption device according to claim 1 , comprising:

a first processing unit that, as an internal state used for generation of the pseudo-random number sequence,

creates an initial state of the array S, by mixing elements of an array S by repeating permutation of and arithmetic addition of the elements of the array S and, at this time, obtains an initial value of an internal variable k that is the temporary variable, from the elements of the array S; and

a second processing unit that, when generating the pseudo-random number (referred below to as “key stream”),

updates the value of the internal variable k with a value obtained by performing a rotate shift operation on a result of addition of the internal variable k and an element S[j] of the array S related to first and second index variables i and j,

outputs a key stream, based on a result of addition of the internal variable k and a reference result S[(S[i]+S[j])] of the array S according to S[i]+S[j], and

updates the element S[(S[i]+S[j])] of the array S referred to in order to generate the key stream, using the array element S[i] and the internal variable k immediately, after output of the key stream.

9. The encryption device according to claim 8 , wherein number N of elements of the array S and shift number n of a rotate shift have a relationship N=2 n .

10. The encryption device according to claim 1 , comprising:

a first processing unit that, as an internal state used for generation of the pseudo-random number sequence,

creates an initial state of the array S, by mixing elements of an array S by repeating permutation of and arithmetic addition of the elements of the array S, and, at this time, obtains an initial value of an internal variable k that is the temporary variable, from the elements of the array S; and

a second processing unit that, when generating the pseudo-random number (referred below to as “key stream”),

updates a value of the second index variable j, based on a result of an arithmetic addition of a value obtained by performing a first shift number of rotate shift operations on an array element S[i] of a first index variable i, and a second index variable j,

updates a value of the internal variable k, based on a result of an arithmetic addition of a value obtained by performing a second shift number of rotate shift operations on an array element S[j] of a second index variable j, and an internal variable k,

outputs a key stream, based on a result of an arithmetic addition of a value obtained by performing a third shift number of rotate shift operations on the array element S[(S[i]+S[j])] according to S[i]+S[j], and

updates the array element S[(S[i]+S[j])] referred to in order to generate the key stream, using the array element S[i] and the internal variable k immediately after output of the key stream.

11. The encryption device according to claim 1 , comprising:

a first processing unit that, using an initially set array a, performs permutation and mixing of the array a,

obtains an internal variable k that is the temporary variable, by performing arithmetic addition of a corresponding array element a that has undergone a rotate shift operation, and

obtains an array S as an internal state used for generation of the pseudo-random number sequence, by a prescribed operation on elements of the array a that have undergone a rotate shift operation and elements of the array S; and

a second processing unit that, when generating the pseudo-random number (referred below to as “key stream”),

performs an arithmetic addition of an internal variable k and a reference result S[j] of the array S related to first and second index variables i and j,

outputs a key stream, based on the internal variable k and a reference result of the array S according to S[i]+S[j], and

updates entries of S referred to in order to generate the key stream, using the internal variable k, immediately after output of the key stream.

12. A non-transitory computer readable medium containing a program for causing a computer constituting an encryption device which generates a pseudo-random number sequence based on a secret key, and generates an encrypted text by applying the pseudo-random number sequence to a plain text, to execute the processing of:

using, as an internal state used for generation of the pseudo-random number sequence, an internal state in accordance with a state based on a permutation of a sequence of a finite number of numeric values;

executing a predetermined leftward or rightward rotate shift, depending on a number smaller than an internal state number, based on the result of a linear operation or a non-linear operation, or a combination of a linear operation and a non-linear operation using one or more numeric values of the internal state;

setting at least one temporary variable used for generation of the pseudo-random number sequence to be a temporary variable having as a value a result of the execution of the predetermined leftward or rightward rotate shift; and

generating the pseudo-random number by a predetermined prescribed operation on one or a plurality of numeric values of the internal state and the temporary variable.

13. The medium according to claim 12 , which, with respect to an internal state in accordance with a state based on a permutation of the sequence of the finite number of numeric values, performs updating of the internal state using a linear operation and a non-linear operation, outside of permutation.

14. The medium according to claim 12 , which, with respect to an internal state in accordance with a state based on a permutation of the sequence of the finite number of numeric values, performs updating of the internal state using a linear operation and a non-linear operation, outside of permutation, and changes number of states with respect to the internal state according to one of a monotonic increase and a monotonic decrease.

15. The medium according to claim 12 , which, with respect to an internal state in accordance with a state based on a permutation of the sequence of the finite number of numeric values, performs updating of the internal state using a linear operation and a non-linear operation, outside of permutation, and oscillates number of states with respect to the internal state.

16. The medium according to claim 12 , in which updating of the internal state is performed by any one selected from

performing updating for each output of the pseudo-random number sequence,

performing updating more times than outputs of the pseudo-random number sequence, and

performing updating fewer times than the outputs of the pseudo-random number sequence.

17. The medium according to claim 12 , wherein direction and/or shift number of the rotate shift is dynamically changed depending on a numerical value of the internal state.

18. The medium according to claim 12 , wherein direction and shift number of the rotate shift are changed according to a value of a pre-determined table.

19. The medium according to claim 12 which causes the computer to execute:

a first processing that, as an internal state used for generation of the pseudo-random number sequence,

creates an initial state of the array S, by mixing elements of an array S by repeating permutation of and arithmetic addition of the elements of the array S and, at this time, obtains an initial value of an internal variable k that is the temporary variable, from the elements of the array S; and

a second processing that, when generating the pseudo-random number (referred below to as “key stream”),

updates the value of the internal variable k with a value obtained by performing a rotate shift operation on a result of addition of the internal variable k and an element S[j] of the array S related to first and second index variables i and j,

outputs a key stream, based on a result of addition of the internal variable k and a reference result S[(S[i]+S[j])] of the array S according to S[i]+S[j], and

updates the element S[(S[i]+S[j])] of the array S referred to in order to generate the key stream, using the array element S[i] and the internal variable k immediately, after output of the key stream.

20. The medium according to claim 12 , which causes the computer to execute:

a first processing that, as an internal state used for generation of the pseudo-random number sequence,

creates an initial state of the array S, by mixing elements of an array S by repeating permutation of and arithmetic addition of the elements of the array S, and, at this time, obtains an initial value of an internal variable k that is the temporary variable, from the elements of the array S; and

a second processing that, when generating the pseudo-random number (referred below to as “key stream”),

updates a value of the second index variable j, based on a result of an arithmetic addition of a value obtained by performing a first shift number of rotate shift operations on an array element S[i] of a first index variable i, and a second index variable j,

updates a value of the internal variable k, based on a result of an arithmetic addition of a value obtained by performing a second shift number of rotate shift operations on an array element S[j] of a second index variable j, and an internal variable k,

outputs a key stream, based on a result of an arithmetic addition of a value obtained by performing a third shift number of rotate shift operations on the array element S[(S[i]+S[j])] according to S[i]+S[j], and

updates the array element S[(S[i]+S[j])] referred to in order to generate the key stream, using the array element S[i] and the internal variable k immediately after output of the key stream.

21. The medium according to claim 12 , which causes the computer to execute:

a first processing that, using an initially set array a, performs permutation and mixing of the array a,

obtains an internal variable k that is the temporary variable, by performing arithmetic addition of a corresponding array element a that has undergone a rotate shift operation, and

obtains an array S as an internal state used for generation of the pseudo-random number sequence, by a prescribed operation on elements of the array a that have undergone a rotate shift operation and elements of the array S; and

a second processing that, when generating the pseudo-random number (referred below to as “key stream”),

performs an arithmetic addition of an internal variable k and a reference result S[j] of the array S related to first and second index variables i and j,

outputs a key stream, based on the internal variable k and a reference result of the array S according to S[i]+S[j], and

updates entries of S referred to in order to generate the key stream, using the internal variable k, immediately after output of the key stream.

22. A method of generating a pseudo-random number sequence using a computer, the method comprising:

using an internal state in accordance with a state based on a permutation of a sequence of a finite number of numeric values, as an internal state used for generation of the pseudo-random number sequence;

executing a predetermined leftward or rightward rotate shift, depending on a number smaller than an internal state number, based on the result of a linear operation or a non-linear operation, or a combination of a linear operation and a non-linear operation using one or more numeric values of the internal state;

setting at least one temporary variable used for generation of the pseudo-random number sequence to be a temporary variable having as a value a result of the execution of the predetermined leftward or rightward rotate shift; and

generating the pseudo-random number by a predetermined prescribed operation on one or a plurality of numeric values of the internal state and the temporary variable.

Assignments (2)
MERGER AND CHANGE OF NAME Recorded Jul 10, 2014
From: NEC SOFTWARE HOKURIKU, LTD.; NEC SOFT, LTD.
To: NEC SOLUTION INNOVATORS, LTD.
Reel/Frame 033285/0356 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2009
From: TSUNOO, YUKIYASU; SAITO, TERUO; KUBO, HIROYASU; SUZAKI, TOMOYASU
To: NEC CORPORATION; NEC SOFTWARE HOKURIKU LTD.
Reel/Frame 022126/0773 →
Priority Claims (1)
JP 2006-199681 · Jul 21, 2006 · national
Continuity (1)
Related Publication 20090323956A1 · Dec 31, 2009