GB/T 38635.1-2020 信息安全技术 SM9标识密码算法 第1部分:总则
来源:GB/T 38635.1-2020 国家标准详情;封面发布日期:2020-04-28;实施日期:2020-11-01。 PDF SHA-256:444fad30e5e38fce05a9ba586bbfb5560d2e89c5f2b8f997f1b65be3c75638e2。 转写说明:对照官方 PDF 全部 40 页的页面图像校正文字与公式;省略封面、目录、页眉、页脚和页码,合并跨页内容。正式引用请核对原 PDF。
前言
GB/T 38635《信息安全技术 SM9 标识密码算法》分为两个部分:
- 第 1 部分:总则;
- 第 2 部分:算法。
本部分为 GB/T 38635的第1部分。
本部分按照GB/T 1.1—2009给出的规则起草。
请注意本文件的某些内容可能涉及专利。本文件的发布机构不承担识别这些专利的责任。
本部分由全国信息安全标准化技术委员会(SAC/TC 260)提出并归口。
本部分起草单位:国家信息安全工程技术研究中心、北京国脉信安科技有限公司、深圳奥联信息安全技术有限公司、中国科学院软件研究所、武汉大学、中科院信息工程研究所。
本部分主要起草人:陈晓、程朝辉、张振峰、叶顶峰、胡磊、陈建华、季庆光、袁文恭、刘平、马宁、袁峰、李增欣、王学进、杨恒亮、张青坡、马艳丽、浦雨三、唐英、孙移盛、安萱、封维端、张立圆。
引言
A.Shamir 在1984年提出了标识密码(Identity-based cryptography)的概念,在标识密码系统中,用户的私钥由密钥生成中心(KGC)根据主密钥和用户标识计算得出,用户的公钥由用户标识唯一确定,由标识管理者保证标识的真实性。与基于证书的公钥密码系统相比,标识密码系统中的密钥管理环节可以得到适当简化。
1999年,K.Ohgishi、R.Sakai 和 M.Kasahara 在日本提出了用椭圆曲线对(pairing)构造基于标识的密钥共享方案;2001年,D.Boneh 和 M.Franklin,以及 R.Sakai、K.Ohgishi 和 M.Kasahara 等人独立提出了用椭圆曲线对构造标识公钥加密算法。这些工作引发了标识密码的新发展,出现了一批用椭圆曲线对实现的标识密码算法,其中包括数字签名算法、密钥交换协议、密钥封装机制和公钥加密算法等。
椭圆曲线对具有双线性的性质,它在椭圆曲线的循环子群与扩域的乘法循环子群之间建立联系,构成了双线性 DH、双线性逆 DH、判定性双线性逆 DH、τ-双线性逆 DH 和 τ-Gap-双线性逆 DH 等难题,当椭圆曲线离散对数问题和扩域离散对数问题的求解难度相当时,可用椭圆曲线对构造出安全性和实现效率兼顾的标识密码。
1 范围
GB/T 38635 的本部分规定了SM9标识密码算法涉及的必要相关数学基础知识、密码技术和具体参数。
本部分适用于 SM9标识密码的实现和应用。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
-
GB/T 32905 信息安全技术 SM3密码杂凑算法
-
GB/T 32907 信息安全技术 SM4分组密码算法
3 术语和定义
下列术语和定义适用于本文件。
3.1 标识 identity
由实体无法否认的信息组成,如实体的可识别名称、电子邮箱、身份证号、电话号码、街道地址等,可唯一确定一个实体的身份。
3.2 主密钥 master key
处于标识密码密钥分层结构最顶层的密钥,包括主私钥和主公钥,其中主公钥公开,主私钥由 KGC秘密保存。KGC用主私钥和用户的标识生成用户的私钥。在标识密码中,主私钥一般由 KGC通过随机数发生器产生,主公钥由主私钥结合系统参数产生。
3.3 密钥生成中心 key generation center;KGC
在SM9标识密码中,负责选择系统参数,生成主密钥并产生用户私钥的可信机构。
3.4 SM3 算法 SM3 algorithm
由 GB/T 32905定义的一种杂凑算法。
3.5 SM4 算法 SM4 algorithm
由GB/T 32907定义的一种分组加密算法。
4 符号
下列符号适用于本文件。
- :椭圆曲线阶相对于 的余因子。
- :用一个字节表示的曲线识别符,用以区分所用曲线的类型。
- :多项式 的次数。
- 、: 的两个因子。
- :定义在有限域上的椭圆曲线。
- ECDLP:椭圆曲线离散对数问题。
- :有限域 上椭圆曲线 的所有有理点(包括无穷远点 )组成的集合。
- : 上 -扭点的集合[即曲线 上的 阶扭子群]。
- :从 到 的双线性对。
- :用一个字节表示的双线性对 的识别符,用以区分所用双线性对的类型。
- FDLP:有限域上离散对数问题。
- :包含 个元素的素域。
- :包含 个元素的有限域。
- :由 中所有非零元构成的乘法群。
- :有限域 的 次扩域。
- :阶为素数 的乘法循环群。
- :阶为素数 的加法循环群。
- :阶为素数 的加法循环群。
- : 和 的最大公因子。
- :曲线 相对于 的嵌入次数,其中 是 的素因子。
- :有限域 关于 的扩张次数。
- :模多项式 的运算。
- :模 运算。示例:。
- :循环群 、 和 的阶,为大于 的素数。
- :椭圆曲线上的一个特殊点,称为无穷远点或零点,是椭圆曲线加法群的单位元。
- : 是椭圆曲线上除 之外的一个点,其坐标 、 满足椭圆曲线方程。
- : 的生成元。
- : 的生成元。
- :椭圆曲线 上两个点 与 的和。
- :大于 的素数。
- :有限域 中元素的数目。
- :点 的 坐标。
- : 与 的拼接,其中 和 是比特串或字节串。
- : 与 模 同余。即 。
- :点 的 坐标。
- : 上点的数目,称为椭圆曲线群 的阶,其中 为有限域(包括 和 )。
- :由椭圆曲线上点 生成的循环群。
- :椭圆曲线上点 的 倍点。
- :不小于 且不大于 的整数的集合。
- :顶函数,不小于 的最小整数。例如,,。
- :底函数,不大于 的最大整数。例如,,。
- :扭曲线参数。
- : 到 的同态映射,满足 。
- :长度相等的两个比特串按比特的模 2 加运算。
5 有限域和椭圆曲线
5.1 有限域
5.1.1 概述
域由一个非空集合 和两种运算共同组成,这两种运算分别为加法(用“”表示)和乘法(用“”表示),并且满足下列算术特性:
a) 对于加法运算构成加法交换群,单位元用 表示;
b) 对于乘法运算构成乘法交换群,单位元用 表示;
c)分配律成立:对于所有的 ,都有 。
若集合 是有限集合,则称域为有限域。有限域的元素个数称为有限域的阶。
5.1.2 素域
阶为素数的有限域是素域。
设 是一个素数,则整数模 的全体余数的集合 关于模 的加法和乘法构成一个 阶素域,用符号 表示。
具有如下性质:
a)加法单位元是 ;
b)乘法单位元是 ;
c)域元素的加法是整数的模 加法,即若 ,则 ;
d)域元素的乘法是整数的模 乘法,即若 ,则 。
5.1.3 有限域 的 次扩域
设 是一个素数或素数方幂, 是多项式环 上的一个 ()次不可约多项式(称为约化多项式或域多项式),商环 是含 个元素的有限域(记为 ),称 是有限域 的扩域,域 为域 的子域, 为扩张次数。 可以看成 上的 维向量空间。 的每一个元可以唯一地写成 的形式,其中 ,而 是向量空间 在 上的一组基。
中的元素可以用多项式基或正规基表示。在本部分中,如果不作特别说明, 中元素均采用多项式基表示。
不可约多项式 可取为首一的多项式 (其中 ,)。 中的元素由多项式环 中所有次数低于 的多项式构成。多项式集合 是 在 上的一组基,称为多项式基。域 上的任意一个元素 ,在 上的系数恰好构成了一个 维向量,用 表示,其中分量 ,。
具有如下性质:
a)零元 用 维向量 表示;
b)乘法单位元 用 维向量 表示;
c)两个域元素的加法为向量加法,各个分量用域 的加法;
d)域元素 和 的乘法定义如下:设 和 对应的 上多项式为 和 ,则 定义为多项式 对应的向量;
e)逆元:设 对应的 上多项式为 , 的逆元 对应的 上多项式为 ,那么有 。
本部分使用 上的 12 次扩域见附录 A。
关于有限域的扩域 更多细节,参见附录 B 中的 B.1。
5.2 有限域上的椭圆曲线
有限域 ()上的椭圆曲线是由点组成的集合。在仿射坐标系下,椭圆曲线上点 (非无穷远点)用满足一定方程的两个域元素 和 表示,、 分别称为点 的 坐标和 坐标,并记 。
本部分描述特征为大素数 的域上的曲线。
本部分如果不作特别说明,椭圆曲线上的点均采用仿射坐标表示。
定义在 上的椭圆曲线方程见式(1):
椭圆曲线 定义为 ,其中 是无穷远点。椭圆曲线 上的点的数目用 表示,称为椭圆曲线 的阶。
本部分规定素数 。
设 和 是定义在 上的椭圆曲线,如果存在一个同构映射 ,其中 是使映射存在的最小整数,则称 为 的 次扭曲线。当 时, 的取值有三种情况:
a)若 ,那么 ,,;
b)若 ,那么 ,,;
c)若 ,那么 ,,。
5.3 椭圆曲线群
椭圆曲线 ()上的点按照下面的加法运算规则,构成一个交换群:
a)。
b),。
c), 的逆元素 ,。
d)两个非互逆的不同点相加的规则:设 ,,且 ,设 ,则:
e)倍点规则:设 ,且 ,,则:
5.4 椭圆曲线多倍点运算
椭圆曲线上同一个点的重复相加称为该点的多倍点运算。设 是一个正整数, 是椭圆曲线上的点,其 倍点 。
多倍点运算可以扩展到 0 倍点运算和负数倍点运算:,。
多倍点运算可以通过一些技巧有效地实现,参见 B.2。
5.5 椭圆曲线子群上点的验证
输入:定义 上( 为奇素数,)椭圆曲线方程的参数 、,椭圆曲线 上子群 的阶 , 上的一对元素 。
输出:若 是群 中的元素,则输出“有效”;否则输出“无效”。
计算步骤为:
a)在 上验证 是否满足椭圆曲线方程 ;
b)令 ,验证 。
若以上任何一项验证失败,则输出“无效”;否则,输出“有效”。
5.6 离散对数问题
5.6.1 有限域上离散对数问题(FDLP)
有限域 ( 为奇素数,)的全体非零元素构成一个乘法循环群,记为 。 中存在元素 ,使得 ,称 为生成元。 中元素 的阶是满足 的最小正整数 。群 的阶为 ,因此 。
设乘法循环群 的生成元为 ,,有限域上离散对数问题是指确定整数 ,使得 在 上成立。
5.6.2 椭圆曲线离散对数问题(ECDLP)
已知椭圆曲线 (),阶为 的点 及 ,椭圆曲线离散对数问题是指确定整数 ,使得 成立。
6 双线性对及安全曲线
6.1 双线性对
设 、 和 是三个循环群,、 和 的阶均为素数 , 是 的生成元, 是 的生成元,存在 到 的同态映射 使得 。
双线性对 是 的映射,满足以下条件:
a)双线性性:对任意的 、、,有 ;
b)非退化性:;
c)可计算性:对任意的 、,存在有效的算法计算 。
所用的双线性对定义在椭圆曲线群上,主要有 Weil 对、Tate 对、Ate 对、R-ate 对等,相关描述参见附录 C。
6.2 安全性
双线性对的安全性主要建立在以下几个问题的难解性基础之上:
问题 1[双线性逆 DH(BIDH)] 对 ,给定 ,计算 是困难的。
问题 2[判定性双线性逆 DH(DBIDH)] 对 ,区分 和 是困难的。
问题 3[-双线性逆 DH(-BDHI)] 对正整数 和 ,给定 ,计算 是困难的。
问题 4[-Gap-双线性逆 DH(-Gap-BDHI)] 对正整数 和 ,给定 和 DBIDH 确定算法,计算 是困难的。
上述问题的难解性是 SM9 标识密码的安全性的重要基础,这些问题的难解性都意味着 、 和 上的离散对数问题难解,选取的椭圆曲线应首先使得离散对数问题难解。
6.3 嵌入次数及安全曲线
设 是椭圆曲线 的 阶子群,使 成立的最小正整数 称为子群 相对于 的嵌入次数,也称为曲线 相对于 的嵌入次数。
设 是 ( 整除 )的 阶子群, 是 ( 整除 )的 阶子群,则椭圆曲线双线性对的值域 是 的子群,因此椭圆曲线双线性对可将椭圆曲线离散对数问题转化为有限域 上离散对数问题。嵌入次数越大安全性越高,但双线性对的计算越困难,因而需要采用嵌入次数适中且达到安全性标准的椭圆曲线。本部分规定 。
本部分规定选用如下的曲线:
a)基域 为大于 的素数、嵌入次数 的常曲线,其中 ,;
b)基域 为大于 的素数、嵌入次数 的超奇异曲线。
对小于 的 ,建议:
a) 含有大于 的素因子;
b) 含有大于 的素因子。
7 数据类型及其转换
7.1 数据类型
本部分规定的数据类型包括比特串、字节串、域元素、椭圆曲线上的点和整数。
比特串:有序的 0 和 1 的序列。
字节串:有序的字节序列,其中 8 比特为 1 个字节,最左边的比特为最高位。
域元素:有限域 ()中的元素。
椭圆曲线上的点:椭圆曲线 ()上的点 或者是无穷远点 ,或者是一对域元素 ,其中域元素 和 满足椭圆曲线方程。
点的字节串表示有多种形式,用一个字节 加以标识。无穷远点 的字节串表示是单一的零字节 。非无穷远点 有以下三种字节串表示形式:
a)压缩表示形式, 或 ;
b)未压缩表示形式,;
c)混合表示形式, 或 。
注:混合表示形式既包含压缩表示形式又包含未压缩表示形式。在实现中,它允许转换到压缩表示形式或者未压缩表示形式。对于椭圆曲线上点的压缩表示形式和混合表示形式,本部分定为可选形式。椭圆曲线上点的压缩表示形式参见B.4。
7.2 数据类型转换
7.2.1 数据类型转换关系
图1表示了各种数据类型之间的转换关系,线上的标志是相应数据转换方法所在的条号。

7.2.2 整数到字节串的转换
输入:非负整数 ,以及字节串的目标长度 (其中 满足 )。
输出:长度为 的字节串 。
计算步骤为:
a)设 是 从最左边到最右边的字节;
b) 的字节满足:
7.2.3 字节串到整数的转换
输入:长度为 的字节串 。
输出:整数 。
计算步骤为:
a)设 是 从最左边到最右边的字节;
b)将 转换为整数 :
7.2.4 比特串到字节串的转换
输入:长度为 的比特串 。
输出:长度为 的字节串 ,其中 。
计算步骤为:
a)设 是 从最左边到最右边的比特;
b)设 是 从最左边到最右边的字节,则:
其中 ,当 , 时,。
7.2.5 字节串到比特串的转换
输入:长度为 的字节串 。
输出:长度为 的比特串 ,其中 。
计算步骤为:
a)设 是 从最左边到最右边的字节;
b)设 是 从最左边到最右边的比特,则 是 右起第 比特,其中 。
7.2.6 域元素到字节串的转换
输入:()中的元素 ,。
输出:长度 的字节串 ,其中 。
计算步骤为:
a)若 ,则 (), 必为区间 中的整数,按 7.2.2 的细节把 转换成长度为 的字节串 ;
b)若 ,则 (),其中 ,;
1)置 ;
2)对 从 到 0 执行:按 7.2.2 的细节把 ()转换成长度为 的字节串 ;
3)。
7.2.7 字节串到域元素的转换
情形 1:转换为基域中元素
输入:域 ,,长度为 的字节串 ,。
输出: 中的元素 。
若 ,则按 7.2.3 的细节将 转换为整数 ,若 ,则报错。
情形 2:转换为扩域中元素
输入:域 (),,长度为 的字节串 ,其中 。
输出: 中的元素 。
计算步骤为:
a)将字节串 平均分成 段,每段长度为 ,记作 ;
b)对 从 到 0 执行:按 7.2.3 的细节将 转换为整数 ,若 ,则报错;
c)若 ,输出 。
7.2.8 点到字节串的转换
点到字节串的转换分为两种情形:一种是在计算过程中,将椭圆曲线点转换为字节串后才能作为某个函数(如杂凑函数)的输入,这种情况下只需直接将点转换为字节串;一种是在传输或存储椭圆曲线点时,为了减少传输的量或存储空间,可采用点的压缩或混合压缩表示形式,这种情况下需要加入一个字节的识别符 PC 来指点的表示形式。下面分两种情况说明详细的转换过程。
情形 1:直接转换
输入:椭圆曲线 ()上的点 ,且 。
输出:长度为 的字节串 。(当 时,;当 时,。)
计算步骤为:
a)按 7.2.6 中的细节把域元素 转换成长度为 的字节串 ;
b)按 7.2.6 中的细节把域元素 转换成长度为 的字节串 ;
c)输出字节串 。
情形 2:添加一字节识别符 的转换
输入:椭圆曲线 ()上的点 ,且 。
输出:字节串 。若选用未压缩表示形式或混合表示形式,则输出字节串长度为 ;若选用压缩表示形式,则输出字节串长度为 。(当 时,;当 时,。)
计算步骤为:
a)按 7.2.6 中的细节把域元素 转换成长度为 的字节串 。
b)若选用压缩表示形式,则:
1)计算比特 (参见 B.4);
2)若 ,则令 ;若 ,则令 ;
3)字节串 。
c)若选用未压缩表示形式,则:
1)按 7.2.6 的细节把域元素 转换成长度为 的字节串 ;
2)令 ;
3)字节串 。
d)若选用混合表示形式,则:
1)按 7.2.6 的细节把域元素 转换成长度为 的字节串 ;
2)计算比特 (参见 B.4);
3)若 ,则令 ;若 ,则令 ;
4)字节串 。
7.2.9 字节串到点的转换
字节串到点的转换是7.2.8的逆过程。下面也分两种情况加以说明。
情形 1:直接转换
输入:定义 ()上椭圆曲线的域元素 、,长度为 的字节串 ,、 的长度均为 (当 时,;当 时,)。
输出:椭圆曲线上的点 ,且 。
计算步骤为:
a)按 7.2.7 的细节把字节串 转换成域元素 ;
b)按 7.2.7 的细节把字节串 转换成域元素 。
情形 2:包含一字节识别符 的字节串的转换
输入:定义 ()上椭圆曲线的域元素 、,字节串 。若选用未压缩表示形式或混合表示形式,则字节串 长度为 ;若选用压缩表示形式,则字节串 长度为 (当 时,;当 时,)。
输出:椭圆曲线上的点 ,且 。
计算步骤为:
a)若选用压缩表示形式,则 ;若选用未压缩表示形式或混合表示形式,则 ,其中 是单一字节, 和 都是长度为 的字节串。
b)按 7.2.7 的细节把字节串 转换成域元素 。
c)若选用压缩表示形式,则:
1)检验 或者 ,若不是这种情形,则报错;
2)若 ,则令 ;若 ,则令 ;
3)将 转换为椭圆曲线上的一个点 (参见 B.4)。
d)若选用未压缩表示形式,则:
1)检验 ,若不是这种情形,则报错;
2)按 7.2.7 的细节把字节串 转换成域元素 。
e)若选用混合表示形式,则:
1)检验 或者 ,若不是这种情形,则报错;
2)执行以下步骤:
- 按 7.2.7 的细节把字节串 转换成域元素 ;
- 若 ,则令 ,否则令 ;
将 转换为椭圆曲线上的一个点 (参见 B.4)。
f)验证 是否满足曲线方程,若不满足,则报错。
g)。
8 系统参数及其验证
8.1 系统参数
系统参数包括:
a)曲线的识别符 ,用一个字节表示:0x10 表示 (素数 )上常曲线,0x11 表示 上超奇异曲线,0x12 表示 上常曲线及其扭曲线。
b)椭圆曲线基域 的参数:基域参数为大于 3 的素数 。
c) 中的两个元素 和 ,它们定义椭圆曲线 的方程:;扭曲线参数 (若 的低 4 位为 2)。
d)余因子 和素数 ,其中 , 且 不整除 ,如果 小于 ,建议 含有大于 的素因子, 含有大于 的素因子。
e)曲线 相对于 的嵌入次数 ( 阶循环群 ),规定 。
f) 阶循环群 的生成元 ,。
g) 阶循环群 的生成元 ,。
h)双线性对用一个字节的识别符 表示:0x01 表示 Tate 对,0x02 表示 Weil 对,0x03 表示 Ate 对,0x04 表示 R-ate 对。本部分采用 R-ate 对。
i)(选项)参数 ,其中 整除 。
j)(选项) 到 的同态映射 ,使得 。
k)(选项)BN 曲线的基域特征 ,曲线阶 ,Frobenius 映射的迹 可通过参数 来确定, 至少达到 63 比特。
具体参数,见附录 A。
8.2 系统参数的验证
下面的条件应由系统参数的生成者加以验证。这些条件也能由系统参数的用户验证。
输入:系统参数集合。
输出:若所有参数有效,则输出“有效”;否则输出“无效”。
计算步骤为:
a)验证 是大于 3 的素数(参见附录 D 中的 D.1.5);
b)验证 是区间 中的整数;
c)验证在 上 ;若 的低 4 位为 2,验证 是非平方元(参见 D.1.4.3.1);
d)验证 为大于 的素数且 不整除 ,如果 小于 ,验证 含有大于 的素因子, 含有大于 的素因子;
e)验证 ;
f)验证 ,且 为使 成立的最小正整数 ;
g)验证 是群 中的元素;
h)验证 是群 中的元素;
i)验证 ,且 ;
j)(选项)验证 整除 ;
k)(选项)验证 ;
l)(选项)验证 至少达到 63 比特。
若以上任何一项验证失败,则输出“无效”;否则,输出“有效”。
附录 A(规范性附录)参数定义
A.1 系统参数
本部分使用 256 位的 BN 曲线。
椭圆曲线方程:。
曲线参数:
- 参数 :60000000 0058F98A
- 迹 :D8000000 019062ED 0000B98B 0CB27659
- 基域特征 :B6400000 02A3A6F1 D603AB4F F58EC745 21F2934B 1A7AEEDB E56F9B27 E351457D
- 方程参数 :05
- 群的阶 :B6400000 02A3A6F1 D603AB4F F58EC744 49F2934B 18EA8BEE E56EE19C D69ECF25
- 余因子 :1
- 嵌入次数 :12
- 扭曲线的参数 :
- 的因子
- 曲线识别符 :0x12
- 群 的生成元 :
- 坐标 :93DE051D 62BF718F F5ED0704 487D01D6 E1E40869 09DC3280 E8C4E481 7C66DDDD
- 坐标 :21FE8DDA 4F21E607 63106512 5C395BBC 1C1C00CB FA602435 0C464CD7 0A3EA616
- 群 的生成元 :
- 坐标 : (85AEF3D0 78640C98 597B6027 B441A01F F1DD2C19 0F5E93C4 54806C11 D8806141, 37227552 92130B08 D2AAB97F D34EC120 EE265948 D19C17AB F9B7213B AF82D65B)
- 坐标 : (17509B09 2E845C12 66BA0D26 2CBEE6ED 0736A96F A347C8BD 856DC76B 84FBEB96, A7CF28D5 19BE3DA6 5F317015 3D278FF2 47EFBA98 A71A0811 6215BBA5 C999A7C7)
- 双线性对的识别符 :0x04
A.2 扩域元素的表示
的 1-2-4-12 塔式扩张:
- ,;
- ,;
- ,。
其中:
第(1)步进行二次扩张的约化多项式为:,;
第(2)步进行二次扩张的约化多项式为:,,;
第(3)步进行三次扩张的约化多项式为:,,;
属于 ,表示为 ,左边是第 1 维(高维),右边是第 0 维(低维)。
属于 ,表示为 ,其中左边 是 中元素以 表示的第 1 维(高维),右边 是 中元素以 表示的第 0 维(低维)。
中元素有三种表示方法:
a) 中元素 用 中元素表示:
用 中元素表示:
其中:。
b) 中元素 用 中的元素表示:
用基域 中的元素表示:
其中:。
c) 中元素 用基域 中的元素表示:
其中各分量均属于 。
中单位元的表示为 。
中单位元的表示为 。
中单位元的表示为 。
各种扩域中分量序为:左边是高维,右边是低维。
示例数据中,扩域中的元素均用基域中的元素表示。
附录 B(资料性附录)关于椭圆曲线的背景知识
B.1 有限域
B.1.1 素域
设 是一个素数,整数模 的全体余数的集合 关于模 的加法和乘法构成一个 阶素域,用符号 表示。加法单位元是 0,乘法单位元是 1。 的元素满足如下运算法则:
- 加法:设 ,则 ,其中 ,。
- 乘法:设 ,则 ,其中 ,。
记 是由 中所有非零元构成的乘法群。由于 是循环群,所以在 中至少存在一个元素 ,使得 中任一非零元都可以由 的一个方幂表示,称 为 的生成元(或本原元),即 。设 ,其中 ,则 的乘法逆元为:。
示例:素域 ,。
中加法的示例:,,,则 。
中乘法的示例:,,,则 。
13 是 的一个生成元,则 中元素可由 13 的方幂表示出来:
,,,,,,,,,,,,,,,,,,。
B.1.2 有限域
设 是一个素数或素数方幂, 是多项式环 上的一个 ()次不可约多项式(称为约化多项式或域多项式),商环 是含 个元素的有限域(记为 ),称 是有限域 的扩域,域 为域 的子域, 为扩张次数。 可以看成 上的 维向量空间,也就是说,在 中存在 个元素 ,使得 , 可以唯一表示为:
其中 ,称 为 在 上的一组基。给定这样一组基,就可以由向量 来表示域元素 。
在 上的基有多种选择:多项式基和正规基等。
不可约多项式 可取为首一的多项式 (其中 ,), 中的元素由多项式环 中所有次数低于 的多项式构成,即:
多项式集合 是 作为向量空间在 上的一组基,称多项式基。当 含有因子 ()时, 可以由 扩张生成,从 中选取一个合适的 次不可约多项式作为 在 上的约化多项式, 可以由塔式扩张方法(towering method)得到,这种扩张的基本形式仍是由 中元素组成的向量。例如当 时,可以先由 经过 3 次扩张得扩域 ,再由 经过 2 次扩张得到扩域 ;也可以先由 经过 2 次扩张得扩域 ,再由 经过 3 次扩张得到扩域 。
在 上形如 的一组基称为正规基,其中 。, 可以唯一表示为:,其中 ,。对于任意有限域 及其扩域 ,这样的基总是存在的。
如果不作特别说明, 中元素均采用多项式基表示。域元素 相对于多项式基可以由向量 表示,所以:
乘法单位元 1 由 表示,零元由 表示。域元素的加法和乘法定义如下:
- 加法运算:,则 ,其中 ,,即加法运算按分量执行域 的加法运算。
- 乘法运算:,则 ,其中多项式 是 在 中模 的余式。
恰包含 个元素。记 是由 中所有非零元构成的乘法群。 是循环群,在 中至少存在一个元素 ,使得 中任一非零元都可以由 的一个方幂表示,称 为 的生成元(或本原元),即 。设 ,其中 ,则 的乘法逆元为 。
示例: 的多项式基表示
取 上的一个不可约多项式 ,则 中的元素是:
,,,,,,,,。
加法:。
乘法:,因为:
即 是 除以 的余式。
乘法单位元是 , 是 的一个生成元,则 的方幂为:
,,,,,,,,。
B.1.3 有限域上的椭圆曲线
B.1.3.1 概述
有限域上椭圆曲线常用的表示形式有两种:仿射坐标表示和射影坐标表示。
B.1.3.2 仿射坐标表示
设 是大于 3 的素数, 上椭圆曲线方程在仿射坐标系下可以简化为 ,其中 ,且使得 。椭圆曲线上的点集记为 ,且满足曲线方程 ,其中 是椭圆曲线的无穷远点,又称为零点。
()上的点按照下面的加法运算规则,构成一个交换群:
a);
b),;
c), 的逆元素 ,;
d)点 ,,,则:
其中:
示例:有限域 上一条椭圆曲线
上方程:,其中 ,。则 上曲线的点为:
,,,,,,,,,,,,,,,,,,,。
则 有 21 个点(包括无穷远点 )。
a)取 ,,计算 :
所以 。
b)取 ,计算 :
所以 。
B.1.3.3 射影坐标表示
设 是大于 3 的素数, 上椭圆曲线方程在标准射影坐标系下可以简化为 ,其中 ,且 。椭圆曲线上的点集记为 且满足曲线方程 。对于 和 ,若存在某个 且 ,使得 ,,,则称这两个三元组等价,表示同一个点。
若 ,记 ,,则可从标准射影坐标表示转化为仿射坐标表示:;
若 , 对应的仿射坐标系下的点即无穷远点 。
标准射影坐标系下, 上点的加法运算定义如下:
a);
b),;
c), 的逆元素 , 且 ,;
d)设点 ,,,
若 ,则:
若 ,则:
B.1.3.4 Jacobian 加重射影坐标系
设 是大于 3 的素数, 上椭圆曲线方程在 Jacobian 加重射影坐标系下可以简化为 。其中 ,且 。椭圆曲线上的点集记为 且满足曲线方程 。对于 和 ,若存在某个 且 ,使得 ,,,则称这两个三元组等价,表示同一个点。
若 ,记 ,,则可从 Jacobian 加重射影坐标表示转化为仿射坐标表示:。
若 , 对应的仿射坐标系下的点即无穷远点 。
Jacobian 加重射影坐标系下, 上点的加法运算定义如下:
a);
b),;
c), 的逆元素 , 且 ,;
d)设点 ,,,
若 ,则:
若 ,则:
B.1.4 有限域上椭圆曲线的阶
有限域 上一条椭圆曲线的阶是指点集 中元素的个数,记为 。由 Hasse 定理知:,即 ,其中 称为 Frobenius 迹且 。
若 的特征整除 Frobenius 迹 ,则称此曲线为超奇异的,否则为非超奇异的。
设 是 上的椭圆曲线, 是与 互素的整数,则 的 阶扭子群 , 中的点称为 -扭点。
B.2 椭圆曲线多倍点运算
椭圆曲线上同一个点的重复相加称为该点的多倍点运算。设 是一个正整数, 是椭圆曲线上的点,其 倍点 。
多倍点运算可以扩展到 0 倍点运算和负数倍点运算:,。
椭圆曲线多倍点运算的实现有多种方法,这里只介绍最基本的三种方法,以下都假设 。
算法一:二进制展开法
输入:点 , 比特的整数 ,。
输出:。
a)置 。
b)对 从 降至 0 执行:
1);
2)若 ,则 。
c)输出 。
算法二:加减法
输入:点 , 比特的整数 ,。
输出:。
a)设 的二进制表示是 ,其中最高位 为 1,显然 或 。
b)设 的二进制表示是 。
c)置 。
d)对 从 降至 1 执行:
1);
2)若 ,且 ,则 ;
3)若 ,且 ,则 。
e)输出 。
注:减去点 ,只要加上 。有多种不同的变种可以加速这一运算。
算法三:滑动窗法
输入:点 , 比特的整数 ,。
输出:。
设窗口长度 。
预计算:
a),。
b) 从 1 至 计算 。
c)置 ,。
主循环:
d)当 执行:
1)若 ,则 ,;
2)否则:
- 令 是使 且 的最小整数;
- ;
- ;
- 置 。
e)输出 。
B.3 离散对数问题
B.3.1 求解有限域上离散对数问题的方法
有限域 的全体非零元素构成一个乘法循环群,记为 。 中存在一个元素 , 称为生成元,使得 。 的阶是满足 的最小正整数 。循环群 的阶为 ,因此 。
设乘法循环群 的生成元为 ,,有限域上离散对数问题是指确定整数 ,使得 成立。
有限域上离散对数问题现有攻击方法有:
a)Pohlig-Hellman 方法:设 是 的最大素因子,则时间复杂度为 ;
b)BSGS 方法:时间复杂度与空间复杂度均为 ;
c)Pollard 方法:时间复杂度为 ;
d)并行 Pollard 方法:设 为并行处理器个数,时间复杂度为 ;
e)线性筛法(对素域 ):时间复杂度为 ;
f)Gauss 整数法(对素域 ):时间复杂度为 ;
g)剩余列举筛法(对素域 ):时间复杂度为 ;
h)数域筛法(对素域 ):时间复杂度为 ;
i)函数域筛法(对小特征域):时间复杂度为 和拟多项式时间。
从以上列举的求解离散对数问题的方法及其时间复杂度可知:对于一般的大特征域上的离散对数问题,存在亚指数级计算复杂度的攻击方法;对小特征域上的离散对数问题,目前已经有拟多项式时间的攻击方法。
B.3.2 求解椭圆曲线离散对数问题的方法
已知椭圆曲线 ,阶为 的点 及 ,椭圆曲线离散对数问题是指确定整数 ,使得 成立。
ECDLP 现有攻击方法有:
a)Pohlig-Hellman 方法:设 是 的最大素因子,则时间复杂度为 ;
b)BSGS 方法:时间复杂度与空间复杂度均为 ;
c)Pollard 方法:时间复杂度为 ;
d)并行 Pollard 方法:设 为并行处理器个数,时间复杂度为 ;
e)MOV-方法:把超奇异椭圆曲线及具有相似性质的曲线的 ECDLP 降到 的小扩域上的离散对数问题(亚指数级计算复杂度算法);
f)Anomalous 方法:对 Anomalous 曲线( 的曲线)的有效攻击方法(多项式级计算复杂度算法);
g)GHS-方法:利用 Weil 下降技术求解扩张次数为合数的二元扩域上椭圆曲线离散对数问题,将 ECDLP 转化为超椭圆曲线离散对数问题,而求解高亏格的超椭圆曲线离散对数存在亚指数级计算复杂度算法;
h)DGS-点分解方法:对低次扩域上的椭圆曲线离散对数利用的指标计算方法,在某些特殊情况下,其求解复杂度低于平方根时间复杂度。
从上述对椭圆曲线离散对数问题解法的描述与分析可知:对于一般曲线的离散对数问题,目前的求解方法都为指数级计算复杂度,未发现亚指数级计算复杂度的一般攻击方法;而对于某些特殊曲线的离散对数问题,存在多项式级或者亚指数级计算复杂度算法。
B.4 点的压缩
B.4.1 概述
对于椭圆曲线 上的任意非无穷远点 ,该点能由坐标 及由 和 导出的一个特定比特简洁地表示,称为点的压缩表示。
B.4.2 上椭圆曲线点的压缩与解压缩方法
设 是定义在 上椭圆曲线 上的一个点, 为 的最右边的一个比特,则点 可由 和比特 表示。
由 和 恢复 的方法如下:
a)在 上计算域元素 ;
b)计算 在 上的平方根 (参见 D.1.4),若输出是“不存在平方根”,则报错;
c)若 的最右边比特等于 ,则置 ;否则置 。
B.4.3 ( 为奇素数,)上椭圆曲线点的压缩与解压缩方法
设 是定义在 上椭圆曲线 上的一个点,则 可表示为 , 为 的最右边的一个比特,则点 可由 和比特 表示。
由 和 恢复 的方法如下:
a)在 上计算域元素 ;
b)计算 在 上的平方根 (参见 D.1.4),若输出是“不存在平方根”,则报错。
若 的表示 中 的最右边比特等于 ,则置 ;否则置 ,其中 ,。
附录 C(资料性附录)椭圆曲线上双线性对的计算
C.1 概述
设有限域 上椭圆曲线为 ,若 , 是素数且 , 为余因子,则使 的最小正整数 称为椭圆曲线相对于 的嵌入次数。若 是 的 阶子群,则 的嵌入次数也是 。
设 是有限域 的代数闭包, 表示 中所有 阶点的集合。
C.2 Miller 算法
设 上椭圆曲线 的方程为 ,定义过 上点 和 的直线为 ,若过 两点的直线方程为 ,则令函数 ,其中 。当 时, 定义为过点 的切线;若 和 中有一个点为无穷远点 , 就是过另一个点且垂直于 轴的直线。一般用 作为 的简写。
记 ,,,,,则有以下性质:
a);
b),;
c),,;
d),。
Miller 算法是计算双线性对的有效算法。
输入:曲线 , 上两点 和 ,整数 。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,令 ,。
d)输出 。
一般,称 为 Miller 函数。
C.3 Weil 对的计算
设 是 上的椭圆曲线, 是与 互素的正整数,设 是 次单位根集合, 是相对于 的嵌入次数,即 ,则 。
令 ,,,则 Weil 对是从 到 的双线性映射,记为 。
设 ,,若 或 ,则 ;如果 且 ,随机选取非无穷远点 ,,使得 和 均不等于 或 ,则 Weil 对为:
、、、、、、 和 均可用 Miller 算法计算。在计算过程中,若出现分母为 0 的情况,则更换点 或 重新计算。
C.4 Tate 对的计算
设 是 上的椭圆曲线, 是与 互素的正整数, 是相对于 的嵌入次数。设 是 上的 阶点,由 生成的循环群记为 。 为 中每一个元素的 次幂构成的集合, 是 的子群, 关于 的商群记为 。
令 ,,,则 Tate 对是从 到 的双线性映射,记为 。
设 ,,若 或 ,则 ;若 且 ,随机选择非无穷远点 ,使得 、、,则 Tate 对为:
和 可通过 Miller 算法计算。在计算过程中,若出现分母为 0 的情况,则更换点 重新计算。
在实际应用中,一般使用约化 Tate 对:
约化 Tate 对比一般 Tate 对的计算量减少了一半。若相对于 的嵌入次数 是偶数时,约化 Tate 对的计算方法可以进一步优化。算法 1 描述的是一般约化 Tate 对的计算方法,算法 2、3、4 均指 的情况。
算法 1
输入:与 互素的整数 ,,。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,则计算 ,。
d)计算 。
e)输出 。
算法 2
输入:与 互素的整数 ,,。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,则计算 ,。
d)计算 。
e)计算 。
f)输出 。
算法 3
如果将 ()看成 的二次扩域,则 上元素可表示成 的形式,其中 ,则 的共轭 ,此时算法 1 中的求逆运算可用共轭代替。
输入:与 互素的整数 ,,。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,令 ,。
d)计算 。
e)计算 。
f)输出 。
算法 4
当 为大于 3 的素数时,点 , 是 的扭曲线,此时算法可进一步优化。
输入:,,整数 。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,则计算 ,。
d)计算 。
e)计算 。
f)输出 。
C.5 Ate 对的计算
C.5.1 概述
设 为 Frobenius 自同态,即 ; 为映射:; 为单位映射; 的对偶为 ,满足 ; 表示映射的核;设椭圆曲线 的 Frobenius 迹为 ,令 。
下面给出不同结构下的 Ate 对的计算方法。
C.5.2 定义在 上 Ate 对的计算
设 ,,,。定义 上 Ate 对:
下面给出 上 Ate 对的计算方法:
输入:,,,,整数 。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,计算 ,。
d)计算 。
e)输出 。
C.5.3 定义在 上 Ate 对的计算
对于超奇异椭圆曲线来说,以上 Ate 对的定义与技术可以直接应用;而对于常曲线来说,需要把 转换到扭曲线上才可以定义 Ate 对。
超奇异椭圆曲线上 Ate 对:
设 为定义在 上的超奇异椭圆曲线,,,,,。定义 上的 Ate 对:
下面给出 上 Ate 对的计算方法:
输入:,,,,整数 。
输出:。
a)设 的二进制表示是 ,其最高位 为 1。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,计算 ,。
d)计算 。
e)输出 。
常曲线上的 Ate 对:
对于常曲线来说,存在一个整数 ,使得 成为 上的自同构,这样可以用扭曲线理论在 和 之间建立起联系,其中 , 为迹。
设 是定义在 上的椭圆曲线, 为 的 次扭曲线。 为嵌入次数,,, 是 次本原单位根,当 时, 的取值有三种情况:
a),,,,,;
b),,,,,;
c),,,,,。
设 ,。定义 上 Ate 对:
下面给出具体算法描述:
输入:,,,,整数 。
输出:。
a)计算 。
b)设 的二进制表示是 ,其最高位 为 1。
c)置 ,。
d)对 从 降至 0,执行:
1)计算 ,;
2)若 ,计算 ,。
e)计算 。
f)输出 。
如果定义在 上的 Ate 对所基于的椭圆曲线是超奇异的,则容易看出它比 Tate 对有更高的效率。但对于常曲线来说,只有当 时它的运算效率才会比 Tate 对高,所以只有在 值较小时才推荐使用 Ate 对。
C.6 R-ate 对的计算
C.6.1 R-ate 对的定义
R-ate 对中的“R”可视为两个对的比值,也可以看成是 Tate 对的某固定幂次。
令 ,。Miller 函数 有如下性质:
定义 R-ate 对为:
如果 和 是非退化对的 Miller 函数,则 也是非退化对。
令 ,使得:
令 ,。
为了非退化, 不能整除 ,有:
易见 。
一般来说,不是任意整数对 都能给出非退化对, 有四种选择:
a);
b);
c);
d)。
其中 ,,。
情形 1:,由于 ,即 ,因此 ,又:
因为 ,所以 。更进一步,,因此:
情形 2:,即 ,则:
由于 ,因此:
情形 3:,即 ,有:
同样,因为 ,因此:
情形 4:,即 ,因此:
同样,由 得:
情形 1 的 R-ate 对也称 Ate 对。情形 2、情形 3、情形 4 的对计算需要两个长度为 和 的 Miller 循环。情形 2 和情形 4 只能改变一个参数 来获得有效对,情形 3 可以改变两个参数。因此,一般都选择情形 3 的 R-ate 对,这时 。
为了降低 Miller 循环次数,可以尝试不同的 和 ,使整数 和 足够小,从而使 Miller 循环次数减至 。
C.6.2 BN 曲线上 R-ate 对的计算
Barreto 和 Naehrig 提出了一种构造素域 上适合对的常曲线的方法,通过此方法构造的曲线称为 BN 曲线。BN 曲线方程为 ,其中 。嵌入次数 ,曲线阶 也是素数。
基域特征 ,曲线阶 ,Frobenius 映射的迹 可通过参数 来确定:
其中 是任意使得 和 均为素数的整数,为了达到一定的安全级别, 应足够大,至少达到 63 比特。
BN 曲线存在定义在 上的 6 次扭曲线 ,其中 ,并且在 上既不是二次元也不是三次元,选择 使得 , 中点可用扭曲线 上的点来表示。。因此对的计算限制在 上点 和 上点 。
为 Frobenius 自同态,,。
,。
R-ate 对的计算:
输入:,,。
输出:。
a)设 ,。
b)置 ,。
c)对 从 降至 0,执行:
1)计算 ,;
2)若 ,计算 ,。
d)计算 ,。
e)计算 ,。
f)计算 ,。
g)计算 。
h)输出 。
关于 Weil 对、Tate 对、Ate 对、R-ate 对的更多计算方法参见参考文献[18]、[21]、[32]、[37]、[45]、[47]、[50]、[56]、[57]和[58]。
C.7 适合对的椭圆曲线
对于超奇异曲线,双线性对的构造相对容易,但对于随机生成的曲线,构造可计算的双线性对比较困难,因此采用常曲线时,需要构造适合对的曲线。
假设 是定义在 上的椭圆曲线,如果以下三个条件成立,则称 是适合对的曲线:
a) 有一个不小于 的素因子 ;
b) 相对于 的嵌入次数小于 ;
c) 的最大素因子的规模与 相当。
构造适合对的椭圆曲线的步骤如下:
步骤 1:选定 ,计算整数 、、,使得存在一条椭圆曲线 ,其迹为 ,具有一个素数阶 的子群且嵌入次数为 ;
步骤 2:利用复乘方法在 上计算该曲线的方程参数。
构造适合对的椭圆曲线的方法参见参考文献[16]、[20]、[21]、[22]、[24]、[30]、[31]、[33]、[34]、[48]、[51]、[52]、[57]和[64]。
附录 D(资料性附录)数论算法
D.1 有限域中的运算
D.1.1 有限域中的指数运算
设 是正整数, 是域 上的元素,指数运算是计算 的运算过程。通过以下的二进制方法可以有效地执行指数运算。
输入:正整数 ,域 ,域元素 。
输出:。
a)置 ,若 ,则输出 1。
b)设 的二进制表示是 ,其最高位 为 1。
c)置 。
d)对 从 降至 0 执行:
1)置 ;
2)若 ,则置 。
e)输出 。
其他加速算法参见参考文献[25]和[44]。
D.1.2 有限域中的逆运算
设 是域 上的非零元素,则逆元素 是使得 成立的域元素 。由于 ,因此求逆可通过指数运算实现。若 是素数, 是满足 的整数,则 是整数 ,,且 。
输入:域 , 中的非零元素 。
输出:逆元素 。
a)计算 (参见 D.1.1);
b)输出 。
更为有效的方法是扩展的欧几里德(Euclid)算法,参见参考文献[44]。
D.1.3 Lucas 序列的生成
令 和 是非零整数, 和 的 Lucas 序列 、 的定义如下:
上述递归式适于计算 值较小的 和 。对大整数 ,下面的算法可有效地计算 和 。
输入:奇素数 ,整数 和 ,正整数 。
输出: 和 。
a)置 。
b)设 的二进制表示是 ,其中最高位 为 1。
c)置 ,。
d)对 从 降至 0 执行:
1)置 ;
2)若 ,则置 。
e)输出 和 。
D.1.4 平方根的求解
D.1.4.1 上平方根的求解
设 是奇素数, 是满足 的整数, 的平方根()是整数 ,即 ,。
若 ,则只有一个平方根,即 ;若 ,则 有零个或两个平方根,若 是其中一个平方根,则另一个平方根就是 。
下面的算法可以确定 是否有平方根,若有,就计算其中一个根。
输入:奇素数 ,整数 ,。
输出:若存在 的平方根,则输出一个平方根,否则输出“不存在平方根”。
**算法 1:**对 ,即存在正整数 ,使得 。
a)计算 (参见 D.1.1);
b)计算 ;
c)若 ,则输出 ;否则输出“不存在平方根”。
**算法 2:**对 ,即存在正整数 ,使得 。
a)计算 (参见 D.1.1);
b)若 ,计算 ,输出 ,终止算法;
c)若 ,计算 ,输出 ,终止算法;
d)输出“不存在平方根”。
**算法 3:**对 ,即存在正整数 ,使得 。
a)置 ;
b)生成随机数 ,;
c)计算 Lucas 序列元素(参见 D.1.3):,;
d)若 ,则输出 ,并终止;
e)若 且 ,则输出“不存在平方根”,并终止;
f)返回步骤 b)。
D.1.4.2 上平方根的求解
设 是奇素数,对于二次扩域 ,假设约化多项式为 ,,则 中元素 可表示成 的形式,,则 的平方根为:
或
下面的算法可以确定 是否有平方根,若有,就计算其中一个根。
输入: 中元素 且 , 为奇素数。
输出:若存在 的平方根,则输出一个平方根 ,否则输出“不存在平方根”。
a)计算 。
b)利用 D.1.4.1 的方法求 的平方根,若 的平方根存在,记作 ,即 ,,转步骤 c);否则输出“不存在平方根”,并终止。
c)对 从 1 至 2 执行:
1)计算 ;
2)利用 D.1.4.1 的方法求 的平方根,若 的平方根存在,任取一个根 ,即 ,转步骤 d);若 的平方根不存在且 ,输出“不存在平方根”,并终止算法。
d)计算 ,令 。
e)输出 。
D.1.4.3 上平方根的求解
D.1.4.3.1 上平方元检测
设 是奇素数,且 , 是域 中非零元素,下面算法给出 是否为一个平方元的检测。
输入:域元素 。
输出:若 是平方元则输出“是平方元”,否则输出“不是平方元”。
a)计算 (参见 D.1.1);
b)若 ,则输出“是平方元”;
c)若 ,则输出“不是平方元”。
D.1.4.3.2 上平方根的求解
设 是奇素数,且 。
输入:域元素 。
输出:若 是平方元则输出平方根 ,否则输出“没有平方根”。
a)随机选取非平方元 。
b)计算 (其中 为奇数)。
c)计算 。
d)计算 。
e)计算 。
f)若 ,则输出“没有平方根”,终止算法。
g)当 执行:
1)设 是使 成立的最小正整数;
2)计算 ;
3)计算 。
h)输出 。
D.1.5 概率素性检测
设 是一个大的正整数,下面的概率算法(Miller-Rabin 检测)将确定 是素数还是合数。
输入:一个大的奇数 和一个大的正整数 。
输出:“概率素数”或“合数”。
a)计算 和奇数 ,使得 。
b)对 从 1 至 执行:
1)在区间 中选取随机数 。
2)置 。
3)若 或 ,转到步骤 6)。
4)对 从 1 至 执行:
- 置 ;
- 若 ,转到步骤 6);
- 若 ,输出“合数”并终止;
- 下一个 。
5)输出“合数”,并终止。
6)下一个 。
c)输出“概率素数”。
若算法输出“合数”,则 是一个合数。若算法输出“概率素数”,则 是合数的概率小于 。这样,通过选取足够大的 ,误差可以忽略。
D.2 有限域上的多项式
D.2.1 最大公因式
若 和 是系数在域 中的两个多项式,则唯一地存在次数最高的首一多项式 ,其系数在域 中且同时整除 和 。多项式 称为 和 的最大公因子,记为 。利用下面的算法(欧几里德算法)可计算出两个多项式的最大公因子。
输入:有限域 , 上的两个非零多项式 ,。
输出:。
a)置 ,。
b)当 时,循环执行:
1)置 ;
2)置 ;
3)置 。
设 是 的首项系数并输出 。
D.2.2 上多项式不可约性的检测
设 是 上的多项式,利用下面的算法可以有效地检测 的不可约性。
输入: 上的首一多项式 ,素数 。
输出:若 在 上不可约,则输出“正确”;否则,输出“错误”。
a)置 ,。
b)对 从 1 至 执行:
1)计算 ;
2)计算 ;
3)若 ,则输出“错误”,并终止算法。
c)输出“正确”。
D.3 椭圆曲线算法
D.3.1 椭圆曲线点的寻找
给定有限域上的椭圆曲线,利用下面的算法可有效地找出曲线上任意一个非无穷远点。
a) 上点的寻找
输入:素数 , 上一条椭圆曲线 的参数 。
输出: 上一个非无穷远点。
1)选取随机整数 ,;
2)置 ;
3)若 ,则输出 并终止算法;
4)求 的平方根 (参见 D.1.4.1);
5)若步骤 4)的输出是“不存在平方根”,则返回步骤 1);
6)输出 。
b)()上点的寻找
输入:有限域 ( 为奇素数), 上的椭圆曲线 的参数 。
输出: 上一个非无穷远点。
1)随机选取 上元素 ;
2)在 上计算 ;
3)若 ,则输出 并终止算法;
4)在 上求 的平方根 (参见 D.1.4.3);
5)若步骤 4)的输出是“不存在平方根”,则返回步骤 1);
6)输出 。
D.3.2 椭圆曲线上 阶点的寻找
本算法可用于椭圆曲线 阶子群生成元的求取。
输入:椭圆曲线 的参数 ,曲线阶 ,其中 为素数。
输出: 上一个 阶点。
a)用 D.3.1 的方法随机选取曲线上点 ;
b)计算 ;
c)若 ,返回步骤 a);
d)输出 。
D.3.3 扭曲线上 阶点的寻找
设 上椭圆曲线 的方程:,其阶 ;设其扭曲线 的方程:, 为 上非平方元, 的阶 。
输入:椭圆曲线 的扭曲线 的参数 和 ,扭曲线阶 ,其中 为素数。
输出: 上一个 阶点。
a)用 D.3.1 的方法随机选取 上点 。
b)计算 。
c)若 ,返回步骤 a)。否则, 是 阶点。
d)输出 。
参考文献
- [1] ISO/IEC 14888-3:2004 Information technology—Security techniques—Digital signatures with appendix—Part 3: Discrete logarithm based mechanisms
- [2] ISO/IEC 15946-1:2002 Information technology—Security techniques—Cryptographic techniques based on elliptic curves—Part 1: General
- [3] ISO/IEC 15946-2:2002 Information technology—Security techniques—Cryptographic techniques based on elliptic curves—Part 2: Digital signatures
- [4] ISO/IEC 15946-3:2002 Information technology—Security techniques—Cryptographic techniques based on elliptic curves—Part 3: Key establishment
- [5] ISO/IEC 15946-4:2003 Information technology—Security techniques—Cryptographic techniques based on elliptic curves—Part 4: Digital signatures giving message recovery
- [6] ITU-T Recommendation X.680 Information technology—Abstract Syntax Notation One (ASN.1): Specification of basic notation
- [7] ITU-T Recommendation X.681 Information technology—Abstract Syntax Notation One (ASN.1): Information object specification
- [8] ITU-T Recommendation X.682 Information technology—Abstract Syntax Notation One (ASN.1): Constraint specification
- [9] ITU-T Recommendation X.683 Information technology—Abstract Syntax Notation One (ASN.1): Parametrization of ASN.1 specifications
- [10] ITU-T Recommendation X.690 Information technology—ASN.1 encoding rules: Specification of Basic Encoding Rules (BER), Canonical Encoding Rules (CER) and Distinguished Encoding Rules (DER)
- [11] ITU-T Recommendation X.691 Information technology—ASN.1 encoding rules: Specification of Packed Encoding Rules (PER)
- [12] IEEE P1363:2000 Standard for Public Key Cryptography
- [13] ANSI X9.62-1999 Public Key Cryptography for the Financial Services Industry: The Elliptic Curve Digital Signature Algorithm (ECDSA)
- [14] ANSI X9.63-2001 Public Key Cryptography for the Financial Services Industry: Key Agreement and Key Transport Using Elliptic Curve Cryptography
- [15] Abdalla M, Lange T, Eds. 2012. Pairing-Based Cryptography-Pairing 2012. Proceedings (2012), vol. 7708 of Lecture Notes in Computer Science, Springer-Verlag.
- [16] Atkin A, Morain F. 1993. Elliptic Curves and Primality Proving, Mathematics of Computation 61(203): 29-68.
- [17] Barbulescu R, Gaudry P, Joux A, Thome E. 2014. A Heuristic Quasi-polynomial Algorithm for Discrete Logarithm in Finite Fields of Small Characteristic. In P. Q. Nguyen and E. Oswald, editors, Advances in Cryptology: Proceedings of EUROCRYPT'14, volume 8441 of LNCS, Springer-Verlag, 1-16.
- [18] Barreto P, Galbraith S, et al. 2004. Efficient Pairing Computation on Supersingular Abelian Varieties. Cryptology ePrint Archive, Report 2004/375.
- [19] Barreto P, Kim H, Lynn B, et al. 2002. Efficient Algorithms for Pairing-based Cryptosystems, Proceedings of CRYPTO 2002, LNCS 2442. Springer-Verlag, 354-369.
- [20] Barreto P, Lynn B, Scott M. 2002. Constructing Elliptic Curves with Prescribed Embedding Degrees. In: Security in Communication Networks-SCN' 2002, LNCS 2576. Springer-Verlag, 263-273.
- [21] Barreto P, Lynn B, Scott M. 2003. On the Selection of Pairing-friendly Groups. In: Selected Areas in Cryptography-SAC'2003, LNCS 3006. Ottawa, Canada: Springer-Verlag, 17-25.
- [22] Barreto P, Naehrig M. 2005. Pairing-friendly Elliptic Curves of Prime Order. Cryptology ePrint Archive, Report 2005/133.
- [23] Boneh D, Franklin M. 2001. Identity Based Encryption from the Weil-pairing, Proceedings of CRYPTO 2001, LNCS 2139. Springer-Verlag, 213-229.
- [24] Brezing F, Weng A. 2005. Elliptic Curves Sutable for Pairing Based Cryptography, Designs, Codes and Cryptography, 37: 133-141.
- [25] Brickell E, Gordon D, Mccurley K, et al. 1993. Fast Exponentiation with Precomputation. In: Advances in Cryptology-EUROCRYPT'92, LNCS 658. Berlin: Springer-Verlag, 200-207.
- [26] Cao Zhenfu, Zhang Fanggou, Eds. 2013. Pairing-Based Cryptography-Pairing 2013. Proceedings (2013), vol. 8365 of Lecture Notes in Computer Science, Springer-Verlag.
- [27] Cha J C, Cheon J H. 2002. An Identity-based Signature from Gap Diffie-Hellman Groups, Proceedings of PKC 2002, LNCS 2567. Springer-Verlag, 18-30.
- [28] Cheng Qi, Wan Daqing and Zhuang Jincheng. 2014. Traps to the BGJT-Algorithm for Discrete Logarithms. ePrint 2014.
- [29] Cheon, J. H. 2006. Security Analysis of the Strong Diffie-hellman Problem. In EUROCRYPT (2006), S. Vaudenay, Ed., vol. 4004 of Lecture Notes in Computer Science, Springer-Verlag, 1-11.
- [30] Duan P, Cui S, Wah Chan C. 2005. Special Polynomial Families for Generating More Suitable Elliptic Curves for Pairing-based Cryptosystems. Cryptology ePrint Archive, Report 2005/342.
- [31] Dupont R, Enge A, Morain F. 2005. Building Curves with Arbitrary Small MOV Degree over Finite Prime Fields, Journal of Cryptology, 18(2): 79-89.
- [32] Eisentrager K, Lauter K, Montgomery P. 2003. Fast Elliptic Curve Arithmetic and Improved Weil-pairing Evaluation. In: Topics in Cryptology, CT-RSA03, LNCS 2612. Springer-Verlag, 343-354.
- [33] Freeman D. 2006. Constructing Pairing-friendly Elliptic Curves with Embedding Degree 10. In: Algorithmic Number Theory Symposium-ANTS-VII, LNCS 4076. Springer-Verlag, 452-465.
- [34] Freeman D, Scott M, Teske E. 2006. A Taxonomy of Pairing-friendly Elliptic Curves, Cryptology ePrint Archive Report 2006/372.
- [35] Frey G, Müller M, Rück H. 1999. The Tate-pairing and the Discrete Logarithm Applied to Elliptic Curve Cryptosystems, IEEE Transactions on Information Theory, 45(5): 1717-1719.
- [36] Galbraith S. 2001. Supersingular Curves in Cryptography, Proceedings of Asiacrypt 2001, LNCS 2248. Springer-Verlag, 495-513.
- [37] Galbraith S, Harrison K, Soldera D. 2002. Implementing the Tate-pairing, Proceedings of ANTSV, LNCS 2369. Springer-Verlag, 324-337.
- [38] Galbraith S, Paterson K, Eds. 2008. Pairing-Based Cryptography-Pairing 2008. Proceedings (2008), vol. 5209 of Lecture Notes in Computer Science, Springer-Verlag.
- [39] Googlu F, Granger R, McGuire G, and Zumbrael J. 2013. On the Function Field Sieve and the Impact of Higher Splitting Probabilities: Application to discrete logarithms in . Cryptology ePrint Archive, Report 2013/074.
- [40] Hess F, Smart N, Vercauteren F. 2006. The Eta-pairing Revisited. Cryptology ePrint Archive, Report 2006/110.
- [41] Joux A. 2013. Faster Index Calculus for the Medium Prime Case Application to 1175-bit and 1425-bit Finite Fields. In Advances in Cryptology EUROCRYPT 2013. Springer-Verlag, 177-193.
- [42] Joux A. 2013. A New Index Calculus Algorithm with Complexity L(1/4 + o(1)) in Very Small characteristic. In Selected Areas in Cryptography-SAC 2013, volume 8282 of Lecture Notes in Computer Science, Springer-Verlag, 355-382.
- [43] Joye M, Miyaji A, Otsuka A, Eds. 2010. Pairing-Based Cryptography-Pairing 2010. Proceedings (2010), vol. 6487 of Lecture Notes in Computer Science, Springer-Verlag.
- [44] Knuth D. 1981. The Art of Computer Programming (Vol 2). 2nd ed. Reading (MA): Addison-Wesley.
- [45] Kobayashi T, Aoki K, Imai H. 2006. Efficient Algorithms for Tate-pairing. IEICE Trans. Fundamentals, E89-A.
- [46] Koblitz N. 1987. Elliptic Curve Cryptosystems. Mathematics of Computation, 48: 203-209.
- [47] Lauter K, Montgomery P, Naehrig M. 2010. An Analysis of Affine Coordinates for Pairing Computation. Pairing-Based Cryptography-Pairing 2010. Proceedings (2010), vol. 6487 of Lecture Notes in Computer Science, Springer-Verlag.
- [48] Lay G, Zimmer H. 1994. Constructing Elliptic Curves with Given Group Order over Large Finite Fields, In: Algorithmic Number Theory Symposium-ANTS-1, LNCS 877. Springer-Verlag, 250-263. Menezes A. 1993. Elliptic Curve Public Key Cryptosystems. Boston: Kluwer Academic Publishers.
- [49] Lidl R, Niederreiter H. 1983. Finite Fields. Reading (MA): Addison-Wesley. Menezes A, Okamoto T, Vanstone S. 1993. Reducing Elliptic Curve Logarithms to Logarithms in a Finite Field. IEEE Transactions on Information Theory, 39: 1639-1646.
- [50] Miller V. 2004. The Weil-pairing and its Efficient Calculation, Journal of Cryptology, 17: 235-261.
- [51] Milne J. 2006. Complex Multiplication, http://www.jmilne.org/math.
- [52] Miyaji A, Nakabayashi M, Takano S. 2001. New Explicit Conditions of Elliptic Curve Traces for FR-reduction, IEICE Transactions on Fundamentals, E84-A(5): 1234-1243.
- [53] Müller V. 1995. Counting the Number of Points on Elliptic Curves over Finite Fields of Characteristic Greater than Three: [Doctorate Dissertation]. Saarlandes: University of Saarlandes.
- [54] Pollard J. 1978. Monte Carlo Methods for Index Computation mod p. Mathematics of Computation, 32: 918-924.
- [55] Schoof R. 1985. Elliptic Curves over Finite Fields and the Computation of Square Roots mod p. Mathematics of Computation, 44(170): 483-494.
- [56] Scott M. 2005. Computing the Tate-pairing. In: CT-RSA, LNCS 3376. Springer-Verlag, 293-304.
- [57] Scott M. 2006, Implementing Cryptographic Pairings, ECC 2006.
- [58] Scott M, Barreto P. 2004. Compressed Pairings. In: Advances in Cryptology Crypto' 2004, LNCS 3152. Springer-Verlag, 140-156.
- [59] Scott M, Barreto P. 2006. Generating More MNT Elliptic Curves, Designs, Codes and Cryptography, 38: 209-217.
- [60] Shacham H, Waters B, Eds. 2009. Pairing-Based Cryptography-Pairing 2009. Proceedings (2009), vol. 5671 of Lecture Notes in Computer Science, Springer-Verlag.
- [61] Silverman J. 1986. The Arithmetic of Elliptic Curves. Berlin: springer-Verlag, GTM 106.
- [62] Smart N. 1999. The Discrete Logarithm Problem on Elliptic Curves of Trace One. Journal of Cryptology, 12(3): 193-196.
- [63] Takagi T, Okamoto T, Okamoto E, and Okamoto T, Eds. 2007. Pairing-Based Cryptography-Pairing 2007. Proceedings (2007), vol. 4575 of Lecture Notes in Computer Science, Springer-Verlag.
- [64] Thuen Ø. 2006. Constructing Elliptic Curves over Finite Fields Using Complex Multiplication, Master of Science in Physics and Mathematics.