伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(1)------第一次扩张
伽罗瓦域是抽象代数下的域论分支中的内容,这部分想必很多人都比较熟悉,此处不再赘述。
最近,国密算法中的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)------第一次扩张的更多相关文章
- 伽罗瓦域(有限域)GFq^12上元素的1→2→4→12塔式扩张(2)------第二次扩张
接上文https://www.cnblogs.com/heshuchao/p/8196307.html 继续探讨塔式扩张的第二部分,即1→2→4→12中2 → 4的元素扩张表示方式与计算公式推导. 3 ...
- 如何在Vue中,当鼠标hover上元素时,给元素加遮罩层
介绍 当鼠标hover 上元素时,给元素加一层遮罩层. 效果图 使用 import VueHoverMask from 'vue-hover-mask' export default { compon ...
- 在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>------ 已启动 ...
- 获取html上元素的真正坐标
使用HTML元素的style.left,style.top,style.width,style.height以及width,height属性,都不能获得元素的真正位置与大小,这些属性取出来的都是原来的 ...
- Appium+python自动化14-查看webview上元素(DevTools)
前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...
- Appium+python自动化14-查看webview上元素(DevTools)【转载】
前言 app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的. 一.环境准备 ...
- Appium如何查看webview上元素
现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了: 那么如何定位webview上 ...
- 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 ...
- python 不同集合上元素的迭代 chain()
itertools.chain()可以接受一个可迭代对象列表作为输入,并返回一个迭代器,有效的屏蔽掉在多个容器中迭代细节 >>> from itertools import chai ...
随机推荐
- 使用SSH快速下载Git项目
文章首发于[博客园-陈树义],点击跳转到原文使用SSH快速下载Git项目. Git下载项目的几种方式 Git是常用的代码版本技术,而GitLab则是开源的Git版本管理软件,GitLab是最受欢迎的版 ...
- 利用纯CSS美化checkbox和radio和滑动按钮的实现
W3C提供的CheckBox和radio的原始样式非常的丑,而且在不同的额浏览器表现还不一样,使用常规的方法添加样式没法进行修改样式 一, 单选按钮 <html> <head> ...
- 使用PowerApps快速构建基于主题的轻业务应用 —— 入门篇
作者:陈希章 发表于 2017年12月12日 前言 在上一篇文章 基于Office 365的随需应变业务应用平台 中我提到,随着随需应变的业务需要,以及技术的发展,业务应用的开发的模式也有了深刻的变化 ...
- JAVA-----基于POI实现对Excel导入
在日常项目开发中, 数据录入和导出是十分普遍的需求,因此,导入导出也成为了开发中一个经典的功能.数据导出的格式一般是excel或者pdf,而批量导入的信息一般是借助excel来减轻工作量,提高效率. ...
- Android笔记二十四.Android基于回调的事件处理机制
假设说事件监听机制是一种托付式的事件处理,那么回调机制则与之相反,对于基于回调的事件处理模型来说,事件源和事件监听器是统一的,或者说事件监听器全然消失了,当用户在GUI控件上激发某个事件时,控 ...
- linux命令的排列、替换与别名
命令的排列; 1.使用";" 命令语法: 命令1;命令2 当运行该命令时,无论命令1是否出错.接下来就运行命令2 2.使用"&&" 命令语法:命 ...
- gsp页面标签
gsp--Groovy Servers Pages <g:actionSubmit value=""/> 提交button <g:actionSubmit act ...
- Git(一)之基本操作详解
前言 在这段时间的工作中一直都是用Git作为版本控制,只是知道简单的几个命令,没有去了解它的内部原理.所以周末有时间来系统学习. 现在的公司基本上都是用Git作为版本控制,当然也有SVN的. Git是 ...
- (四)—性能测试工具curl-loader(linux)
curl-loader介绍 curl-loader(也被称为"omes-NIK"和"davilka")是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十 ...
- ASP.NET Core WebApi 返回统一格式参数(Json 中 Null 替换为空字符串)
相关博文:ASP.NET Core WebApi 返回统一格式参数 业务场景: 统一返回格式参数中,如果包含 Null 值,调用方会不太好处理,需要替换为空字符串,示例: { "respon ...