密碼學中的橢圓曲線

2021-04-23 14:16:23 字數 2631 閱讀 1728

密碼學中的橢圓曲線

密碼學中的橢圓曲線不是定義在是實數域上的,我們要把橢圓曲線定義在有限域上(顧名思義,有限域是一種只有由有限個元素組成的域)。

域的概念是從我們的有理數,實數的運算中抽象出來的,嚴格的定義請參考近世代數方面的數。簡單的說,域中的元素同有理數一樣,有自己得加法、乘法、除法、單位元(1),零元(0),並滿足交換率、分配率。

下面,我們給出乙個有限域fp,這個域只有有限個元素。

fp中只有p(p為素數)個元素0,1,2 …… p-2,p-1;

fp 的加法(a+b)法則是 a+b≡c (mod p);即,(a+c)÷p的餘數 和c÷p的餘數相同。

fp 的乘法(a×b)法則是  a×b≡c (mod p);

fp 的除法(a÷b)法則是  a/b≡c (mod p);即 a×b-1≡c  (mod p);(b-1也是乙個0到p-1之間的整數,但滿足b×b-1≡1 (mod p);我們稱b-1是元素b在該有限域上的逆元)。

fp 的單位元是1,零元是 0。

同時,並不是所有的橢圓曲線都適合加密。y2=x3+ax+b是一類可以用來加密的橢圓曲線,也是最為簡單的一類。

y2=x3+ax+b定義在實數域上的時候大致形狀是這樣的:

現在我們就把y2=x3+ax+b 這條曲線定義在fp上:圖形又如下圖所示

選擇兩個滿足下列條件的小於p(p為素數)的非負整數a、b

4a3+27b2≠0 (mod p)

則滿足下列方程的所有點(x,y),再加上 無窮遠點o∞ ,構成一條橢圓曲線。

y2=x3+ax+b  (mod p)

其中 x,y屬於0到p-1間的整數,並將這條橢圓曲線記為ep(a,b)。

我們看一下y2=x3+x+1  (mod 23)的影象

fp上的橢圓曲線同樣有加法,但已經不能給以幾何意義的解釋。不過,加法法則和實數域上的差不多,請讀者自行對比。

1. 無窮遠點 o∞是零元,有o∞+ o∞= o∞,o∞+p=p

2. p(x,y)的負元是 (x,-y),有p+(-p)= o∞

3. p(x1,y1),q(x2,y2)的和r(x3,y3) 有如下關係:

x3≡k2-x1-x2(mod p)

y3≡k(x1-x3)-y1(mod p)

其中若p=q 則 k=(3x2+a)/2y1  若p≠q,則k=(y2-y1)/(x2-x1)

例5.1 已知e23(1,1)上兩點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 因為2*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的座標為(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的座標為(7,12)

最後,我們講一下橢圓曲線上的點的階。

如果橢圓曲線上一點p,存在最小的正整數n,使得數乘np=o∞,則將n稱為p的 階,若n不存在,我們說p是無限階的。

事實上,在有限域上定義的橢圓曲線上所有的點的階n都是存在的(證明,請參考近世代數方面的書)

六、橢圓曲線上簡單的加密/解密

公開金鑰演算法總是要基於乙個數學上的難題。比如rsa 依據的是:給定兩個素數p、q 很容易相乘得到n,而對n進行因式分解卻相對困難。那橢圓曲線上有什麼難題呢?

考慮如下等式:

k=kg  [其中 k,g為ep(a,b)上的點,k為小於n(n是點g的階)的整數]

不難發現,給定k和g,根據加法法則,計算k很容易;但給定k和g,求k就相對困難了。

這就是橢圓曲線加密演算法採用的難題。我們把點g稱為基點(base point),k(k現在我們描述乙個利用橢圓曲線進行加密通訊的過程:

1、使用者a選定一條橢圓曲線ep(a,b),並取橢圓曲線上一點,作為基點g。

2、使用者a選擇乙個私有金鑰k,並生成公開金鑰k=kg。

3、使用者a將ep(a,b)和點k,g傳給使用者b。

4、使用者b接到資訊後 ,將待傳輸的明文編碼到ep(a,b)上一點m(編碼方法很多,這裡不作討論),並產生乙個隨機整數r(r在這個加密通訊中,如果有乙個**者h ,他只能看到ep(a,b)、k、g、c1、c2 而通過k、g 求k 或通過c2、g求r 都是相對困難的。因此,h無法得到a、b間傳送的明文資訊。

密碼學中,描述一條fp上的橢圓曲線,常用到六個參量:

t=(p,a,b,g,n,h)。

(p 、a 、b 用來確定一條橢圓曲線,g為基點,n為點g的階,h 是橢圓曲線上所有點的個數m與n相除的整數部分)

這幾個參量取值的選擇,直接影響了加密的安全性。參量值一般要求滿足以下幾個條件:

1、p 當然越大越安全,但越大,計算速度會變慢,200位左右可以滿足一般安全要求;

2、p≠n×h;

3、pt≠1 (mod n),1≤t<20;

4、4a3+27b2≠0 (mod p);

5、n 為素數;

6、h≤4。

白話橢圓曲線密碼學

橢圓曲線密碼學是下一代的公鑰密碼學,它比之前的公鑰密碼學系統例如rsa和diffe hellman在安全性方面有顯著提高。橢圓曲線密碼學是目前被廣泛使用的最強大的密碼學演算法之一,但是真正理解其工作原理的開發者並不多。橢圓曲線有一系列滿足特定數學方程的點組成。乙個橢圓曲線的方程看起來像這樣 y x ...

現代密碼學之橢圓曲線ECC

橢圓曲線乘法 橢圓曲線結合 elgamal cryptosystem計算例子展示 手算帶步驟 判斷乙個橢圓曲線上有幾個點 reference ecc是由victor miller and neal koblitz1985引入的。對於dsa,rsa,我們需要很大的金鑰長度,而ecc只需要特別餓小的金鑰...

橢圓曲線密碼系統 橢圓曲線

1 橢圓曲線 在這裡,橢圓曲線簡化為用 y2 x3 ax b表示的點的集合。將其離散化後,得到 y2 mod p x3 ax b mod p 2 群數學中的 群 是乙個由我們定義了一種二元運算的集合,二元運算我們稱之為 加法 並用符號 來表示。為了讓乙個集合g成為群,必須定義加法運算並使之具有以下四...