code based cryptography ############################ Goppa编码 ====================================== 加密兼纠错 C = u*G, G 为 k x n 生成矩阵,将k长的u转换为n长的C 奇偶校验矩阵 H,满足 G*H' = 0 ,其中H'为H的转置 .. math:: c = mG + e,e为random t-error vector s = cH' = mGH' + eH' = eH' 逆推可求得e 再 c - e,解得m McEliece ====================================== 公钥为Goppa码的生成矩阵G1 私钥为t-bounnded decoder,记为p(x) 加密: y = xG1 + e,e为汉明weight <= t的随机项 解密: p(y)G',其中G1*G' = 1 细节: k -> n ,原文编码到目标空间 G1 = SGP , S 为k x k 可逆, G 为 k x n 不可约生成矩阵,P 为 n x n 置换 公钥为G1 y = xSGP + e 解密: :math:`y_1 = yP^(-1) = xSG + eP^(-1)` 由于 :math:`eP^(-1)` 的汉明weight = t,因此,可消解求得 xS 再乘以 :math:`S^(-1)` ,恢复x Niederreiter ====================================== 公钥为奇偶校验矩阵H 私钥为t-bounnded H-syndrome decode,记为p(x) 加密: eH',其中H'为H的转置 解密:p(y) = p(eH') = e 参考资料 =============== - `Toward Practical Code-Based Cryptography `_ - `Goppa Codes `_ - `Goppa code `_ - `2017 Code-based Cryptography `_ - `2016 Code-Based Cryptography `_ - `A Course in Cryptography `_ - `应用编码与计算机密码学 `_