MXL2算法与McEliece PKC侧信道攻击解析
一、MXL2算法
MXL2算法用于求解GF(2)上的多项式方程组。为了简化,假设方程组是二次且有唯一解。以下是该算法的详细介绍:
1. 算法步骤
- 初始化 :使用高斯消元法使多项式集合P线性无关。将根多项式集合设为∅,总次数界D设为2,消元次数设为D,系统扩展标志设为false,突变体集合设为∅,乘法历史设为一个一维数组,元素个数与P相同且初始化为1。
- 高斯消元 :使用线性化将P中次数≤消元次数的所有多项式集合转换为简化行阶梯形。
- 提取根 :将所有次数≤2的新多项式复制到根多项式集合中。
- 求解根 :如果根中存在一元多项式,则确定相应变量的值,并从变量集合中移除已求解的变量。如果这解决了系统,则返回解并终止。否则,将根中的变量值代入,将P设为根,将消元次数设为根的最大次数,重置乘法历史为元素个数与根相同且初始化为1的数组,然后返回高斯消元步骤。
- 提取突变体 :将{P}中所有次数<D的新多项式复制到突变体集合中。
- 处理突变体 :如果找到突变体,则将乘法历史扩展一个与新多项式长度相同且初始化为1的数组,将具有最小次数的必要数量的突变体乘以所有变量,为每个新多项式设置其变量乘数的乘法历史,将结果多项式包含在P中,将消元次数设为最小次数 + 1,并从突变体中移除所有已乘的突