接上文
《伽羅瓦域(有限域)GFq^12上元素的1→2→4→12塔式擴張(1)------第一次擴張》
繼續探討塔式擴張的第二部分,即1→2→4→12中2 → 4的元素擴張表示方式與計算公式推導。
3. (4)
塔式擴張中的(4),即域GFq4。這是從二次域向四次域的第二次擴張,擴張公式如下:
Fq4[v] = Fq2[v] / ( v2 - ξ), 其中,ξ = μ
即:該次擴張的即約多項式為 x2 - μ, μ2 = α, μ = √(-2)
現在依然按照高維在前,低維在后的方式,定義兩個域GFq4上的元素。
X = (a, b ,c, d)
Y = (e, f, g, h)
即:
X = a * v3 + b * v2 + c * v1 + d * v0 = a * v3 + b * v2 + c * v + d
Y = e * v3 + f * v2 + g * v1 + h * v0 = e * v3 + f * v2 + g * v + h
加法和減法依然跟域GFq2上的元素運算規則一樣,直接計算對應維度上的元素在素域q下的加和減。
X + Y = (a + e, b + f, c + g, d + h)
X - Y = (a - e, b - f, c - g, d - h)
這一篇主要討論域GFq4上的元素的乘法,以及帶有即約多項式值的乘法。
乘法:
即然是從2到4點擴張,那么首先考慮到將4次域上的元素用2次域上的元素進行表示。
已知
X = (a, b ,c, d)
Y = (e, f, g, h)
為使用基域Fq上的元素進行表示的。
那么,定義四個域GFq2上的元素如下:
A = (a, b)
B = (c, d)
C = (e, f)
D = (g, h)
則可以將X和Y以域GFq2上的元素進行表示
X = (a, b ,c, d) = (A, B) = A * v + B
Y = (e, f, g, h) = (C, D) = C * v + D
則:
X * Y = (A * v + B) * (C * v + D)
= (A * C * v2 + (A * D + B * C) * v + B * D) mod ( v2 - ξ)
即約多項式為 v2 - ξ, 其中 v2 = ξ = μ, 則:
= (A * D + B * C) * v + B * D + A * C * μ
= (A * D + B * C , B * D + A * C * μ)
其中A、B、C、D均為域GFq2上的元素,所以A * D 、 B * C 和 B * D均滿足域GFq2上的元素的乘法,該計算公式已在上一篇博客中做過推導。
而剩余的A * C * μ則適用於上篇文章中的帶即約多項式值的乘法,此處也解釋了當時留的懸念,即為什么要單獨設置一個這樣的乘法。
帶有即約多項式值的乘法:
此處設置這樣一個乘法,想必也就好解釋了,必然會在下一次擴張至12次域的時候,會有這樣的子式需要處理,其計算過程為:
X * Y * v = (A * v + B) * (C * v + D) * v
= (A * C * v3 + (A * D + B * C) * v2 + B * D * v) mod ( v2 - ξ)
= A * C * v * μ + (A * D + B * C) * μ + B * D * v
= (B * D + A * C * μ) * v + (A * D + B * C) * μ
= (B * D + A * C * μ , A * D * μ + B * C * μ)
同上,該計算過程轉化為2次域GFq2上的元素的計算,包含一個乘法操作和三個帶即約多項式的乘法操作。
至此,便是所有在SM9算法中會用到的域GFq4上的計算規則。
將該部分總結一下,兩個域GFq4上的乘法,使用域GFq2上的元素表示之后,轉化成了域GFq2上的乘法共4次,而一個域GFq2上的乘法需要域GFp上的乘法共4次,也就是最終需要16次基域乘法(不包含加減)。
而向12次域GFq12上擴張的時候,則會轉化成更多次的基域運算,該過程被稱為塔式擴張想必也是因此。
而擴張的目的也更加明顯,就是將闊域上的元素使用基域上的元素進行表示,並適配基域運算法則進行計算。
下一個篇幅會探討第三次擴張4→12,並推導12次闊域下的元素計算公式。