Elliptic curve discrete logarithm problem
椭圆曲线离散对数问题(Elliptic curve discrete logarithm problem,ECDLP)
对于ECC系统而言,一般会希望\(♯E(F_q )\)尽可能地接近素数。这是因为攻击者面临的ECDLP其(渐进)复杂度取决于\(E(F_q )\)的最大素数子群的大小。即便椭圆曲线上离散对数问题的实现使用产生整个群的基点(generator),攻击者也可以依次使用已知群来顺序求解素数对应的子群中的较小序数(orders),然后利用中国剩余定理(CRT)求解答案。下面通过一个玩具实例来说明这一点。
曲线与ECDLP实例:
考虑曲线\(E/\mathbb{F}_{1021}:y^2=x^3+905x+100\),其群的阶为\(♯E(\mathbb{F}_q ) =966=2⋅3⋅7⋅23\)且基点\(P=(1006,416)\)。假定存在一个ECDLP:给定\(Q=(612,827)\),寻找满足\([k]P=Q\)的\(k\)。
对于这样一个例子,首先最简单的“攻击”自然是:尝试每个可能的\(i\)计算\(P\)的倍数\([i]P\),直到找到正确的那个,即\(i=k\)。
但与其在整个群中寻找正确的\(i\)(\(2≤i≤965\)),其实可以通过乘上适当的协因子(cofactor)将实例映射到每个素数阶子群,然后求解\(k_j≡k(\mbox{mod }j)\),\(j∈\{2,3,7,23\}\)。
对于\(j=2\),有\(P_j=P_2=[966⁄2]P=[483](1006,416)=(174,0)\),且\(Q_j=Q_2=[966⁄2]Q=[483](612,827)=(174,0)\),所以对于\(Q_2=[k_2 ] P_2\)有\(k_2=1\);
对于\(j=3\),有\(P_j=P_3=[966⁄3]P=[322](1006,416)=(147,933)\),且\(Q_j=Q_3=[966⁄3]Q=[322](612,827)=O\),所以对于\(Q_3=[k_3 ] P_3\)有\(k_3=3\);
对于\(j=7\),有\(P_j=P_7=[966⁄7]P=[138](1006,416)=(906,201)\),且\(Q_j=Q_7=[966⁄7]Q=[138](612,827)=(906,201)\),所以对于\(Q_7=[k_7 ] P_7\)有\(k_7=1\);
对于\(j=23\),有\(P_j=P_{23}=[966⁄23]P=[42](1006,416)=(890,665)\),且\(Q_j=Q_{23}=[966⁄23]Q=[42](612,827)=(68,281)\),所以对于\(Q_{23}=[k_{23} ] P_{23}\)有\(k_{23}=20\)。
此处,在\(j=23\)的情况下可以遍历\(k_{23}∈\{1,…,22\}\)的22个可能的取值找到正确的\(k_{23}\)使\(Q_{23}=[k_{23} ] P_{23}\)。之后,利用中国剩余定理求解如下方程组:
通过上述实例不难发现,过程中最困难的部分是寻找\(k_{23}=20\)时对集合\(\{1,…,22\}\)的穷尽搜索。因此,最大的素数阶子群成为了基于ECC密码算法的瓶颈。同时,也直观的说明了为什么对于密码算法使用的群,其攻击的复杂度由最大的素数阶子群确定。
中国剩余定理(Chinese Remainder Theorem,CRT)
定义:
中国剩余定理可求解如下形式的一元线性同余方程组(其中\(n_1,n_2,…,n_k\)两两互质):
- 计算所有模数的积\(n\);
- 对于第\(i\)个方程:
2.1. 计算\(m_i=\frac{n}{n_i}\) ;
2.2. 计算\(m_i\)在模\(n_i\)意义下的逆元\(m_i^{-1}\);
2.3. 计算\(c_i=m_i m_i^{-1}\)。 - 方程组在模\(n\)意义下的唯一解为:\(x = {\sum\limits_{i - 1}^{k}{a_{i}c_{i}}}\ \text{mod }n\)。
证明:
此处证明上述过程计算获得\(x = {\sum\limits_{i - 1}^{k}{a_{i}c_{i}}}\ \text{mod }n\)对于任意\(i∈\{1,…,k\}\),均有\(x≡a_i (\mbox{mod }n_i )\)成立。
当\(i≠j\)时,有\(m_j≡0(\mbox{mod }n_i )\)成立,进而有\(c_j≡m_j (\mbox{mod }n_i )≡0(\mbox{mod }n_i )\)。又因\(c_i≡m_i m_i^{-1} (\mbox{mod }n_i )\),所以有
上述玩具实例的CRT求解过程
有\(n=2⋅3⋅7⋅23=966\),一元线性同余方程组
对于\(i=1\):有\(m_1=966/2=483\),\(m_1^{-1}≡1(\mbox{mod }2)\),从而\(c_1=m_1 m_1^{-1}=483\);
对于\(i=2\):有\(m_2=966/3=322\),\(m_2^{-1}≡1(\mbox{mod }3)\),从而\(c_2=m_2 m_2^{-1}=322\);
对于\(i=3\):有\(m_3=966/7=138\),\(m_3^{-1}≡3(\mbox{mod }7)\),从而\(c_3=m_3 m_3^{-1}=414\);
对于\(i=4\):有\(m_4=966/23=42\),\(m_4^{-1}≡17(\mbox{mod }23)\),从而\(c_4=m_4 m_4^{-1}=714\)。
进而,得到