椭圆曲线
设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_2in E),令R为(P_1,P_2)两点连线与椭圆曲线的交点关于X轴的对称点,则(P_1+P_2=R)
2)如果(P_1,P_2)两点关于X轴对称,那么规定他们连线与椭圆曲线相交于无穷远点,记为O
3)任何一个点通过上面的运算规则与O相加的和都是它本身
椭圆曲线上的加法的性质:(forall P,Q,Rin 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
( herefore) x=7
y=9x+1=9
( herefore)(3,6)+(5,2)=(7,-9)=(7,2)
椭圆曲线密码
以下三类公钥系统被认为是安全有效的:
基于大整数分解问题的RSA型公钥密码;
基于有限域上离散对数问题的ElGamal型公钥密码;
基于椭圆曲线离散对数问题的椭圆曲线公钥密码。
椭圆曲线公钥密码优势:对于椭圆曲线离散对数问题,目前不存在亚指数时间算法,从而为达到相同安全性所需的密钥尺寸更小:
– 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