编码理论|编码的密码学应用
基于纠错码的公钥密码体制
概述
一般线性码的译码问题是NP困难的
对BCH、RS、Goppa等有快速译码算法
基本思想:把纠错码作为私钥,加密时对明文进行纠错编码,并加入一定数量的错误,解密时用私钥纠正错误,恢复明文
代表算法:McEliece公钥、Niederreiter公钥
特点:速度快、公钥量大、抗量子计算、不能构造签名
SD 困难问题
H 是有限域 F 上的随机线性码 C 的 (n-k)×n 的校验矩阵,
\(s ∈ F^{(n-k)}\),找一个重量小于 d 的字 \(x ∈ F^n\) 使得\(Hx^T = s\)
QCSD 困难问题
H 是有限域 F 上的准循环码 C 的 (n-k)×n 的准循环校验矩阵,
\(s ∈ F^{(n-k)}\),找一个汉明重量小于 d 的字 \(x ∈ F^n\) 使得
\(Hx^T = s\)
QCSD问题的困难性虽未得到严格证明,但对于准循环(QC)码的矩阵,SD问题仍然适用,目前也没有对其有效的攻击算法。
McEliece
McEliece
1)密钥生成
- 生成矩阵G:选择一个生成矩阵G,用于生成一个线性纠错码C,其码字重量为d。
- 混淆矩阵S:选择一个k×k的可逆矩阵S。
- 置换矩阵P:选择一个n×n的置换矩阵P。
- 公钥与私钥:
- 公钥为变换后的生成矩阵:$ G_{\text{public}} = SGP^T $
- 私钥为原始生成矩阵G、矩阵S和矩阵P
2)加密过程
- 发送方将明文x与随机错误向量e相加,得到密文:
\( y = xG_{\text{public}} + e \)
其中,e是一个长度为n的随机错误向量,其重量为t,且t不超过纠错码的纠错能力。
3)解密过程 - 接收方首先对密文y进行逆置换操作:
\( y' = P^T y \) - 利用私钥中的矩阵S和G,计算:
\( x' = y'S^{-1}G^{-1} \)
纠错后恢复明文x
Niederreiter
Niederreiter方案
利用纠错码的校验矩阵来实现加密和解密
1)密钥生成
- 选择一个生成矩阵G,用于生成一个线性纠错码C。
- 计算校验矩阵H,满足 $ H \cdot G^T = 0 $
- 随机生成可逆矩阵S和置换矩阵P。
- 公钥为变换后的校验矩阵 $ H' = S \cdot H \cdot P $
- 私钥为原始的生成矩阵G、矩阵S和置换矩阵P。
2)加密过程 - 将明文m编码为陪集密钥y,使得 $ H \cdot y^T = s $,其中s为随机选择的错误向量。
- 将y作为密文发送给接收方。
3)解密过程 - 接收方利用私钥中的矩阵P和S将密文y还原为 $ y' = P^{-1} \cdot y $
- 通过纠错码的解码算法,从 $ H \cdot y'^T = s $ 中恢复出明文m
Niederreiter方案的安全性依赖于校验矩阵H的复杂性和线性码的解码难度

浙公网安备 33010602011771号