McEliece cryptosystem
In cryptography, the McEliece cryptosystem is an asymmetric encryption algorithm developed in 1978 by Robert McEliece.[1] It was the first such scheme to use randomization in the encryption process. The algorithm has never gained much acceptance in the cryptographic community, but is a candidate for "post-quantum cryptography", as it is immune to attacks using Shor's algorithm and – more generally – measuring coset states using Fourier sampling.[2]
The algorithm is based on the hardness of decoding a general linear code (which is known to be NP-hard[3]). For a description of the private key, an error-correcting code is selected for which an efficient decoding algorithm is known, and which is able to correct errors. The original algorithm uses binary Goppa codes (subfield codes of algebraic geometry codes of a genus-0 curve over finite fields of characteristic 2); these codes can be efficiently decoded, thanks to an algorithm due to Patterson.[4] The public key is derived from the private key by disguising the selected code as a general linear code. For this, the code's generator matrix is perturbated by two randomly selected invertible matrices and (see below).
Variants of this cryptosystem exist, using different types of codes. Most of them were proven less secure; they were broken by structural decoding.
McEliece with Goppa codes has resisted cryptanalysis so far. The most effective attacks known use information-set decoding algorithms. A 2008 paper describes both an attack and a fix.[5] Another paper shows that for quantum computing, key sizes must be increased by a factor of four due to improvements in information set decoding.[6]
The McEliece cryptosystem has some advantages over, for example, RSA. The encryption and decryption are faster.[7] For a long time, it was thought that McEliece could not be used to produce signatures. However, a signature scheme can be constructed based on the Niederreiter scheme, the dual variant of the McEliece scheme. One of the main disadvantages of McEliece is that the private and public keys are large matrices. For a standard selection of parameters, the public key is 512 kilobits long.
Proof of message decryption[edit]
Note that ,
and that is a permutation matrix, thus has weight .
The Goppa code can correct up to errors, and the word is at distance at most from . Therefore, the correct code word is obtained.
Multiplying with the inverse of gives , which is the plain text message.
Key sizes[edit]
Because there is a free choice in the matrix , it is common to express in "systematic form" so that the last columns correspond to the identity matrix . This reduces the key size to .[8][9] McEliece originally suggested security parameter sizes of ,[1] resulting in a public key size of 524*(1024−524) = 262,000 bits. Recent analysis suggests parameter sizes of for 80 bits of security when using standard algebraic decoding, or when using list decoding for the Goppa code, giving rise to public key sizes of 520,047 and 460,647 bits respectively.[5] For resiliency against quantum computers, sizes of with Goppa code were proposed, giving the size of public key of 8,373,911 bits.[10] In its round 3 submission to the NIST post quantum standardization the highest level of security, level 5 is given for parameter sets 6688128, 6960119, and 8192128. The parameters are , , respectively.
Post-quantum encryption candidate[edit]
A variant of this algorithm combined with NTS-KEM[12] was entered into and selected during the third round of the NIST post-quantum encryption competition.[13]