McEliece cryptosystem: Difference between revisions
Message expansion to 1024 bits is not a disadvatage for public key algorithms. RSA, ElGamal etc. have equally long ciphertexts. |
No edit summary |
||
Line 1: | Line 1: | ||
In [[cryptography]], the '''McEliece cryptosystem''' is an [[asymmetric key algorithm]] developed in [[1978]] by [[Robert McEliece]]. The algorithm has never gained much acceptance in |
In [[cryptography]], the '''McEliece cryptosystem''' is an [[asymmetric key algorithm]] developed in [[1978]] by [[Robert McEliece]]. The algorithm has never gained much acceptance in practice. |
||
The algorithm uses [[Goppa code]]s, which are a type of [[error-correcting code]] (see [[coding theory]]). The algorithm disguises a Goppa code made from the plaintext as a general linear code. Goppa codes are easy to decode, but distinguishing them from a general linear code is hard. This is McEliece's hard problem. |
|||
The private and public keys are large matrices, which is one of the main disadvantages of the algorithm. The public key is very large: 2<sup>19</sup> bits long. |
The private and public keys are large matrices, which is one of the main disadvantages of the algorithm. The public key is very large: 2<sup>19</sup> bits long. |
||
Attempts have been made to cryptanalyze McEliece, but none have been successful. However, the algorithm is rarely used in practice because of the massive keys. One exceptional case that uses McEliece for encryption is the [[Freenet]]-like application [[Entropy (anonymous data store)]]. |
Attempts have been made to cryptanalyze McEliece (when using [[Goppa code]]s as the underlying [[error-correcting code]]), but none have been successful. However, the algorithm is rarely used in practice because of the massive keys. One exceptional case that uses McEliece for encryption is the [[Freenet]]-like application [[Entropy (anonymous data store)]]. |
||
==Scheme definition== |
==Scheme definition== |
Revision as of 19:08, 12 October 2007
In cryptography, the McEliece cryptosystem is an asymmetric key algorithm developed in 1978 by Robert McEliece. The algorithm has never gained much acceptance in practice.
The private and public keys are large matrices, which is one of the main disadvantages of the algorithm. The public key is very large: 219 bits long.
Attempts have been made to cryptanalyze McEliece (when using Goppa codes as the underlying error-correcting code), but none have been successful. However, the algorithm is rarely used in practice because of the massive keys. One exceptional case that uses McEliece for encryption is the Freenet-like application Entropy (anonymous data store).
Scheme definition
McEliece consists of three algorithms: a probabilistic key generation algorithm which produces a public and a private key, a probabilistic encryption algorithm, and a deterministic decryption algorithm.
All users in a McEliece deployment share a set of common security parameters: . Recommended values for these parameters are (source: Handbook of Applied Cryptography).
Key generation
- Users select a binary -linear code capable of correcting errors. This code must possess an efficient decoding algorithm.
- Alice generates a generator matrix for the code .
- Select a random binary non-singular matrix .
- Select a random permutation matrix P.
- Compute the matrix .
- Alice’s public key is ; her private key is .
Message encryption
Suppose Bob wishes to send a message m to Alice whose public key is :
- Encode the message as a binary string of length .
- Compute the vector .
- Generate a random -bit vector containing at most ones.
- Compute the ciphertext as .
Message decryption
- Compute the inverse of , .
- Compute .
- Use the decoding algorithm for the code to decode to .
- Compute .
References
- Alfred J. Menezes, Scott A. Vanstone, A. J. Menezes and Paul C. van Oorschot, Handbook of Applied Cryptography.