编码理论|编码的密码学应用

基于纠错码的公钥密码体制

概述

一般线性码的译码问题是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的复杂性和线性码的解码难度
posted @ 2025-06-27 10:08  lumiere_cloud  阅读(120)  评论(0)    收藏  举报