首页 > 其他分享 >Elliptic curve discrete logarithm problem

Elliptic curve discrete logarithm problem

时间:2024-10-25 16:46:41浏览次数:1  
标签:logarithm right 23 text discrete equiv problem left mod

椭圆曲线离散对数问题(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}\)。之后,利用中国剩余定理求解如下方程组:

\( \left\{ \begin{array}{ll} {k } & {\equiv k_{2}\left( {\text{mod }2} \right)} & {\equiv 1\left( {\text{mod }2} \right)} \\ {k } & {\equiv k_{3}\left( {\text{mod }3} \right)} & {\equiv 0\left( {\text{mod }3} \right)} \\ {k } & {\equiv k_{7}\left( {\text{mod }7} \right)} & {\equiv 1\left( {\text{mod }7} \right)} \\ {k } & {\equiv k_{23}\left( {\text{mod }23} \right)} & {\equiv 20\left( {\text{mod }23} \right)} \end{array} \right.\)
求解得到\(k≡687\mbox{ mod }♯⁡E\),如此便解决了这个ECDLP实例。

通过上述实例不难发现,过程中最困难的部分是寻找\(k_{23}=20\)时对集合\(\{1,…,22\}\)的穷尽搜索。因此,最大的素数阶子群成为了基于ECC密码算法的瓶颈。同时,也直观的说明了为什么对于密码算法使用的群,其攻击的复杂度由最大的素数阶子群确定。


中国剩余定理(Chinese Remainder Theorem,CRT)
定义:
中国剩余定理可求解如下形式的一元线性同余方程组(其中\(n_1,n_2,…,n_k\)两两互质):

\( \left\{ \begin{matrix} {x \equiv a_{1}\left( {\text{mod }n_{1}} \right)} \\ {x \equiv a_{2}\left( {\text{mod }n_{2}} \right)} \\ \vdots \\ {x \equiv a_{k}\left( {\text{mod }n_{k}} \right)} \end{matrix} \right.\)
过程:

  1. 计算所有模数的积\(n\);
  2. 对于第\(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}\)。
  3. 方程组在模\(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 )\),所以有

\( \begin{array}{ccl} x & \equiv & {{\sum\limits_{i = 1}^{k}{a_{i}c_{i}}}\left( {\text{mod }n_{i}} \right)} \\ & \equiv & {\left( {a_{1}c_{1}\left( {\text{mod }n_{i}} \right) + \ldots + a_{k}c_{k}\left( {\text{mod }n_{i}} \right)} \right)\left( {\text{mod }n_{i}} \right)} \\ & \equiv & {a_{i}c_{i}\left( {\text{mod }n_{i}} \right)} \\ & \equiv & {a_{i}\left( {\text{mod }n_{i}} \right)} \end{array}\)
故对于任意\(i∈\{1,…,k\}\)均有\(x≡a_i (\mbox{mod }n_i )\)成立。

上述玩具实例的CRT求解过程
有\(n=2⋅3⋅7⋅23=966\),一元线性同余方程组

\(\left\{ \begin{array}{l} {k \equiv 1\left( {\text{mod }2} \right)} \\ {k \equiv 0\left( {\text{mod }3} \right)} \\ {k \equiv 1\left( {\text{mod }7} \right)} \\ {k \equiv 20\left( {\text{mod }23} \right)} \end{array} \right.\)

对于\(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\)。
进而,得到
\( \begin{array}{ccl} k & = & {{\sum\limits_{i = 1}^{4}{a_{i}c_{i}}}\ \text{mod }966} \\ & = & {\left( {1 \times 483 + 0 \times 322 + 1 \times 414 + 20 \times 714} \right)\ \text{mod }966} \\ & = & {15177\ \text{mod }966} \\ & = & 687 \end{array}\)



参考
Pairings for beginners
中国剩余定理 - OI Wiki

标签:logarithm,right,23,text,discrete,equiv,problem,left,mod
From: https://www.cnblogs.com/miro-cnblogs/p/18502788

相关文章

  • CSC3100 Problem Scale & Subtasks
    RequirementsCode(90%)YoucanwriteyourcodeinJava,Python,C,orC++.Thetimelimitmayvaryamongdifferentlanguages,dependingontheperformanceofthelanguage.Yourcodemustbeacompleteexcutableprograminsteadofonlyafunction.Weg......
  • PHAS0051: Data Analysis Problem
    PHAS0051:DataAnalysisProblemSheet2024/25Page1PHAS0051DataAnalysisProblemSheet2024/25Fourquestionstotalling42marksSubmissiondeadline5pm,Monday21stOctober.SoRAsubmissiondeadline5pm,Wednesday30thOctober.SubmissionviaTurnitinass......
  • 【广西省赛#7】G.Grand XOR Counting Problem Challenge
    Description给一个数组\({a_i},i=1,\cdots,n\),对\(j=0,1,\cdots,m-1\),计算其中有多少个大小为\(k\)的子序列满足其异或和为\(j\)。\(n\leq10^5\)$m\leq65536$Solution首先答案是\[[y^k]\prod_{i=1}^n(1+x^{a_i}y)\]这里对\(y\)做的是多项式乘法,对\(x\)......
  • problemmatcher 引用无效: $esbuild-watch vscode插件报错
    vscode插件esbuild类型提示报错最近在上手开发vscode插件,demo阶段就遇到了一个小问题。搜索引擎没有特别好的回答,记录一下,以供查漏补缺。vscode插件开发做为一统前端的开发插件,vscode+其丰富的插件能力,共同构建了欣欣向荣的vscode插件。在团队效率方面,也是不可或缺的利器......
  • CF1987F Interesting Problem
    前两个月被这题薄纱了,最后特判了几个数据通过,现在来补。先看简单版本,注意到后面的删除不会影响到前面的,而如果前面删除了\(x\)次,那么对于后面的任意一点\(i\),只要是满足\(i-2x\lea_i\lei\)这个条件就可以删除。结合数据范围容易想到设\(f_{l,r,x}\)表示对于\([l,r]\)......
  • PyTorchStepByStep - Chapter 3: A Simple Classification Problem
     X,y=make_moons(n_samples=100,noise=.3,random_state=0)X_train,X_val,y_train,y_val=train_test_split(X,y,test_size=.2,random_state=13) sc=StandardScaler()sc.fit(X_train)X_train=sc.transform(X_train)X_val=sc.transform(X_val......
  • P11022 「LAOI-6」Yet Another Graph Coloration Problem
    P11022「LAOI-6」YetAnotherGraphColorationProblem-洛谷|计算机科学教育新生态(luogu.com.cn)关于无解情况,如果这个图有两块连通块,那么不可能同时有黑色白色,假设\(1,2\)连通块,设\(1\)中有黑色,因为\(2\)中点不能到\(1\),所以\(2\)中只能是黑色,又因为\(2\)中......
  • Small Permutation Problem (Easy Version)
    算法考虑转化每个点\(p_i\)在一个平面直角坐标系中表示为点\((i,p_i)\)于是转化为一个棋盘问题,即每一个点不能在同一行/同一列\(a\)数组的限制相当于在左下角为\((0,0)\),右上角为\((i,i)\)中的正方形中,有\(a_i\)个棋子于是在每一次加入的时候,都只能在......
  • Problem Set 1 Installing MikTex
    ProblemSet1XXXDue:10/10/2024IntroductionThisdocumentwasproducedbyRusingRMarkdown.Tocompletethisweeksassignment,wewillaskyoutocompleteaseriesofanalyticalandcodingexercises.TheAnalyticalExercisesrequirenocoding,whereasth......
  • PAT甲级-1150 Travelling Salesman Problem
    题目 题目大意旅行商问题是NP-hard问题,即没有多项式时间内的解法,但是可以验证答案是否正确。给定一个无向图,判断简单环,复杂环和非环。对应“TSsimplecycle”、“TScycle”、“NotaTScycle”。还要求出环的最小路径权值和,及对应的索引。思路主要思路在于如何区分简......