参考文献:Overbeck R, Sendrier N. Code-based cryptography[M]//Post-quantum cryptography. Springer, Berlin, Heidelberg, 2009: 95-145.
考虑 [ n , k ] q [n,k]_q [n,k]q线性码 C \mathscr C C,定义余维度(codimension) r = n − k r = n-k r=n−k,令 H H H是其校验矩阵。定义校验子映射(syndrome mapping):
S H : G F ( q ) n → G F ( q ) r y ↦ y H T \begin{aligned} S_H: GF(q)^n &\to GF(q)^r\\ y &\mapsto y H^T \end{aligned} SH:GF(q)ny→GF(q)r↦yHT
再定义关于校验子 s ∈ G F ( q ) r s \in GF(q)^r s∈GF(q)r的字集合:
S H − 1 ( s ) : = { y ∈ G F ( q n ) : y H T = s } S_H^{-1}(s) := \{y \in GF(q^n): yH^T=s\} SH−1(s):={y∈GF(qn):yHT=s}
易知, S H − 1 ( 0 ) = C S_H^{-1}(\pmb 0) = \mathscr C SH−1(000)=C,定义码的陪集(coset):
y + C : = { y + x : x ∈ C } = S H − 1 ( s ← y H T ) y+\mathscr C := \{y+x: x\in\mathscr C\} = S_H^{-1}(s \leftarrow yH^T) y+C:={y+x:x∈C}=SH−1(s←yHT)
一共存在 2 r 2^r 2r个陪集,每个陪集都恰好包含 2 k 2^k 2k个元素。
任给一个校验子,存在有效算法计算对应的陪集,
上述算法的复杂度是 O ( r 3 ) O(r^3) O(r3),多项式级别。
不失一般性的,令 q = 2 q=2 q=2。
Decoding problem:令线性码 C \mathscr C C的校验矩阵为 H H H,给定一个字 y ∈ G F ( q ) n y \in GF(q)^n y∈GF(q)n以及对应的校验子 s ∈ G F ( q ) r s \in GF(q)^r s∈GF(q)r,下面是三种等价描述,
然而,我们很难验证一个错误 e e e是否真的是陪集 y + C y+\mathscr C y+C里有最小汉明重量的那个元素。因此上述问题不属于 N P NP NP(如果定义为“多项式时间可验证”——NP定义的歧义性),我们做适当修改。
Computational Syndrome Decoding:令线性码 C \mathscr C C的校验矩阵为 H H H,给定校验子 s ∈ G F ( q ) r s \in GF(q)^r s∈GF(q)r以及正整数 w > 0 w>0 w>0,寻找一个错误 e ∈ S H − 1 ( s ) e \in S_H^{-1}(s) e∈SH−1(s)使得它的汉明重量小于等于 w w w,记做 C S D ( H , w , s ) CSD(H,w,s) CSD(H,w,s)。
仅当 w w w使得上述问题高概率有单个解时,上述问题才有意义。可以选取 w = ⌈ 1.05 ⋅ d G V ( n , r ) ⌉ w = \lceil 1.05 \cdot d_{GV}(n,r)\rceil w=⌈1.05⋅dGV(n,r)⌉,这里的 d G V d_{GV} dGV是 Gilbert-Varshamov distance,它被定义为使得下述不等式成立的最大正整数:
∑ i = 0 d 0 − 1 ( n i ) ≤ 2 r \sum_{i=0}^{d_0-1} {n \choose i} \le 2^r i=0∑d0−1(in)≤2r
大多数二元线性码的最小距离 d m i n d_{min} dmin都接近其GV距离 d G V d_{GV} dGV。
Codeword Finding:令线性码 C \mathscr C C的校验矩阵为 H H H,给定正整数 w > 0 w>0 w>0,寻找一个非零的码字 0 ≠ c ∈ S H − 1 ( 0 ) \pmb 0 \neq c \in S_H^{-1}(\pmb 0) 000=c∈SH−1(000)使得它的汉明重量小于等于 w w w,记做 C F ( H , w ) CF(H,w) CF(H,w)。
令 C ′ = C ∪ ( y + C ) \mathscr C' = \mathscr C \cup (y+\mathscr C) C′=C∪(y+C),其校验矩阵为 H ′ H' H′。很明显 C S D ( H , w , y H T ) CSD(H,w,yH^T) CSD(H,w,yHT)的解 e e e就是 C F ( H ′ , w ) CF(H',w) CF(H′,w)的解,因为 e ∈ y + C ⊆ C ′ e \in y+\mathscr C \subseteq \mathscr C' e∈y+C⊆C′。反之 C F ( H ′ , w ) CF(H',w) CF(H′,w)的解 e e e,当 w t ( e ) < d 0 wt(e)
Complete Decoding:令线性码 C \mathscr C C的校验矩阵为 H H H,给定校验子 s ∈ G F ( q ) r s \in GF(q)^r s∈GF(q)r,寻找一个错误 e ∈ S H − 1 ( s ) e \in S_H^{-1}(s) e∈SH−1(s)使得它的汉明重量小于等于 d G V ( n , r ) d_{GV}(n,r) dGV(n,r)。
这个问题是最一般、同时也是最困难的计算型解码问题。
另外还有相应的决策版本解码问题(decisional syndrome decoding)。敌手可以通过访问线性次决策版本的预言机,便可以求解任意的 C S D CSD CSD实例,因此计算型和决策型之间没有“gap”。有文章证明,决策型解码问题属于 N P C NPC NPC。于是计算型解码问题在最坏情况下是 N P − h a r d NP-hard NP−hard的。
人们不认为存在关于 N P C NPC NPC类问题的量子算法,同时针对 N P NP NP类问题的量子算法也很难构造。
令可逆映射 ϕ n , w : G F ( q ) l → G F ( q ) n \phi_{n,w}: GF(q)^l \to GF(q)^n ϕn,w:GF(q)l→GF(q)n定义为
ϕ n , w ( x ) = e s . t . w t ( e ) = w \phi_{n,w}(\pmb x) = e\,\,\, s.t.\,\,\, wt(e)=w ϕn,w(xxx)=es.t.wt(e)=w
对于 [ n , k ] [n,k] [n,k]线性码,如果选择合适的 w w w满足如下关系:
( n w ) ( q − 1 ) w − 1 ≥ q n − k {n \choose w}(q-1)^{w-1} \ge q^{n-k} (wn)(q−1)w−1≥qn−k
那么重量为 w w w的向量个数比线性码的校验子要多。如果针对校验子 s s s难以恢复重量为 w w w的向量(抗第二原像),那么计算校验子的过程可以作为一个压缩函数: x ↦ ϕ n , w ( x ) H T \pmb x \mapsto \phi_{n,w}(\pmb x)H^T xxx↦ϕn,w(xxx)HT
对于 [ n , k ] [n,k] [n,k]线性码,如果选择合适的 w w w满足如下关系:
( n w ) ( q − 1 ) w − 1 ≤ q n − k {n \choose w}(q-1)^{w-1} \le q^{n-k} (wn)(q−1)w−1≤qn−k
那么重量为 w w w的向量个数比线性码的校验子要少。如果针对校验子 s s s依然难以恢复重量为 w w w的向量(OWP),那么计算校验子的过程可以作为一个扩展函数: x ↦ ϕ n , w ( x ) H T \pmb x \mapsto \phi_{n,w}(\pmb x)H^T xxx↦ϕn,w(xxx)HT