基于隐域方程构建安全的公钥加密方案
引言
公钥密码学[1]基于求解有限域上的多变量二次方程的 NP难问题[2, 3],由于其高性能以及对量子攻击的抗性,被认为是传统基于因式分解和离散对数的公钥密码系统的可行候选方案[4]。HFE方案[5]可能是所有多变量公钥密码方案中最著名的密码系统。HFE方案首先在扩域Fq n上定义一个单变量映射。
$$
F(X)= \sum_{0 \leq i \leq j<n,q^i +q^j \leq D} a_{ij} X^{q^i +q^j}+ \sum_{0 \leq i<n,q^i \leq D} b_i X^{q^i}+ c, \tag{1}
$$
其中,为了使用户能够使用Berlekamp算法[6]高效地计算F(X)的根,所选择的次数上界 D不能太大。然后应用两个可逆的仿射变换来隐藏中心映射[2, 5]的特殊结构。然而,中心映射F(X)可以用一个低秩矩阵[7],表示,这使其容易受到MinRank攻击[7–9]。因此,需要一些改进来修复基本的HFE方案[10–14]。然而,所有已知的改进方法只能对HFE中心映射的特殊结构施加部分非线性变换,因此它们仍然容易受到某些攻击[15–17]。
我们考虑在特征3的有限域上的HFE方案。我们对明文空间施加一些限制,并可以利用这些限制来合并线性部分和平方部分的系数。通过这样做,我们可以对 HFE加密方案的中心映射施加一个完全非线性变换。性能分析表明,该修改可将公钥存储减少O(n²)位,并将加密开销降低约O(n²)位操作。结果表明,该修改能够抵御已知攻击,包括MinRank攻击、线性化方程攻击和直接代数攻击。
2. 提案
2.1 符号说明
设Fq是一个阶为 q的有限域,其中 q为素数幂。设f(x)是Fq上的一个次数为 n的不可约多项式;则Fqn= Fq[x]/f(x)构成一个次数为n的扩域。该构造在扩域Fqn与向量空间Fn q之间存在一个标准同构φ;即对于元素g(x) ∈ Fqn,我们有 φ(g(x)) = (g₀, …, gₙ₋₁) ∈ Fⁿq。我们将映射 φ的逆记作φ⁻¹。注意,定义在Fqn上的弗罗贝尼乌斯映射T(X)^= X^qi(i= 0, 1, …, n −1)是Fq‐线性的;也就是说,当在基域Fq中表示时,T(X)将是Fq上的 n维线性函数。
2.2 描述
该加密方案由三个子算法组成:密钥生成、加密和解密。
密钥生成
系统参数包括一个在F₃上次数为n的不可约多项式f(x),扩域F₃ⁿ= F₃[x]/f(x),以及F₃ⁿ与F₃ⁿ之间的同构 φ。首先,我们在(1)中定义一个HFE映射F(X),并随机选择两个可逆的仿射变换L₁: F₃ⁿ → F₃ⁿ和L₂: F₃ⁿ → F₃ⁿ。然后我们计算它们的逆L⁻¹₁和L⁻¹₂,以及 n个变量的二次多项式P = L₁ ∘φ ∘F ∘φ⁻¹ ∘L₂=(p₀,p₁, …, pₙ₋₁)。
对于x=(x₀,x₁, …, xₙ₋₁),我们设定
$$
pk(x)= \sum_{i=0}^{n-1} α^{(k)}
i x^2_i + \sum
{i=0}^{n-2} \sum_{j=i+1}^{n-1} β^{(k)}
{ij} x_ix_j + \sum
{i=0}^{n-1} γ^{(k)}_i x_i + δ^{(k)},\tag{2}
$$
其中所有系数均属于F₃,对应 k= 0,⋯,n − 1。然后我们合并pk的平方项和线性项的系数,即 ρ^(k)_i = α^(k)_i + γ^(k)_i 对应 i,k= 0, 1,⋯,n − 1,得到改进的HFE方案的公钥,也就是 n个二次多项式Q=(q₀ ,q₁ ,⋯,qₙ₋₁) ,其中,对应k= 0,⋯,n −1。
$$
q_k(x)= \sum_{i=0}^{n-2} \sum_{j=i+1}^{n-1} β^{(k)}
{ij} x_ix_j + \sum
{i=0}^{n-1} ρ^{(k)}_i x_i + δ^{(k)}. \tag{3}
$$
私钥由 F(X)、L⁻¹₁ 和 L⁻¹₂ 组成。
加密
明文空间为 M ={0, 1}ⁿ。对于一个明文m ∈M,我们只需计算 c=(c₀ ,…, cₙ₋₁) =Q(m) ∈ F₃ⁿ 作为密文。
解密
给定一个密文 c ∈ F₃ⁿ ,我们计算 y=L⁻¹₁(c), Y= φ⁻¹(y) ∈F₃ⁿ,并使用Berlekamp算法[6]计算所有满足 F(X) = Y 的原像 X ∈F₃ⁿ;对于每个 X,我们计算 x = φ(X) ∈F₃ⁿ。最后,我们计算m= L⁻¹₂(x)。如果m ∈ M,则输出m作为明文。如果从所有原像 X中均无法得到属于M的向量,则输出符号 ⊥表示这是一个无效密文。
解密原理
我们只需注意到 mᵢ= 0,1,所以m²ᵢ= mᵢ。因此,对于 k= 0,1,…, n −1,
$$
\begin{aligned}
c_k &= q_k(m)= \sum_{i=0}^{n-2} \sum_{j=i+1}^{n-1} β^{(k)}
{ij} m_im_j + \sum
{i=0}^{n-1} ρ^{(k)}
i m_i + δ^{(k)} \
&= \sum
{i=0}^{n-2} \sum_{j=i+1}^{n-1} β^{(k)}
{ij} m_im_j + \sum
{i=0}^{n-1}(α^{(k)}
i+γ^{(k)}_i)m_i + δ^{(k)} \
&= \sum
{i=0}^{n-1} α^{(k)}
i m^2_i + \sum
{i=0}^{n-2} \sum_{j=i+1}^{n-1} β^{(k)}
{ij} m_im_j + \sum
{i=0}^{n-1} γ^{(k)}_i m_i + δ^{(k)} \
&= p_k(m).
\end{aligned}
\tag{4}
$$
因此,c= Q(m) =P(m) =L₁ ∘ φ ∘F ∘ φ⁻¹ ∘ L₂(m)。改进的 HFE解密通过从最左侧逐层剥离复合函数来恢复明文m。
备注 。原始HFE方案[5]可在任意域Fq及其扩域Fqn上运行。实际上,二次多项式映射P正是原始HFE方案的公钥,而原始方案的私钥也由F(X)、L⁻¹₁和L⁻¹₂组成。原始HFE方案的加密过程仅仅是计算c= P(m),其中明文m属于Fⁿq,但不一定在M={0,1}ⁿ中。改进的HFE方案的解密算法与原始HFE解密完全相同。
2.3 性能与比较
为了在统一平台上对提出的HFE改进与原始HFE方案进行比较,我们考虑定义在F₃及其扩域F₃ⁿ上的HFE方案。显然,改进后的HFE方案与原始HFE方案具有相同的私钥和解密算法。因此,这两种方案的私钥大小和解密开销相同。在改进的方案中,公钥为Q,因此无需存储公钥P中平方项的系数。因此,所提出的方案将公钥大小减少了O(n²)位。在加密过程中,所提出的HFE改进方案无需执行平方计算,因此所提出的加密方法将计算成本减少了O(n²)位操作。
3. 安全性
我们分析了提出的HFE改进加密方案的安全性。我们首先回顾已知攻击的基本思想,然后说明该方案为何能够抵御这些攻击。
3.1 线性化方程攻击
基本思想
。Patarin 在 Matsumoto-Imai 方案 [19] 上发现了线性化方程攻击 [18]。在 Matsumoto-Imai 方案中,定义了一个在特征为 $ q $ 的有限域 $ \mathbb{F}_{q^n} $ 上的置换
$$
F(X) = X^{q^\theta + 1}, \quad \text{满足} \quad \gcd(\theta, n) = 1,
$$
然后使用两个可逆的仿射变换 $ L_1 $ 和 $ L_2 $ 将中心映射 $ F $ 伪装成域 $ \mathbb{F}_q $ 上的二次映射 $ P $,即
$$
P = L_1 \circ \varphi \circ F \circ \varphi^{-1} \circ L_2. \tag{5}
$$
攻击的基本思想如下。注意 $ Y = F(X) = X^{q^\theta + 1} $ 意味着
$$
X Y^{q^\theta} - X^{q^{2\theta}} Y = 0.
$$
通过设置
$$
x = (x_0, \dots, x_{n-1}) = \varphi(X), \quad y = (y_0, \dots, y_{n-1}) = \varphi(Y) = \varphi(F(X)) = \varphi(F(\varphi^{-1}(x))),
$$
我们可以将 $ XY^{q^\theta} - X^{q^{2\theta}}Y = 0 $ 表示为关于函数 $ \varphi \circ F \circ \varphi^{-1} $ 的输入 $ x $ 和输出 $ y $ 的 $ n $ 个双线性方程
$$
\sum_{i=0}^{n-1} \sum_{j=0}^{n-1} a^{(k)}
{ij} x_i y_j = 0, \tag{7}
$$
其中 $ i,j,k = 0,\dots,n-1 $ 且 $ a^{(k)}
{ij} \in \mathbb{F}
q $。给定一个密文 $ c = (c_0, \dots, c
{n-1}) = P(m) $,我们希望恢复对应的明文 $ m = (m_0, \dots, m_{n-1}) $。注意,$ m $($ c $,分别地)是函数 $ \varphi \circ F \circ \varphi^{-1} $ 的输入(输出,分别地)上的仿射变换 $ L_2 $($ L_1 $,分别地)。因此,$ m $ 和 $ c $ 满足由双线性方程导出的以下 $ n $ 个方程,即
$$
\sum_{i=0}^{n-1} \sum_{j=0}^{n-1} \alpha^{(k)}
{ij} m_i c_j + \sum
{i=0}^{n-1} \beta^{(k)}
i m_i + \sum
{i=0}^{n-1} \gamma^{(k)}
i c_i + \delta^{(k)} = 0, \tag{8}
$$
其中 $ i,j,k = 0,\dots,n-1 $ 以及 $ \mathbb{F}_q $ 中的所有系数。这些 $ n $ 个方程称为线性化方程,可通过公开多项式 $ P $ 高效计算得到。研究表明,这些线性化方程的秩至少为 $ n - \gcd(n, \theta) $ [20]。因此,给定一个密文 $ c = (c_0, \dots, c
{n-1}) = P(m) $,我们只需求解 $ n $ 个线性化方程,即可获得对应的明文 $ m = (m_0, \dots, m_{n-1}) $。
为什么该方案能够抵御线性化方程攻击 。我们首先注意到,HFE方案[5]是由Patarin提出的,旨在抵御线性化方程攻击,并且目前没有已知的证据表明HFE方案中存在线性化方程。因此,HFE方案对线性化方程攻击是安全的。至于提出的HFE改进方案,我们只需注意到,对于任意明文 $ m \in M = {0,1}^n $,$ c = Q(m) = P(m) $ 对原始HFE方案和提出的HFE改进方案而言都是有效的密文。因此,我们无法期望从改进的HFE方案中推导出线性化方程。
3.2 MinRank攻击
基本思想
。不失一般性,我们假设两个可逆仿射变换 $ L_1 $ 和 $ L_2 $ 是线性的 [21],并定义各项的术语
$$
F^
(X) = \sum_{0 \leq i \leq j < n, q^i + q^j \leq D} a_{ij} X^{q^i + q^j} \tag{9}
$$
在(1)中的 $ F(X) $。然后我们可以将 $ F^
$ 视为一个关于二次型
$$
X = (X, X^q, \dots, X^{q^{n-1}}); \tag{10}
$$
然后我们关联 $ F^
$ 一个对称的 $ n $ 维方阵 $ F $,使得
$$
F^
(X) = X F X^T. \tag{11}
$$
对称矩阵 $ F $ 是低秩的,正是该对称矩阵 $ F $ 的特殊结构导致了原始HFE方案不安全。我们回顾 $ 0 \leq i \leq j < n, q^i + q^j \leq D $,并记小于或等于 $ \log_q(D - 1) + 1 $ 的最小整数为 $ r $,会发现 $ F $ 的最后 $ n - r $ 列(相应地,行)的所有元素均为零。因此,该对称矩阵 $ F $ 的秩最多为 $ r $。粗略地说,当我们在映射 $ F^
$ 的输入和输出上应用两个线性变换时,相应矩阵的秩仍然最多为 $ r $。我们将 $ P = L_1 \circ \varphi \circ F \circ \varphi^{-1} \circ L_2 $ 的二次部分定义为 $ P^
= (p^
_0, \dots, p^
{n-1}) $,即对于 $ k = 0, \dots, n - 1 $,
$$
p^
k(x) = \sum
{i=0}^{n-1} \alpha^{(k)}
i x^2_i + \sum
{i=0}^{n-2} \sum_{j=i+1}^{n-1} \beta^{(k)}_{ij} x_i x_j. \tag{12}
$$
注意,$ F^
(X) $ 可以表示为在基域 $ \mathbb{F}_q $ 上的 $ n $ 齐次二次多项式;那么对 $ F^
(X) $ 的输入和输出应用两个线性变换后,也将得到在基域 $ \mathbb{F}_q $ 上的 $ n $ 齐次二次多项式。也就是说
$$
P^
= L_1 \circ \varphi \circ F^
\circ \varphi^{-1} \circ L_2. \tag{13}
$$
或者等价地,
$$
F^
= \varphi^{-1} \circ L^{-1}_1 \circ P^
\circ L^{-1}_2 \circ \varphi. \tag{14}
$$
上述方程表明,我们可以在某些未知的线性变换下,将公钥 $ P $ 的二次部分 $ P^
$ 提升到扩域 $ \mathbb{F}
{q^n} $ 上,从而推导出 $ F^
$,进而得到 $ F $。基普尼斯和沙米尔指出[7],通过将 HFE方案 的公钥 $ P $ 的二次部分 $ P^
$ 提升到扩域 $ \mathbb{F}_{q^n} $,可以找到一组矩阵。然后通过寻找这些矩阵的线性组合,使得矩阵 $ F $ 具有最小秩(至多为 $ r $),从而确定矩阵 $ F $。因此,通过求解最小秩问题,我们可以确定矩阵 $ F $ 以及线性变换 $ L_1 $ 的系数。尽管最小秩问题已被证明是 NP完全 [22, 23],但归约到最小秩问题确实对 HFE方案 的安全性构成了严重的安全威胁 [7, 8]。
为何该方案能抵御MinRank攻击
。为了说明所提出的 HFE方案修改为何能够抵御MinRank攻击[7, 8],我们只需证明当提升到扩域 $ \mathbb{F}
3^n $ 时,公钥的二次部分 $ Q $ 不与低秩矩阵相关联。我们将公钥 $ Q $ 的二次部分设为 $ Q^
= (q^
_0, q^
_1, \dots, q^
{n-1}) $,其中
$$
q^
k(x) = \sum
{i=0}^{n-2} \sum_{j=i+1}^{n-1} \beta^{(k)}_{ij} x_i x_j \tag{15}
$$
对于 $ k = 0, \dots, n - 1 $。如果我们把 $ Q^
$ 提升到扩域并发现对应的矩阵不是低秩的,则可以断言我们的方案能够抵御 MinRank攻击 [7, 8]。因此我们定义
$$
F_1(X) = \varphi^{-1} \circ L^{-1}_1 \circ Q^
\circ L^{-1}
2 \circ \varphi(X) = X F_1 X^T. \tag{16}
$$
现在我们证明相应的矩阵 $ F_1 $ 不一定为低秩。我们定义 $ S = (s_0, s_1, \dots, s
{n-1}) $ 为
$$
s_k(x) = \sum_{i=0}^{n-1} \alpha^{(k)}_i x^2_i \tag{17}
$$
对于 $ k = 0, \dots, n - 1 $,以及
$$
F_2(X) = \varphi^{-1} \circ L^{-1}_1 \circ S \circ L^{-1}_2 \circ \varphi(X) = X F_2 X^T. \tag{18}
$$
显然,$ P^
(x) = Q^
(x) + S(x) $。因此我们可以很容易地验证
$$
X F X^T = F^
(X) = \varphi^{-1} \circ L^{-1}_1 \circ P^
\circ L^{-1}_2 \circ \varphi(X) = \cdots = X(F_1 + F_2)X^T. \tag{19}
$$
因此我们得到 $ F_1 = F - F_2 $。在这个矩阵方程中,我们知道 $ F $ 是低秩的(秩最多为 $ r $)。然而,矩阵 $ F_2 $ 的秩是未知的,因此矩阵 $ F_1 $ 的秩不一定低。所以攻击者无法从公开的映射 $ Q^
$ 推导出一个低秩矩阵。因此MinRank攻击不适用于对提出的HFE改进方案进行密码分析。
3.3 代数攻击
基本思想
。攻击多变量公钥密码系统的一种直接方法是利用某些算法计算一些理想中Gröbner基,以直接求解多变量二次方程。给定密文 $ c = Q(m) $,我们希望从以下二次方程中求解明文 $ m $:
$$
\begin{cases}
q_0(m_0, m_1, \dots, m_{n-1}) = c_0 \
q_1(m_0, m_1, \dots, m_{n-1}) = c_1 \
\vdots \
q_{n-1}(m_0, m_1, \dots, m_{n-1}) = c_{n-1}
\end{cases} \tag{20}
$$
代数攻击或直接攻击可以使用一些格罗布纳基算法,例如F5[24]和XL[25]算法,来求解由 $ q_0 - c_0, q_1 - c_1, \dots, q_{n-1} - c_{n-1} $ 生成的理想
$$
I = \langle q_0 - c_0, \dots, q_{n-1} - c_{n-1} \rangle.
$$
观察到关于 $ i = 0, 1, \dots, n-1 $ 的域方程 $ m^q_i - m_i = 0 $ 将有助于简化计算,因此我们也可以将 $ n $ 域方程添加到生成元中;即,我们求解该理想的Gröbner基
$$
I^* = \langle q_0 - c_0, \dots, q_{n-1} - c_{n-1}, m^q_0 - m_0, \dots, m^q_{n-1} - m_{n-1} \rangle. \tag{21}
$$
为什么该方案能抵御代数攻击
。在所提出的HFE加密方案的修改版本中,我们对明文空间施加了一些限制。明文空间是 $ M = {0, 1}^n $,而不是 $ \mathbb{F}
3^n $。因此,我们获得了一些与明文 $ m = (m_0, m_1, \dots, m
{n-1}) $ 相关的附加方程;即对于 $ i = 0, \dots, n-1 $,我们有 $ m^2_i - m_i = 0 $。明文块 $ m_i $ 还满足域方程 $ m^3_i - m_i = 0 $。然而,我们可以从方程 $ m^2_i - m_i = 0 $ 推导出域方程 $ m^3_i - m_i = 0 $。因此,在所提出的修改后的加密方案中,我们需要求理想中的Gröbner基
$$
I’ = \langle q_0 - c_0, \dots, q_{n-1} - c_{n-1}, m^2_0 - m_0, \dots, m^2_{n-1} - m_{n-1} \rangle. \tag{22}
$$
为了评估利用Gröbner基算法恢复明文的难度,我们可以使用二次方程[27]的正则度 $ D_{\text{reg}} $ 来估计计算成本。根据[2]第219页给出的结果,计算成本至少为 $ O(n^{2D_{\text{reg}}}) $ 位操作。在建议参数 $ n = 256 $ 和 $ D = 144 $ 下,二次方程的正则度为 $ D_{\text{reg}} = 5 $。因此,计算开销约为 $ 256^{10} = 2^{80} $ 位操作。因此,在代数攻击下,所提出的修改版HFE加密方案在建议参数下可达到80位的安全级别。
3.4 建议参数
考虑到上述讨论,我们建议选择 $ n = 256 $ 和 $ D = 144 $。从安全分析可以看出,在建议参数下,提出的HFE改进加密方案可以达到80位的安全级别。
4. 结论
在本文中,我们提出了一种新颖的改进HFE加密方案。提出的HFE改进具有以下特点:
(i) 多变量公钥加密的通用填充方案 :所提出的 HFE变体可以通过对明文空间施加一些限制来合并平方项和线性项。该方法是一种通用填充方案,因此可以应用于其他多变量密码构造。
(ii) 对中心映射的完全非线性变换 :该提出的方法可以消除公开多变量二次多项式中的所有平方项,从而对所有多项式施加非线性变换。
(iii) 抵御已知攻击的安全性 :我们说明了提出的 HFE改进加密方案能够抵抗包括线性化方程攻击、MinRank攻击和代数攻击在内的已知攻击。
(iv) 更高效的加密和更小的公钥大小 :该提出的改进加密方案无需在公钥中存储平方项,因此可将加密开销减少 $ O(n^2) $ 位操作,并节省 $ O(n^2) $ 比特的公钥存储空间。
作为一种新的多变量公钥加密方案,该提案的
安全性
需要进一步研究。因此,我们鼓励读者对该提案的
安全性
进行分析。

61

被折叠的 条评论
为什么被折叠?



