Classic McEliece
Classic McEliece is a code-based NIST standardization candidate still being considered, and may become a standard after the currently ongoing ISO standardization process is concluded.
The McEliece cryptosystem1 (textbook)
Let $\Gamma$ be an $\lbrack n,k,2t+1\rbrack _2$ binary Goppa code with an efficient $t$-error decoding algorithm, where $t\approx (n − k)/ \log2(n)$.
Public parameters are:
- $n$, the code length;
- $k$, the code dimension;
- $t$, and hence the minimum distance $2t+1$.
The private key is:
- $\Gamma$ and a $k\times n$ generator matrix $G$;
- an $n\times n$ permutation matrix $P$;
- a non-singular $k\times k$ matrix $S$.
The public key is:
- $G’=SGP$
Encrypt($m,G’$):
$$c=mG'+e$$Decrypt$(c,P,S,\Gamma)$:
$$ \begin{align*} cP^{-1} &= mG'P^{-1} + eP^{-1} \\ &= (mS)G + eP^{-1} \end{align*} $$The decoding algorithm will return $mS$, and hence recover $m$.
The Niederreiter cryptosystem2 (textbook)
The Niederreiter proposal is a version of the McEliece proposal based on syndrome decoding, with the following differences:
- substitute the $k\times n$ generator matrix $G$ for a $(n-k)\times (n-k)$ parity check matrix $H$;
- adjust the size of $S$ accordingly, from $k\times k$ to $(n-k)\times (n-k)$;
- the public key is a version of the parity check matrix, $H’=SHP$;
- for plaintexts $m$ of weight $t$ and length $n$, akin to errors, ciphertexts are syndromes $$c=H'm;$$
- decryption is to find $m$ such that $w(m)=t$ and $c=H’m$.
References
McEliece, R. J. (1978). Public-key cryptosystem based on algebraic coding theory. In NASA DSN Congress Report (Vols. 42–44, pp. 114–116). https://ipnpr.jpl.nasa.gov/progress_report2/42-44/44N.PDF. ↩︎
Niederreiter, H. (1986). Knapsack-type cryptosystems and algebraic coding theory. Problems of Control and Information Theory, 15(2), 157–166. https://cir.nii.ac.jp/crid/1571980076566605568 ↩︎