精华内容
下载资源
问答
  • 椭圆曲线加密

    2019-04-29 20:53:44
    椭圆曲线加密(ECC)最大的优点就是使用比RSA短得多的密钥得到相同的安全性,因此可以减少处理负荷,使公钥密码的应用领域得到拓展。 基本原理: 椭圆曲线密码体制使用了在有限Abel群(Zp或者GF(2m))上构造的椭圆...

    椭圆曲线加密

    椭圆曲线加密(ECC)最大的优点就是使用比RSA短得多的密钥得到相同的安全性,因此可以减少处理负荷,使公钥密码的应用领域得到拓展。

    基本原理:

    椭圆曲线密码体制使用了在有限Abel群(Zp或者GF(2m))上构造的椭圆曲线,椭圆曲线在有限群的加法符号定义下成为一个单向陷门函数。

    在有限群上的椭圆曲线在计算上没有显而易见的几何解释,但是可以将实数域上的椭圆曲线的几何解释移植过来。为了方便理解,先从实数域上的椭圆曲线开始讲解

    1.  实数域上的椭圆曲线

    椭圆曲线并不是椭圆,而是与椭圆周长的方程相似的三次方程。一般,椭圆曲线方程形为:

        y2 + axy + by = x3 + cx2 + dx + e

    对我们而言将方程限制为以下形式就已足够:

        y2 = x3 + ax + b                 (10.1)

    对于给定的a和b,对x的每一个值,需画出y的正值和负值。

     

    构造Abel群

    将满足式(10.1)的所有点(x , y)和元素O(称为无穷远点或者零点的元素,后面会讨论这个概念)所组成的点集E(a , b)。上图中两条曲线分别可用集合E(-1 , 0)和E(1 , 1)表示。

    若式(10.1)里的参数a和b满足  

        4a3 + 27b2 ≠ 0                    (10.2)

    则基于集合E(a , b)可以定义一个可交换群(Abel群),其加法的运算规则如下:

      1、O是加法的单位元,有O = -O;对椭圆曲线上任何一点P,有P + O = P

      2、点P (x , y)的负元-P = (x , -y)。注意这两点可以用一条垂直的线连接起来,并且P + (-P) = P - P = O

      3、要计算坐标不同的P和Q之和,则在P和Q间作一条直线并找到与曲线的第三个交点R(显然存在唯一的交点R,除非这条直线与P或者Q相切,此时分别取R = P或者R = Q,与下述5相一致)。并定义如下三点上的加法:P + Q = -R。也就是,定义P + Q 为第三个交点相对于x轴的镜像

      4、上述术语的几何解释也适用于具有相同x坐标的两个点P和 -P的情形。用一条垂直的线连接这两点,这可视为在无穷远点与曲线相交,因此有P + (-P) = O,与上述2相一致。

      5、为计算点Q的两倍,画一条切线并找到另一交点S,则Q + Q = 2Q = -S。

    加法的结论

      1、对于不是互为负元的两个不同点P = (xP , yP) 和 Q = (xQ , yQ),连接它们的直线的斜率Δ= (yQ - yP)/(xQ - xP),我们可用如下表示和R = P + Q

        xR =Δ2 - xP - xQ

        yR =Δ(xP - xR) - yP                (10.3)

      2、计算一个点与它自身相加:P + P = 2P = R,则表达式为

        

     

    2.  Zp上的椭圆曲线

    对于Zp上的素曲线,我们使用三次方程,p为素数,其中的变量和系数自集合{0,1,···,p-1}取值,运算为模p运算。

    对Zp上的椭圆曲线,如同实数情形一样,方程如下:

        y2 mod p = (x3 + ax + b) mod p         (10.5)

    可以证明,若(x3 + ax + b) mod p无重复因子,则基于集合Ep(a , b)可定义一个有限Abel群,这等价于以下条件:

        (4a3 + 27b2) mod p ≠ 0             (10.6)

    注意,(10.6)与(10.2)具有相同的形式

     

    Ep(a , b)上的加法运算构造与定义在实数上的椭圆曲线中的描述的代数方法是一致的。对任何点P , Q∈Ep(a , b)

      1、P + O = P

      2、若P = (xP , yP),则点(xP , -yP)是P的负元,记为 -P。例如对E23(1 , 1)上的点P = (13 , 7),有 -P = (13 , -7),而 -7 mod 23 = 16,因此,-P = (13 , 16),该点也在E23(1 , 1)上。

      3、若P = (xP , yP),Q = (xQ , yQ),且P ≠ -Q则R = P + Q = (xR , yR)由下列规则确定:

        xR =λ2 - xP - xQ

        yR =λ(xP - xR) - yP

        其中

        

      4、乘法定义为重复相加。如4P = P + P + P + P

     

     

    为了确定各种椭圆曲线密码的安全性,需要知道定义在椭圆曲线上的有限Abel群中点的个数。在有限群Ep(a , b)中,点的个数N的范围是

     

        p + 1 - 2p1/2 ≤ N ≤ p + 1 + 2p1/2

     

    所以,Ep(a , b)上点的个数约等于Zp中元素的个数,即p个元素。

     

     

    3.  GF(2m)上的椭圆曲线

     

    对于GF(2m)上的椭圆曲线,其变量和系数在GF(2m)内取值,且运算为GF(2m)里的运算。可以证明,GF(2m)上适合于椭圆曲线密码应用的三次方程与Zp上的三次方程有所不同,其形为:

     

        y2 + xy = x3 + ax2 + b                   (10.7)

     

    可以证明,只要b ≠ 0,则可基于集合E2m(a , b)可定义一个有限Abel群。对任何点P , Q∈E2m(a , b),加法的运算规则如下:

     

      1、P + O = P

     

      2、若P = (xP , yP),则P + (xP , xP + yP) = O。点(xP , xP + yP)是P的负元,记为 -P。

     

      3、若P = (xP , yP),Q = (xQ , yQ),且P ≠ -Q,P ≠ Q则R = P + Q = (xR , yR)由下列规则确定:

     

        xR =λ2 +λ+ xP + xQ + a

     

        yR =λ(xP + xR) + xR + yP

     

        其中

        

      

      4、若P = (xP , yP),则R = 2P = (xR , yR)由下列规则确定:

        xR =λ2 + λ+ a

        yR =xP2 + (λ + 1)xR

        其中

        λ= xP + yP/xP 

     

    椭圆曲线密码学

    考虑方程Q = kP,其中Q,P∈Ep(a , b),对给定的k和P计算Q比较容易,而对给定的Q和P计算k则很困难,这就是椭圆曲线的离散对数问题。

    用椭圆曲线实现Diffie-Hellman密钥交换

    首先,挑选一个大整数q以及式(10.5)或式(10.7)中的椭圆曲线参数a和b,这里q为素数p或者是形为2m的整数。由此可以定义出点的椭圆群Eq(a , b)

    其次,在Eq(a , b)中挑选基点G = (x1 , y1),G的阶为一个非常大的数n。椭圆曲线上的点G的阶n是使nG = 0 成立的最小正整数。Eq(a , b)和G是该密码体制中通信各方均已知的参数

    用户A和用户B之间完成密钥交换过程如下:

      1、A选择一个小于n的整数nA作为其私钥,然后产生其公钥PA = nA × G。该公钥是Eq(a , b)中的一个点。B也类似地选择私钥nB并计算公钥PB

      2、A产生秘密钥k = nA × PB,B产生秘密钥k = nB × PA

        nA × PB = nA × (nB × G) = nB × (nA × G) = nB × PA

    要破译这种体制,攻击者必须由G和kG计算k,这被认为很难。

    椭圆曲线加/解密

    首先,我们必须将要发送的消息明文m编码为形为(x , y)的点Pm,并对点Pm进行加密和其后的解密。注意,不能简单地将消息编码为点的x坐标或y坐标,因为并不是左右的坐标都在Eq(a , b)中。将消息m编码为点Pm的方法有很多种,存在比较直接的编码方法。

    像密钥交换系统一样,加/解密系统也需要点G和椭圆群Eq(a , b)这些参数。每个用户选择一个私钥n,并产生公钥P = n × G

    若A要将消息Pm加密后发送给B,则A随机选择一个正整数k,并产生密文Cm,该密文是一个点对:

        Cm = {kG , Pm + kPB}

    注意,此处A使用了B的公钥PB,B要对密文解密,则需用第二个点减去第一个点与B的私钥之积:

        Pm + kPB - nB(kG) = Pm + k(nBG) - nB(kG) = Pm

    椭圆曲线密码的安全性

    ECC的安全性是建立在由kP和P确定k的困难程度之上的,这个问题称为椭圆曲线对数问题。Pollard rho方法是已知的求椭圆曲线对数最快的方法。下表从密码分析所需计算量的角度,通过给出可比较的密钥大小,比较了各种算法。在密钥长度相同时,ECC和RSA所执行的计算量差不多。因此,与具有同等安全性的RSA相比,由于ECC使用的密钥更短,所以ECC所需的计算量比RSA更小。

     

     

    基于非对称密码的伪随机数生成器

    由于非对称算法的速度比对称算法明显慢一些,所以非对称算法不用于生成可扩展的PRNG流,但是,对于生成短的伪随机序列,创建伪随机函数(PRT),非对称的方法还是很有用的。

    Micali-Schnorr PRNG

     

    该PRNG定义如下:

    创建   选择素数p,q;n = pq;φ(n) = (p - 1)(q - 1),选择e使得gcd(e ,φ(n)) = 1。此外N =└log2n┘ + 1(n的位长度)。选择r,k使得r + k = N

    种子   选择位长度为r的随机种子x0

    生成   生成一个长为k × n的伪随机序列,将i从1到m,计算

          yi = xi-1e mod n

          xi = r , yi的最高有效位

          zi = k , yi的最低有效位

    输出   输出序列为z1 || z2 || ··· || zm 

     

    参数n,r,e,k的选择要遵循下面6个要求:

      1、n = pq               n是两个素数的乘积,在RSA中则是密码长度

      2、1 < e < φ(n) ;gcd(e ,φ(n) ) = 1        确保映射s -> se mod n是一对一的

      3、re ≥ 2N               确保求幂运算是有取模过程

      4、r ≥ 2                 防止密码攻击

      5、k,r是8的倍数             应用方便

      6、k ≥ 8;r + k = N              所有位都有效

     

     

     

    展开全文
  • 椭圆曲线加密所在的椭圆曲线The world of cryptography could be changed using a relatively technique: isogenies (“equal origin”). One of the best usages of isogenies is within quantum robust key ...

    椭圆曲线加密所在的椭圆曲线

    The world of cryptography could be changed using a relatively technique: isogenies (“equal origin”). One of the best usages of isogenies is within quantum robust key exchange (using SIDH —Supersingular isogeny key exchange) An isogeny provides a mapping from one elliptic curve to another. The standard form of an elliptic curve equation is:

    可以使用一种相对的技术来改变密码学的世界:同构(“平等起源”)。 异构体的最佳用法之一是在量子鲁棒密钥交换(使用SIDH-超奇异质密钥交换)中。异构体提供从一条椭圆曲线到另一条椭圆曲线的映射。 椭圆曲线方程的标准形式为:

    y²=x³+ax+b

    ý²= X + B

    In this case we will follow the example defined by on Page 277 of [1]:

    在这种情况下,我们将按照[1]的第277页定义的示例:

    Image for post

    This defines a mapping of:

    这定义了以下内容的映射:

    E2: y²=x³+1132x+278

    e 2 :Y 2 = X +³1132 X 278

    to:

    至:

    E4: y²=x³+500x+1005

    E 4:Y 2 = X +³500×1005

    and using 𝔽2003. The mapping from one curve to the next is then defined with:

    并使用𝔽2003。 然后使用以下方法定义从一条曲线到下一条曲线的映射:

    Image for post

    In [1], we defined two points on E2 of P2=(1120,1391) and Q2=(894,1452) — see the sample run below. These then map to: P4=(565,302) and Q4=(1818,1002) on E4. E2 and E4 are isogenous, but not isomorphic (and where we cannot reverse the mapping from E4 to E2.

    在[1]中,我们在E 2上定义了两个点P 2 =(1120,1391)和Q 2 =(894,1452)—请参见下面的示例。 然后将它们映射为: E 4上的P 4 =(565,302)和Q 4 =(1818,1002) 。E 2和E 4是同构的,但不是同构的(并且我们无法将映射从E 4反转为E 2。

    编码 (Coding)

    The following is the coding required for this isogeny [here]:

    以下是此同构[ 此处 ]所需的编码:

    A sample run [here] is given next, and where the mapping of (1120,1391) on E2 is seen to map to (565,302) on E4:

    接下来给出样本运行[ here ],并且可以看到E2上的(1120,1391)映射到E4上的(565,302):

    Finite field: 2003y^2 = x^3+1132x+278 (mod 2003)  y^2 = x^3 + 500x + 1005 (mod 2003)
    (1102 911) (1465 1312) Check (1465 691)
    (1103 536) (537 73) Check (537 73)
    (1105 442) (1651 655) Check (1651 655)
    (1108 1919) (807 1397) Check (807 606)
    (1109 404) (1125 541) Check (1125 1462)
    (1110 1804) (314 1163) Check (314 840)
    (1111 611) (1144 1245) Check (1144 1245)
    (1113 1931) (585 1278) Check (585 1278)
    (1114 655) (953 1501) Check (953 1501)
    (1116 1909) (1474 874) Check (1474 874)
    (1119 1498) (1417 1598) Check (1417 405)(1120 1391) (565 302) Check (565 302)
    (1123 1277) (1769 301) Check (1769 1702)
    (1124 1000) (1182 868) Check (1182 1135)
    (1125 227) (1256 1497) Check (1256 1497)
    (1127 147) (722 984) Check (722 984)
    (1128 711) (1989 776) Check (1989 776)
    (1130 850) (1973 681) Check (1973 681)
    (1133 903) (1903 1692) Check (1903 1692)
    (1134 770) (389 247) Check (389 1756)
    (1135 503) (152 256) Check (152 1747)
    (1136 463) (537 73) Check (537 1930)
    (1140 573) (1998 655) Check (1998 1348)
    (1143 786) (515 570) Check (515 1433)
    (1147 1089) (565 302) Check (565 1701)

    翻译自: https://medium.com/asecuritysite-when-bob-met-alice/the-beauty-of-elliptic-curves-a-real-life-example-of-an-isogeny-8263368260a5

    椭圆曲线加密所在的椭圆曲线

    展开全文
  • 椭圆曲线加密算法

    千次阅读 2018-12-11 16:48:40
    目前我国居民二代身份证正在使用256位的椭圆曲线密码,比特币中的公私钥生成以及签名算法ECDSA都是基于ECC的。 公钥加密,也称非对称加密。可以说它现在是现代网络安全或者网络信任链的基础。公钥加密最大的特征就是...

    **椭圆曲线密码学(ECC)*是一种建立公开密钥加密的算法,也就是非对称加密。ECC被公认为在给定密钥长度下最安全的加密算法。目前我国居民二代身份证正在使用256位的椭圆曲线密码,比特币中的公私钥生成以及签名算法ECDSA都是基于ECC的。
    公钥加密,也称非对称加密。可以说它现在是现代网络安全或者网络信任链的基础。公钥加密最大的特征就是通信双方各有一对公私钥,这一对公私钥有着千丝万缕的数学关系。每个人保存自己的私钥,公开自己的公钥。这样做的好处是不怕通信线路被窃听,即使被攻击者拿到公钥也没有关系
    1椭圆曲线
    无穷远点:假设平行线在很远的地方相交了。即平行线相交于无穷远点P∞
    在这里插入图片描述
    直线上出现P∞点,所带来的好处是所有的直线都相交了,且只有一个交点。这就把直线的平行与相交统一了。为与无穷远点相区别把原来平面上的点叫做平常点。
    以下是无穷远点的几个性质。
      ▲直线L上的无穷远点只能有一个。(从定义可直接得出)
      ▲平面上一组相互平行的直线有公共的无穷远点。(从定义可直接得出)
      ▲ 平面上任何相交的两直线L1,L2有不同的无穷远点。(否则L1和L2有公共的无穷远点P ,则L1和L2有两个交点A、P,故假设错误。)
      ▲平面上全体无穷远点构成一条无穷远直线。
      ▲平面上全体无穷远点与全体平常点构成射影平面。
    射影平面坐标系:普通平面直角坐标系没有为无穷远点设计坐标,不能表示无穷远点。为了表示无穷远点,产生了射影平面坐标系,当然射影平面坐标系同样能很好的表示旧有的平常点。
    令x=X/Z ,y=Y/Z(Z≠0);则A点可以表示为(X:Y:Z)。
    变成了有三个参量的坐标点,这就对平面上的点建立了一个新的坐标体系。
    这个新的坐标体系能够表示射影平面上所有的点,我们就把这个能够表示射影平面上所有点的坐标体系叫做射影平面坐标系。
    椭圆曲线:一条椭圆曲线是在射影平面上满足威尔斯特拉斯方程(Weierstrass)所有点的集合
    在这里插入图片描述
    1椭圆曲线方程是一个齐次方程
    2曲线上的每个点都必须是非奇异的(光滑的),偏导数FX(X,Y,Z)、FY(X,Y,Z)、FZ(X,Y,Z)不同为0
    3圆曲线的形状,并不是椭圆的。只是因为椭圆曲线的描述方程,类似于计算一个椭圆周长的方程故得名

    在这里插入图片描述
    椭圆曲线实例:
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    非椭圆曲线实例:
    在这里插入图片描述在这里插入图片描述
    椭圆曲线的阿贝尔群:我们已经看到了椭圆曲线的图象,但点与点之间好象没有什么联系。我们能不能建立一个类似于在实数轴上加法的运算法则呢?这就要定义椭圆曲线的加法群,这里需要用到近世代数中阿贝尔群。
    在数学中,群是一种代数结构,由一个集合以及一个二元运算所组成。已知集合和运算(G,)如果是群则必须满足如下要求
    封闭性:∀a,b∈G,a
    b ∈ G
    结合性: ∀a,b,c∈G ,有 (ab)c = a
    (bc)
    单位元:ョe∈G, ∀a ∈G,有ea = ae = a
    逆元: ∀a ∈G ,ョb∈G 使得 ab = ba = e
    阿贝尔群除了上面的性质还满足交换律公理(ab)c = a
    (b*c)
    同样在椭圆曲线也可以定义阿贝尔群。
    任意取椭圆曲线上两点P、Q(若P、Q两点重合,则作P点的切线),作直线交于椭圆曲线的另一点R’,过R’做y轴的平行线交于R,定义P+Q=R。这样,加法的和也在椭圆曲线上,并同样具备加法的交换律、结合律。
    在这里插入图片描述在这里插入图片描述
    根据这个法则,可以知道椭圆曲线无穷远点O∞与椭圆曲线上一点P的连线交于P’,过P’作y轴的平行线交于P,所以有 无穷远点 O∞+ P = P 。这样,无穷远点 O∞的作用与普通加法中零的作用相当(0+2=2),我们把无穷远点 O∞ 称为 零元。同时我们把P’称为P的负元(简称,负P;记作,-P)。
    在这里插入图片描述
    k个相同的点P相加,我们记作kP。如下图:P+P+P = 2P+P = 3P
    在这里插入图片描述
    2.密码学中的椭圆曲线
    椭圆曲线是连续的,并不适合用于加密;所以,我们必须把椭圆曲线变成离散的点,我们要把椭圆曲线定义在有限域上。
    我们给出一个有限域Fp
    Fp中有p(p为质数)个元素0,1,2,…, p-2,p-1
    Fp的加法是a+b≡c(mod p)
    Fp的乘法是a×b≡c(mod p)
    Fp的除法是a÷b≡c(mod p),即 a×b^(-1)≡c (mod p),b-1也是一个0到p-1之间的整数,但满足b×b-1≡1 (mod p)
    Fp的单位元是1,零元是 0
    Fp域内运算满足交换律、结合律、分配律
    椭圆曲线Ep(a,b),p为质数,x,y∈[0,p-1]
    在这里插入图片描述
    选择两个满足下列约束条件的小于p的非负整数a、b
    在这里插入图片描述
    Fp上的椭圆曲线的加法
    1.无穷远点 O∞是零元,有O∞+ O∞= O∞,O∞+P=P
    2.P(x,y)的负元是 (x,-y mod p)= (x,p-y) ,有P+(-P)= O∞
    3.P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下关系:
    x3≡k2-x1-x2(mod p)
    y3≡k(x1-x3)-y1(mod p)
    若P=Q 则 k=(3x2+a)/2y1mod p
    若P≠Q,则k=(y2-y1)/(x2-x1) mod p
    椭圆曲线已知E23(1,1)图像如下,其中P(3,10),Q(9,7)
    在这里插入图片描述

    如果椭圆曲线上一点P,存在最小的正整数n,使得数乘nP=O∞,则将n称为P的 阶,若n不存在,我们说P是无限阶的。事实上,在有限域上定义的椭圆曲线上所有的点的阶n都是存在的
    在这里插入图片描述
    计算可得27P=-P=(3,13)
    所以28P=O ∞ P的阶为28
    这些点做成了一个循环阿贝尔群,其中生成元为P,阶数为28。显然点的分布与顺序都是杂乱无章
    3.椭圆曲线加密
    考虑K=kG ,其中K、G为椭圆曲线Ep(a,b)上的点,n为G的阶(nG=O∞ ),k为小于n的整数。则给定k和G,根据加法法则,计算K很容易但反过来,给定K和G,求k就非常困难。因为实际使用中的ECC原则上把p取得相当大,n也相当大,要把n个解点逐一算出来列成上表是不可能的。这就是椭圆曲线加密算法的数学依据
    点G称为基点(base point)
    k(k<n)为私有密钥(privte key)
    K为公开密钥(public key)
    在这里插入图片描述
    利用椭圆曲线进行加密通信的过程:
    1、用户A选定一条椭圆曲线Ep(a,b),并取椭圆曲线上一点,作为基点G。
      2、用户A选择一个私有密钥k,并生成公开密钥K=kG。
      3、用户A将Ep(a,b)和点K,G传给用户B。
      4、用户B接到信息后 ,将待传输的明文编码到Ep(a,b)上一点M,并产生一个随机整数r
    5、用户B计算点C1=M+rK;C2=rG。
      6、用户B将C1、C2传给用户A。
      7、用户A接到信息后,计算C1-kC2,结果就是点M。
    因为C1-kC2=M+rK-k(rG)=M+rK-r(kG)=M 再对点M进行解码就可以得到明文。

    展开全文
  • 有趣的椭圆曲线加密

    2020-03-18 23:02:44
    椭圆曲线加密算法依赖于椭圆曲线理论,后者理论涵盖的知识比较深广,而且涉及数论中比较深奥的问题。经过数学家几百年的研究积累,已经有很多重要的成果,一些很棘手的数学难题依赖椭圆曲线理论得以解决(比如费马大...

    一、概述

    椭圆曲线加密算法依赖于椭圆曲线理论,后者理论涵盖的知识比较深广,而且涉及数论中比较深奥的问题。经过数学家几百年的研究积累,已经有很多重要的成果,一些很棘手的数学难题依赖椭圆曲线理论得以解决(比如费马大定理)。

    本文涉及的椭圆曲线知识只是抽取与密码学相关的很小的一个角落,涉及到很浅的理论的知识,同时也是一点比较肤浅的总结和认识,重点是利用椭圆曲线结合数学技巧阐述加密算法的过程和原理。

    本文特意构造有比较多的实例方便理解其过程和原理。

    二、椭圆曲线

    椭圆曲线方程来源于椭圆积分,后者来最初来源于计算椭圆周长的问题,有一段时间的历史了,在欧拉时期就开始研究。椭圆周长没有精确的初等函数的公式表示,只有近似的公式表示,精确的椭圆周长可以用不定积分表示。

    现在一般将形如如下形式的积分定义为椭圆积分:
    f(x)=cxR[t,P(t)]dtf(x)=\int_c^x {R[t, \sqrt{P(t)}]} d_t
    其中RR是其两个参数的有理函数,PP是一个无重根的3或4阶多项式,而cc是一个常数。椭圆曲线方程与P(t)P(t)表现形式比较相像。

    数学上的椭圆曲线一般由如下形式给出:
    E:y2=x3+ax2+bx+cE:y^2=x^3+ax^2+bx+c,其中判别式Δ(E)=4a3c+a2b24b327c2+18abc0Δ(E)=−4a^3c+a^2b^2−4b^3−27c^2+18abc≠0
    椭圆曲线都是关于X轴对称的曲线。

    典型的椭圆曲线如:y2=x34x2+16y^2=x^3−4x^2+16,其图像为:
    在这里插入图片描述
    更多的椭圆曲线图像:
    在这里插入图片描述
    限定Δ不为零有特殊的意义。如果判别式Δ(E)等于零,由三次方程判别式判定理可知,方程x3+ax2+bx+c=0x^3+ax^2+bx+c=0存在二重根或者三重根,曲线表现为"自相交"或者有“尖点”。

    两个典型的例子是:
    C1:y2=x3C1:y^2=x^3

    C2:y2=x3+x2C2:y^2=x^3+x2
    C1C1有三重根,表现为有"尖点";C2C2有二重根,表现为“自相交”,它们都不是椭圆曲线,其图像分别如下:
    在这里插入图片描述
    在这里插入图片描述
    在密码学中用到的椭圆曲线方程一般限定为:

    E:y2=x3+ax+bE:y^2=x^3+ax+b其中4a3+27b204a^3+27b^2≠0

    也即是这里的二次项系数为0。

    三、椭圆曲线算术

    椭圆曲线上可以定义一些很有意思的特殊运算规则。一般来说会定义两种运算:加法和数乘运算。加法运算是点与点之间的运算;数乘运算基于加法运算,重复的加法运算就是数乘。

    3.1实数域的加法运算

    3.1.1加法运算的几何解释

    已知椭圆曲线上两个不同的点PPQQ,则这两个点之和R=P+QR=P+Q可以通过如下操作得到:过PQP、Q两点做直线L,与椭圆曲线相交于第三点,该点关于X轴的对称点即是所求的RR点。椭圆曲线的这种加法运算有比较明确的几何含义。如下所示:
    在这里插入图片描述
    以这种比较奇特的规则来定义加法运算会让人觉得比较怪异,其思想很可能是借鉴于求椭圆曲线有理解的方法(没有去严格考据)。

    求椭圆曲线有理解考虑的问题是寻找有理点(x,y)使其满足椭圆曲线方程。其求解过程是在有限的已知有理点的集合中,选两个点P1,P2P1,P2,作直线与椭圆曲线相交与第三点个有理点Q3Q3。此时如果再利用P1,P2,Q3P1,P2,Q3三个点中的任意两点作直线不能在产生新的有理解(因为他们本身是已经在一条直线上,不会产生新的交点),但是考虑Q3关于X轴对称的点Q3Q^{′}3必定也是有理点,于是可以利用Q3Q^{′}3P1P1或者Q3Q^{′}3P2P2继续做直线与椭圆曲线相交得到新的有理解,对新的交点再取对称点,以此迭代下去。由此利用交点的对称点作直线来生成新的交点,进而可逐步求解满足椭圆曲线的有理解。

    椭圆曲线加法运算的规则中“取交点的对称点”正是与上述求解过程及其相似。

    对于加法运算也有另外一种描述:若椭圆曲线上三个点在同一直线上,则他们的和为O,也即是P+Q+R=OP+Q+R′=O,其中的OO是无穷远点或者零点。

    更完整的椭圆曲线加法运算规则如下:

    1、O+O=OO+O=O,对任意的P,有P+O=PP+O=POO看做零点,对加法运算没有实际贡献(类似于四则运算加法运算中的0)。

    2、P=(x,y)P=(x,y)的负元是关于X中对称的点P=(x,y)−P=(x,−y)(而不是关于原点对称),P+(P)=OP+(−P)=O。过PPP−P的直线与X轴垂直,实际上可以看做它与椭圆曲线相交于无穷远点(射影平面,也即是在欧式平面上添加了无穷远点和无穷远直线的平面),因此将也将O视作无穷远点。

    3、计算PPQQ的和是通过做过PPQQ两点的直线,与椭圆曲线相交于第三点,再取该点关于X轴的对称点以此作为P,QP,Q之和,正如上面的几何图形展示的那样。

    4、计算PPPO(P≠O)的两倍时,是做该点的切线,再取交点SS关于X轴的对称点S−S,也即是2P=P+P=S2P=P+P=−S
    容易验证,对于椭圆曲线上的点和O点组成的集合,以及集合上定义的二元加法运算,构成一个Abel群。单位元是OO点,P(x,y)P(x,y)的逆元是P(x,y)P(x,−y),封闭性,结合性以及交换性也是显然满足的。

    3.1.2加法运算的代数解释

    几何解释更直观,代数解释更有利于数值计算。

    过曲线上P(xp,yp)P(x_p,y_p)Q(xQ,yQ)Q(x_Q,y_Q)两点(PPQQ不互为负元)做直线,求与曲线的第三个交点的问题是很容易用代数的方法来描述的。
    也即是求:
    {y2=x3+ax+b(1)yyp=k(xxp)(2)\begin{cases} y^2= x^3+ax+b & \text {(1)} \\ y-y_p=k(x-x_p) & \text{(2)} \end{cases}
    其中斜率k=yQyPxQxPk=\frac{y_Q−y_P}{x_Q−x_P}

    将(2)代入(1)再利用次数对齐的方式容易求得第三个交点的对称点也即P,QP,Q之和R(xR,yR)R(x_R,y_R)为:

    xR=k2xPxQx_R=k^2−x_P−x_Q

    yR=yP+k(xPxR)y_R=−y_P+k(x_P−x_R)

    如果需要计算倍乘,可以让多个点自身重复相加得到。例如P+P=2P=RP+P=2P=R,当yP0y_P≠0时,代数描述为:

    xR=(3xP2+a2yP)22xPx_R=(\frac{3x^2_P+a}{2y_P})^2−2x_P

    yR=(3xP2+a2yP)(xPxR)yPy_R=(\frac{3x^2_P+a}{2y_P})(x_P−x_R)−y_P

    3.2模素数P的加法运算

    密码学中普遍采用的是有限域上的椭圆曲线,也即是变元和系数均在有限域中取值的椭圆曲线。使用模素数p的有限域Zp,将模运算引入到椭圆曲线算术中,变量和系数从集合0,1,2,...,p10,1,2,...,p−1中取值而非是在实数上取值。

    此时讨论椭圆曲线形式如下:

    y2modp=(x3+ax+b)modpy^2modp=(x^3+ax+b)modp

    其中(4a3+27b2)modp0(4a^3+27b^2)modp≠0,变量和系数均在Zp中取值。

    将满足上式的所有非负整数对和OO点记为集合Ep(a,b)E_p(a,b),这是一个有限的离散点集。由此可知集合中的点分布在(0,0)(0,0)(p1,p1)(p−1,p−1)的象限中,集合中的点有可能刚好也在椭圆曲线上,更多的可能是在椭圆曲线外。例如点(13,7)(13,7)是满足y2mod23=(x3+x+1)mod23y^2mod23=(x^3+x+1)mod23的点,但是(13,7)(13,7)并不在椭圆曲线上。

    实际上,集合Ep(a,b)E_p(a,b)与模p的加法运算构成循环阿贝尔群,其生成元,阶和生成子群问题在本节后面会讨论。

    对于较小的素数p,完全可以暴力穷举找出集合Ep(a,b)E_p(a,b)中的点。比如参数a=1,b=3,p=23E23(1,3)a=1,b=3,p=23,E_{23}(1,3)有27个点(包含O点),暴力穷举这些点分别为(第八节给出了一些分析椭圆曲线问题的demo实现):

    (0,7)        (6,15)        (15,9)
    (0,16)       (7,10)        (15,14)
    (2,6)        (7,13)        (19,2)
    (2,17)       (10,1)        (19,21)
    (4,5)        (10,22)       (21,4)
    (4,18)       (12,8)        (21,19)
    (5,8)        (12,15)       (22,1)
    (5,15)       (14,1)        (22,22)
    (6,8)        (14,22)        O
    

    Ep(a,b)E_p(a,b)上的加法规则和实数域上的加法基本一致,只是多加了模运算。但是模pp的加法没有显而易见的几何解释,只有代数描述。

    求解(xR,yR)(x_R,y_R)的代数表达式为:

    xR=(λ2xPxQ)modpx_R=(λ^2−x_P−x_Q)modp

    yR=(λ(xPxR)yP)modpy_R=(λ(x_P−x_R)−y_P)modp

    其中
    λ={yQyPxQxPmodp,(PQ)3xP2+a2yPmodp,(P = Q) λ= \begin{cases} \frac{y_Q-y_P}{x_Q-x_P}modp, & (P \neq Q) \\ \frac{3x^2_P+a}{2yP}modp, & \text{(P = Q)} \end{cases}

    例如a=1,b=1,p=23,P(3,10),Q(13,16)a=1,b=1,p=23,P(3,10),Q(13,16),求R=P+QR=P+Q.

    此时PQP≠Q,计算λ=(yQyPxQxP)modp=(1610133)mod23=6×101mod23λ=(y_Q−y_Px_Q−x_P)modp=(16−1013−3)mod23=6×10−1mod23.

    要计算上式首先要计算101mod2310^{−1}mod23.

    x101(mod23)x≡10−1(mod23),由于1010(mod23)10≡10(mod23),所以10x1(mod23)10x≡1(mod23),利用扩展欧几里德算法求得x=7x=7.
    λ=6×7mod23=19λ=6×7mod23=19

    所以
    xR=(λ2xPxQ)modp=(192313)mod23=345mod23=0x_R=(λ^2−x_P−x_Q)modp=(19^2−3−13)mod23=345mod23=0

    yR=(λ(xPxR)yP)modp=(19×(30)10)mod23=47mod23=1y_R=(λ(x_P−x_R)−y_P)modp=(19×(3−0)−10)mod23=47mod23=1

    所以R=(0,1)R=(0,1).

    还可以按照以上规则计算2P,3P2P,3P等等倍乘点。

    实际上E23(1,1)E_{23}(1,1)中共有28个点(包含无穷远点O),以P(3,10)P(3,10)开始的所有倍乘点:P,2P,3P...27P,28PP,2P,3P...27P,28P可以暴力计算得出:

    P=(3,10)
    2P=(7,12)
    3P=(19,5)
    4P=(17,3)
    5P=(9,16)
    6P=(12,4)
    7P=(11,3)
    8P=(13,16)
    9P=(0,1)
    10P=(6,4)
    11P=(18,20)
    12P=(5,4)
    13P=(1,7)
    14P=(4,0)
    15P=(1,16)
    16P=(5,19)
    17P=(18,3)
    18P=(6,19)
    19P=(0,22)
    20P=(13,7)
    21P=(11,20)
    22P=(12,19)
    23P=(9,7)
    24P=(17,20)
    25P=(19,18)
    26P=(7,11)
    27P=(3,13)
    28P=O
    

    容易验证,上述计算过程中Q(13,16)Q(13,16)点就是8PP+Q=P+8P=9P=(0,1)8P,P+Q=P+8P=9P=(0,1),与上述计算结果是吻合的,读者也可以验证更多的结果。

    现在提出一个问题:Ep(a,b)E_p(a,b)中有多少个点呢?这个问题的准确答案并不好回答,但是有一些粗略的规律。

    Ep(a,b)E_p(a,b)中点的个数为NpN_p,并且ap=pNpa_p=p−N_p,实际上NpN_ppp比较接近。

    Hasse定理表明:

    ap<2p|a_p|<2\sqrt{p}
    这实际上解释了apa_p的误差,从而有2p<ap=pNp<2p−2\sqrt{p}<a_p=p−N_p<2\sqrt{p}
    也就是p2p<Np<p+2pp−2\sqrt{p}<N_p<p+2\sqrt{p},等价于p+12pNpp+1+2pp+1−2\sqrt{p}⩽N_p⩽p+1+2\sqrt{p}
    接下来的一个问题是子群、生成元和阶:

    不难得知,有限域上的椭圆曲线的点和加法运算构成一个有限交换群SS

    以一个点GG作为生成元,进行重复的加法运算,能够生成一个子群SS^′。群SS^′有可能与SS相同,更有可能是SS的一个真子群。

    比如椭圆曲线为y2=x3+x+1p=23y2=x^3+x+1,p=23
    G=(3,10)G=(3,10)生成的子群刚好等于SS,因为28G=O28G=O,说明此时SS还是一个有限循环群,群中每个元素都能由(3,10)通过重复的加法运算得到,群中元素的个数为28,其阶为28(最小的使得nG=OnG=O成立的n),生成元为(3,10)(3,10)

    但是以G=(6,19)G=(6,19)生成的子群是S的真子群,因为14G=O14G=O,它也是一个有限循环群,因为群中每个元素都能由(6,19)(6,19)通过重复的加法运算得到,该子群的元素个数为1414,阶为1414(最小的使得nG=OnG=O的成立n),生成元为(6,19)(6,19)

    拉格朗日定理还告诉我们,生成的子群SS′的阶与原来的群SS的阶存在约数关系,也就是说子群S′的阶只能是1,2,4,7,14,281,2,4,7,14,28。群S的阶与子群S′的阶的比值一般称为协因子(cofactor):h=SSh=\frac{|S|}{∣S^′∣}。一般会取h=1h=1,以保证生成子群的阶比较大。

    G=(6,19)G=(6,19)生成子群过程(为方便计算,取O=(1,1)O=(−1,−1)):

    1P=(6,19)        15P=(6,19)
    2P=(13,16)       16P=(13,16)
    3P=(7,11)        17P=(7,11)
    4P=(5,19)        18P=(5,19)
    5P=(12,4)        19P=(12,4)
    6P=(17,20)       20P=(17,20)
    7P=(4,0)         21P=(4,0)
    8P=(17,3)        22P=(17,3)
    9P=(12,19)       23P=(12,19)
    10P=(5,4)        24P=(5,4)
    11P=(7,12)       25P=(7,12)
    12P=(13,7)       26P=(13,7)
    13P=(6,4)        27P=(6,4)
    14P=(-1,-1)      28P=(-1,-1)
    

    在后面的ECC加密算法过程中会有一个给定的基点GG(也就是生成元)生成一个子群,然后秘钥空间在此子群取得,一般会要求保证子群的阶会尽量大,基点及其子群的阶nn都是公开的信息。

    四、椭圆曲线密码学中的离散对数问题

    构造一个数学难题来保证加密的安全性是现代密码学中加密算法的主要思想。类似RSA算法中大数的质因子分解难题一样,椭圆曲线也有类似的数学难题。

    考虑Q=kPQ=kP,其中Q,PEp(a,b),k<pQ,P∈Ep(a,b),k<p

    对于给定的k,pk,p计算QQ是很容易的;反过来给定Q,PQ,P,计算k是相当困难的,这就是椭圆曲线的离散对数问题(这里之所以称之为离散对数问题大概是为了与其他加密算法的说法保持一致,便于理解)。

    正因为如此,可以将QQ作为公钥,公开出去;kk作为私钥,秘密保管,通过公钥来破解私钥十分困难。

    目前由椭圆曲线公钥求解私钥的最有效算法复杂度为O(p)O(\sqrt{p}),其中pp是阶数nn的最大素因子。

    五、椭圆曲线实现秘钥协商(ECDHE)

    5.1原理和流程

    利用模pp有限域上椭圆曲线算术规则可以用来实现秘钥协商,其流程如下:

    (1)Alice和Bob会共享一些椭圆曲线的参数信息:(p,a,b,G,n,h)(p,a,b,G,n,h),其中a,ba,b确定了椭圆曲线方程,pp确定了模pp的有限域,GG是中的生成元,用于生成子群,要求GG的阶n应该尽量大,GG的阶是使得nG=OnG=O成立的最小的整数,也即是(n1)G(n−1)G所代表的点与GG点的横坐标刚好相同,协因子hh一般等于1。

    (2)Alice选择小于nn整数nAn_A,然后计算PA=nA×GP_A=n_A×G,将PAP_A发送给Bob。

    (3)同理,Bob也选择小于nn整数nBn_B,然后计算PB=nB×GP_B=n_B×G,将PBP_B发送给Alice。

    (4)Alice通过如下计算得出协商的秘钥:KA=nA×PBK_A=n_A×P_B;Bob通过如下计算得出协商的秘钥:KB=nB×PBK_B=n_B×P_B,容易证明,KA=KBK_A=K_B

    因为KA=nA×PB=nA×(nB×G)=nB×(nA×G)=KBK_A=n_A×P_B=n_A×(n_B×G)=n_B×(n_A×G)=K_B

    由此Alice和Bob计算得到相同的秘钥,达到秘钥协商的目的。

    5.2实例

    例如,参数a=0,b=4a=0,b=−4,椭圆曲线方程为y2=x34p=211,G=(2,2)y^2=x^3−4,p=211,G=(2,2),因为240G=(2,209)240G=(2,209)所以n=241。

    Alice选择nA=151PA=151G=(62,59)n_A=151,P_A=151G=(62,59)

    Bob选择nB=171PB=171G=(209,153)n_B=171,P_B=171G=(209,153)

    他们协商的秘钥K=151PB=171PA=151(209,153)=171(62,59)=(95,194)=(151171%n)G=34GK=151P_B=171P_A=151(209,153)=171(62,59)=(95,194)=(151∗171\%n)G=34G

    六、椭圆曲线实现加解密

    6.1原理和流程

    利用椭圆曲线来进行加密和解密也是与RSA一定程度的类似,每一个用户都有属于自己的公钥和私钥。私钥就是用户选定的数字nn,私钥自己保存;公钥就是由P=nGP=nG,计算出来的点,公钥公开。

    假设Alice与Bob进行加密通信,其加密的流程如下:

    (1)Alice首先将明文消息转换(编码)为Ep(a,b)E_p(a,b)中的Pm(x,y)P_m(x,y),然后随机选定一个正整数k,并且利用Bob的公钥PB通过如下计算出密文:Cm=kG,Pm+kPBC_m={kG,P_m+kP_B}.。因此,密文实际上是有两个点组成。

    (2)Bob收到密文CmC_m,利用自己的私钥nBn_B进行如下计算,可以解密得到明文:

    Pm+kPBnB(kG)=Pm+k(nBG)nB(kG)=PmP_m+kP_B−n_B(kG)=P_m+k(n_BG)−n_B(kG)=P_m

    也就是用第二个点Pm+kPBP_m+k_PB减去第一个点kGkG与自己的私钥nn之积。

    6.2实例

    考虑参数a=0,b=4,p=199,G=(2,2)a=0,b=−4,p=199,G=(2,2),椭圆曲线方程为y2=x34y^2=x^3−4,Bob选定的私钥为nB=119n_B=119,其公钥PB=119G=(183,173)P_B=119G=(183,173)

    Alice希望将消息Pm=(76,66)P_m=(76,66)加密后发送给Bob,于是Alice随机选定正整数k=133k=133,并通过Bob的公钥加密得到密文:
    Cm=133(2,2),(76,66)+133(183,173)=(40,147),(180,163)Cm={133(2,2),(76,66)+133(183,173)}={(40,147),(180,163)}

    Bob收到密文消息利用自己的私钥nB=119n_B=119进行解密:

    Pm+kPBnB(kG)=(180,163)119(40,147)=(180,163)(98,52)=(76,66)=PmP_m+kP_B−n_B(kG)=(180,163)−119(40,147)=(180,163)−(98,52)=(76,66)=Pm

    由此,Bob顺利解密得到明文消息,Alice与Bob之间完成加密通信。

    七、杂项

    公钥加密算法中除了ECC,还有另外一个广泛使用的加密算法–RSA公钥加密算法。

    ECC与RSA相比,主要的优点是在相同的安全级别下ECC使用的秘钥长度要短很多,由此带来处理速度、带宽和存储空间上的额外优势。下表展示了不同加密算法秘钥的位数对比情况:
    在这里插入图片描述
    比特币中使用椭圆曲线密码算法,以保证比特币网络中信息安全性和签名认证问题。每个用户都有属于自己的公钥和私钥。利用私钥可以对交易信息进行签名(ECDSA),其他人可以利用其公钥进行认证,公钥也用来构造钱包地址。所使用的椭圆曲线是采用了Certicom推荐的椭圆曲线secp256k1 ,其参数由六元组构成:D=(p,a,b,G,n,h)D=(p,a,b,G,n,h),其中pp是很大的质数,hh就是协因子,表征由生成元GG生成子群的阶与母群的阶的关系,前文有解释;参数信息都是公开的,有兴趣可以到网上查到。

    八、References

    [1] 密码编码学与网络安全原理与实践
    [2] http://andrea.corbellini.name/
    [3] 数论概述.第四十三章-第四十八章
    [4] https://mp.weixin.qq.com/s/jOcVk7olBDgBgoy56m5cxQ
    [5] https://blog.csdn.net/mrpre/article/details/72850598

    展开全文
  • 椭圆曲线加密算法,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全,RSA加密算法也是一种非对称加密算法,在公开密钥加密和电子...
  • 椭圆曲线加密数学原理 实数椭圆曲线 什么是椭圆曲线,想必大家都会首先想到的是高中时学到的标准椭圆曲线方程。 x2a2+y2b2=1(a>b,焦点在x轴,a<b,焦点在y轴) \frac{x^2} {a^2}+\frac {y^2}{b^2}=1(a>b,...
  • 离散对数和椭圆曲线加密原理

    万次阅读 多人点赞 2017-08-03 11:35:05
    现代公钥加密系统中,常用的加密算法除了RSA还有离散对数加密椭圆曲线加密。这两者原理比较相似,在这里一并介绍。 离散对数问题 我们在中学里学的对数问题是指, 给定正实数aaa和axaxa^x,求xxx。也就是...
  • 椭圆曲线加密和签名算法

    千次阅读 2018-04-18 22:28:35
    简述 椭圆曲线密码学,简称ECC。是一种建立公开加密的算法,也就是非对称加密。和RSA类似。被公认在给定密钥长度下最安全的加密算法。应用范围很广,主要的三个...这里用来加密椭圆曲线的定义 是一个特殊情况。...
  • 原文链接如下: Elliptic Curve Cryptography: ECDH and ECDSA​andrea.corbellini.name想全面了解椭圆曲线的朋友可以先看看前个部分,翻译得很棒:Avery:ECC椭圆曲线加密算法:介绍​zhuanlan.zhihu.comAvery:...
  • ECC椭圆曲线加密算法

    千次阅读 2016-12-25 16:14:37
    椭圆曲线加密也是一种公钥加密算法,和RSA与离散对数一样,它也是基于一个数学求解的难题,并且它的难度比RSA和离散对数都要大,它基于的数字难题就是求取定义在椭圆曲线上的离散对数的求取难题。
  • 椭圆曲线加密

    千次阅读 2014-12-02 10:40:29
    一种相对比较新的技术--椭圆曲线加密系统,已经逐渐被人们做基本的数字签名系统。椭圆曲线作为数字签名的基本原理大致和RSA与DSA的功能相同,并且数字签名的产生与认证的速度要比RSA和DSA快。下面我们简单的介绍...
  • tls 1.2加密 A couple of reader alerts: 读者警告: In order to (somewhat) simplify the description process and tighten the volume of the article we are going to write, it is essential to make a ...
  • 椭圆曲线加密算法详解

    千次阅读 2018-10-17 21:40:23
    椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全。据研究,160位ECC加密安全...
  • 比特币使用了secp256k1标准定义的一特殊的椭圆曲线和一系列数学常数 认识椭圆曲线 椭圆曲线不是一个椭圆,而是满足上图方程的x、y点的连续集合。解读一下该方程 1、x、y 是个实数 2、a、b是个常量,...
  • 椭圆曲线加密(ECC)

    2018-03-01 08:53:50
    比特币使用椭圆曲线算法生成公钥和私钥,选择的是secp256k1曲线。与RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线加密)也属于公开密钥算法。一、从...
  • 四、椭圆曲线上的加法上一节,我们已经看到了椭圆曲线的图象,但点与点之间好象没有什么联系。我们能不能建立一个类似于在实数轴上加法的运算法则呢?天才的数学家找到了这一运算法则自从近世纪代数学引入了群、环、...
  • 【密码学】ECC椭圆曲线加密

    千次阅读 2018-07-13 15:48:10
    椭圆曲线加密(ECC) ECC参数选取 ECC与比特币 椭圆曲线加密,全称EllipseCurve Cryptography,简称ECC。与传统的基于大素数因数分解难题的方式不同,ECC通过椭圆曲线的方式产生密钥。在ECC之前...
  • 过曲线上的点A、B画一直线,找到直线与椭圆曲线的交点,交点关于x轴对称位置的点,定义为A+B,即为加法。如下图所示:A + B = C 二倍运算 上述方法无法解释A + A,即点重合的情况。因此在这种情况下,将椭圆...
  • 最近在工作中涉及到椭圆曲线加密问题,就开始详细的了解了下加密的概念,这篇博客的目的就是为了记录我学习的过程以及复习的依据,同时如果能给正在学习这方面的同道中人,提供一点点的启示作用,那就更好了。...
  • 椭圆曲线加密和签名算法 简述 椭圆曲线密码学,简称ECC。是一种建立公开加密的算法,也就是非对称加密。和RSA类似。被公认在给定密钥长度下最安全的加密算法。应用范围很广,主要的三个技术TLS、PGP、SSH都在使用它...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,044
精华内容 1,217
关键字:

两条加密用椭圆曲线