ECC椭圆曲线密码学简介

您所在的位置:网站首页 模n乘法群是循环群吗 ECC椭圆曲线密码学简介

ECC椭圆曲线密码学简介

2024-07-17 03:58| 来源: 网络整理| 查看: 265

什么是椭圆曲线?

我们在《几何》课本里学过二元一次方程表示直线,二元二次方程表示圆锥曲线(圆,椭圆,双曲线和抛物线),那么二元三次方程表示什么曲线呢?答案自然就是椭圆曲线。为了方便研究,大部分的二元三次方程可以简化成魏尔斯特拉斯方程的形式,见公式(4)。其中,系数a 和b 需要满足条件4a3 + 27b2 ≠ 0,该条件保证方程中不会出现非奇异点以获得平滑的椭圆曲线。

ax + by + z = 0 (1)

ax2 + by2 + cxy + dx + ey + f = 0 (2)

ax3 + bx2y + cxy2 + dy3 + ex2 + fxy + gy2 + hx + iy + j = 0 (3)

y2 = x3 + ax + b (4)

一个违反直觉的事实是:椭圆曲线的形状跟椭圆毫无关系。当初数学家们在研究如何计算椭圆弧长的时候发现需要求解如下类型的积分, 由于和椭圆相关,积分中的分母项y =√(x3+ax+b) 便被称作椭圆曲线。

下图展示了一些合法的椭圆曲线,

下图展示了两种非法的椭圆曲线,分别存在一个尖点和叉点使曲线不平滑。

密码学与有限循环群

现代密码学算法和协议中,消息是作为有限空间中的数字或元素来处理的。加密和解密的各种操作必须在消息之间进行变换,以使变换服从有限消息空间内部的封闭性。然而,数的一般运算诸如加减乘除并不满足有限空间内部的封闭性。所以密码算法通常运行于具有某些保持封闭性的代数结构的空间中,这种代数结构就是有限循环群。在数学中,群是一种代数结构,由一个集合以及一个二元运算组成。群必须满足以下四个条件:封闭性,结合律,存在单位元和存在逆元。

最常见的群之一是整数集Z以及加法操作。

有限循环群在群的基础上满足两个额外条件:群元素个数有限以及交换律。循环群由单个元素(产生元)的叠加操作生成,最常见的有限循环群为模拟时钟。

椭圆曲线群定义

1985年,Neal Koblitz和Victor S.Miller分别独立提出利用椭圆曲线产生椭圆曲线循环群用于密码学。在数学上,椭圆曲线群的元素为椭圆曲线上的点,群操作为”+”,”+”的定义为,给定曲线两点P,Q,P+Q等于P和Q两点的连线与曲线交点沿X轴的对称点,如果P=Q,则P+P等于P在曲线上的切线与曲线交点沿X轴的对称点。该群的单位元为无穷远零点记作O=(0,0),有P+O=P,点P的逆元为其沿X轴的对称点,记作-P。

下图演示了如何计算P+Q=R(P≠Q)。

下图演示了如何计算P+Q=2P=R(P=Q)。

下图演示了如何计算P的逆元-P。

椭圆曲线有限循环群

前面介绍的椭圆曲线都是基于有理数的,但是计算机运算浮点数(小数)的速度较慢,更重要的是四舍五入浮点数会产生误差,导致多次加密解密操作后原始消息不能被还原。故考虑到加密算法的可实现性,密码学上使用基于整数的模加运算产生椭圆曲线有限循环群。

本文不涉及具体的数学计算,将用具体的例子展示如何产生ECC有限循环群。例如考虑y2=x3-7x+10(mod 19)的集合,该集合中所有的元素如下图所示。模运算把发散的椭圆曲线映射到19*19的正方形空间中,并且保持了原有曲线的上下对称特性。

下图展示了y2=x3-7x+10(mod19)集合中的元素和椭圆曲线的关系。

点Q’映射到点Q,点P的对称点也由点-P’映射到点-P。

如果取一个更大的质数p进行模运算,集合中的元素点也会相应地增多。下图展示了利用同一个曲线方程进行不同模运算的结果。在实际的椭圆曲线加密算法中,使用长度为192-256位的质数p进行模运算。

现在我们基于y2=x3-7x+10(mod19),利用产生元P=(2,2)来生成ECC有限循环群。如下图所示。具体的计算使用在线的ECC计算器(链接见参考资料)。

G={nP|P=(2,2)}完整的集合为{p=(2,2),2P=(13,8),3P=(1,2),4P=(16,17),5P=(10,3),6P=(18,15),7P=(3,15),8P=(12,1),9P=(9,12),10P=(5,10),11P=(17,15),12P=(7,0),13P=(17,4),14P=(5,9),15P=(9,7),16P=(12,18),17P=(3,4),18P=(18,4),19P=(10,16),20P=(16,2),21P=(1,17),22P=(13,11),23P=(2,17),24P=O=(0,0)}。如下图所示,随着n的连续增加,元素点的分布没有任何特征,这正是密码学需要的特性。

椭圆曲线离散对数问题ECDLP

请问上图中与点Q相对应的n值为多少?查找集合G={nP|P=(2,2)}中的元素可知答案是Q=(5,10)=10P,但是实际应用中没有现成的集合可供查表。若已知某个点Q,只能用比较原始的方法演算可能的n值,目前可实现的效率最高的算法为Baby-step giant-step算法,计算复杂度为O(√n)。反过来,如果已知n计算n*P则简单的多,因为有限循环群满足结合律,可以使用square and multiply算法,计算复杂度为O(



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3