3 基于群的密码学基础
3.1 有限域 Finite Field
3.1.1 有限域的定义
def 有限域(伽罗瓦域)用 (F,+,∗) 表示,是一个包含有限数量元素的集合,其两个二进制运算加法 + 和乘法 ∗ 定义如下:
-
① 封闭性:对∀u,v∈F,有 u+v∈F 且 u∗v∈F
-
② (加法)结合律:对 ∀u1,u2,u3∈F,有(u1+u2)+u3=u1+(u2+u3) 且 (u1∗u2)∗u3=u1∗(u2∗u3)
-
③ 交换律:对 ∀u,v∈F,有 u+v=v+u 且 u∗v=v∗u
-
④ 单位元:对 ∃0F,1F∈F 和 ∀u∈F,有 u+0F=u 且 u∗1F=u
-
⑤ 负元:对 ∀u∈F,∃–u∈F 使得 u+(–u)=0F
-
⑥ 去零元:对 ∀u∈F∗, ∃u−1∈F∗ 使得 u∗u−1=1F,其中 F∗=F/0F
-
⑦ 分配律:对 ∀u1,u2,v∈F,有 (u1+u2)∗v=u1∗v+u2∗v
3.1.2 域运算
可扩展至减法和除法:
3.1.3 域的选取
一般选取一组大素数以防止爆破攻击,因此 p(x)=p0+p1x+p2x2+⋯+pn−1xn−1∈Fp(x) 是不可约(irreducible)的,其系数仍在 Fp 级别。可约的情况譬如:x2−2
-
基础域:用 (Fp,+,∗) 表示
-
扩域(extended field):用 (Fpn,+,∗) 表示
3.2 循环群 Cyclic Groups
3.2.1 群的定义
-
阿贝尔群:用 (H,⋅) 表示,是一组具有二元运算 ⋅ 的元素,满足①~⑤
-
循环的阿贝尔群:在满足①~⑤的前提下,群内任意元素均可由生成元 h (群的方幂)生成,即:H=h0,h1,h2,⋯,h∣H∣−1,其中群 H 的阶 ∣H∣ 满足 h∣H∣=h0=1H
-
素数阶的循环阿贝尔群:如果群 G 是循环群 H 的子群且 ∣G∣ 为素数,则G 是素数阶的循环子群,其中是 ∣G∣ 是 ∣H∣ 的除数,存在生成元 g∈H 生成群 G
3.2.2 素数阶的循环群
1. 使用循环群和素数阶的原因?
-
G 是没有禁闭攻击(confinement attack)的最小子群。禁闭攻击是指攻击者试图将计算限制在一个特定的子群中,从而破坏整个方案的安全性;同时,若 G 包含了不必要元素,可能带来不必要的复杂性和开销
- 目前,p=2160 的 160bit 长度以上比较安全,因破解离散对数问题需要 O(p1/2),达 80bit 安全
-
除 g0 之外的任何元素都是 G 的生成元
-
{1,2,⋅⋅⋅,p−1} 中的任意整数都具有模乘逆元
-
对任意 x∈Zp∗={1,2,⋯,p−1},均能计算 g1/x=gx−1
2. 若要为密码学方案构造一个群,需要指定哪些参数?
(G,g,p):
3. 每个组元素的表示大小是多少?
对素数 p,有 G={g0,g1,⋅⋅⋅,gp−1}
-
群中有 p 个元素,每个元素具有相同的大小
-
群中的每个元素都可以编码为二进制字符串
-
群中的每个元素必须用不同的二进制字符串表示
3.2.3 群幂 Group Exponentiations
设 (G,g,p) 为循环群,x∈Zp,用 gx 表示群幂:
![]()
-
群幂由上述定义中的群运算的 x−1 个副本(copies)组成
-
当 x 大于 2160 时,执行 x−1 个副本的计算是不切实际的
-
存在快速计算群幂的算法:平方乘法(square-and-multiply)算法
3.2.4 离散对数问题 Discrete Logarithms Problem
群中最基本的难题是离散对数问题,给定 g,h∈G/1G,有:
1. 群使用素数阶的另一原因?
如果 G 是素数阶的群,则对于任意两个群元素 g,h∈G/1G,离散对数 x 必须存在
2. 破解离散对数问题的时间复杂度?
设 (G,g,p) 为任意群,求解 DLP 的最有效算法需要 O(p1/2)
3. 若要为密码学方案构造一个群,需要考虑哪些攻击?
3.2.5 来自有限域的循环群
有限域 (Fpn,+,∗) 已包含的两类群:(Fpn,+) 和 (Fpn∗,∗);此外引入椭圆曲线 ECC 上的群
1. 为什么要使用椭圆曲线上的群?
3.2.6 群的选取
-
乘法群 (G,g,p,q)
- 群的元素:从 Zp∗={1,2,⋯,p−1},∣g∣=log2p 中选取的整数
- 群的生成元:g 从 Zp∗ 中选取,注意不是 Zp∗ 中所有的整数都是生成元
- 群的阶:q∣(p−1),q 和 p−1 同余
- 群的运算:u⋅v=u×vmodp
- 安全性:为达到 80bit 安全,q 应至少为 1024 bits
![]()
-
椭圆曲线上的群 (G,g,p):椭圆曲线是一条定义在 Fpn 上的光滑曲线,所有的点都在 y2=x3+ax+b 上,其中 a,b∈Fpn
- 群的元素:椭圆曲线上的点集,每个点用 x 坐标和 y 坐标表示
- 群的生成元:g 亦为一个点
- 群的阶: p 是素数阶
- 群的运算:对 u,v∈G 和 x∈Fp,计算 u+v 或 x⋅u
- 安全性:群元素大小可以与群的阶一样短,为达到 80bit 安全,∣g∣=∣p∣=160,q 应至少为 160 bits
3.2.7 群上的计算
-
群的运算:给定 g,h∈G,计算 g⋅h
-
群上求逆元:给定 g∈G,计算 1/g=g−1
- 由 gp=g⋅gp−1=1G, 有 g−1=gp−1
-
群上的除法:给定 g,h∈G,计算 h/g=h⋅g−1
-
群上的幂运算:给定 g∈G 和 x∈Zp,计算 gx
3.3 双线性配对 Bilinear Pairings
定义
设 G1,G2 和 GT 为素数阶为 p 的三个循环群,则满足下述条件 e:G1×G2→GT 的映射为一个双线性配对:
-
(双线性) ∀x,y∈Zp,g∈G1,h∈G2,e(gx,hy)=e(gy,hx)=e(g,h)xy
-
(非退化性) ∀g∈G1,h∈G2,e(g,h)=1T
-
(可计算性) ∀g∈G1,h∈G2, 存在一种能计算出映射 e(g,h) 的高效算法
双线性配对的三种类型:
-
I 型:G1=G2(对称)
-
II 型:G1=G2,且能找到同态 ψ:G2→G1
-
III 型:G1=G2,但没有有效的同态
3.3.1 对称配对 e:G×G→GT
两类 DLP:
-
从 g 和 gx 计算 x
-
从 e(g,g) 和 e(g,g)x 计算 x
为保证 80bit 安全,需要 ∣g∣≥512,∣e(g,g)∣≥1024
3.3.2 非对称配对 e:G1×G2→GT
三类 DLP:
-
从 g1 和 g1x 计算 x
-
从 g2 和 g2x 计算 x
-
从 e(g1,g2) 和 e(g1,g2)x 计算 x
为保证 80bit 安全,需要 ∣g1∣≥160,∣g2∣≥1024,∣e(g1,g2)∣≥1024
构造非对称配对时,还需注意以下问题:
-
由于非对称结构,需设置 ∣g2∣=∣e(g1,g2))∣
-
椭圆曲线由基于配对的密码学 (PBC) 库中的 Curve-F 专门定义,其中 y2=x3+b 和 k=12
3.3.3 双线性配对群上的计算
双线性配对群由素数阶 p 的群 (G,GT) 或 (G1,G2,GT) 和双线性映射 e 组成,其计算包括:
-
所有在域 Zp 上的模(幂)运算
-
对群 (G,GT) 或 (G1,G2,GT) 上的所有运算
-
∀u,v∈G 的双线性配对 e(u,v)
3.4 哈希函数 Hash Functions
哈希函数将任意长度的字符串作为输入,并返回一个更短的字符串作为输出
3.4.1 哈希函数的分类
1. 根据安全定义分类
2. 根据输出空间分类
-
H:{0,1}∗→{0,1}n:输出空间是包含所有 n 位字符串的集合
- 主要用于从密钥空间 {0,1}n 生成一个对称密钥,用于混合加密
-
H:{0,1}∗→Zp:输出空间为 {0,1,2,⋅⋅⋅,p−1},其中 p 是群的阶
- 主要用于将哈希值嵌入到群的指数,譬如 gH(m)
-
H:{0,1}∗→G:输出空间是一个循环群,即将输入字符串哈希映射到一个群元素
- 仅适用于某些群,主要是对称双线性配对 G×G→GT 中的群 G 和非对称双线性配对 G1×G2→GT 中的群 G1
3.5 伪随机数生成器 (Pseudo) Random Number Generator
设 x 为随机变量,w1、w2 为空间中任意两个可能的随机数,进行随机选择操作,使得 Pr[x=w1]=Pr[x=w2]
1. 方案中的随机数和现实中的区别?
参考资料:
[1] 安全规约导论,郭富春