椭圆曲线算法与离散对数

序言

本文讲述了椭圆曲线加密算法并对椭圆曲线在有限域上的进行举例说明,更加清晰地了解椭圆曲线加密算法的运算。由于其安全性基础,椭圆曲线加密算法在数据加密、解密与数字签名方面有广泛的应用。

目录

椭圆曲线加密算法

算法简介

群和阿贝尔群

安全性基础

椭圆曲线的形式

椭圆曲线运算法则

椭圆曲线加法法则

椭圆曲线乘法法则

有限域上的椭圆曲线

求余运算

椭圆曲线上的求余运算


椭圆曲线加密算法

算法简介

椭圆曲线加密算法(Elliptic curve cryptography,ECC)是1985年由尼尔·科布里茨(Neal Koblitz)和维克托·米勒(Victor Miller)分别独立提出的椭圆曲线数学的一种加密算法。

ECC加密算法主要由一条椭圆曲线和定义在椭圆曲线上的运算法则组成。椭圆曲线的点的集合与运算法则共同构成了一个阿贝尔群。

群和阿贝尔群

在这里引入群和阿贝尔群的概念。

在数学中,群表示一个拥有满足封闭性、满足结合律、有单位元、有逆元的二元运算的代数结构。

定义一个二元运算“+”,这个“加法”并非数字运算的加法,而是一种二元操作运算,满足以下特性:

封闭性:如果a和b都在群内,那么a+b也在群内。

结合律:这个“加法”满足(a+b)+c=a+(b+c)。

单位元:集合中存在确切的一个值可以保证 a+0=0+a=a成立,我们称为单位元。

逆元:对于集合中任意元素a,存在另一个元素b,使得a+b=0,则称a与b互为逆元。

此时,这个集合与这个运算组合在一起被称为“群”。

而阿贝尔群是满足交换律的群,即在群的特性上满足a+b = b+a。

安全性基础

ECC算法的安全性基础是:给定椭圆曲线上的一个点G,任意选取整数k,求解椭圆曲线的另一点K=k·G非常容易;但反过来,给定椭圆曲线上的两个点G和K,求解整数k是非常困难的。这里G称为椭圆曲线上的基点, k是私钥,K是公钥。

椭圆曲线的形式

ECC算法采用一类可用韦尔斯特拉斯(Weierstrass)公式加以描述的椭圆曲线E,即:

E={(x,y)|y^2+A_1 y=x^3+A_2 x^2+A_3 x+A_4}

其中参数A_1A_4的不同取值决定椭圆曲线的形状。实际上我们常用椭圆曲线的简化形式,即:

E={(x,y)|y^2=x^3+ax+b}

由于ECC算法中需要使用曲线的切线因此曲线需处处光滑可导,满足判别式不为0,即:

\Delta =4a^3+27b^2 \neq0

同时定义了一个无穷远点,是所有曲线在无穷远处的交点,记为0,因此完整的椭圆曲线的简化形式为:

E=\left \{​{(x,y)|y^2=x^3+ax+b,\Delta =4a^3+27b^2 \neq0}\right \}\cup \left \{ 0 \right \}

此椭圆曲线是关于x轴水平对称的,且任意不垂直的直线穿过曲线的交点至多有三个。

y^2=x^3+6x+5y^2=x^3+10
y^2=x^3-3x+5y^2=x^3-6x

 

椭圆曲线运算法则

在椭圆曲线上定义了两种运算法则,加法和乘法,他们与数字运算的加法与乘法不同,只是为了叫法方便。

椭圆曲线加法法则

根据上面的说法,“任意不垂直的直线穿过曲线的交点至多有三个”,进行以下定义:

假设椭圆曲线上有P、Q两个点,经过这两个点作直线,与椭圆曲线相较于第三点,做第三点关于x轴的对称点R,我们定义P+Q=R,这里的第三点为R的逆元-R,根据阿贝尔群的定义,-R和R都在椭圆曲线上,我们也可以引申出P+Q+(-R)=0。

 

椭圆曲线乘法法则

假设上例中P和Q为同一点,记为P,则作P在椭圆曲线的切线,与椭圆曲线相交于一点,这一点关于x轴对称得到点R,此时R=P+P=2P,当P与2P继续进行运算,可以得到P+2P=3P,以此类推,这就是椭圆曲线的乘法。

假设P为椭圆曲线上一点,整数k乘以P可以得到通用公式:(k-1)P+P=k·P

 

有限域上的椭圆曲线

求余运算

我们先引进求余运算几个公式,mod为求余

a+b mod p = [a mod p+b mod p] mod p

a-b mod p = [a mod p-b mod p] mod p

a×b mod p = a mod p ×b mod p mod p

a×b mod p = [a mod p×b] mod p

正数的求余运算我们都熟知,负数的求余运算公式为-a mod b=b-a,这是根据a+-a mod b=0=a+c mod b,此时a+c为b的倍数,由于是求余运算,故c=b-a即可。

举例:

加法:18+9 mod 23=4

减法:7-14 mod 23=-7 mod 23=16

乘法:4×7 mod 23=5

加法逆元:-5 mod 23=18

且有5+-5 mod 23=5+18 mod 23=0

乘法逆元:9-1 mod 23=18

且有9×9-1 mod 23=9×18 mod 23=1

椭圆曲线上的求余运算

之前所讲的椭圆曲线的定义及运算都是实数范围内的,但其实椭圆曲线加密算法所使用的运算,是在有限域上。有限域是指对于某个给定的质数p,由0,1,2,.....,p-1共p个元素所组成的整数集合中定义的加减乘除运算。此运算使用的是求余运算

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值