北大沙龍 | 關於橢圓曲線並行加速的討論

買賣虛擬貨幣
2019年4月19日,第十四期北大軟微-八分量協同實驗室學術沙龍活動如期展開。本次技術沙龍圍繞著橢圓曲線並行加速的研究展開討論。北京大學的沈晴霓教授、方躍堅副教授、Trias胡志琳以及軟微學院眾位博士生、碩士生參與了此次沙龍,並由方躍堅老師和博士生馮新宇做出分享。
此前我們提到,同 RSA 公鑰密碼相比,橢圓曲線密碼提供了更高的單位位元安全強度 , 160 位金鑰長度的橢圓曲線密碼提供的安全強度,相當於 1024 位金鑰長度的 RSA 密碼提供的安全強度。在這種背景下,對運算進行最佳化便具有重要意義,並行加速便是最佳化運算的一種方式。橢圓曲線加密的並行性處理方式到目前尚在學術界討論階段,是一個比較前沿的研究方向。就目前從技術角度而言,並行性存在著安全隱患和效率提升不明顯等問題,所以這項技術尚未大規模落地投入應用。即便是以比特幣為代表的加密貨幣這樣的輕量級應用,出於種種顧慮,也未採用並行加速。方躍堅老師首先提出4種可能提升橢圓加密演算法效率的方式,分別是多執行緒並行、GPU並行、專用硬體並行處理器、SSE指令加速。方老師在介紹這4種方法之餘,還從不同角度比較了他們相互的優劣,如GPU並行雖然單位時間內總吞吐量較高,但單個運算卻不如CPU;專用硬體雖然能較為容易的將點乘轉化為點加提升速度,在抗攻擊等方面則存在一些問題。

博士生馮新宇則相對詳細的從不同的論文中篩選出幾種可能會提高效率的演算法。它們都是從一個等式出發:Q=KP。在這個等式中,K是一個大整數,P相當於私鑰,Q相當於公鑰,所有這些演算法都是透過對整數K進行轉化來減少點運算的次數。想要提升效率,就要找到一個快速計算出K·P結果的辦法,既然P不能變,那就只能從K來入手。

下面是馮博對這些演算法逐一做出簡述:

二進位制演算法:將K轉換成2進位制(即2的冪)的形式,然後再進行背點運算和點加運算,時常和滑動視窗方法結合起來使用。

視窗NAF方法:透過編碼來減少位元位中含1的個數,從而減少點加的次數。但是有一個缺點,即不能抗邊通道攻擊。

邊通道攻擊(SCA, Side Channel Attack)是一種透過分析密碼裝置洩露的邊通道資訊來推測秘鑰的密碼分析方法。

滑動視窗方法:透過跳過位元值為0的位來減少點加的次數。

Montgomery:Montgomery 型橢圓曲線定義為E :By2 =x3 +Ax2 +x。此處 , A , B ∈ Fpn並且B(A2 -4)≠0。Euclid 加法鏈是滿足如下條件的加法鏈 :v1 =1 , v2=2 , v3 =v1 +v2,對所有的 3 ≤i ≤l -1 ,如果 vi =vi -1 +vj(j <i -1),則 vi +1 =vi +vi -1或 vi +1 =vi +vj。透過輾轉相減可以求得計算任意整數 k 的加法鏈,但該加法鏈的長度取決於選取的減數g ,求最短加法鏈問題是一個 NP 完全問題。

NP完全問題,是世界七大數學難題之一。NP的英文全稱是Non-deterministic Polynomial的問題,即多項式複雜程度的非確定性問題。簡單的寫法是 NP=P?,問題就在這個問號上,到底是NP等於P,還是NP不等於P。

固定視窗方法:預存P的i倍來減少點加次數。這種方法很容易理解,即將幾種可能的情況提前算好,使用的時候直接拿來取用,提升效率的辦法。

沈老師提出了一些問題,如加密簽名驗證等繁瑣的工作能否交給架構,而非使用者來處理,並行效能否做出多機分散式等,交給大家集思廣益,作為以後討論的方向。最後,除了在硬體上入手外,大家總結了一下提速的兩個大方向,一是最佳化演算法,二是拆分多執行緒。

Trias每週都會和北大舉辦沙龍活動,對區塊鏈技術以及Trias專案有疑問的小夥伴可以隨時將問題拋在技術交流群裡,我們會及時作出迴應噢。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;