本文主要介绍 linear code 的相关编码理论基础。然后简单阐述 Code-based Challenges 上一系列用于后量子密码设计的 code-based 问题。本文并不涉及具体的密码学算法设计,旨在对编码理论中的线性编码进行一个简单的介绍。
线性编码基础
主要参考:
- Ron Roth, Introduction to Coding Theory, Cambridge University Press, 2006,
- A Survey on Code-based Cryptography : paper link.
读者应有线性代数、群环域、代数数论的数学基础。
线性编码 Linear Code
记 是阶为 的伽罗瓦域,一个 编码的空间 ,其中 是明文空间, 是码字个数, 是最短码字距离, 如果 是 的线性子空间,则 称为线性编码。 即对于任意 和任意 使得 。
注记 :
- 线性空间 更一般的记法是 ,表明编码长度(code length)为 ,线性子空间的维度是 。
- 线性编码 的总空间是 , 可编码空间是 。
- 线性编码的码率 Code Rate : 可编码的空间是 ,因此码率是 。
Linear Code 生成矩阵
代数上定义的概念还比较抽象,实际上直接从生成矩阵看 Linear Code 是很直观的。线性编码 的一个生成矩阵可以看作一个 的矩阵 ,其 个线性无关的行向量构成整个线性子空间的基 .
Linear Code 编解码
既然涉及到编码,就一定涉及到编解码的操作。编码需要构造映射 ,利用生成矩阵定义下面映射:
矩阵 满秩,即上面映射为双射。
解码过程:记码字为 ,解码操作,可以任意选取 线性无关的 列,对应的码字为 ,得到可逆矩阵 ,计算 ,即可恢复出明文 。注意到,实际上解码只需要 列,其他的列向量是线性编码中的冗余,可用于纠错。
Linear Code 校验矩阵(Parity Check Matrix)
知道编码矩阵,不论是正向编码(矩阵乘法),和反向解码(解超定方程),都是简单的。校验矩阵是用于验证目标码字是否是正确的。令 是定义在 上 的线性编码,其奇偶校验矩阵 ()满足:
也就是说编码的空间是校验矩阵 的 kernel space(核空间)。对于任意的 ,我们称 为 Syndrome 。
汉明度量 Hamming Metric
汉明度量(Hamming Metric): 对于 ,汉明度量为其非 0 元的个数,
汉明距离(Hamming Distance):对于 ,汉明距离为,
最短距离(Minimum Distance) :编码 的最短汉明距离为,
注记:
对于线性编码 ,其最短汉明距离为:
向量 距离编码空间 的最短距离记为 :
Hamming sphere :汉明球即所有汉明重量小于 的向量集合,记为,
汉明球的集合大小为:
实际上,在基于编码的密码学中,有常见的两种度量方式,其一是汉明度量,其二是秩度量(Rank-Metric),本文中只关注基于汉明度量的线性编码和相关性质,对 Rank-Metric 感兴趣的读者可以参考 A Survey on Code-Based Cryptography 。
线性编码的性质
定理 Singleton Bound
令正整数 ,令 是一个定义在 上 的线性编码,则其最短汉明距离的上界为:
证明思路:只需要证明 k 维的线性编码,删去 个位置就一定是单射。(证明汉明重量大于 的汉明球集合的大小一定小于 k 维的线性子空间大小)
定义 Maximum Distance Separable (MDS)
达到 Singleton bound 的最短汉明距离上界的编码称为 MDS 编码。在实际使用中 MDS 编码具有非常好的性质,因为固定线性编码的参数 ,MDS 编码能够最大化纠错能力。
性质 1 :最短汉明距离与校验矩阵
令 是一个定义在 上 的线性编码, 是其校验矩阵,则 的最短汉明距离为 当且仅当 的任意 列是线性无关的,并且存在 个列向量是线性相关的。
定义 Dual Code 对偶编码
令正整数 , 是一个定义在 上 的线性编码,其对偶编码 是一个定义在 上 的线性编码,定义如下:
性质 2 : 对偶编码
一个 MDS 编码的对偶编码仍然是 MDS 的。
定义 :Systematic Form 矩阵
令 是一个定义在 上 的线性编码,那么存在某个置换矩阵(Permutation Matrix) ,和一个可逆矩阵 ,使得生成矩阵变成系统形式(Systematic Form):
其中 是 的单位矩阵, 并且 。
对应地,也能将校验矩阵也转换成系统形式,存在某个置换矩阵(Permutation Matrix) ,和一个可逆矩阵 ,使得:
Remarks
置换矩阵顾名思义,它的作用就是重新排列矩阵的列顺序或者行顺序,形式上等价于一个单位阵进行任意置换后的矩阵。
定理 : Gilbert-Varshamov bound
定义 1 令 是一个素数的幂, ,记 为汉明球的容量, 是正整数使得:
那么存在一个定义在 上 的线性编码,它的最小汉明距离至少是 。
更为广泛的 Gilbert-Varshamov bound 定义是从编码的最大维数( 值)来阐述的,记 为 上最短汉明距离为 d 的编码的最大维数( 值)。
定义 2 令 是一个素数的幂, 是正整数,则:
事实证明,随机生成的 code 以高概率到达渐进的 Gilbert-Varshamov bound 。
常见线性编码
某些特定方式生成的线性编码具有良好的性质,本节简单介绍一些在密码学、编解码方向常用的线性编码。
Generalized Reed-Solomon Code
定义 : Generalized Reed-Solomon Code
正整数 ,令 是不同元素的 n-元组,即 ,其中 ;令 是非零的 n-元组,即 , 其中 ,广义的里德-所罗门编码(Generalized Reed-Solomon Code),码字长度为 ,线性子空间维数为 ,记为 ,其生成矩阵定义如下:
在 时,我们称其为 Reed-Solomon (RS) 编码,记为 。
Remarks
GRS 编码的生成矩阵可以解释为类似于 Vandermonde 矩阵乘以对角矩阵,其中每一行对应多项式的不同次数的项(从 0 到 ),每列对应不同的评估点 ,乘以权重向量中相应的 。
例 范德蒙矩阵就是最常见的 RS 编码,取
性质 1 :GRS 编码都是 MDS 编码,即 GRS 的最小汉明距离达到最大上界 Singleton Bound。
性质 2 :GRS 编码的对偶编码都是 GRS 编码。
性质 3 :GRS 的对偶编码满足 :
其中:
q-ary Goppa Code
补充定义 : 是正整数, ,定义有限域 ,令 ,定义多项式商环:
引理 :令 使得 ,那么 在 内是可逆的,其逆为 :
定义 : Classical Goppa Code
令 ,使得 ,并且 for all ,则 Classical q-ary Goppa 编码定义为:
性质 1 :Goppa 编码 的最小汉明距离满足 ,线性子空间维数满足 。
Goppa Code 校验矩阵
令 , 的校验矩阵由下面带权值的范德蒙矩阵给出:
注意到 ,编码 是矩阵 的 kernel 。实际上,以 作为生成矩阵,可以构成一个 GRS 编码,由此可见 GRS 编码和 q-ary Goppa 编码之间的联系。
Cyclic Code
如果任何码字的循环移位也是一个码字,我们称其为循环码。循环编码 能够只通过一个向量 (和它的循环移位)来表示。令 ,定义 为循环移位函数,即
定义 :Cyclic Code (循环编码)
正整数 , 是一个定义在 上 的线性编码, 我们称 是循环码,即满足 。
注记
- 令正整数 , 为元素互异的向量,则 是一个循环编码。
- 定义在 上长度为 的循环编码 是多项式商环 上的理想(ideals)。因此循环编码 存在生成多项式。我们做如下定义,循环码 的生成多项式是其在 中最小次数理想对应的首一多项式。
性质 : 循环码的生成多项式
令 是 上长度为 的循环编码,其生成多项式为 ,次数为 ,则满足:
生成多项式 (由理想的性质立得)
循环码 的维数为 。
生成矩阵 可以表示如下(该形式的矩阵也被称为循环矩阵):
循环码 的对偶编码的生成多项式 满足 : ,即 。
除了循环编码之外,密码学中常见的编码是准循环编码(Quasi-Cyclic Code),简记为 QC 编码。类似地定义 循环移位,令 ,记 如下:
上述下标均在模 的意义下进行计算。
定义:Quasi-Cyclic Code(准循环编码)
令正整数 , 是一个定义在 上 的线性编码, 是准循环的,即存在 , 使得 。
编码理论的 NP 困难问题
前面提到过,线性编码的编码、解码问题是简单的。但是我们注意到编码领域一个重要研究方向就是纠错,如果编码后的 codeword 在不可靠信道上传输部分比特出现了错误,线性编码的纠错能力如何?准确而言,一个 的二元线性编码 最大能够纠错多少个比特数?纠错解码的时间复杂度如何?
第一个问题的答案将在本节给出,第二个问题的答案是纠错算法是 NP 困难的,目前最好的算法是 Information Set Decoding (ISD)类算法及其变体,拥有指数级别的复杂度,也因此用于设计一系列后量子密码体制。
线性编码的纠错能力
这里我们重新审视线性编码的本质,记 的二元线性编码 的生成矩阵为 ,其 个线性无关的行向量构成整个线性子空间的基 。记明文 ,其对应的码字满足:
本质上就是我们有 个变量 ,但是我们构建了 组线性方程:
上述是一个超定方程组,存在 组冗余方程组。假设错误向量为 ,汉明重量为 ,则一个含有错误向量的码字为 ,本质上即 组 变量的超定线性方程组中,有 组方程是错的,如何恢复出原始的 。从解方程的角度容易得到纠错的最多比特数不超过 。但是实际上线性编码的纠错能力小于 ,其一是,我们并不确定出错的比特位数,即使知道,也无法确定正确的明文,因为不能假设原始消息存在某种可验证的格式(比如 ASCII 码);其二,码字长度 比较大时,随着纠错比特数增大,纠错的时间复杂度是指数级别的(NP 困难)。
实际计算中,只要满足错误向量的汉明重量比较短时,认为此时解出的码字时正确的,一般我们认为最大纠错的比特数为 Gilbert-Varshamov Distance,记为 ,指的是最小的整数 使得 :
这个界有一个直观的解释,也就是说找一个上界 ,使得我们搜索完整个所有可能的错误方程出现的位置 恰好覆盖整个冗余方程组的空间 ,在小于这个 时,对于随机编码,纠错大概率能够得到唯一解,一旦大于 ,此时可能存在两个或者多个汉明权重相同的错误向量,解密得到两个不同消息,此时我们是无法区分正确消息的。(在后续 SDP 中的解释更为直观)
下面我们正式定义编码领域两个重要问题(本质上是同一个问题)
- Decoding Problem :给定整数 , 使得 并且 , 给定一个生成矩阵 (generator matrix) ,以及一个目标向量(编码后) ,上述问题的一个解是找到一个向量 使得其汉明重量 ,并且满足存在某个 使得 。
- Syndrome Decoding Problem :给定整数 , 使得 并且 , 一个 问题实例即,给定一个奇偶校验矩阵 (parity-check matrix) ,以及一个目标向量(编码后) (称为 syndrome),上述问题的一个解是找到一个向量 使得其汉明重量 ,并且满足 .
前一个解码纠错问题实际可以转换成 SDP,即:
我们在 SDP 问题中考虑Gilbert-Varshamov Distance 的值 , ,可能的值为 个, 搜索完所有可能的错误方程出现的位置 , 也就有 个可能的 Syndrome 值,如果这个值比整个 Syndrome 可能的的空间 小,那么给定一个 Syndrome 值,得到的错误向量 大概率是唯一的。否则当 ,由抽屉原理,对于某个 Syndrome 值,可能存在两个错误向量 同时满足 。
Decoding Challenge
本节简单介绍 Code-based Challenges 上的三个困难问题,这些问题是许多后量子密码体制的底层数学困难问题。
Syndrome Decoding Problem
定义:给定整数 , 使得 并且 , 一个 问题实例即,给定一个奇偶校验矩阵 (parity-check matrix) ,以及一个目标向量(编码后) (称为 syndrome),上述问题的一个解是找到一个向量 使得其汉明重量 ,并且满足 .
注记:
- 问题其实就是给了一个 上的欠定线性方程组, 个变量 , 方程个数比变量个数少 个,因此解空间大小为 ,我们的目标就是在 的空间中寻找汉明重量不大于 的目标解。
- Syndrome Decoding Problem 的在线挑战以及现有记录:https://decodingchallenge.org/syndrome
上述挑战的码率(Code-Rate)取为 ,即 ,一般而言可快速求解的汉明重量下界是 Gilbert-Varshamov bound ,上述挑战选取的值稍大(保证对于任意 解的存在性),为 。
Low-weight Codeword Problem
定义:给定整数 , 使得 并且 , 一个 问题实例即,给定一个满秩奇偶校验矩阵 (parity-check matrix) ,上述问题的一个解是找到一个非零向量 使得其汉明重量 ,并且满足 .
注记:
- 该问题可以视为特殊 syndrome 对应的 问题实例。
- Low-weight Codeword Problem 的在线挑战以及现有记录 https://decodingchallenge.org/low-weight 。
- 上述挑战的码率(Code-Rate)取为 ,即 ,固定 , 此时根据 Gilbert-Varshamov bound ,存在一个汉明重量为 144 的目标解。
- 解法 : 使用 BJMM algorithm 渐进需要 的复杂度,对于上述参数即是 .
Large Weight Syndrome Decoding Problem
定义:给定整数 , 使得 并且 , 一个 问题实例即,给定一个奇偶校验矩阵 (parity-check matrix) ,以及一个目标向量(编码后) (称为 syndrome),上述问题的一个解是找到一个向量 使得其汉明重量 ,并且满足 .
注记:
- 类似 Syndrome Decoding Problem ,环改为 ,目标改为寻找的是大于某个汉明重量的解。
- Large Weight Syndrome Decoding Problem 的在线挑战以及现有记录 https://decodingchallenge.org/large-weight .
- 上述挑战的码率 ,则 ,此时对于高汉明重量的 Gilbert-Varshamov bound 恰好是 ,这里我们取略小于 Gilbert-Varshamov bound 的目标汉明重量,即 。