Tessaro, S., Zhu, C. EUROCRYPT 2023. Threshold and Multi-signature Schemes from Linear Hash Functions
https://link.springer.com/chapter/10.1007/978-3-031-30589-4_22
推广最有效的基于离散对数的方案MuSig2 (Nick, Ruffing, and Seurin, CRYPTO ’ 21)和FROST (Komlo and Goldberg, SAC ’ 20),以使用适当定义的线性哈希函数。
前置阅读:https://blog.csdn.net/jiongxv/article/details/131390649整理了本文所使用的代数基础和引用知识。
摘要
本文给出了两轮多重签名和阈值签名的新结构,其安全性仅依赖于(普通)离散对数问题的硬度或RSA的硬度,以及假设随机预测。它们的签名协议是部分非交互式的,也就是说,签名协议的第一轮独立于被签名的消息。
我们通过推广最有效的基于离散对数的方案MuSig2 和FROST来获得我们的结构,以使用适当定义的线性哈希函数。虽然原始方案依赖于更强且更有争议的多离散对数(OMDL)假设,但我们证明了哈希函数的适当实例可以使安全性基于普通离散对数假设或RSA。我们的方案产生的签名与冈本的识别方案(CRYPTO ’ 92)中获得的签名等效。
Introduction
动机:特定的实现约束使得基于离散对数或RSA问题变体的无配对方案在一些上下文中具有吸引力。
目的:在最弱的假设条件下建立最佳的无配对多重签名和阈值签名。
方案是应用于两种最有效的基于dl的方案FROST和MuSig2的相同范例的结果。
方法的主要组成是线性哈希函数。观察到FROST和MuSig2都可以通过用线性哈希函数
F
:
D
→
R
\rm{F}: \mathcal{D}\rightarrow \mathcal{R}
F:D→R替换幂映射
x
→
g
x
x\rightarrow g^x
x→gx来自然地推广,其中
D
,
R
\mathcal{D}, \mathcal{R}
D,R是field
S
\mathcal{S}
S的
S
\mathcal{S}
S模。通常将这些实例称为FROST-H和MuSig2-H。
特别要求: F F F是 S − m o d u l e s \mathcal{S}-modules S−modules的满同态,单不是单同态。
然后,定义了OMDL假设的自然模拟,我们将其称为Algebraic One-More Preimage Resistance(AOMPR)。
粗略地说,相应的安全博弈允许攻击者获得多个挑战
X
i
=
F
(
x
i
)
X_i=F(x_i)
Xi=F(xi)其中
x
i
←
D
x_i\leftarrow\mathcal{D}
xi←D随机,攻击者还可以访问一个反转神谕(inversion oracle):输入
X
∈
R
X\in\mathcal{R}
X∈R,返回
X
X
X在
F
F
F下的原像集合中的一个元素。(这使得假设是可证伪的,因为oracle可以有效地回答这样的反转查询。)为了赢得游戏,攻击者被要求在最多q次查询反转预言后反转q +1次挑战。
两个安全性结论:
DL-Based Instantiations
实例化LHF
为了获得基于离散对数(DL)问题的FROST-H和MuSig2-H的实例化,可使用Pedersen线性哈希函数
当
g
,
Z
g, Z
g,Z是大小为素数
p
p
p的群的生成元时,在DL的困难性下具有抗碰撞性。
实例化签名
-
签名私钥 x ∈ Z p x\in\mathbb{Z}_p x∈Zp公钥 p k = g x \rm{pk}=g^x pk=gx,签名形式(这是一种用Pedersen LHF代替离散对数映射的schnorr签名):
其中H是一个哈希函数,在我们的证明中被建模为随机的oracle。 -
验证签名 ( R , a ′ , b ′ ) (R,a',b') (R,a′,b′),查验 g a ′ Z b ′ = R ⋅ p k H ( p k , m , R ) g^{a'}Z^{b'}=R\cdot pk^{H(pk,m,R)} ga′Zb′=R⋅pkH(pk,m,R)
对比一下原始schnorr签名: ( R = g r , s = r + c ⋅ s k ) (R=g^r,s=r+c\cdot sk) (R=gr,s=r+c⋅sk),其中随机采样的 r r r对应于 F F F的输入 ( a , b ) (a,b) (a,b)。schnorr验证签名: g s = R ⋅ p k c g^s= R\cdot pk^c gs=R⋅pkc。
对比一下okamoto方案: https://link.springer.com/content/pdf/10.1007/3-540-48071-4.pdf#page=40
- s k = ( s k 1 , s k 2 ) , p k = ( p , q , g , Z , t , v ) sk=(sk_1,sk_2),pk=(p,q,g,Z,t,v) sk=(sk1,sk2),pk=(p,q,g,Z,t,v),其中 v = g 1 − s 1 g 2 − s 2 v=g_1^{-s_1}g_2^{-s_2} v=g1−s1g2−s2
- 签名方案:随机选取
(
a
,
b
)
,
R
=
g
a
Z
b
,
c
=
H
(
m
,
R
)
(a,b),R=g^aZ^b,c=H(m,R)
(a,b),R=gaZb,c=H(m,R)
签名 ( c , y 1 = a + c ⋅ s k 1 , y 2 = b + c ⋅ s k 2 ) (c,y_1=a+c\cdot sk_1,y_2=b+c\cdot sk_2) (c,y1=a+c⋅sk1,y2=b+c⋅sk2) - 验证:计算 R ′ = g y 1 Z y 2 v c R'=g^{y_1}Z^{y_2}v^c R′=gy1Zy2vc,验证 c ′ = H ( m , R ′ ) = c c'=H(m,R')=c c′=H(m,R′)=c
这个方案与Okamoto方案的区别:后者使用了私钥
(
x
1
,
x
2
)
∈
Z
p
2
(x_1,x_2)\in\mathbb{Z}_p^2
(x1,x2)∈Zp2,签名形式为:
这个方案相当于一个特例:
(
x
1
,
x
2
)
=
(
x
,
0
)
(x_1,x_2)=(x,0)
(x1,x2)=(x,0)
总结:虽然MuSig2和FROST产生有效的Schnorr签名,但基于DLL的FROST- H和MuSig2- H实例产生的签名效率略低,并且有效地与Okamoto的签名兼容。
这种优化是通用的,可以直接应用于Okamoto的方案;但是,它对于阈值签名特别有利,因为它允许我们利用任何分布式密钥生成协议来进行Schnorr签名。
RSA-Based Instantiations
RSA的情况稍微复杂一些,因为上述框架似乎不直接支持RSA实例化:没有自然的基于RSA的线性哈希函数实现适当的
S
\mathcal{S}
S模块。然而,我们证明了该框架可以适应支持基于rsa的线性哈希函数:基于公共参数
p
a
r
=
(
N
,
e
,
w
)
par=(N,e,w)
par=(N,e,w),其中
N
N
N是RSA模,
e
∈
Z
N
∗
e\in\mathbb{Z}_N^*
e∈ZN∗是一个素数满足
我们把这个线性哈希函数称为RLHF。在这里,重要的是要注意支持的标量空间被设置为
S
:
=
Z
\mathcal{S}:=\mathbb{Z}
S:=Z,这只是一个环。(我们把这样的哈希函数称为弱线性哈希函数。)
分析:这个 F F F满足LHF的定义吗?弱体现在哪。
- 1:有 S : = Z \mathcal{S}:=\mathbb{Z} S:=Z, D ∈ Z e × Z N ∗ , R ∈ Z N ∗ \mathcal{D}\in\mathbb{Z}_e\times\mathbb{Z}_N^*,\mathcal{R}\in\mathbb{Z}_N^* D∈Ze×ZN∗,R∈ZN∗是 S − m o d u l e \mathcal{S}-module S−module,但是 S \mathcal{S} S是ring而不是标准定义中的field。
- 2:确定性函数,这个映射是满同态,且不是单同态。
实例
密钥
s
k
=
x
∈
Z
N
∗
,
p
k
=
x
e
,
m
∈
{
0
,
1
}
∗
sk=x\in\mathbb{Z}_N^*,pk=x^e,m\in\{0,1\}^*
sk=x∈ZN∗,pk=xe,m∈{0,1}∗
签名
σ
=
(
R
=
a
e
w
b
,
s
=
a
⋅
x
H
(
p
k
,
m
,
R
)
,
b
)
\sigma=(R=a^ew^b,s=a\cdot x^{H(pk,m,R)},b)
σ=(R=aewb,s=a⋅xH(pk,m,R),b)
验证
s
e
w
b
=
R
⋅
p
k
H
(
p
k
,
m
,
R
)
s^ew^b=R\cdot pk^{H(pk,m,R)}
sewb=R⋅pkH(pk,m,R)
Schemes Based on Linear Hash Functions
对于素数大小为
p
p
p的循环群
G
\mathbb{G}
G和生成元
g
g
g,我们可以把描述为
(
S
,
D
,
R
,
F
)
(\mathcal{S, D, R}, F)
(S,D,R,F)的线性哈希函数的描述看作类似于
(
G
,
p
,
g
)
(\mathbb{G}, p, g)
(G,p,g)的描述,其中
R
\mathcal{R}
R对应于群
G
\mathbb{G}
G,函数F下的原像对应于以
g
g
g为底的离散对数,
S
\mathcal{S}
S对应于标量
Z
p
\mathbb{Z}_p
Zp的域。
此外,AOMPR游戏也类似于AOMDL游戏。这提供了一种将任何在AOMDL假设下安全的方案转换为由线性哈希函数构造并在AOMPR假设下安全的方案的一般方法。在本节中,我们将讨论如何将此思想应用于两个具体示例:MuSig2[43],一个多签名方案,FROST[37],一个阈值签名方案。
multi-signatures
MuSig2[43]是一个带密钥聚合的两轮多签名方案。此外,第一轮签名是消息独立的。我们首先给出了如下[43]的两轮多重签名的语法和安全性定义,然后提出了由MuSig2转化而来的基于LHF的新方案MuSig2- h,最后证明了新方案在AOMPR假设下的安全性。
语法
具有密钥聚合的两轮多重签名方案是一组高效(随机)算法
M
S
=
(
S
e
t
u
p
,
K
e
y
G
e
n
,
K
e
y
A
g
g
,
P
r
e
S
i
g
n
,
P
r
e
A
g
g
,
S
i
g
n
,
S
i
g
n
A
g
g
,
V
e
r
)
MS=(Setup,KeyGen,KeyAgg,PreSign,PreAgg,Sign,SignAgg,Ver)
MS=(Setup,KeyGen,KeyAgg,PreSign,PreAgg,Sign,SignAgg,Ver)行为如下。
(确定性)密钥聚合算法KeyAgg将大小不超过
2
κ
2^κ
2κ的多集公钥L作为输入,并返回聚合公钥
a
p
k
apk
apk。
V
e
r
(
a
p
k
,
m
,
σ
)
→
0
/
1
~~~Ver(apk, m, σ)\rightarrow0/1
Ver(apk,m,σ)→0/1
安全
多重签名的安全概念被称为MS-UF-CMA,它保证不可能伪造至少涉及一个诚实方的有效多重签名。
在游戏中,我们假设对手破坏了聚合器节点和除一个签名者外的所有签名者,并且可以与诚实方进行任意数量的(并发)签名会话。
MuSig2-H方案
它是由MuSig2转换而来,带有参数
v
=
4
v=4
v=4,其中
ν
ν
ν表示在签名协议的第一轮中生成的随机数
对比一下原方案MuSig2:https://link.springer.com/chapter/10.1007/978-3-030-84242-0_8
可以看出将密钥生成替换/泛化成线性哈希函数
F
F
F,参数取值由具体的
Z
p
\mathbb{Z}_p
Zp一般化为
D
\mathcal{D}
D,不同哈希函数的区分等。其他构造基本相同。
(所以说这个构造是LHF版本的MuSig2)
显然这个签名是两轮的,第一轮与签名的消息无关。
Threshold Signatures
FROST1和更有效的版本FROST2是(部分)非交互式阈值签名方案。
语法
T S = ( S e t u p , K e y G e n , S P P , L P P , L R , P S , A g g , V f ) TS=(Setup, KeyGen, SPP, LPP, LR, PS, Agg, Vf) TS=(Setup,KeyGen,SPP,LPP,LR,PS,Agg,Vf),其行为如下。参与者是一个领导者和n个签名者。
- 算法 S e t u p ( 1 κ ) Setup (1^κ) Setup(1κ)初始化每个签名者的状态 s t i ∈ [ n ] st_i \in[n] sti∈[n]和领导者的状态 s t 0 st_0 st0,并返回一个系统参数 p a r par par。
- 密钥生成算法KeyGen()为每个签名者 i i i返回一个公共验证密钥 p k pk pk、公共辅助信息 a u x aux aux和一个秘密密钥 s k i sk_i ski。
其中
- 验证算法 V f ( p k , m , σ ) Vf(pk, m, σ) Vf(pk,m,σ)输出一个比特。
安全
阈值签名的安全概念TS-SUF-2和TS-SUF-3,它们分别是由FROST2和FROST1实现的。
TS-SUF-2和TS-SUF-3要求存在一种高效的强验证算法
S
V
f
{SVf}
SVf,该算法将公钥
p
k
pk
pk、leader request
l
r
lr
lr和签名
σ
σ
σ作为输入,并输出一个比特来表示
σ
σ
σ是否合法地为
l
r
lr
lr获得。
TS-SUF-2保证攻击者只有在接收到来自至少 t − ∣ C S ∣ t-|CS| t−∣CS∣个诚实方的相同领导请求 l r lr lr的部分签名时才能生成 m m m的有效签名 σ σ σ,使得 l r . m s g = m lr.msg=m lr.msg=m和 S V f ( p k , l r , σ ) = 1 SVf(pk, lr, σ) =1 SVf(pk,lr,σ)=1,其中 C S CS CS表示腐化的符号集。
TS-SUF-3仅为
l
r
lr
lr额外指定一个函数
l
r
.
P
P
lr.PP
lr.PP的方案定义,该函数将每个
i
∈
l
r
.
S
S
i \in lr. SS
i∈lr.SS映射到由签名者
i
i
i生成的预处理令牌。
TS-SUF-3保证攻击者可以为
m
m
m生成有效签名
σ
σ
σ,除了TS-SUF-2的条件外,它还必须从每个诚实的签名者
i
i
i接收到部分签名,使得签名者
i
i
i为
l
r
lr
lr诚实地生成
l
r
.
P
P
(
i
)
lr. PP (i)
lr.PP(i)。
其中TS-SUF-2 game包含除虚线框外的所有内容,TS-SUF-3 Game包含除实线框外的所有内容
安全性原文的描述:(包括TS-SUF-2 Security of FROST2,TS-SUF-3 Security of FROST1)
https://link.springer.com/chapter/10.1007/978-3-031-15985-5_18
FROST1/2-H
同理MuSig2-H,本方案与原方案的区别仅在于使用LHF代替具体的离散对数计算,参数的取值为更泛化的域
D
\mathcal{D}
D代替具体的
Z
p
\mathbb{Z}_p
Zp。以及,除了一般的变换,还需要选择一个注入
x
(
⋅
)
:
[
n
]
→
S
x_{(\cdot)}:[n]\rightarrow \mathcal{S}
x(⋅):[n]→S。
x
(
⋅
)
x_{(\cdot)}
x(⋅)的选择可以是任意的,对应一组指标
S
⊆
[
n
]
,
i
∈
S
S\subseteq[n],i\in S
S⊆[n],i∈S的拉格朗日系数定义为
FROST2是一个优化版本,减少了签名和验证所需的幂次次数从
∣
l
r
.
S
S
∣
|lr.SS|
∣lr.SS∣到1。
领导者状态
s
t
0
st_0
st0包含每个服务器
i
i
i的一组
c
u
r
P
P
i
curPP_i
curPPi,表示服务器
i
i
i生成的尚未在签名请求中使用的令牌集。服务器
i
i
i的状态
s
t
i
st_i
sti包含一个函数
m
a
p
P
P
mapPP
mapPP,它将每个令牌
p
p
pp
pp映射到用于生成
p
p
pp
pp的随机性,如果
p
p
pp
pp尚未由服务器
i
i
i生成或已在签名请求中使用,则
s
t
i
.
m
a
p
P
P
(
p
p
)
=
⊥
st_i.mapPP(pp) =⊥
sti.mapPP(pp)=⊥。
原方案:
原文中对系数的定义:
Lagrange coefficient
λ
i
l
r
.
S
S
\lambda_i^{lr.SS}
λilr.SS定义:对于任何
S
⊆
[
1
,
.
.
n
s
]
S\subseteq[1,..ns]
S⊆[1,..ns]
C
o
m
p
P
a
r
CompPar
CompPar算法是在签名时使用的计算参数
R
,
c
,
{
d
i
}
i
∈
l
r
.
S
S
R, c,\{d_i\}_{i\in lr.SS}
R,c,{di}i∈lr.SS的辅助算法。FROST1和FROST2的区别在于
C
o
m
p
P
a
r
CompPar
CompPar中
d
i
d_i
di的计算方式。在FROST1中,每个
d
i
d_i
di是每个服务器
i
i
i的不同哈希值,而在FROST2中,
d
i
d_i
di是所有服务器的相同哈希值。
实例化
基于DLP
根据[30]实例化,从group generation algorithm G G e n GGen GGen实例化一个线性哈希函数族GLHF,如下所示:
- 输入 1 κ , P G e n 1^\kappa,PGen 1κ,PGen运行 G G e n ( 1 κ ) GGen(1^\kappa) GGen(1κ)并得到 ( G , p , g ) (\mathbb{G},p,g) (G,p,g),均匀采样一个 Z ∈ G Z\in\mathbb{G} Z∈G并返回 κ ← ( G , p , g , Z ) \kappa\leftarrow(\mathbb{G},p,g,Z) κ←(G,p,g,Z)
- 给定 κ \kappa κ,定义 S : = Z p , D : = Z p 2 , R : = G \mathcal{S}:=\mathbb{Z}_p,\mathcal{D}:=\mathbb{Z}_p^2,\mathcal{R}:=\mathbb{G} S:=Zp,D:=Zp2,R:=G。同时,对于任何 ( x 1 , x 2 ) ∈ Z p 2 (x_1,x_2)\in\mathbb{Z}_p^2 (x1,x2)∈Zp2,定义 F ( x 1 , x 2 ) : = g x 1 Z x 2 F(x_1,x_2):=g^{x_1}Z^{x_2} F(x1,x2):=gx1Zx2。
- 对 D \mathcal{D} D的运算定义如下。对于任何 ( x 1 , y 1 ) , ( x 2 , y 2 ) ∈ D , s ∈ S (x_1,y_1),(x_2,y_2)\in\mathcal{D},s\in\mathcal{S} (x1,y1),(x2,y2)∈D,s∈S,定义 ( x 1 , y 1 ) + ( x 2 , y 2 ) = ( x 1 + x 2 , y 1 + y 2 ) , s ⋅ ( x 1 , y 1 ) = ( s x 1 , s y 1 ) (x_1,y_1)+(x_2,y_2)=(x_1+x_2,y_1+y_2), s\cdot (x_1,y_1)=(sx_1,sy_1) (x1,y1)+(x2,y2)=(x1+x2,y1+y2),s⋅(x1,y1)=(sx1,sy1)
- 对 R \mathcal{R} R的运算定义如下。对于任何 x 1 , x 2 ∈ R , s ∈ S x_1,x_2\in\mathcal{R}, s\in\mathcal{S} x1,x2∈R,s∈S,定义 x 1 + x 2 = x 1 x 2 , s ⋅ x 1 = x 1 s x_1+x_2=x_1x_2,s\cdot x_1=x_1^s x1+x2=x1x2,s⋅x1=x1s,其中 x 1 x 2 , x 1 s x_1x_2,x_1^s x1x2,x1s都是group G \mathbb{G} G操作
定理表明,GLHF是一个线性哈希函数族,并且GLHF的抗碰撞性由离散对数假设隐含。
(也就是说所有的实例化只需要给出满足条件的线性哈希函数族)
要实例化MuSig2-H、FROST1-H和FROST2-H,设置参数:
基于RSA
要从RSA问题实例化线性哈希函数族,我们必须使用一个较弱的概念,称为弱线性哈希函数,它与线性哈希函数相同,只是 S \mathcal{S} S只需要是一个环而不是一个field。正式地,我们从RSA参数生成算法RGen构造一个弱线性哈希函数族RLHF,如下所示
- 输入 1 κ , P G e n 1^\kappa,PGen 1κ,PGen运行 R G e n ( 1 κ ) RGen(1^\kappa) RGen(1κ)并得到 ( N , e ) (N,e) (N,e),均匀采样一个 w ∈ Z N ∗ w\in\mathbb{Z}_N^* w∈ZN∗并返回 p a r ← ( N , e , w ) par\leftarrow(N,e,w) par←(N,e,w)
- 给定 p a r par par,定义 S : = Z , D : = Z e × Z N ∗ , R : = Z N ∗ \mathcal{S}:=\mathbb{Z},\mathcal{D}:=\mathbb{Z}_e\times\mathbb{Z}_N^*,\mathcal{R}:=\mathbb{Z}_N^* S:=Z,D:=Ze×ZN∗,R:=ZN∗。同时,对于任何 ( a , x ) ∈ Z e × Z N ∗ (a,x)\in\mathbb{Z}_e\times\mathbb{Z}_N^* (a,x)∈Ze×ZN∗,定义 F ( a , x ) : = w a x e ∈ Z N ∗ F(a,x):=w^ax^e\in\mathbb{Z}_N^* F(a,x):=waxe∈ZN∗。
- 对 D \mathcal{D} D的运算定义如下。对于任何 ( a 1 , x 1 ) , ( a 2 , x 2 ) ∈ D , s ∈ S (a_1,x_1),(a_2,x_2)\in\mathcal{D},s\in\mathcal{S} (a1,x1),(a2,x2)∈D,s∈S,定义 ( a 1 , x 1 ) + ( a 2 , x 2 ) = ( a 1 + a 2 , x 1 x 2 w ⌊ ( a 1 + a 2 ) / e ⌋ ) , s ⋅ ( a 1 , x 1 ) = ( s a 1 , x 1 s w ⌊ s a 1 / e ⌋ ) (a_1,x_1)+(a_2,x_2)=(a_1+a_2,x_1x_2w^{\lfloor(a_1+a_2)/e\rfloor}), s\cdot (a_1,x_1)=(sa_1,x_1^sw^{\lfloor sa_1/e\rfloor}) (a1,x1)+(a2,x2)=(a1+a2,x1x2w⌊(a1+a2)/e⌋),s⋅(a1,x1)=(sa1,x1sw⌊sa1/e⌋),其中 a 1 + a 2 , s a 1 a_1+a_2,sa_1 a1+a2,sa1是在 Z e \mathbb{Z}_e Ze上计算的。
- 对 R \mathcal{R} R的运算定义如下。对于任何 x 1 , x 2 ∈ R , s ∈ S x_1,x_2\in\mathcal{R}, s\in\mathcal{S} x1,x2∈R,s∈S,定义 x 1 + x 2 = x 1 x 2 , s ⋅ x 1 = x 1 s x_1+x_2=x_1x_2,s\cdot x_1=x_1^s x1+x2=x1x2,s⋅x1=x1s,其中 x 1 x 2 , x 1 s x_1x_2,x_1^s x1x2,x1s分别是 Z N ∗ \mathbb{Z}_N^* ZN∗上的乘法运算和指数运算。
前面的实例化类似于[30]中的实例化。唯一的区别是,我们将S设为Z,是为了使D和R都成为S模块。
https://link.springer.com/chapter/10.1007/978-3-030-17659-4_12
来看看原文是怎么定义的:
一个module由两个集合
S
\mathcal{S}
S和
M
\mathcal{M}
M指定,其中
S
\mathcal{S}
S是一个具有乘法单位元素
1
S
1_{\mathcal{S}}
1S的环,
⟨
M
,
+
,
0
⟩
\langle\mathcal{M},+,0\rangle
⟨M,+,0⟩是一个加法阿贝尔群,一个映射
⋅
:
S
×
M
→
M
\cdot:\mathcal{S\times M\rightarrow M}
⋅:S×M→M,即,对于所有
r
,
s
∈
S
,
x
,
y
∈
M
r,s\in\mathcal{S},x,y\in\mathcal{M}
r,s∈S,x,y∈M,有(1)
r
⋅
(
x
+
y
)
=
r
⋅
x
+
r
⋅
y
r\cdot(x+y)=r\cdot x+r\cdot y
r⋅(x+y)=r⋅x+r⋅y(2)
(
r
+
s
)
⋅
x
=
r
⋅
x
+
s
⋅
x
(r+s)\cdot x=r\cdot x+s\cdot x
(r+s)⋅x=r⋅x+s⋅x(3)
(
r
s
)
⋅
x
=
r
⋅
(
s
⋅
x
)
(rs)\cdot x=r\cdot(s\cdot x)
(rs)⋅x=r⋅(s⋅x)(4)
1
S
⋅
x
=
x
1_S\cdot x=x
1S⋅x=x
线性函数族的语法。
实例:Okamoto-Guillou-Quisquater.