椭圆曲线的基本概念

椭圆曲线

设F是一个域,a,b\(\in\)F,则方程\(y^2=x^3+ax+b\)称为域F上的椭圆曲线。
上述方程称为维尔斯特拉斯方程,其判别式为\(y^2+axy+by=x^3+cx^2+dx+e\)
比如,实数域上的椭圆曲线如下:

椭圆曲线上的加法:
设F是一个域,a,b\(\in\)F,令E={(x,y)|\(y^2=x^3+ax+b\)}\(\cup\){\(\infty\)},其中{\(\infty\)}为无穷远点,则可以定义椭圆曲线上的加法为:
1)设\(P_1,P_2\in E\),令R为\(P_1,P_2\)两点连线与椭圆曲线的交点关于X轴的对称点,则\(P_1+P_2=R\)
2)如果\(P_1,P_2\)两点关于X轴对称,那么规定他们连线与椭圆曲线相交于无穷远点,记为O
3)任何一个点通过上面的运算规则与O相加的和都是它本身

椭圆曲线上的加法的性质:\(\forall P,Q,R\in E\),如果P,Q,R在一条直线上,那么P+Q+R=O

定理:若规定O+O=O,则(E,+)构成一个阿贝尔群(交换群),其中\(\infty\)为单位元,记为O,P=(x,y)的逆元为Q=(x,-y)

实例:设\(y^2=x^3+x+6\)\(F_{11}\)上的椭圆曲线,求(3,6)+(5,2)
k=\(\frac{6-2}{3-5}=9\)
y-6=k(x-3)
y=9x+1
将上式代入\(y^2=x^3+x+6\)中得:
\((9x+1)^2=x^3+x+6=x^3+7x^2+5x+5\)
(x-3)(x-5)(x-7)=0
\(\therefore\) x=7
y=9x+1=9
\(\therefore\)(3,6)+(5,2)=(7,-9)=(7,2)

椭圆曲线密码

以下三类公钥系统被认为是安全有效的:

  1. 基于大整数分解问题的RSA型公钥密码;
  2. 基于有限域上离散对数问题的ElGamal型公钥密码;
  3. 基于椭圆曲线离散对数问题的椭圆曲线公钥密码。

椭圆曲线公钥密码优势:对于椭圆曲线离散对数问题,目前不存在亚指数时间算法,从而为达到相同安全性所需的密钥尺寸更小:
– RSA 密码体制:模长1024 比特;
– 椭圆曲线密码体制:模长160 比特。

椭圆曲线密码体制适用于计算、存储、带宽受限,但又要求高速实现的应用领域,例如智能卡、无线通讯等。
El'Gamal密码方案的椭圆曲线形式:

  • Gen:设E为\(F_q\)上的椭圆曲线,一般记为E(\(F_q\)),设P = \((x_p,y_p)\in E(F_q)\),且P的次数足够大,任取1 < s < ord(P),令Q = sP = (\(x_q,y_q\)),则E(\(F_q\)),P,Q为公钥,s为私钥
  • Enc:消息m满足0 \(\le\) m < \(F_q\),任取1 < r < \(F_q\),计算(\(x_1,y_1\)) = rP,(\(x_2,y_2\)) = rQ,c = m·\(x_2\),则密文为(\(x_1,y_1,c\))
  • Dec:计算(x',y') = s(\(x_1,y_1\)),再计算m'=c·\(x'^{-1}\)

正确性验证:(x',y') = s(\(x_1,y_1\)) = srP = rsP = rQ = (\(x_2,y_2\)),所以x' = \(x_2\),m' = c·\(x'^{-1}\) = c·\(x_2^{-1}\) = m·\(x_2·x_2^{-1}\) = m

posted @ 2019-12-18 19:25  Hang3  阅读(2622)  评论(0编辑  收藏  举报