Page 286 - 《软件学报》2021年第11期
P. 286
3612 Journal of Software 软件学报 Vol.32, No.11, November 2021
*
*
其中,L l 为用户 ID 的长度,L m 为明文 m 的长度, | Z * | 为 Z 中整数的长度.定义索引函数 F ρ (ID → Z ,对于ρ个
)
p p index p
用户,ID∈{ID 1 ,ID 1 ,…,ID ρ }.该函数是将用户 ID 均匀映射到{1,2,…,ρ},以用于消息发送者和接收者从消息集合
*
*
中定位自己的位置坐标.定义⊕为{0,1} 的异或运算,对于∀M,N∈{0,1} ,满足 M⊕N⊕M=N.
对于 i={1,2,…,n}个服务器 KS i ,输入系统参数 k,各个 KS i 随机生成一个 t−1 次的多项式 g i (x)=a i,0 +a i,1 x+…+
a i,t−1 x ,其中, a ∈ t−1 Z * (0≤≤ t − 1) .当 x=0 时,可以得到 g i (0)=a i,0 ,其中,a i,0 为 KS i 的子秘密.KS i 计算{a i,ξ P|0≤ξ≤
j
, ij p
t−1},并将其发送至其他 n−1 个 KS j (j≠i)服务器.然后,KS i 计算{g i (j)|1≤j≤n},并将每个 g i (j)通过秘密渠道依次发
t−
送至对应的 KS j (j≠i)服务器.收到上述 g i (j)消息后,KS j 对其进行校验,校验公式为 g i ()jP = ∑ 1 ( j ξ (a P .如果校验
))
, i ξ
ξ = 0
失败,则拒绝接收该项数据.KS j 对接收到的 n−1 项 g i (j)全部校验成功后,加上在本地计算得到的 g i (i)消息,此时,
KS j 得到元素个数为 n 的{g i (j)|1≤i≤n}.
n n n
KS j 的私钥为 s = ∑ g ξ ()j ,其对应的公钥为 k j =s j P.系统主私钥为 s = ∑ a ξ ,0 ,系统主公钥为 P pub ∑ a P ,并
=
j
ξ
,0
ξ = 1 ξ = 1 ξ = 1
ρ
公开参数 Params = { , , , ,G p k P P pub ,H H H F index , ,||}⊕ .初始化流程如图 2 所示.
,
,
,
3
2
1
j
i g ()x = i a ,0 + ... a+ i − t− 1
, 1t x
, 1t P
i aP , i ξ ,...,a i −
,0 ,a P
ξ
ξ
{aP | 0≤≤ t − 1} {aP | 0≤≤ t − 1}
, i ξ
, i ξ
υ
ξ
{aP | 0≤≤ t − 1} {aP | 0≤≤ t − 1}
1,ξ
, n υ
i g (1),..., ( ),..., ( )gj i g n
i
i g (1) i g ()n
g 1 ()i t− 1 n g ()i
g 1 ()iP = ∑ ( (i ξ 1, a P ))
ξ
ξ = 0
t− 1
ξ
, n P
n g () iP = ∑ ( (a ξ ))
i
ξ = 0
n
(), i k = ∑
i s = gi i s P
ξ
ξ = 1
Fig.2 System setup
图 2 系统初始化
3.2.2 用户密钥生成(KeyGen)
用户 ID 随机选择 u ∈ Z ,并计算得到 U id =u id P,然后将 U id 公布出去;然后,用户将自己的 ID 信息发送至 n
*
id p
个密钥服务器.当 KS i 收到用户的 ID 信息后,首先要对用户身份信息按照一定准入原则进行判定,才允许其加入,
这里不再对准入原则进行赘述.然后,KS i 计算得到 h = H 1 (ID ,U id ) ,并得到 w = s h ,并将 w i 通过秘密通道发送
id
id
1
1
i
i
给用户 ID.
id
用户 ID 收到 w i 后,对其进行校验,校验公式为 wP = k h .校验通过后,用户接收 w i .当用户收到 t 份 w i 后,
1
i
i
构成集合W = {w w ,...,w ,其中,索引集合为 I={i 1 ,i 2 ,…,i t }.
}
,
1 i 2 i t i
t i j
用户进而计算得到 γ w δ = ξξ + ∑ u ,其中, δ = ∏ .用户私钥信息为γ,用户公钥信息为κ=U id .
id
ξ
j
ξ 1 i = 1 i ≤≤ t i j ξ−
j ξ ∈ ≠ , j I
3.2.3 签密(SignCrypt)
设定接收者共有ρ个,待签密消息集合为 M={m 1 ,m 1 ,…,m ρ },接收者身份集合为 ID = {ID ,ID ,...,ID }, 发
R 1 R R 2 R ρ
*
送者的身份为 ID S .首先,发送者 ID S 随机选择 α ∈ Z ,并计算得到 A s =α s P,α s 用于保证对于相同的消息每次生成
s p