椭圆与超椭圆曲线公钥密码的理论与实现(王学理,裴定一著)思维导图
- 格式:xmin
- 大小:5.53 KB
- 文档页数:1
内容安全研究室朱潜报告的主要内容⏹群和域的相关概念⏹椭圆曲线的定义和运算法则⏹椭圆曲线离散对数问题⏹椭圆曲线密码体制⏹椭圆曲线密码的优势⏹曲线密码体制的应用为什么要在有限域上研究椭圆曲线密码?密码学常在有限域的基础上研究椭圆密码曲线,在有限域的椭圆m基础上。
基于有限域Fp,而不是使用实数域、曲线主要是基于Fp和F2是因为实数计算时会产生截段误差,无法满足密码算法的精确性,而m是由于可以在计算机处理时大大提且实数运算的速度很慢。
基于F2高处理速度。
群和域的相关概念定义1:任意给定一个非空集合F和其上的二元运算“*”,如果满足(1)封闭性:对任意a,b∈F,存在c ∈F,使得c=a*b ∈F;(2)结合律:对于任意a,b∈F,都有(a*b)*c=a*b*c;(3)单位元e存在:即存在e ∈F,对于任意a ∈F,都有a*e=e*a;(4)逆元存在:对于任意a ∈F,存在b ∈F,使得a*b=b*a=e;则称集合F关于二元运算“*”构成群,记为(F,*)。
在群(F,*)中,如果对于任意a ,b∈F,都有a*b=b*a,则称群(F,*)是交换群,也称为阿贝尔(Abel)群。
定义2:设“+”,“*”是G上的二元运算,如果满足:(1)(G,+)是一个交换群,其单位元记为0;(2)(G-{0},*)是交换群,其单位元记为1;(3)运算“*”对“+”可分配,即对任意a ,b,c∈G,都有a*(b+c)=a*b+a*c(a+b)*c=a*c+b*c则称(G,+,*)是域。
群和域的相关概念定义3:有限域,如果域F中的元素个数有限,则称F为有限域或伽罗华域,其中F中的元素个数称为有限域F的阶,记为∣F ∣。
对有限域而言,其元素的个数必为一素数的方幂。
即存在一个q阶有限域F,当且仅当q是一个素数的幂,即q=p m,其中,p是一个素数,并称为域F的特征,m是一个正整数。
若m=1,则域F就称为素域。
定义4:设p是一个素数,以p为模,则模p的全体余数的集合{0,1,2,……,p-1}关于模p的加法和乘法构成一个p阶有限域,简称素域,并且用符号Fp表示。
椭圆曲线加密算法(⼀)椭圆曲线加密和签名算法简述椭圆曲线密码学,简称ECC。
是⼀种建⽴公开加密的算法,也就是⾮对称加密。
和RSA类似。
被公认在给定密钥长度下最安全的加密算法。
应⽤范围很⼴,主要的三个技术TLS、PGP、SSH都在使⽤它,特别是以BTC为代表的数字货币。
椭圆曲线椭圆曲线并不是我们⾼中时学习的椭圆形状,其名字的由来是应为椭圆曲线的描述⽅程,类似于计算⼀个椭圆周长的⽅程。
这⾥⽤来加密的椭圆曲线的定义是⼀个特殊情况。
椭圆曲线暂时可以简单的理解为:其中:a和b决定了曲线在坐标系的不同形状。
举个例⼦:当b=1,a的取值从2到-3时,曲线的形状如下:特殊曲线:当a=b=0时(左),或a=-3,b=2时(右),这两条都不是符合标准的曲线。
阿贝尔群数学上,群是指定义了⼆元操作运算并且⽤符号“+”表⽰的⼀个集合。
则必须满⾜以下要求:封闭性:如果a和b都是群成员,那么a+b也是群成员。
组合性:(a+b)+c=a+(b+c)单位元:存在确切的⼀个值可以保证 a+0=0+a=a成⽴,我们称之为单位元逆元:每个成员都有⼀个相反数:对于任意值a必定存在b使得a+b=0这样的群我们称之为阿贝尔群。
另外阿贝尔群还应该满⾜交换律a+b=b+a我们所熟知的在整数范围内的加法运算(Z,+)就是阿贝尔群封闭性:a、b属于整数,a+b也属于整数组合性:(a+b)+c=a+(b+c)单位元:0值就是单位元逆元:a的逆元就是-a所以(Z,+)是⼀个阿贝尔群。
椭圆曲线的加法假设我们有这样⼀条椭圆曲线y2=x3-x,曲线上有两点P、Q,过P和Q做⼀条直线,交椭圆曲线于R'点,再过R'点做垂直于X轴的直线,交椭圆曲线于另⼀点R,我们定义P+Q=R。
当P=Q时候,则是过P点的切线交于椭圆曲线于R',此时R=2P,如图所⽰:当有k个相同的点P相加时,记做kP,如:P+P+P=2P+P=3P,如图:椭圆曲线密码利⽤上述“运算”中的“椭圆曲线上的离散多数问题”,就像RSA利⽤“⼤数质因数分解”⼀样。
区块链中的密码学(三)-椭圆曲线加密算法分析在⽬前密码学的⾮对称加密算法中,RSA算法依然是⼀种主流,但是随着⽐特币中对于⼀种之前不太流⾏的算法:椭圆加密算法(ECC)的成功应⽤后,这种算法得到了很⼤的关注和普及。
有⼀种说法是中本聪不信任RSA算法,认为美国⼈在其中留有后门,⽽据斯诺登的爆料也确实如此。
相较RSA,ECC不仅在某种程度上杜绝所谓留有后门的情况,⽽且加密性能/安全性都有提⾼。
本⽂就带⼤家⼀窥ECC算法的天地。
鉴于ECC算法对数学知识要求⽐较⾼,不像RSA依赖于中学数学的⽔平,ECC⽤到了许多《近世代数基础》,《初等数论》的知识,本⽂将从⼀个密码学爱好者并区块链的⾓度,讲述⼀下ECC在区块链中的应⽤。
什么是椭圆曲线加密(ECC)?椭圆曲线可以简单的理解为公式:这是⼀个数学公式,它的理论基础要从平⾏线谈起。
数学上⼈们认为的平⾏线永不相交,这在某种程度上是⽆法验证的,因为没有⼀个⽆限远处的概念,假设平⾏线在⽆限远处相交,这样的好处是所有的直接都有且只有⼀个焦点,那么基于这个事实,我们中学学过的笛卡尔平⾯直⾓坐标系可以映射出另外⼀个平⾯坐标系:假设平⾯直⾓坐标系中有点A(x,y),我们定义 X= x/z,Y = y/z,Z=z;那么联⽴⽅程:aX+bY+c1Z =0; aX+bY+c2Z =0 可以计算出z=0;所以我们新的坐标系中的点可以表⽰为:(X:Y:0);这是椭圆曲线建⽴的坐标系基础。
下⾯在看椭圆曲线的定义:数学把满⾜Weierstrass⽅程的曲线称为椭圆曲线这个⽅程的曲线⽣成的图像有很多,基于⽂章的⽬的,这⾥指介绍形如:y2=x3+ax+b的公式,因为这种情况下的椭圆曲线才适合加密,例如y^2=x^3-10x+12的曲线如下:感兴趣的读者可以去模拟⼀下,通过修改a,b的值观看曲线变化。
需要注意的是并不是所有椭圆曲线都是关于X轴对称的。
读者可以改变多改变a1的值来发现。
数学家在这个曲线上定义了⼀种椭圆曲线的加法,在上⾯定义的公式曲线图中:显然这并不是传统的数学上的加法,运算法则:任意取椭圆曲线上两点P、Q (若P、Q两点重合,则做P点的切线)做直线交于椭圆曲线的另⼀点R,过R做y轴的平⾏线交于R’。