Cryptographic system and method
11271715 · 2022-03-08
Assignee
Inventors
Cpc classification
H04L9/3026
ELECTRICITY
H04L9/002
ELECTRICITY
International classification
H04L9/00
ELECTRICITY
H04L9/30
ELECTRICITY
H04L9/32
ELECTRICITY
Abstract
A system and method for encryption of data. The system and method utilizes a cryptographic function that provides asymmetric encryption/decryption and digital signing capabilities that are hardened against cyber attack from quantum computers.
Claims
1. A cryptographic system, comprising: an input device configured to receive data to be at least one of encrypted, decrypted, signed, and verified; and a processor configured to receive the data and to at least one of encrypt, decrypt, sign, and verify the data using instructions from a cryptographic engine; wherein the instructions, when executed, cause performance of at least one of the encryption, the decryption, the signature, and the verification using a code-based scheme based on a binary irreducible Goppa code in which a support set comprises a rational function having a denominator with a degree that is not greater than a degree of a Goppa polynomial of the Goppa code, and wherein the performance causes resulting data to be protected against an attack from a quantum computer, wherein the instructions when executed further generate a private key satisfying the relationship K={S, P, L, G(x)}, wherein a parity check matrix H is generated for binary generalized Goppa code with Goppa polynomial G(x) of degree equal to t, where G(x) is an irreducible polynomial with coefficients from a Galois field GF(2.sup.m), wherein locator polynomials for support set L of binary generalized (L, G) code are generated as irreducible polynomials with coefficients from the field GF(2.sup.m) having a degree not greater than r, wherein a vector length set N={n.sub.1, n.sub.2, . . . , n.sub.r} of Goppa code is generated, where n.sub.i=I.sub.2m(i), i=1, . . . , r, and n=Σ.sub.i=1.sup.rn.sub.i, where I.sub.2m(i) is a number of irreducible polynomials of degree i with coefficients from the field GF(2.sup.m), wherein a vector position weight set W={w.sub.1, w.sub.2, . . . , w.sub.r} is generated, where the first n.sub.1 positions have weight w.sub.1=1, the second n.sub.2 positions have weight w.sub.2=2, and the last n.sub.r positions have weight w.sub.r=r, wherein a random mt×mt non-singular matrix S is selected, where deg G(x)=t; wherein a random n×n permutation matrix P is selected; and wherein a public key H*=S×H×P is computed.
2. The cryptographic system of claim 1, wherein the instructions when executed also use the Goppa code in a weighted Hamming metric.
3. The cryptographic system of claim 1, wherein the Goppa polynomial has the degree not less than r, where r is a maximum degree of a denominator of a rational function over F.sub.2m[x] in the set of L, where L is a set of rational functions of degree not greater than r, where r is greater than 1, and with coefficients from a finite field GF(2.sup.m).
4. The cryptographic system of claim 3, wherein the instructions when executed also uses the Goppa code in a weighted Hamming metric.
5. The cryptographic system of claim 4, wherein the code-based scheme is a generalized (L, G) code in which a set of proper rational functions (L) over F.sub.2.sub.
6. A cryptographic system, comprising: an input device configured to receive data to be at least one of encrypted, decrypted, signed, and verified; and a processor configured to receive the data and to at least one of encrypt, decrypt, sign, and verify the data using instructions from a cryptographic engine; wherein the instructions, when executed, cause performance of at least one of the encryption, the decryption, the signature, and the verification using a code-based scheme based on a binary irreducible Goppa code in which locator polynomials for support set L of binary generalized (L, G) code are generated as irreducible polynomials with coefficients from a Galois field GF(2.sup.m) have a degree not greater than r, where r is the maximum degree of the denominator of a rational function over F.sub.2m[x], and wherein the performance causes resulting data to be protected against an attack from a quantum computer, wherein the instructions when executed further generate a private key satisfying the relationship K={S, P, L, G(x)}, wherein a parity check matrix H is generated for binary generalized Goppa code with Goppa polynomial G(x) of degree equal to t, where G(x) is an irreducible polynomial with coefficients from the field GF(2.sup.m), wherein a vector length set N={n.sub.1, n.sub.2, . . . , n.sub.r} of Goppa code is generated, where n.sub.i=I.sub.2m(i), i=1, . . . , r, and n=Σ.sub.i=1.sup.rn.sub.i, where I.sub.2m(i) is a number of irreducible polynomials of degree i with coefficients from the field GF(2.sup.m), wherein a vector position weight set W={w.sub.1, w.sub.2, . . . , w.sub.r} is generated, where the first n.sub.1 positions have weight w.sub.1=1, the second n.sub.2 positions have weight w.sub.2=2, and the last n.sub.r positions have weight w.sub.r=r, wherein a random mt×mt non-singular matrix S is selected, where deg G(x)=t; wherein a random n×n permutation matrix P is selected; and wherein a public key H*=S×H×P is computed.
7. The cryptographic system of claim 6, wherein the instructions when executed also uses the Goppa code in a weighted Hamming metric.
8. A method, comprising: receiving data at an input device; and forwarding the data to a processor for at least one of encrypting, decrypting, signing, and verifying the data using instructions provided by a cryptographic engine; wherein the instructions, when executed, cause performance of at least one of the encryption, the decryption, the signature, and the verification using a code-based scheme based on a binary irreducible Goppa code in which a support set comprises a rational function with a denominator having a degree that is not greater than the degree of a Goppa polynomial of the Goppa code, and wherein the performance causes resulting data to be protected against an attack from a quantum computer, wherein the instructions when executed further generate a private key satisfying the relationship K={S, P, L, G(x)}, wherein a parity check matrix H is generated for binary generalized Goppa code with Goppa polynomial G(x) of degree equal to t, where G(x) is an irreducible polynomial with coefficients from a Galois field GF(2.sup.m), wherein locator polynomials for support set L of binary generalized (L, G) code are generated as irreducible polynomials with coefficients from the field GF(2.sup.m) having a degree not greater than r, wherein a vector length set N={n.sub.1, n.sub.2, . . . , n.sub.r} of Goppa code is generated, where n.sub.i=I.sub.2m(i), i=1, . . . , r, and n=Σ.sub.i=1.sup.rn.sub.i, where I.sub.2m(i) is a number of irreducible polynomials of degree i with coefficients from the field GF(2.sup.m), wherein a vector position weight set W={w.sub.1, w.sub.2, . . . , w.sub.r} is generated, where the first n.sub.1 positions have weight w.sub.1=1, the second n.sub.2 positions have weight w.sub.2=2, and the last n.sub.r positions have weight w.sub.r=r, wherein a random mt×mt non-singular matrix S is selected, where deg G(x)=t; wherein a random n×n permutation matrix P is selected; and wherein a public key H*=S×H×P is computed.
9. The method of claim 8, wherein the instructions when executed also use the Goppa codes in a weighted Hamming metric.
10. The method of claim 8, wherein the polynomials have degree not greater than r, where r is the maximum degree of the denominator of a rational function over F.sub.2m[x] in the set of L, where L is a set of rational functions of degree not greater than r where r is greater than 1, and with coefficients from a finite field GF(2.sup.m).
11. The method of claim 10, wherein the instructions when executed also use the Goppa codes in a weighted Hamming metric.
12. The method of claim 11, wherein the code-based encryption scheme is a generalized (L, G) code in which a set of proper rational functions (L) over F.sub.2m[x] are chosen, wherein the denominators of L are various irreducible polynomials from F.sub.2m[x] with degree less than or equal to where r is greater than 1, and where the numerators are formal derivatives of the denominators.
13. The method of claim 8 wherein the data to be encrypted is a message vector to be securely transmitted from a sender to a receiver.
14. The method of claim 8 wherein the data when encrypted is a digital signature.
15. A method, comprising: receiving data to be at least one of encrypted, signed, decrypted, and verified at an input device; and providing the data to a processor for at least one of encrypting, signing, decrypting, and verifying that data using instructions from a cryptographic engine; wherein the instructions, when executed, cause performance of at least one of the encryption, the decryption, the signature, and the verification using a code-based scheme based on a binary irreducible Goppa code in which locator polynomials for support set L of binary generalized (L, G) code are generated as irreducible polynomials with coefficients from a Galois field GF(2.sup.m) have a degree not greater than r, where r is the maximum degree of the denominator of a rational function over F.sub.2m[x], and wherein the performance causes resulting data to be protected against an attack from a quantum computer, wherein the instructions when executed further generate a private key satisfying the relationship K={S, P, L, G(x)}, wherein a parity check matrix H is generated for binary generalized Goppa code with Goppa polynomial G(x) of degree equal to t, where G(x) is an irreducible polynomial with coefficients from the field GF(2.sup.m), wherein a vector length set N={n.sub.1, n.sub.2, . . . , n.sub.r} of Goppa code is generated, where n.sub.i=I.sub.2m(i), i=1, . . . , r, and n=Σ.sub.i=1.sup.rn.sub.i, where I.sub.2m(i) is a number of irreducible polynomials of degree i with coefficients from the field GF(2.sup.m), wherein a vector position weight set W={w.sub.1, w.sub.2, . . . , w.sub.r} is generated, where the first n.sub.1 positions have weight w.sub.1=1, the second n.sub.2 positions have weight w.sub.2=2, and the last n.sub.r positions have weight w.sub.r=r, wherein a random mt×mt non-singular matrix S is selected, where deg G(x)=t; wherein a random n×n permutation matrix P is selected; and wherein a public key H*=S×H×P is computed.
16. The method of claim 15, wherein the instructions when executed also use the Goppa codes in a weighted Hamming metric.
17. The method of claim 15 wherein the data to be encrypted is a message vector to be securely transmitted from a sender to a receiver.
18. The method of claim 15 wherein the data when encrypted is a digital signature.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
DETAILED DESCRIPTION
(10) The invention will now be described with reference to the drawing figures in which like reference numerals refer to like parts throughout. In
(11) The encryption key and encrypted data may be received from inside a computing device, such as a personal computer, from one or more devices within a network or from third party devices outside the network. As described in more detail below, it will be readily understood that the public key cryptographic device can be any device capable of performing the processes described herein whether integrated into a single semiconductor package or distributed amongst several semiconductor devices contained within a single computer or server or distributed over multiple devices within one or more networks.
(12) The cryptographic device 100 includes an input/output device 106, which can, for example, be a network communication interface, for receiving the plain data from the input device 104 and receiving the encryption key. The plain data and encryption key are then forwarded to an Input/Output Bridge 108 and a Memory Bridge 110 for storage in system memory 112. In exemplary embodiments the System Memory 112 may contain operating instructions such as, but not limited to, the Operating System 114. In addition to the operating system as well as other operating instructions 114 that are stored in system memory 112, the system memory includes the processing instructions of a cryptographic engine 116. The cryptographic engine 116 provides the operational instructions for the cryptographic functions such as encryption, decryption, digital signature, verification of digital signature, etc.
(13) The cryptographic processing of the encrypted data is performed in the CPU 118 that is linked to system memory 112 via a Memory Bus. The CPU 118 can be implemented as a parallel co-processor, a field programmable gate array (FPGA), microprocessor, or the like, as is well understood.
(14) Where all components of the system are contained within a single device, as depicted in
(15) The embodiment of
(16) In this embodiment, a special representation of the parity check matrix H, and the generator matrix G of the code, a special selection of the error vector, and/or a special selection of the codeword presentation by the additional field(s) inclusion are utilized. In an embodiment a parity check matrix H is generated for an n, k, d binary generalized (L, G) code wherein n, k, and d, are positive integers, n is a code length, k is a number of information symbols and d is a minimal distance n≤Σ.sub.i=1.sup.r I.sub.2.sub.
(17) In this embodiment, by using the L* support set directly instead of L with matrix S and P, we can obtain the following variant of McEliece scheme:
(18) Private key: (Decoding algorithm, L*, G(x))
(19) Public key: G*
(20) Encryption: Let m be a k-bit message, and let e be a random n-bit vector with Hamming weight W.sub.H(e)≤t. Then c=m×G*⊕e is a ciphertext.
(21) Decryption: Obtaining m by using decoding algorithm (error correcting) with knowledge L* and G.
(22) In the Niederreiter scheme, by using the two matrices and parity check matrix H, obtained from L and G(x), a public key matrix H*=A×H×P is calculated. As with the McEliece scheme, by using the L* support set directly instead of L with matrix A and P, we can obtain the following variant of Niederreiter scheme:
(23) Private key: (Decoding algorithm, L*, G(x))
(24) Public key: H*
(25) Encryption: Let m be a message, with Hamming weight W.sub.H(e)≤t. Then c=m×H*.sup.T is a ciphertext.
(26) Decryption: Obtaining m by using decoding algorithm (error correcting) with knowledge L* and G(x).
(27) This implementation allows for: 1) the expansion of the selection of a support set, thereby expanding the available private keys; 2) use of rational functions of degree greater than one to keep the calculation in a finite field with a comparable code length. For example, for rational functions of degree 2 with coefficients from the field GF(2.sup.m), the code length is n=2.sup.2m-1+2.sup.m-1. The practical benefits of using rational functions with different degree are: 1) reducing the amount of CPU cycles needed in the encryption, decryption, and key generation processes; and 2) increasing the security for codes with the same parameters (n, k, d), as in classical Goppa codes.
(28) The generalized (L, G) code of an embodiment of the present invention is characterized by a set L where the proper rational functions of F.sub.2.sub.
(29) In an embodiment of the invention, a special support set L is used as a second part of the private secret key in the McEliece and Niederreiter method. In this embodiment, we have the following additional definitions:
(30) Definition #5: Support set L is defined as follows:
(31)
where f′.sub.i(x) is a formal derivative of f.sub.i(x) in GF(2.sup.m) and f.sub.i(x)=x.sup.l.sup.
(32) Definition #6: Binary vector a=(a.sub.1, a.sub.2, . . . , a.sub.n) is a codeword of generalized (L, G) code if and only if the following equality is satisfied: Σ.sub.i=1.sup.n
(33)
(34)
=max l.sub.i and the decoding algorithm corresponding to it is determined. To construct a parity check matrix for such generalized (L, G) code the following presentation for rational functions
(35)
by modulo G(x) is used:
(36)
(37) The equation for the generalized Goppa code can then be rewritten as:
(38)
(39) From this equation a parity check matrix H is obtained:
(40)
(41) From this parity check matrix we can obtain a generator matrix G for the generalized (L, G) code and by using matrix S and P to calculate the public key matrix G*=S×G×P.
(42) In another embodiment we can also use the fractions
(43)
with different degrees of f.sub.i(x) for support set L. By using irreducible polynomials f(x) with degree not greater than r for support set we can obtain a generalized Goppa code with codeword length n≤Σ.sub.i=1.sup.r I.sub.2.sub.
(44) The following two examples are provided for illustration purposes:
(45) Example 1: In this example m=6 and r=2. Since
(46)
we obtain n=2048+32=2080. Let d=61, t=30 then we have k≥2080−60.Math.6=1720.
(47) Example 2: For l=2 and f.sub.i(x)=(x−β.sub.i)(x−β.sub.i.sup.2.sup.
(48)
The coefficients at x.sup.t-1, x.sup.t-2, . . . , x, 1 in the sum
(49)
(50) A parity check matrix H is defined by:
(51)
(52) By way of the foregoing, a special generalization of Goppa codes is constructed with a support set L as a set of rational functions
(53)
The special generalization of Goppa codes is neither a Reed Solomon (RS) code nor an alternant code.
(54) For decoding these generalized Goppa codes, the Goppa polynomial G(x) and support set L must be known. A classical decoding algorithm (Euclidean, Berlekamp-Massey, Patterson, etc.) can then be used.
(55) Using a set of position numerators of degree greater than 1, the degree of Galois field extension m for obtaining a support set L is reduced, thereby reducing the complexity of the calculations in the decoding process. The degree m of the field extension is reduced by r times, where r is the degree of the position numerators.
(56) By way of example, a scheme (2060, 1720, t=30) can be constructed close in parameters to the classical McEliece and Niederreiter (2048, 1718, t=30) scheme by using elements from the Galois field GF(2.sup.6) instead of the field GF(2.sup.11) used in the original scheme. Therefore in the scheme of this example, all calculations in the decoding procedure can be done in the Galois field GF(2.sup.6) with only 2.sup.6 elements instead of the Galois field GF(2.sup.11) with 2.sup.11 elements required.
(57) In the embodiment depicted in
(58)
(59) In the alternative embodiment of
(60) An application of the foregoing systems is depicted in
(61) Alternative instructions that can be implemented by the device of
(62) For illustration purposes, m determines the Galois field GF(2.sup.m) used in the calculations while r and m determine the size of support set L. Since code length n, r, and t determine a minimal distance of the code, therefore these parameters also determine the number of errors that could be corrected by such error correcting code. The private support set L generator 160 chooses or generates n elements (rational functions
(63)
to support set L. For the sake of clarity, f.sub.i(x) should be an irreducible polynomial of degree r. There are well-known methods to generate such polynomial, which are outside the scope of this invention. The Private Goppa Polynomial G(x) processor 162 chooses and/or generates primitive polynomial degree t from F.sub.2.sub.
(64) A method of encrypting a message in accordance with an embodiment of the present invention is depicted in
(65) A method of decrypting an encrypted message in accordance with a preferred embodiment of the invention is depicted in
(66)
The decoded message 184 is an information vector e of the length n and weight in the weighted Hamming metric less than or equal to t.
(67) A method of obtaining a digital signature for input data, using the cryptographic device 100, is depicted in
(68)
The second hash process 194 and the decoder 196 are repeated with an incrementing i value until a successful decoding is reached. The resulting digital signature 120, represented as {s,i}, consists of two elements: 1) a vector s of the length n and weight in the weighted Hamming metric of less than or equal to t; and 2) a parameter i equal to the number of the successful steps.
(69) A method of verifying a digital signature for given data, in the cryptographic device 100, is depicted in
(70) Although specific embodiments of the invention have been set forth herein, it is not intended that those be limiting. It should be understood that alternate embodiments, including variations and modifications thereto as well as various other features or functions, can be added to the present invention without departing from the scope of the present invention.