伽罗瓦域是抽象代数下的域论分支中的内容,这部分想必很多人都比较熟悉,此处不再赘述。

最近,国密算法中的SM2和SM9已经成为国际标准,其中SM9算法在椭圆曲线离散对数难题的基础上,添加了若干个双线性配对难题来保证安全性。

配对的过程中,除去群G1中的元素与SM2算法一样在素域下之外,群G2中的元素为GFq2域,群GT中的元素为GFq12域。

SM9算法大部分运算都在阔域中进行,而塔式扩张的意义在于将阔域中的元素用基域中的元素进行表示和计算。这里先按照塔式扩张的顺序(1→2→4→12)探讨一下阔域中的元素计算。

1.  (1)

塔式扩张中的(1),就是指基域。在SM9算法中,是素域Fq,其中q是256位BN曲线的基域特征值。

Fq域下的元素运算,与我们日常的加减乘除运算并无差异,略去不谈。

2.   (2)

塔式扩张中的(2),即域Fq2。这是从素域向二次域的第一次扩张,扩张公式如下:

Fq2[μ] = Fq[μ] /( μ2 - α), 其中,α = -2

即:该次扩张的即约多项式为 x2 - α, α = -2

下面以具体的例子来说明该次扩张。

SM9规范第5部分中,群 G2 的生成元 P2 = (xP2, yP2):

坐标 xP2:( 85AEF3D0 78640C98 597B6027 B441A01F  F1DD2C19 0F5E93C4 54806C11  D8806141 ,  37227552 92130B08 D2AAB97F D34EC120 EE265948 D19C17AB F9B7213B AF82D65B  )

坐标 yP2:( 17509B09 2E845C12 66BA0D26 2CBEE6ED 0736A96F A347C8BD 856DC76B 84EBEB96 ,   A7CF28D5 19BE3DA6 5F317015 3D278FF2  47EFBA98 A71A0811 6215BBA5 C999A7C7 )

此处,点P2的x轴和y轴均为域Fq2下的元素,且高维在前,低维在后。

按照这种表示顺序,此处定义两个域Fq2下的元素:

X = (a, b)

Y = (c, d)

即:

X = a * μ1 + b * μ0 = a * μ + b

Y = c * μ1 + d * μ0 = c * μ + d


加法和减法计算就是对应维度的数值在素域q下的加和减:

X + Y = (a, b) + (c, d) = (a + c, b + d)

X - Y = (a, b) - (c, d) = (a - c, b - d)


乘法

X * Y = (a, b) * (c, d)

    = (a * μ + b) * (c * μ + d)

    = (a * c * μ2 + (a * d + b * c)μ + b * d) mod ( μ2 - α)

    = -2 *a * c + (a * d + b * c)μ + b * d

    = (a * d + b * c)μ + (b * d - 2 * a * c)

即:

X * Y = (a, b) * (c, d) = (a * d + b * c , b * d - 2 * a * c)

其中,最终结果中的 * 运算均为素域q下的乘法运算。


求逆

计算 X-1 = (a, b)-1

假设结果为(x, y)

则有,(a, b) * (x, y) = (0, 1)

(0, 1)为域Fq2下的单位元,相当于素域q下的 1。

将上式展开

(a, b) * (x, y) = (a * y + b * x)μ + (b * y - 2 * a * x)

      = (a * y + b * x  ,   b * y - 2 * a * x)  = (0, 1)

相当于求解二元一次方程。

a * y + b * x      = 0

b * y - 2 * a * x = 1

求解x和y的过程省去不说,可以得到求逆操作的结果为

X-1 = (a , b)-1 = ((-a) / (b2 + 2 * a2) ,  b / (b2 + 2 * a2))

其中相关元素与计算均在素域q下进行。


以上便是塔式扩张的第一次扩张后的元素计算公式。

如上可知,扩张的实际作用是将阔域元素使用基域下的元素表示并按照基域下的运算规则进行运算。

SM9算法的群G2中的点加与倍点计算,虽然与SM2的素域下运算公式一致,但实际处理时,所有元素均按照上面的公式在域Fq2下进行。

后面再画两个篇幅探讨第二次扩张2→4和第三次扩张→12,并推导4次阔域和12次阔域下的元素计算公式。

伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(1)------第一次扩张的更多相关文章

  1. 伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(2)------第二次扩张

    接上文https://www.cnblogs.com/heshuchao/p/8196307.html 继续探讨塔式扩张的第二部分,即1→2→4→12中2 → 4的元素扩张表示方式与计算公式推导. 3 ...

  2. 如何在Vue中,当鼠标hover上元素时,给元素加遮罩层

    介绍 当鼠标hover 上元素时,给元素加一层遮罩层. 效果图 使用 import VueHoverMask from 'vue-hover-mask' export default { compon ...

  3. 在VS13上编译通过的代码放在12上编译-错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW

    在VS13上编译通过的代码放在12上编译 遇到错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW 1>------ 已启动 ...

  4. 获取html上元素的真正坐标

    使用HTML元素的style.left,style.top,style.width,style.height以及width,height属性,都不能获得元素的真正位置与大小,这些属性取出来的都是原来的 ...

  5. Appium+python自动化14-查看webview上元素(DevTools)

    前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...

  6. Appium+python自动化14-查看webview上元素(DevTools)【转载】

    前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...

  7. Appium如何查看webview上元素

    现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了: 那么如何定位webview上 ...

  8. leetcode:Minimum Path Sum(路线上元素和的最小值)【面试算法题】

    题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...

  9. python 不同集合上元素的迭代 chain()

    itertools.chain()可以接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节 >>> from itertools import chai ...

随机推荐

  1. Django框架中的视图和模板

    视图views django中的视图就是用来定义函数来处理一些逻辑的核心地方. django中通过urls来建立路径跟views中的视图函数的映射关系. urls中的映射关系 ''' urlpatte ...

  2. angularjs 给封装的模态框元素传值,和实现兄弟传值

    本例实现封装的元素所放的位置不同,而选择不同的传值,这里举例封装了bootstrap模态框,以后也方便大家去直接使用.方法举例如下:首先主页调用css/js有: <link rel=" ...

  3. PHP基础知识点

    //语法错误(syntax error)在语法分析阶段,源代码并未被执行,故不会有任何输出. /* [命名规则] */常量名 类常量建议全大写,单词间用下划线分隔 // MIN_WIDTH变量名建议用 ...

  4. 获取串口映射的COM端口号

    背景:近期由于项目需要,需要操作短信猫,当短信猫插入电脑后,会根据当前PC状况,映射COM口,这里需动态获取短信猫映射的COM端口号. 编程语言C#: 具体代码如下 public enum Hardw ...

  5. 一个看起来不像中年人的中年人,带着两个初出茅庐的小伙子儿,用git管理项目代码的进击之路

    一个中年人的孤独前行 我们这一代人,是上个世纪的人,活在当下,已然成为社会上的中流砥柱. 80年代生人,遥望我们的父辈,均是5.60年代的人,迟迟暮年,夕夕老矣.而我们,正当年,却又时光飞逝,很快便要 ...

  6. inotify软件部署及实时同步

    声明:博主使用的是CentOS6.9的系统 参考资料: https://github.com/rvoicilas/inotify-tools/wiki http://www.ibm.com/devel ...

  7. hihoCoder_二分&#183;归并排序之逆序对

    一.题目 题目1 : 二分·归并排序之逆序对 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 在上一回.上上回以及上上上回里我们知道Nettle在玩<艦これ&g ...

  8. linux shell 推断文件或目录是否真的存在

    #推断文件或目录是否存在 filepath=/data/test.txt folderpath=/data/qtech #推断文件是否存在 if [ -f "$file" ] th ...

  9. TCP传输中序号与确认序号的交互

    本实验通过SSH远程登录server,然后使用Wireshark抓包分析. 开头的三次握手已经省略.关于序号的交互过程.须要记住一点:TCP首部中的确认序号表示已成功收到字节,但还不包括确认序号所指的 ...

  10. Ubuntu SSH root 登录 Permission denied 错误

    问题: $ ssh root@40.125.21.75 root@40.125.21.75's password: Permission denied, please try again. 解决方式, ...