橢圓曲線加密概覽(二)

橢圓曲線配對是包括確定性閾值簽名,zk-SNARK和其他更簡單形式的零知識證明在內的各種構造背後的關鍵密碼原語

橢圓曲線配對(或更確切地說,我們將在此處探討的配對的具體形式;儘管其邏輯相當相似,也存在其他類型的配對)是地圖G2 x G1-> Gt,其中:

  • G1是一條橢圓曲線,其中的點滿足y²=x³+ b形式的方程,並且兩個座標都是F_p的元素(即,它們是簡單數字,除了算術都是對某個質數求模)
  • G2是一條橢圓曲線,其點滿足與G1相同的方程,除了座標是F_p²²的元素(即它們是我們上面所討論的增壓複數;我們定義了一個新的“幻數” w) 像w ^ 12-18 * w ^ 6 + 82 = 0這樣的12次多項式
  • Gt是橢圓曲線結果進入的對象類型。 在我們看到的曲線中,Gt爲F_p¹²(與G2中使用的相同的增壓複數)

它必須滿足的主要屬性是雙線性,在這種情況下,這意味着:

  • e(P, Q + R) = e(P, Q) * e(P, R)
  • e(P + Q, R) = e(P, R) * e(Q, R)

還有其他兩個重要條件:

  • 高效的可計算性(例如,我們可以通過簡單地將所有點的離散對數乘以它們來進行簡單的配對,但這在計算上像首先破壞橢圓曲線加密一樣困難,因此不算在內)
  • 非簡併性(當然,您可以定義e(P,Q)= 1,但這並不是特別有用的配對)

那麼我們該怎麼做呢?

配對功能起作用的原因背後的數學非常棘手,涉及許多高級代數,甚至超出了我們到目前爲止所見的範圍,但我將提供一個概述。 首先,我們需要定義除數的概念,這基本上是在橢圓曲線點上表示函數的一種替代方法。 函數的除數基本上是對函數的零和無窮大進行計數。 要了解這意味着什麼,讓我們看幾個例子。 讓我們固定點P =(P_x,P_y),並考慮以下函數:

f(x, y) = x - P_x

除數爲[P] + [-P]-2 * [O](使用方括號表示以下事實:我們指的是點P在函數的零和無窮集合中的存在,而不是 點P本身; [P] + [Q]與[P + Q]不同)。 理由如下:

  • 該函數在P處等於零,因爲x是P_x,所以x-P_x = 0
  • 該函數在-P處等於零,因爲-P和P共享相同的x座標
  • 該函數趨於無窮大,而x趨於無窮大,因此我們說該函數等於O處的無窮大。出於技術原因,此無窮大需要計算兩次,因此O的“乘數”爲-2(負數) 因爲它是一個無窮大而不是一個零,所以由於兩次重複計數而產生了兩個)。

技術上的原因大致是這樣的:因爲曲線的方程爲x³=y²+ b,所以y的無窮大度比x快“ 1.5倍”,以使y²保持與x³保持一致。 因此,如果線性函數僅包含x,則表示爲多重性2的無窮大;但是,如果線性函數包含y,則表示爲多重性3的無窮大。

現在,考慮一個“線性功能”:

ax + by + c = 0

仔細選擇a,b和c以便線穿過點P和Q。由於橢圓曲線加法的工作原理(請參見頂部的圖),這也意味着它穿過-P-Q。 並且它上升到取決於x和y的無窮大,因此除數變爲[P] + [Q] + [-P-Q]-3 * [O]。

我們知道,每個“有理函數”(即僅在點的座標上僅使用有限數量的+,-,*和/運算定義的函數)唯一地對應於某個除數,直到乘以一個常數(即。 如果兩個函數F和G具有相同的除數,則對於某些常數k,F = G * k。

對於任意兩個函數F和G,F * G的除數等於F的除數加上G的除數(在數學教科書中,您會看到(F * G)=(F)+(G)), 因此,例如,如果f(x,y)= P_x-x,則(f³)= 3 * [P] + 3 * [-P]-6 * [O]; P和-P被“三重計數”,以說明在某種數學意義上f³在那些點上“快三倍”接近0的事實。
請注意,有一個定理指出,如果您從函數的除數中“去除方括號”,則這些點必須相加爲O([P] + [Q] + [-PQ]-3 * [O] 顯然適合,因爲P + Q-P-Q-3 * O = O),並且具有此屬性的除數就是函數的除數。

現在,我們準備看看配對。 考慮以下通過其除數定義的函數:

  • (F_P) = n * [P] - n * [O], where n is the order of G1, ie. n * P = O for any P
  • (F_Q) = n * [Q] - n * [O]
  • (g) = [P + Q] - [P] - [Q] + [O]

現在,讓我們看一下乘積F_P * F_Q * g ^ n。 除數爲:

n * [P] - n * [O] + n * [Q] - n * [O] + n * [P + Q] - n * [P] - n * [Q] + n * [O]

簡潔地簡化爲:

n * [P + Q] - n * [O]

注意,該除數的格式與上述F_P和F_Q的除數的格式完全相同。 因此 F_P * F_Q * g^n = F_(P + Q).

現在,我們引入一個稱爲“最終冪運算”步驟的過程,在此過程中,我們採用上述函數的結果(F_P,F_Q等),並將其提高爲冪z =(p¹²-1)/ n,其中p¹²- 1是乘法組在F_p²中的階數(即,對於任何x ϵ F_p¹², x^(p¹² - 1) = 1。 請注意,如果將此乘冪應用於已經提高到n的冪的任何結果,則將得到p¹²-1的冪的冪,因此結果變爲1。因此,在最後的冪之後,g ^ n抵消 得出F_P ^ z * F_Q ^ z = F_(P + Q)^ z。 有一些雙線性適合您。

現在,如果要使兩個參數都爲雙線性函數,則需要進行更怪異的數學運算,而不是直接取值的F_P,而是取除數的F_P,這就是完整的“泰特配對”的地方 從。 爲了證明更多結果,您必須處理“線性等價”和“威爾互惠”等概念.

請注意,可能進行這樣的事實配對有點混雜:一方面,這意味着我們可以進行配對的所有協議都成爲可能,但也意味着我們必須更加註意橢圓曲線我們用。

每個橢圓曲線都有一個值,稱爲嵌入度。本質上,最小的k使得p ^ k-1是n的倍數(其中p是用於該字段的素數,而n是曲線階數)。在上面的字段中,k = 12,在用於傳統ECC的字段中(即我們不關心配對的字段),嵌入度通常非常大,以至於配對在計算上是不可行的;但是,如果我們不小心,則可以生成k = 4甚至1的字段。

如果k = 1,則可以減少橢圓曲線的“離散對數”問題(基本上,僅在點P = G * p的情況下恢復p,您必須解決“破解”橢圓曲線私鑰的問題)在F_p上遇到類似的數學問題,該問題變得更加容易(這稱爲MOV攻擊);使用嵌入度爲12或更高的曲線可確保這種減少效果不可用,或者通過配對結果解決離散對數問題至少與“以正常方式”從公鑰中恢復私鑰一樣困難。計算上不可行)。別擔心;已針對此問題徹底檢查了所有標準曲線參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章