tldr - 在橢圓曲線點上的翻倍和加法操作需要乙個域取逆和幾個乘法操作.我們考慮域\(k\)(特徵值既不是2也不是3).給定\(k\)上的乙個逆運算是比乘法更花費時間的,因此用投影點座標去計算這些操作是更有效率的.
對於橢圓曲線\(e\),weistrass等式(橢圓曲線的一種表示形式)的射影表達是一種可選的表達,這種表達和原曲線是等價的。我們沒有獲得任何額外的功能,但是實際上,我們定義了一種等價關係。讓\(c\)和\(d\)都是正整數,\(k\)是乙個域(域的特徵既不是2也不是3),然後我們定義乙個等價關係\(\sim\),在集合\(k^3 \backslash \\)(\(k\)的超域中非零點構成的集合)就是
\((x_1,y_1,z_1) \sim (x_2,y_2,z_2) 當且僅當 x_1 = \lambda^c x_2,y_1 = \lambda^d y_2,z_1= \lambda z_2 , 其中\lambda \in k^\)
上述等價關係的等價類是
\[(x:y:z) = \
\]我們現在就有了射影點\((x:y:z)\),和它的表示式\((x,y,z)\)。
在文獻中有不同的射影座標系,但是在這篇部落格裡我們只考慮jacobian座標系統。在這個表達中,射影點\((x:y:z)\)對應的仿射點\((x,y)=(\frac,\frac)\)。
使用射影點表示來計算點的加法和倍增會產生更少的逆運算和更多的乘法(與使用仿射座標相比)。這可以通過將射影點轉換為仿射座標並嘗試簡化加法和乘法運算來證明。得到的方程清除了分母,從而消除了取逆。從表面上看,這似乎不是什麼了不起的成就,然而,計算乙個域的逆運算要比計算乘法複雜得多。為了給出仿射座標和雅各比(jacoabian)座標的運算元,我們列出了下面的**:
表示形式
加倍加法
仿射座標
1i,2m,2s
1i,2m,2s
雅各比座標
4m,4s
12m,4s
上面的**採取的橢圓曲線形式是\(y = x^3 - 3x + b\),其中i是取逆運算,m是乘法運算,s是平方運算。
確切的效能比較比較複雜,因為它們依賴於底層平台和實現。然而,只要取逆仍然比乘法要昂貴得多,那麼使用仿射座標將導致對投影點的高效能損失。
據我所知沒有(儘管我不認為自己是這方面的專家)。與以往一樣,總是存在著將實現導致的問題,可以通過洩露離散對數問題的一些位產生攻擊[1]。
[1]
牛客網劍指offer第十三題解答及知識點
問題 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有的奇數字於陣列的前半部分,所有的偶數字於陣列的後半部分,並保證奇數和奇數,偶數和偶數之間的相對位置不變。解答1 知識點 1.如何建立新的陣列。2.system.arraycopy object src,int srcpos,obj...
第十三周專案一點 圓的關係
作 者 紀麗娜 完成日期 2014年05月22日 版 本 號 v1.0 問題描述 1 先建立乙個point 點 類,包含資料成員x,y 座標點 2 以point為基類,派生出乙個circle 圓 類,增加資料成員 半徑 基類的成員表示圓心 3 編寫上述兩類中的構造 析構函式及必要運算子過載函式 本專...
第十三周 專案1 點和圓的位置關係
檔名稱 完成日期 2014年5月19日 版本號 v0.1 對任務及求解方法的描述部分 輸入描述 無 問題描述 1 先建立乙個point 點 類,包含資料成員x,y 座標點 2 以point為基類,派生出乙個circle 圓 類,增加資料成員 半徑 基類的成員表示圓心 3 編寫上述兩類中的構造 析構函...