椭圆曲线图像加密 matlab,椭圆曲线ECC加密算法入门介绍(三、四)
四、橢圓曲線上的加法
上一節(jié),我們已經(jīng)看到了橢圓曲線的圖象,但點(diǎn)與點(diǎn)之間好象沒(méi)有什么聯(lián)系。我們能不能建立一個(gè)類(lèi)似于在實(shí)數(shù)軸上加法的運(yùn)算法則呢?天才的數(shù)學(xué)家找到了這一運(yùn)算法則
自從近世紀(jì)代數(shù)學(xué)引入了群、環(huán)、域的概念,使得代數(shù)運(yùn)算達(dá)到了高度的統(tǒng)一。比如數(shù)學(xué)家總結(jié)了普通加法的主要特征,提出了加群(也叫交換群,或Abel(阿貝爾)群),在加群的眼中。實(shí)數(shù)的加法和橢圓曲線的上的加法沒(méi)有什么區(qū)別。這也許就是數(shù)學(xué)抽象把:)。關(guān)于群以及加群的具體概念請(qǐng)參考近世代數(shù)方面的數(shù)學(xué)書(shū)。
運(yùn)算法則:任意取橢圓曲線上兩點(diǎn)P、Q (若P、Q兩點(diǎn)重合,則做P點(diǎn)的切線)做直線交于橢圓曲線的另一點(diǎn)R’,過(guò)R’做y軸的平行線交于R。我們規(guī)定P+Q=R。(如圖)
法則詳解:
▲這里的+不是實(shí)數(shù)中普通的加法,而是從普通加法中抽象出來(lái)的加法,他具備普通加法的一些性質(zhì),但具體的運(yùn)算法則顯然與普通加法不同。
▲根據(jù)這個(gè)法則,可以知道橢圓曲線無(wú)窮遠(yuǎn)點(diǎn)O∞與橢圓曲線上一點(diǎn)P的連線交于P’,過(guò)P’作y軸的平行線交于P,所以有 無(wú)窮遠(yuǎn)點(diǎn) O∞+ P = P 。這樣,無(wú)窮遠(yuǎn)點(diǎn) O∞的作用與普通加法中零的作用相當(dāng)(0+2=2),我們把無(wú)窮遠(yuǎn)點(diǎn) O∞ 稱(chēng)為 零元。同時(shí)我們把P’稱(chēng)為P的負(fù)元(簡(jiǎn)稱(chēng),負(fù)P;記作,-P)。(參見(jiàn)下圖)
▲根據(jù)這個(gè)法則,可以得到如下結(jié)論 :如果橢圓曲線上的三個(gè)點(diǎn)A、B、C,處于同一條直線上,那么他們的和等于零元,即A+B+C= O∞
:
▲k個(gè)相同的點(diǎn)P相加,我們記作kP。如下圖:P+P+P = 2P+P = 3P。
下面,我們利用P、Q點(diǎn)的坐標(biāo)(x1,y1),(x2,y2),求出R=P+Q的坐標(biāo)(x4,y4)。
例4.1:求橢圓曲線方程y2+a1xy+a3y=x3+a2x2+a4x+a6上,平常點(diǎn)P(x1,y1),Q(x2,y2)的和R(x4,y4)的坐標(biāo)。
解:(1)先求點(diǎn)-R(x3,y3)
因?yàn)镻,Q,-R三點(diǎn)共線,故設(shè)共線方程為y=kx+b,其中
若P≠Q(mào)(P,Q兩點(diǎn)不重合) 則
直線斜率k=(y1-y2)/(x1-x2)
若P=Q(P,Q兩點(diǎn)重合) 則直線為橢圓曲線的切線,故由例3.1可知:
k=(3x2+2a2x+a4 -a1y) /(2y+a1x+a3)
因此P,Q,-R三點(diǎn)的坐標(biāo)值就是方程組:
y2+a1xy+a3y=x3+a2x2+a4x+a6 ?? -----------------[1]
y=(kx+b)???????????????????? -----------------[2]
的解。
將[2],代入[1] 有
(kx+b)2+a1x(kx+b)+a3(kx+b) =x3+a2x2+a4x+a6??? --------[3]
對(duì)[3]化為一般方程,根據(jù)三次方程根與系數(shù)關(guān)系(當(dāng)三次項(xiàng)系數(shù)為1時(shí);-x1x2x3 等于常數(shù)項(xiàng)系數(shù), x1x2+x2x3+x3x1等于一次項(xiàng)系數(shù),-(x1+x2+x3)等于二次項(xiàng)系數(shù)。)
所以-(x1+x2+x3)=a2-ka1-k2
x3=k2+ka1+a2+x1+x2;---------------------求出點(diǎn)-R的橫坐標(biāo)
因?yàn)閗=(y1-y3)/(x1-x3) 故
y3=y1-k(x1-x3);-------------------------------求出點(diǎn)-R的縱坐標(biāo)
(2)利用-R求R
顯然有 x4=x3= k2+ka1+a2+x1+x2; ------------求出點(diǎn)R的橫坐標(biāo)
而y3 y4 為 x=x4時(shí) 方程y2+a1xy+a3y=x3+a2x2+a4x+a6的解
化為一般方程y2+(a1x+a3)y-(x3+a2x2+a4x+a6)=0 , 根據(jù)二次方程根與系數(shù)關(guān)系得:
-(a1x+a3)=y3+y4
故y4=-y3-(a1x+a3)=k(x1-x4)-y1-(a1x4+a3); ---------------求出點(diǎn)R的縱坐標(biāo)
即:
x4=k2+ka1+a2+x1+x2;
y4=k(x1-x4)-y1-a1x4-a3;
本節(jié)的最后,提醒大家注意一點(diǎn),以前提供的圖像可能會(huì)給大家產(chǎn)生一種錯(cuò)覺(jué),即橢圓曲線是關(guān)于x軸對(duì)稱(chēng)的。事實(shí)上,橢圓曲線并不一定關(guān)于x軸對(duì)稱(chēng)。如下圖的y2-xy=x3+1
:
五、密碼學(xué)中的橢圓曲線
我們現(xiàn)在基本上對(duì)橢圓曲線有了初步的認(rèn)識(shí),這是值得高興的。但請(qǐng)大家注意,前面學(xué)到的橢圓曲線是連續(xù)的,并不適合用于加密;所以,我們必須把橢圓曲線變成離散的點(diǎn)。
讓我們想一想,為什么橢圓曲線為什么連續(xù)?是因?yàn)闄E圓曲線上點(diǎn)的坐標(biāo),是實(shí)數(shù)的(也就是說(shuō)前面講到的橢圓曲線是定義在實(shí)數(shù)域上的),實(shí)數(shù)是連續(xù)的,導(dǎo)致了曲線的連續(xù)。因此,我們要把橢圓曲線定義在有限域上(顧名思義,有限域是一種只有由有限個(gè)元素組成的域)。
域的概念是從我們的有理數(shù),實(shí)數(shù)的運(yùn)算中抽象出來(lái)的,嚴(yán)格的定義請(qǐng)參考近世代數(shù)方面的數(shù)。簡(jiǎn)單的說(shuō),域中的元素同有理數(shù)一樣,有自己得加法、乘法、除法、單位元(1),零元(0),并滿足交換率、分配率。
下面,我們給出一個(gè)有限域Fp,這個(gè)域只有有限個(gè)元素。
Fp中只有p(p為素?cái)?shù))個(gè)元素0,1,2 …… p-2,p-1;
Fp 的加法(a+b)法則是 a+b≡c (mod p);即,(a+c)÷p的余數(shù) 和c÷p的余數(shù)相同。
Fp 的乘法(a×b)法則是? a×b≡c (mod p);
Fp 的除法(a÷b)法則是? a/b≡c (mod p);即 a×b-1≡c? (mod p);(b-1也是一個(gè)0到p-1之間的整數(shù),但滿足b×b-1≡1 (mod p);具體求法可以參考初等數(shù)論,或我的另一篇文章)。
Fp 的單位元是1,零元是 0。
同時(shí),并不是所有的橢圓曲線都適合加密。y2=x3+ax+b是一類(lèi)可以用來(lái)加密的橢圓曲線,也是最為簡(jiǎn)單的一類(lèi)。下面我們就把y2=x3+ax+b 這條曲線定義在Fp上:
選擇兩個(gè)滿足下列條件的小于p(p為素?cái)?shù))的非負(fù)整數(shù)a、b
4a3+27b2≠0 (mod p)
則滿足下列方程的所有點(diǎn)(x,y),再加上 無(wú)窮遠(yuǎn)點(diǎn)O∞ ,構(gòu)成一條橢圓曲線。
y2=x3+ax+b? (mod p)
其中 x,y屬于0到p-1間的整數(shù),并將這條橢圓曲線記為Ep(a,b)。
:
我們看一下y2=x3+x+1 (mod 23)的圖像
是不是覺(jué)得不可思議?橢圓曲線,怎么變成了這般模樣,成了一個(gè)一個(gè)離散的點(diǎn)?
橢圓曲線在不同的數(shù)域中會(huì)呈現(xiàn)出不同的樣子,但其本質(zhì)仍是一條橢圓曲線。舉一個(gè)不太恰當(dāng)?shù)睦?#xff0c;好比是水,在常溫下,是液體;到了零下,水就變成冰,成了固體;而溫度上升到一百度,水又變成了水蒸氣。但其本質(zhì)仍是H2O。
Fp上的橢圓曲線同樣有加法,但已經(jīng)不能給以幾何意義的解釋。不過(guò),加法法則和實(shí)數(shù)域上的差不多,請(qǐng)讀者自行對(duì)比。
1. 無(wú)窮遠(yuǎn)點(diǎn) O∞是零元,有O∞+ O∞= O∞,O∞+P=P
2. P(x,y)的負(fù)元是 (x,-y),有P+(-P)= O∞
3. P(x1,y1),Q(x2,y2)的和R(x3,y3) 有如下關(guān)系:
x3≡k2-x1-x2(mod p)
y3≡k(x1-x3)-y1(mod p)
其中若P=Q 則 k=(3x2+a)/2y1? 若P≠Q(mào),則k=(y2-y1)/(x2-x1)
例5.1 已知E23(1,1)上兩點(diǎn)P(3,10),Q(9,7),求1)-P,2)P+Q,3) 2P。
解 1)? –P的值為(3,-10)
2)? k=(7-10)/(9-3)=-1/2,2的乘法逆元為12 因?yàn)?*12≡1 (mod 23)
k≡-1*12 (mod 23) 故 k=11。
x=112-3-9=109≡17 (mod 23);
y=11[3-(-6)]-10=89≡20 (mod 23)
故P+Q的坐標(biāo)為(17,20)
3)? k=[3(32)+1]/(2*10)=1/4≡6 (mod 23)
x=62-3-3=30≡20 (mod 23)
y=6(3-7)-10=-34≡12 (mod 23)
故2P的坐標(biāo)為(7,12)
最后,我們講一下橢圓曲線上的點(diǎn)的階。
如果橢圓曲線上一點(diǎn)P,存在最小的正整數(shù)n,使得數(shù)乘nP=O∞,則將n稱(chēng)為P的 階,若n不存在,我們說(shuō)P是無(wú)限階的。
事實(shí)上,在有限域上定義的橢圓曲線上所有的點(diǎn)的階n都是存在的(證明,請(qǐng)參考近世代數(shù)方面的書(shū))
練習(xí):
1. 求出E11(1,6)上所有的點(diǎn)。
2.已知E11(1,6)上一點(diǎn)G(2,7),求2G到13G所有的值。
總結(jié)
以上是生活随笔為你收集整理的椭圆曲线图像加密 matlab,椭圆曲线ECC加密算法入门介绍(三、四)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 临床医学计算机思维的应用情况,【临床医学
- 下一篇: matlab对于椭圆检测的算法,基于弧段