A data converter (1) capable of reducing a size of the total implementation in a device is a processing apparatus that performs secret converting processing predetermined to input data with 64 bits, the data converter including a finite field polynomial cubing unit (10), data integrating units (11a) to (11d), (12) and (13), a first converter (14), a second converter (15), a data splitting unit (16), and a data integrating unit (17). The finite field polynomial cubing unit (10) performs cubing, on the 32 bits data, in the polynomial residue class ring with a value in the finite field gf (28) as a coefficient and respectively outputs data with 32 bits.
|
6. A data conversion/method comprising:
splitting input data into obtaining a plurality of data blocks;
performing conversion on each one of the plurality of data blocks, the conversion being based on an exponentiation by a predetermined exponent in a polynomial residue class ring with a value in a finite field gf (2n) as a coefficient, the n being a natural number, as a coefficient; and the exponentiation using a predetermined value as an exponent; and
generating output data based on the plurality of data blocks converted by the conversion performance,
wherein the predetermined exponent value is a value that is 3 or larger and except 2m, the m being an integer which is 1 or larger.
1. A data converter comprising:
a splitting an obtaining unit operable to split input data into obtain a plurality of data blocks;
a conversion performing unit operable to perform conversion on each one of the plurality of data blocks, the conversion being based on an exponentiation to a predetermined exponent in a polynomial residue class ring with a value in a finite field gf (2n) as a coefficient, the n being a natural number, as a coefficient; and the exponentiation using a predetermined value as an exponent; and
an output data generating unit operable to generate output data based on the plurality of data blocks converted by the conversion performing unit,
wherein the predetermined exponent value is a value that is 3 or larger and other than 2m, the m being an integer which is 1 or larger.
14. A program recorded on a computer readable medium that causes a computer to execute a method comprising:
splitting input data into obtaining a plurality of data blocks;
performing conversion on each one of the plurality of data blocks using a finite field multiplying unit operable to perform multiplication in a finite field gf (2n), the n being a natural number, the conversion being based on an exponentiation to a predetermined exponent in a polynomial residue class ring with a value in the finite field gf (2n) as a coefficient; coefficient, and the exponentiation using a predetermined value as an exponent; and
generating output data based on the plurality of data blocks converted by the conversion performance,
wherein the predetermined exponent value is a value that is 3 or larger and other than 2m, the m being an integer which is 1 or larger.
11. An integrated circuit comprising:
a finite field multiplying unit operable to perform multiplication in a finite field gf (2n), the n being a natural number;
an error-correction coding unit operable to perform error-correction coding on input data by performing multiplication in the finite field gf (2n) using the finite field multiplying unit;
a splitting unit operable to split the input data into a plurality of data blocks;
a conversion performing unit operable to perform conversion on each one of the plurality of data blocks, the conversion being based on an exponentiation to a predetermined exponent in a polynomial residue class ring with a value in the finite field gf (2n) as a coefficient; coefficient, and the exponentiation using a predetermined value as an exponent; and
generating an output data generating unit operable to generate output data unit based on the plurality of data blocks converted by the conversion performing unit,
wherein the predetermined exponent value is a value that is 3 or larger and other than 2m, the m being an integer that is 1 or larger.
2. The data converter according to
a finite field multiplying unit operable to perform multiplication in the finite field gf (2n),
wherein the conversion performing unit performs exponentiation using the finite field multiplying unit.
3. The data converter according to
wherein the conversion performing unit includes:
an adding subunit operable to add, in the polynomial residue class ring, a predetermined constant and each one of the plurality of data blocks split by the splitting unit, obtained by the obtaining unit, the predetermined constant being the same or variable depending on said each data block; and
a conversion performing subunit operable to perform conversion on said each one of the plurality of data blocks to which the constant is added by the adding subunit, the conversion being based on the exponentiation to the predetermined exponent in the polynomial residue class ring.
4. The data converter according to
wherein the output data generating unit includes:
an adding subunit operable to perform addition in the polynomial residue class ring among the plurality of data blocks converted by the conversion performing unit; and
a multiplying subunit operable to multiply, in the finite field gf (2n), a result of the addition by the adding subunit by a predetermined constant.
5. The data converter according to
a finite field multiplying unit operable to perform multiplication in the finite field gf (2n),
wherein the conversion performing unit performs exponentiation using the finite field multiplying unit, and
the multiplying subunit performs multiplication using the finite field multiplying unit.
7. The data conversion method according to
wherein in the conversion performance, the exponentiation is performed using a finite field multiplying unit operable to perform multiplication in the finite field gf (2n).
8. The data conversion method according to
wherein the conversion performance includes:
adding, in the polynomial residue class ring, a predetermined constant and each one of the plurality of split data blocks, the predetermined constant being the same or variable depending on said each data block; and
performing conversion on said each one of the plurality of data blocks to which the constant is added by the addition, the conversion being based on an the exponentiation to a predetermined exponent in the polynomial residue class ring.
9. The data conversion method according to
wherein the output data generation includes:
performing addition in the polynomial residue class ring among the plurality of data blocks converted by the conversion performance; and
multiplying, in the finite field gf (2n), a result of the addition by a predetermined constant.
10. The data conversion method according to
wherein in the conversion performance, the exponentiation is performed using a finite field multiplying unit operable to perform multiplication in the finite field gf (2n); and
in the multiplication, the multiplication is performed using the finite field multiplying unit operable to perform multiplication in the finite field gf (2n).
12. The integrated circuit according to
wherein the conversion performing unit includes:
an adding subunit operable to add, in the polynomial residue class ring, a predetermined constant and each one of the plurality of data blocks split by the splitting unit, the predetermined constant being the same or variable depending on said each data block; and
a conversion performing subunit operable to perform conversion, using the finite field multiplying unit, on said each one of the plurality of data blocks to which the constant is added by the adding subunit, the conversion being based on the exponentiation to a predetermined exponent in the polynomial residue class ring.
13. The integrated circuit according to
wherein the output data generating unit includes:
an adding subunit operable to perform addition in the polynomial residue class ring among the plurality of data blocks converted by the conversion performing unit; and
a multiplying subunit operable to multiply, in the finite field gf (2n), the result of the addition by the adding subunit by a predetermined constant using the finite field multiplying unit.
15. The program according to
wherein the conversion performance includes:
adding, in the polynomial residue class ring, a predetermined constant and each one of the plurality of the split data blocks, the predetermined constant being the same or variable depending on said each data block; and
performing conversion on said each one of the plurality of data blocks added by the addition using the finite field multiplying unit, the conversion being based on an the exponentiation to a predetermined exponent in the polynomial residue class ring.
16. The program according to
wherein the output data generation includes:
performing addition in the polynomial residue class ring among the plurality of data blocks converted by the conversion performance; and
multiplying, in the finite field gf (2n), a result of the addition by a predetermined constant using the finite field multiplying unit.
|
c6=a6+b6
. . .
c1=a1+b1
c0=a0+b0
Here, an addition “+” between the 1 bit data and the 1 bit data is all performed in the finite field GF (2). That is, 0+0=1+1=0 and therefore calculated as 0+1=1+0=1.
From the above, the addition in the finite field (28) is nothing but performing an exclusive OR operation for each bit. In other words, the result C of the sum of A and B is denoted C=A(+)B.
Next, a multiplication in the finite field GF (28) is explained. As described above, when 8 bit data A, B and C are denoted as the seventh order polynomials a(x), b(x) and c(x), the result C of multiplying 8 bit data A and B is obtained by following equation using corresponding seventh order polynomials a(x), b(x) and c(x).
c(x)=a(x)×b(x)mod m(x)
Here, “f(x) mod g(x)” is a residual calculation result of residual calculation f(x) modulo g(x) and m(x) is, as described before, a primitive polynomial m(x)=x8+x4+x3+x+1 in the finite field GF(28). Also, the polynomial multiplication herein, an addition and a multiplication of coefficients by residual calculation, are calculated in the finite field GF (2). The addition in the finite field GF (2) is as described and the multiplication is given 0×0=0×1=1×0=0, 1×1=1.
An example of the multiplication is explained. Given A=57 (hexadecimal) and B=83 (hexadecimal), a(x)=x6+x4+x2+x+1 and b(x)=x7+x+1. Then, a(x)×b(x)=x13+x11+x9+x8+x6+x5+x4+x3+1 and so a(x)×b(x) mod m(x)=x7+x6+1. Therefore, the result C of multiplying A and B is hexadecimal C1.
Next, it is explained about an operation in the polynomial residue class ring with a value in the finite field GF (28) as a coefficient. In an operation in the polynomial residue class ring, when each byte of the 32 bit data A is denoted A0, A1, A2 and A3 from the high-ordered byte, 1 byte data A0 to A3 are applied to the third order polynomial A(X)=A0+A1×X+A2×X2+A3×X3. Similarly, when each byte of 32 bit data B and C are respectively denoted B0, B1, B2, B3 and C0, C1, C2 and C3, the 1 byte data B0 to B3 and C0 to C3 are respectively applied to the following polynomials of B(X)=B0+B1×X+B2×X2+B3×X3 and C(X)=C0+C1×X+C2×X2+C3×X3. Herein, the addition in the polynomial residue class ring is obtained by C(X)=A(X)+B(X). The addition of polynomial coefficients herein is an addition in the finite field GF (28) as explained above. In other words, the addition of 32 bit data A and B can be obtained only performing an exclusive OR operation for each bit.
Next, the multiplication in the polynomial residual class ring is explained. Given 32 bit data C as the result of multiplying the 32 bit data A and B, as explained above, when each data is applied to the third order polynomials A(X), B(X) and C(X), the multiplication in the polynomial residue class ring is expressed as the following polynomial operation:
C(X)=A(X)×B(X)mod L(X)
Here, L(X) is, as explained, L(X)=X4−1 and the addition and multiplication of the polynomial coefficients are calculated in the finite field GF (28). Therefore, the above equation is calculated as follows:
C(X)=A0×B0+(A0×B1+A1×B0)×X+(A0×B2+A2×B0+A1×B1)×X2+(A0×B3+A1×B2+A2×B1+A3×B0)×X3+(A1×B3+A3×B1+A2×B2)×X4+(A2×B3+A3×B2)×X5+(A3×B3)×X6 (mod X4−1)
Herein, X4=1(mod X4−1) so that the above equation can be modified further as follows:
C(X)=(A0×B0+A3×B1+A2×B2+A1×B3)+(A1×B0+A0×B1+A3×B2+A2×B3)×X+(A2×B0+A1×B1+A0×B2+A3×B3)×X2+(A3×B0+A2×B1+A1×B2+A0×B3)×X3
Therefore, C can be calculated as follows:
C0=A0×B0+A3×B1+A2×B2+A1×B3
C1=A1×B0+A0×B1+A3×B2+A2×B3
C2=A2×B0+A1×B1+A0×B2+A3×B3
C3=A3×B0+A2×B1+A1×B2+A0×B3
The addition “+” and the multiplication “×” herein are operated in the finite field GF (28).
With that, the explanation about the operations in the polynomial residue class ring and in the finite field GF (28) is closed. Then, it is now explained about a performance of the finite field polynomial multiplying unit 100.
The finite field polynomial multiplying unit 100 is a processing unit which multiplies two blocks of input data in the polynomial residue class ring with a value in the finite field GF (28) as a coefficient. It is composed of a finite field multiplying unit 110, data splitting units 111 to 112, data adding units 113 to 115, a data integrating unit 116, and an operation controlling unit 117.
The finite field multiplying unit 110 performs multiplication in the finite field GF (28). Each of the data splitting units 111 and 112 splits 32 bit input data into four blocks of data each having 8 bits. Each of the data adding units 113 to 115 adds two input data in the finite field GF (28). The data integrating unit 116 integrates four blocks of 8 bit data and outputs them as 32 bit data. The operation controlling unit 117 performs input control of multiplicands and multipliers inputted from the data splitting unit 111 and the data splitting unit 112 to the finite field multiplying unit 110 and output destination control of data outputted from the finite field multiplying unit 110. Hereafter, it is explained about performances of the finite field polynomial multiplying unit 100.
The data splitting unit 111 splits the first input data with 32 bits, from a high-ordered byte, into four blocks of data having 8 bits each. Here, the four data blocks are denoted, from the high order byte, X0, X1, X2 and X3. The data splitting unit 112 similarly splits the second input data with 32 bits, from the high-ordered byte, into four blocks of data having 8 bits each. Here, the four blocks of data are denoted, from the high-ordered byte, Y0, Y1, Y2 and Y3. Hereafter, the operation controlling unit 117 controls input and output data when necessary and the finite field multiplying unit 110 and the data adding units 113 to 115 are calculates the bit data D0, D1, D2 and D3 according to the following equations (1) to (4).
D0=X0×Y0+X3×Y1+X2×Y2+X1×Y3 (1)
D1=X1×Y0+X0×Y1+X3×Y2+X2×Y3 (2)
D2=X2×Y0+X1×Y1+X0×Y2+X3×Y3 (3)
D3=X3×Y0+X2×Y1+X1×Y2+X0×Y3 (4)
Note that all of the multiplications “×” and the additions “+” are operated in the finite field GF (28). The reason why the above equations indicate the product of data X and data Y is as explained above.
It is now explained only about performances of the finite polynomial multiplying unit 100 for calculating the data D0. The data D1 to D3 are calculated by the similar performances.
The operation controlling unit 117 selects, as inputs to the finite field multiplying unit 110, data X0 from the data X0 to X3 and data Y0 from the 8 bit data Y0 to Y3. The finite field multiplying unit 110 multiplies data X0 and data Y0 in the finite field GF (28) and outputs the multiplication result as data Z0. That is,
Z0=X0×Y0
is calculated.
Next, by similar performances, the finite field multiplying unit 110 multiplies data X3 and Y1 in the finite field GF (28) and outputs the calculation result as data Z1. That is,
Z1=X3×Y1
is calculated. Similarly,
Z2=X2×Y2
Z3=X1×Y3
are calculated.
After outputting the Z0 to Z3, the data adding units 113 to 115 add data Z0 to Z3 in the finite field GF (28). That is,
D0=Z0+Z1+Z2+Z3
is calculated. Note that the addition in the finite field GF (28) is no other than the exclusive OR operation for each bit itself. Therefore, the above calculations equal to perform the exclusive OR operation on the data Z0 to Z3 for each bit value. Similarly, the data adding units 113 to 115 are obtained by calculating the following equations:
D1=X1×Y0+X0×Y1+X3×Y2+X2×Y3
D2=X2×Y0+X1×Y1+X0×Y2+X3×Y3
D3=X3×Y0+X2×Y1+X1×Y2+X0×Y3
The data integrating unit 116 connects data D0, D1, D2 and D3 from the high-ordered byte and outputs the 32 bit data D as output data of the finite field polynomial multiplying unit 100.
Next, it is explained about an internal configuration and performances of the first converter 14.
(Internal Structure of First Converter 14)
The first converter 14 is a processing unit which performs a predetermined conversion on the 32 bit input data X using an operation in the finite field GF (28) and outputs the 32 bit output data Y. It is composed of a data splitting unit 20, a data integrating unit 21, a constant storing unit 22 and a finite field multiplying unit 210. The data splitting unit 20 splits the 32 bit input data into four blocks of 8 bit data. The data integrating unit 21 integrates the four blocks of 8 bit data and outputs them as the 32 bit data. The constant storing unit 22 stores four 8 bit constants C1 to C4. The finite field multiplying unit 210 multiplies the two blocks of 8 bit input data in the finite field GF (28) and outputs 8 bit output data. Hereafter, it is explained about performances of the first converter 14 are explained.
The data splitting unit 20 splits the 32 bit input data, from the high-ordered byte, into blocks of data having 8 bits each. Here, 8 bit data after the split is denoted data X0, X1, X2 and X3 from the high-ordered byte. The finite field multiplying unit 210 multiplies the data X0 and the 8 bit constant C1 stored in the constant storing unit 22 in the finite field GF (28) and outputs the result as output data Y0. Similarly, the finite field multiplying unit 210 i) multiplies the data X1 and the constant C2 and outputs as data Y1, ii) multiplies the data X2 and the constant C3 and outputs as data Y2, and iii) multiplies the data X3 and the constant C4 and outputs as data Y3. According to the series of performances following equations are calculated:
Y0=C1×X0
Y1=C2×X1
Y2=C3×X2
Y3=C4×X3
Note that all of the multiplications “×” are calculated in the finite field GF (28).
After the processing, the data integrating unit 21 connects data Y0, Y1, Y2 and Y3 from the high-ordered byte and outputs the 32 bit data Y as output data of the first converter 14.
(Internal Configuration of Second Converter 15)
As shown in
Next, with reference to
(Internal Configurations of the Finite Field Multiplying Units 110, 210 and 310)
The finite field multiplying units 110, 210 and 310 have same internal configuration and perform same performance. Therefore, the performance of the finite field multiplying unit 110 is only explained in here. Whereas the multiplication method in the finite field GF (28) is as explained above, the configuration for realizing the calculation in a circuit compact in size is explained in here.
The finite field multiplying unit 110 is a processing unit which multiplies the first 8 bit input data X and the second 8 bit input data Y in the finite field GF (28) and outputs 8 bit output data Z. It is composed of a first input controlling unit 411, a second input controlling unit 414, an output controlling unit 412, a finite field doubling unit 410, a data integrating unit 413, and a data splitting unit 415.
Each of the first input controlling unit 411 and the second input controlling unit 414 performs control for selecting either one of the two input data blocks and outputting the selected data block. The finite field doubling unit 410 doubles the input data in the finite field GF (28). The data integrating unit 413 integrates two input data. The data splitting unit 415 splits the input data into a plurality of data. Hereafter, it is explained about performances of the finite field multiplying unit 110.
First, the data splitting unit 415 splits 8 bit second input data Y into one bit each from the high-ordered bit and each value is denoted Y7, Y6, . . . , and Y0. Then, the following processes (1) to (5) are repeated in the order of i=7, 6, 5, 4, 3, 2, 1 and 0.
(1) The first input controlling unit 411 inputs, into the finite field doubling unit 410, an initial value=0 of the 8 bits when i=7 and inputs 8 bit data to be outputted from the output controlling unit 412 when i≠7.
(2) The finite field doubling unit 410 doubles the 8 bit data inputted from the first input controlling unit 411 in the finite field GF (28) and inputs the 8 bit data which is the result into the data integrating unit 413.
(3) The second input controlling unit 414 inputs, into the data integrating unit 413, 8 bit constant 0 when Yi (i=7, 6, . . . , 0) or the first input data X for other cases.
(4) The data integrating unit 413 performs exclusive OR operation for each bit on the 8 bit data inputted from the finite field doubling unit 410 and the 8 bit data inputted from the second input controlling unit 414 and inputs the 8 bit data resulting from the operation into the output controlling unit 412.
(5) The output controlling unit 412 inputs, for given i≠0, the 8 bit data inputted from the data integrating unit 413 into the first input controlling unit 411. After that, the value of i is reduced only 1 and the processing is restarted from the process (1). For given i=0, the output controlling unit 412 outputs the 8 bit data inputted from the data integrating unit 413 as output data of the finite field multiplying unit 110. Then, the block of processes is terminated.
It is briefly explained about the reason why the multiplication of the first input data X and the second input data Y can be calculated through the above mentioned processes.
Taking values Y7, Y6, . . . , and Y0 for each bit, the second input data is denoted:
Y=Y7×27+Y6×26+ . . . +Yi×2i+ . . . +Y0
So,
This equation is a basis of the above mentioned processes.
Next, it is explained about an internal configuration and performances of the finite field doubling unit 410.
(Internal Configuration of Finite Field Doubling Unit 410)
The finite field doubling unit 410 doubles the inputted 8 bit data X in the finite field GF (28) and outputs the 8 bit data Y as the result. It is composed of a data splitting unit 511, a data integrating unit 512 and data integrating units 513 to 515.
The data splitting unit 511 splits the input data into data for each 1 bit. The data integrating unit 512 integrates a plurality of input data into single data and outputs the integrated data. Each of the data integrating units 513 to 515 integrates two blocks of input data. Hereafter performances of the finite field doubling unit 410 are explained.
Firstly, the data splitting unit 511 splits the 8 bit input data X into one bit each from the high-ordered bit and outputs as data X7, X6, . . . , X0 from the high-ordered bit. Next, the data integrating unit 513 performs exclusive OR operation between the data X7 and data X3 and outputs the result as data Y4. The data integrating unit 514 performs exclusive OR operation between the data X7 and data X2 and outputs the result data Y3. The data integrating unit 515 performs exclusive OR operation between the data X7 and data X0 and outputs the result as data Y1. Also, the data X6, X5, X4, X1 and X7 are respectively denoted data Y7, Y6, Y5, Y2 and Y0. The data integrating unit 512 outputs, as output data of the finite field doubling unit 410, 8 bit data which data Y7, Y6, Y5, . . . , Y0 are integrated in this order from the high-ordered bit.
By denoting, for each bit X7, X6, . . . , and X0 composed of the 8 bit input data X:
Y7=X6
X6=X5
Y5=X4
Y4=X3(30 )X7
Y3=X2(30 )X7
Y2=X1
Y1=X0(30 )X7
Y0=X7
the finite field doubling unit 410 calculates values of each bit Y7, Y6, . . . , and Y0 composed of the 8 bit output data Y. The output data Y herein indicates a result of doubling the input data X in the finite field GF (28). It is explained in the following.
The input data X is denoted by a following polynomial of α whose coefficient is the value in the finite field GF (2).
X7×α7+6×α6+ . . . +X1×α+X0
Herein, doubling in the finite field GF (28) means to multiply α to the above polynomial. Therefore,
X7×α8+X6×α7+ . . . +X1×α2+X0×α
Here, the primitive polynomial is x8+x4+x3+x+1 so holds α8=α4+α3+α+1. Therefore, the above polynomial is reconstructed to,
X6×α7+X5×α6+X4×α3+(X3+X7)×α4+(X2+X7)×α3+X1×α+(X0 +X7)
This polynomial corresponds to:
Y7×α7+Y5×α6+ . . . +Y1×α+Y0
Thus, the reason why the processes by the finite field doubling unit 410 are performed is explained.
The data converters 1 and 2 perform following processes on the 64 bit input data X.
(1) Split the input data X into the high-ordered 32 bits and the low-ordered 32 bits and denote respectively data X0 and X1.
(2) Calculate T0=(X0+K1)3+(X1+K2)3 and T1=(X0+K3)3+(X1+K4)3. Note that the addition and multiplication herein are all calculated in the polynomial residue class ring which determines a value in the finite field GF (28) as a coefficient.
(3) Split the 32 bits data T0 into 8 bits data from the high ordered byte. The split data are respectively denoted data a0, a1, a2 and a3. Also, split the 32 bit data T1 into data blocks with 8 bits each from the high ordered byte. The split data are respectively denoted data b0, b1, b2 and b3.
(4) Calculate G0=C1×a0 |C2|a1 |C3×a2|C4|a3 and G1=C5×b0|C6×b1|C7×b2|C8×b3 and output G0|G1 as output data. Note that “|” indicates data concatenation and the above multiplications are all calculated in the finite field GF (28).
As clear from the equations (1) to (4), in the multiplication in the polynomial residue class ring with a value in the finite field GF (28) as a coefficient, even if a part of the input data is changed, the change influences all of the output data. For example, assume that the value of data X0 is changed in the equations (1) to (4). The data X0 is used in all of the equations (1) to (4). Therefore, the change influences all of the output data D0 to D3. The same thing applies to other values (X1 to X3, Y0 to Y3). Accordingly, in the present embodiment, a high probability of data confusion can be realized using the above multiplications for the converting processing. Next, in the present embodiment, an exponentiation is used instead of the multiplication of two or more variables (e.g. X×Y, X×Y×Z). This is because that, in the case of the multiplication of two or more variables, the result of the multiplication becomes always 0 if the value of any one of the variables is 0, that is, that there are many combinations of the value of input variables which lead the value of the multiplication result 0. Thus, a good confusion probability is not shown. On the other hand, in the case of the exponentiation, the calculation result only becomes 0 when the value of the input variable is 0. Therefore, a high probability of data is guaranteed without lowering the probability of data confusion as described above.
Furthermore, in the present embodiment, the calculation raised to cube is used. This results in the following reasons. First, when given a conversion such as Y=X2 using the calculation in square, an output value for the input value α is α2. Next, an output value when a difference Δ is added to the input value α is (α+Δ)2=α2+α×Δ+Δ×α+Δ2. Here, α×Δ=Δ×α and α×Δ+α×Δ=0 (both are obvious from the calculation method in the finite field GF (28)). So, (α+Δ)2=α2+Δ2. Therefore, a change value of the output value by adding the difference Δ to the input value is Δ2. That is, the change value of the output value become a constant output change value Δ2 regardless of the input value α so that it is not a preferred characteristic in terms of the data confusion. Consequently, it is necessary to use exponentiation at least in the cube or more. In the present embodiment, the exponentiation in cube is used since a converting processing load becomes higher as the exponentiation processing is more as the exponent is higher. Herein,
Therefore, in the case of the cubing operation, the output difference is not constant regardless of the input value α as in the squaring operation. Note that in the case where the exponent N for exponentiation is N=2k (k is an integer of 1 or more), the output value is (α+Δ)^(2k)=α^(2k)+Δ^(2k), being obtained by adding the input difference Δ to the input value a in exponentiation XN as the data converting processing. The following explains about that the output value becomes constant regardless of the input value. Here, “X^α” indicates X raised to the αth exponent.
When k=1, the exponent=2, therefore the output value based on the above explanation is (α+Δ)2=α2+Δ2. Next, when k=m and the exponent=2m, if (α+Δ)^(2m)=α^(2m)+Δ(2m) is hold, (α+Δ)^(2m+1)={(α+Δ)^(2m)}2={α^(2m)+Δ^(2m)}2=α(2m+1)+Δ^(2m+1) is hold. Therefore, the above equation is hold when k=m+1. Accordingly, it is indicated that, by the mathematical induction, for an arbitral integer k which is one or larger, the equation (α+Δ)^(2k)=α^(2k)+Δ^(2k) is hold. Consequently, it is shown that the exponent can be a value other than 2k (k is an integer of 1 or larger). That is, whereas 3 is used of the exponent in the present embodiment, the value may be the value of 3 or larger other than 2k (k is an integer of 1 or larger) unless it does not mind to take some time for the processing in the data converter.
Also, in the present embodiment, an addition (exclusive OR operation) by a constant K is calculated before the exponentiation such as (X+K)3. Here, by changing the constant K, many variations can be given to the converting processing in the data converter. For example, different converting processing can be used for authenticating each subject to be authenticated by using different constant K depending on the subject to be authenticated.
Herein, when the value of (X+K)3 is 0 is only when X=Y. Therefore, a merit of guaranteeing high probability of data confusion is not lost by using the exponentiation as described.
Also, in the present embodiment, the same exponentiation in cube is performed on four data blocks of A0 to A3. However, it is not necessary to be in the same exponent but the exponent may be different from one another.
Further, the data converter according to the present embodiment uses an operation processing in the finite field GF (28) for the processing which becomes a core for the data confusion. Therefore, a circuit can be shared with the operation circuit in the finite field GF (28), being used for the error-correcting code circuit such as Reed-Solomon codes and Bose-Chaudhuri-Hocquenghem (BCH) codes. As the consequence, an implementation size in an appliance as a whole can be reduced and the appliance implementation in a compact circuit size is realized.
Note that each data size of the present invention is just an example and it can be beyond the data size. Also, the primitive polynomial and the residue polynomial according to the present embodiment are just examples. Therefore, the size is not limited to this.
Furthermore, the present embodiment describes about the case where the data converter is used in the authentication system. However, the data converter of the present embodiment can be used unless it uses a secret data converter. As other applied examples of using the data converter is that, for example, it can be applied to a content distribution system as shown in FIG. 9. The content distribution system is composed on a content distribution device 7 which distributes encrypted content via broadcasting or a network, and a reproduction device 8 which receives, decodes and reproduces the distributed encrypted content. The content distribution device 7 converts key seed data (data to be a seed for generating a content key) in the data converter 70 and generates the content key. The content encryption device 71 then encrypts the content data in plaintext and generates the encrypted content data. After the above processing, the content distribution device 7 sends the key seed data and the encrypted content data to the reproduction device 8. The reproduction device 8 which received the data firstly, in the data converter 8, converts the key seed data and generates the content key. Then, the content decoding unit 81 decodes the encrypted content data and obtains the content in plaintext. Only the reproduction device allowed to reproduce the content can prevent the content reproduction by an illegal reproduction device by mounting the same data converter which the content distribution device has.
Also, in the present embodiment, whereas fixed values K1 to K4 for integrating data in the data integration units 11a to 11d are previously fixed values, these fixed values may be inputted from outside of the data converter so that a user can freely set the values. Further, the constants C1 to C4 are also previously fixed values to be stored in the constant storing unit 22. However, these values may be also inputted from outside of the data converter so that the user can freely set the values.
Furthermore in the present embodiment, whereas the finite field GF (28) is used as a finite field, other finite fields may be applied. For example, it may be the finite field GF (2n) (n is a natural number).
Note that each functional block in the block diagrams (
As shown in
The Reed-Solomon error correction coding unit 601 is a processing unit which performs Reed-Solomon error correction coding on the inputted data and output the coded data. It has a data receiving unit 602 and a coding unit 603. The data receiving unit 602 is a processing unit operable to receive data to be inputted from outside. The coding unit 603 is a processing unit which, responding to the data receiving unit 602, performs the Reed-Solomon error correction coding by performing the multiplication in the finite field GF (2n) on the data received at the data receiving unit 602. The coding unit 603 has a finite field multiplying unit 110 which performs multiplication in the finite field GF (2n) on the data. A configuration of the finite field multiplying unit 110 is as described above.
While the data converter 604 has a configuration similar to that of the data converter 1(2), it uses a finite field polynomial multiplying unit 605 in place of the finite field polynomial multiplying unit 100, a first converter 606 in place of the first converter 14, and a second converter 607 in place of the second converter 15. The finite field polynomial multiplying unit 605 differs from the finite field polynomial multiplying unit 100 in that it performs multiplication in the finite field GF (2n) using the finite field polynomial multiplying unit 110 set in the coding unit 603. Other configurations of the finite field polynomial multiplying unit 605 are same as those of the finite field polynomial multiplying unit 110. The first converter 606 differs from the first converter 14 in that it performs multiplication in the finite field GF (2n) using the finite field multiplying unit 110 set in the coding unit 603. Other configurations of the first converter 606 are same as those of the first converter 14. The second converter 607 differs from the second converter 15 in that it performs multiplication in the finite field GF (2n) using the finite field multiplying unit 110 set in the coding unit 603. Other configurations of the second converter 607 are same as those of the second converter 15.
Accordingly, the Reed-Solomon error correction coding unit 601 and the data converter 604 can share the finite field multiplying unit 110. Therefore, a circuit scale of the LSI can be reduced.
Here, the error correction/data converter 600 is realized by the LSI. However, it may be called as IC, system LSI, super LSI and ultra LSI depending on the difference of the integration density.
In addition, a method of constructing the integrated circuit is not limited to the LSI. It can be realized by a special circuit or a general processor. A Field Programmable Gate Array (FPGA) capable of programming and a reconfigurable processor capable of reconfiguring a connection and a setting of the circuit cell inside the LSI after manufacturing the LSI may be used.
Furthermore, if a technique of constructing the integrated circuit which can be replaced of the LSI according to the development of the semiconductor technology and an emerging technology is introduced, the functional block may be of course integrated using the newly introduced technique. As another technology, it is possible that a biotechnology and the like may be used.
Although only an exemplary embodiment of this invention has been described in detail above, those skilled in the art will readily appreciate that many modifications are possible in the exemplary embodiment without materially departing from the novel teachings and advantages of this invention. Accordingly, all such modifications are intended to be included within the scope of this invention.
The data converter according to the present invention can reduce a scale of a circuit as a whole including a data converter by sharing a data conversion with an error correction coding circuit. Therefore, for example, it is useful for an apparatus having a function of authenticating a communication partner via a communication channel. Also, not only limited to this example, this invention applies to any apparatuses unless they need to mount any kind of a data conversion circuit.
Tatebayashi, Makoto, Usui, Makoto, Yokota, Kaoru, Ohmori, Motoji, Yamamichi, Keiko, Yamamichi, Satomi, Yamamichi, Masami
Patent | Priority | Assignee | Title |
8856200, | Sep 26 2007 | Kabushiki Kaisha Toshiba | Exponentiation calculation apparatus and exponentiation calculation method |
Patent | Priority | Assignee | Title |
5220568, | May 31 1988 | Eastman Kodak Company | Shift correcting code for channel encoded data |
5532694, | Jan 13 1989 | HI FN, INC | Data compression apparatus and method using matching string searching and Huffman encoding |
6202076, | Jan 29 1997 | Nippon Telegraph and Telephone Corporation | Scheme for arithmetic operations in finite field and group operations over elliptic curves realizing improved computational speed |
6320520, | Feb 05 1999 | Qualcomm Incorporated | Information additive group code generator and decoder for communications systems |
6343305, | Sep 14 1999 | The State of Oregon Acting by and through the State Board of Higher Education on Behalf of Oregon State University | Methods and apparatus for multiplication in a galois field GF (2m), encoders and decoders using same |
6411223, | Oct 18 2000 | Qualcomm Incorporated | Generating high weight encoding symbols using a basis |
6771197, | Sep 26 2003 | Mitsubishi Electric Research Laboratories, Inc. | Quantizing signals using sparse generator factor graph codes |
6831574, | Oct 03 2003 | COLLISION COMMUNICATIONS, INC | Multi-turbo multi-user detector |
7243289, | Jan 25 2003 | Oracle International Corporation | Method and system for efficiently computing cyclic redundancy checks |
EP1217750, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Jan 09 2007 | Panasonic Corporation | (assignment on the face of the patent) | / |
Date | Maintenance Fee Events |
Jul 23 2009 | ASPN: Payor Number Assigned. |
Jul 29 2009 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Mar 13 2013 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Jul 27 2017 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
May 12 2012 | 4 years fee payment window open |
Nov 12 2012 | 6 months grace period start (w surcharge) |
May 12 2013 | patent expiry (for year 4) |
May 12 2015 | 2 years to revive unintentionally abandoned end. (for year 4) |
May 12 2016 | 8 years fee payment window open |
Nov 12 2016 | 6 months grace period start (w surcharge) |
May 12 2017 | patent expiry (for year 8) |
May 12 2019 | 2 years to revive unintentionally abandoned end. (for year 8) |
May 12 2020 | 12 years fee payment window open |
Nov 12 2020 | 6 months grace period start (w surcharge) |
May 12 2021 | patent expiry (for year 12) |
May 12 2023 | 2 years to revive unintentionally abandoned end. (for year 12) |