Bootstrap

10.5 椭圆曲线加密体制

一.相关概念

1.点P的阶的概念:

椭圆曲线 E p E_p Ep(a,b)上的点P的阶指的是满足:

在这里插入图片描述

的最小正整数n的值,记作ord§,其中O是无穷远点。

2.椭圆曲线上的离散对数问题(elliptic curve discrete logarithm problem:ECDLP):

设G是椭圆曲线 E p E_p Ep(a,b)上的一个循环子群,P是G的一个生成元,Q ϵ \epsilon ϵ G,已知P和Q,求一个整数m(0<=m<=ord§-1),使得m满足:mP=Q。这个问题称为椭圆曲线上的离散对数问题。

困难点:

当我们计算mP的时候,累加m-1次来计算Q是一种很愚蠢的办法。因为椭圆曲线上的点满足结合律,即( A + B ) + C = A + ( B + C ),扩展一下,就有 :在这里插入图片描述

比如计算16 P ,我们可以先计算2 P = P + P;然后计算4 P = P + P + P + P = 2 P + 2 P;再计算8 P = P + P . . . + P = 4 P + 4 P ;最后计算16 P = 8 P + 8 P 。这里我们把15次加法减少到了4次。

所以,对于任意的整数m,我们都可以利用这个方法将计算m∗ P所需的加法计算次数降低到约 l o g 2 {log}_2 log2m次。如当m= 2 2048 2^{2048} 22048时,我们只需计算2048次,而对手却需要32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638215525166389437335543602135433229604645318478604952148193555853611059596230656次。这无疑是非常困难的。

二.椭圆曲线加密

利用椭圆曲线进行加密时,首先需要将要发送的明文m编码为椭圆曲线上的点 P m P_m Pm=( x m x_m xm, y m y_m ym),然后再对点 P m P_m Pm做加密变换,解密得到 P m P_m Pm后还得逆向破译才能获得明文m。

下面是加解密流程:

1.密钥生成:

在椭圆曲线上选取一个阶为n(n是一个大素数)的生成元P,随机选取整数x(1<x<n),计算Q=xP。公钥为Q,私钥为x。

2.加密:

为了加密 P m P_m Pm,随机选取一个整数k(1<k<n),计算:

在这里插入图片描述

则密文c=( C 1 C_1 C1, C 2 C_2 C2)。

3.解密:

计算:在这里插入图片描述

4.困难性

攻击者想要从c=( C 1 C_1 C1, C 2 C_2 C2)计算出 P m P_m Pm(主要是从 C 2 C_2 C2推出 P m P_m Pm),就必须知道k。而要从P和kP(也就是 C 1 C_1 C1)中能够计算出k是椭圆曲线上的离散对数问题,困难。

而要从P和kP(也就是 C 1 C_1 C1)中能够计算出k是椭圆曲线上的离散对数问题,困难。

;