信息集译码算法(ISD)

参考文献:

  1. [Prange62] Eugene Prange. The use of information sets in decoding cyclic codes. IRE Trans. Inf. Theory 8(5): 5-9 (1962).
  2. [Stern88] Jacques Stern. A method for finding codewords of small weight. Coding Theory and Applications 1988: 106-113.
  3. [Dumer89] Il’ya Isaakovich Dumer. Two decoding algorithms for linear codes. Problemy Peredachi Informatsii, 25(1):24–32, 1989.
  4. [HG10] Nick Howgrave-Graham, Antoine Joux. New Generic Algorithms for Hard Knapsacks. EUROCRYPT 2010: 235-256.

Information Set Decoding

目前求解汉明距离下校验子译码问题的最有效算法是 Information Set Decoding,最早由 [Prange62] 提出。所谓线性码 C C C 的信息集,就是一个指标集 J ⊆ [ n ] J \subseteq [n] J[n],满足 ∣ J ∣ = k |J|=k J=k 以及 ∣ C J ∣ = 2 k |C_J|=2^k CJ=2k,其中 C J : = { c J ∣ c ∈ C } C_J := \{c_J \mid c \in C\} CJ:={cJcC}。系统型生成矩阵满足 G J = I k G_J=I_k GJ=Ik,系统型校验矩阵满足 H J C = I n − k H_{J^C}=I_{n-k} HJC=Ink,这里 J C J^C JC 表示补集。

给定一个 SD 问题实例 ( H , s : = e H T ) (H,s:=eH^T) (H,s:=eHT),其中 H ∈ Z 2 ( n − k ) × n H \in \Z_2^{(n-k)\times n} HZ2(nk)×n,以及 e ∈ Z 2 n e \in \Z_2^n eZ2n 满足 w t ( e ) ≤ w wt(e) \le w wt(e)w,那么 ISD 的基本步骤是,

  1. 找出(随机的)可逆矩阵 U ∈ Z 2 ( n − k ) × ( n − k ) U \in \Z_2^{(n-k) \times (n-k)} UZ2(nk)×(nk) 和置换矩阵 P ∈ Z 2 n × n P \in \Z_2^{n \times n} PZ2n×n(正交矩阵, P P T = P T P = I PP^T=P^TP=I PPT=PTP=I),将 H H H 变换为 quasi-systematic form
    U H P = H ~ = [ I n − k − l H 1 0 H 2 ] UHP = \tilde H = \begin{bmatrix} I_{n-k-l} & H_1\\ 0 & H_2 \end{bmatrix} UHP=H~=[Inkl0H1H2]

  2. 那么未知的 e e e 被转换为 e P T = ( e 1 , e 2 ) ∈ Z 2 n − k − l × Z 2 k + l eP^T = (e_1,e_2) \in \Z_2^{n-k-l} \times \Z_2^{k+l} ePT=(e1,e2)Z2nkl×Z2k+l,并且满足
    e 1 + e 2 H 1 T = s 1 e 2 H 2 T = s 2 \begin{aligned} e_1+e_2H_1^T &= s_1\\ e_2H_2^T &= s_2 \end{aligned} e1+e2H1Te2H2T=s1=s2
    其中 s U T = ( s 1 , s 2 ) ∈ Z 2 n − k − l × Z 2 l sU^T = (s_1,s_2) \in \Z_2^{n-k-l} \times \Z_2^{l} sUT=(s1,s2)Z2nkl×Z2l 是已知的

  3. 在第二个方程的解空间中枚举 e 2 e_2 e2,然后计算 e 1 = s 1 − e 2 H 1 T e_1 = s_1-e_2H_1^T e1=s1e2H1T,检查条件 w t ( e 1 , e 2 ) ≤ w wt(e_1,e_2) \le w wt(e1,e2)w 是否被满足

Stern/Dumer algorithm

[Stern88] 和 [Dumer89] 引入了 meet-in-the-middle 策略,进一步将 e 2 e_2 e2 H 2 H_2 H2 拆分为两段,构建两个列表
L 1 : = { ( x 1 , x 1 H 2 ( 1 ) ) ∣ x 1 ∈ Z 2 ⌊ ( k + l ) / 2 ⌋ } L 2 : = { ( x 2 , s 2 − x 2 H 2 ( 2 ) ) ∣ x 2 ∈ Z 2 ⌈ ( k + l ) / 2 ⌉ } \begin{aligned} L_1 &:= \left\{\left(x_1, x_1H_2^{(1)}\right) \mid x_1 \in \Z_2^{\lfloor(k+l)/2\rfloor}\right\}\\ L_2 &:= \left\{\left(x_2, s_2-x_2H_2^{(2)}\right) \mid x_2 \in \Z_2^{\lceil(k+l)/2\rceil}\right\} \end{aligned} L1L2:={(x1,x1H2(1))x1Z2⌊(k+l)/2}:={(x2,s2x2H2(2))x2Z2⌈(k+l)/2}
然后找到一对 ( x 1 , x 2 ) (x_1,x_2) (x1,x2),使之发生碰撞 x 1 H 2 ( 1 ) = s 2 − x 2 H 2 ( 2 ) x_1H_2^{(1)} = s_2-x_2H_2^{(2)} x1H2(1)=s2x2H2(2),那么就获得了 e 2 = ( x 1 , x 2 ) e_2=(x_1,x_2) e2=(x1,x2) 满足 e 2 H 2 = s 2 e_2H_2=s_2 e2H2=s2,然后继续计算 e 1 e_1 e1 并判断 w t ( e ) ≤ w wt(e) \le w wt(e)w 是否满足

Representation Technique

[HG10] 提出的表示技术,其思路是写出 e 2 = e ( 1 ) + e ( 2 ) e_2 = e^{(1)}+e^{(2)} e2=e(1)+e(2),其中 e ( 1 ) , e ( 2 ) ∈ Z 2 k + l e^{(1)},e^{(2)} \in \Z_2^{k+l} e(1),e(2)Z2k+l 的重量为 w ∗ ≥ w 2 / 2 w^* \ge w_2/2 ww2/2(可能相消,需更大),使得两者加和的重量为 w 2 w_2 w2(假设 w t ( e 2 ) = w 2 wt(e_2)=w_2 wt(e2)=w2

构造两个列表,
S 1 : = { ( e ( 1 ) , e ( 1 ) H 2 ) ∣ e ( 1 ) ∈ Z 2 k + l , w t ( e ( 1 ) ) = w ∗ } S 2 : = { ( e ( 2 ) , s 2 − e ( 2 ) H 2 ) ∣ e ( 2 ) ∈ Z 2 k + l , w t ( e ( 2 ) ) = w ∗ } \begin{aligned} S_1 &:= \left\{\left(e^{(1)}, e^{(1)}H_2\right) \mid e^{(1)} \in \Z_2^{k+l}, wt(e^{(1)})=w^*\right\}\\ S_2 &:= \left\{\left(e^{(2)}, s_2-e^{(2)}H_2\right) \mid e^{(2)} \in \Z_2^{k+l}, wt(e^{(2)})=w^*\right\} \end{aligned} S1S2:={(e(1),e(1)H2)e(1)Z2k+l,wt(e(1))=w}:={(e(2),s2e(2)H2)e(2)Z2k+l,wt(e(2))=w}
然后找到一对 ( e ( 1 ) , e ( 2 ) ) (e^{(1)},e^{(2)}) (e(1),e(2)),使之发生碰撞 e ( 1 ) H 2 = s 2 − e ( 2 ) H 2 e^{(1)}H_2=s_2-e^{(2)}H_2 e(1)H2=s2e(2)H2,那么就得到了 e 2 = e ( 1 ) + e ( 2 ) e_2=e^{(1)}+e^{(2)} e2=e(1)+e(2) 满足 e 2 H 2 = s 2 e_2H_2=s_2 e2H2=s2,然后判断 w t ( e 2 ) = w 2 wt(e_2)=w_2 wt(e2)=w2 是否成立

Cost

对于 S D n , k , w SD_{n,k,w} SDn,k,w 实例,ISD 算法的开销为
W F I S D ( n , k , w ) = 2 c ⋅ w ⋅ ( 1 + o ( 1 ) ) WF_{ISD}(n,k,w) = 2^{c \cdot w \cdot (1+o(1))} WFISD(n,k,w)=2cw(1+o(1))
其中 c = log ⁡ 1 1 − R c = \log \frac{1}{1-R} c=log1R1,这里 R = k / n R=k/n R=k/n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值