1.一种针对Shamir秘密共享的用户权重分配方法,其特征在于,该方法包括如下步骤:(1)构造OBDD结构;
假设Shamir秘密共享阈值为t,秘密共享策略借助于布尔函数f表示,基于布尔函数f构造OBDD结构;
在OBDD结构中存在根结点、中间结点和终结点三类节点,根结点和中间结点统称为非终结点;根结点root表示f;非终结点使用四元组
当非终结点中所含变量取值为0时,能够沿0边到达其左孩子结点,相反的,当非终结点中所含变量取值为1时,能够沿1边到达其右孩子结点;
终结点有两个,记为 和 分别用于表示布尔常量0和1,终结点没有边;
基于布尔函数f构造OBDD结构,其中非终结点表示用户,非终结点的1边表示用户参与秘密共享、0边表示用户不参与秘密共享;
并进一步给出以下定义:
有效路径:在 之间的某条路径上,若变量按照OBDD构造时定义的变量序出现,则称该路径为一条有效路径,有效路径代表了授权用户组合;
无效路径:在 之间的某条路径上,若变量按照OBDD构造时定义的变量序出现,则称该路径为一条无效路径,无效路径代表了非授权用户组合;
在不引起歧义的情况下,使用Pi同时代表路径和用户组合,对于路径Pi,使用一组形式为(xj,edgej)的二元组进行表示,其中xj用于记录结点中用户编号,edgej用于记录结点边值,当edgej取值为1时表示用户xj存在于Pi所代表的用户组合,否则表示用户xj不存在于Pi所代表的用户组合;
(2)提出剪除规则、删除规则和合并规则,基于OBDD结构分别构造表示授权用户组合集的授权子OBDD和表示非授权用户组合集的非授权子OBDD;
所述授权子OBDD的构造规则如下:
(2.1.1)剪除规则:从终结点 开始,自下而上剪除与有效路径无关的结点和边;
(2.1.2)删除规则1:对于非终结点u,如果满足u.low=u.high,则将指向非终结点u的所有边连接至u.low,然后删除非终结点u;
(2.1.3)删除规则2:对于非终结点u,如果满足u.low=1,则将指向非终结点u的所有边连接至 然后删除非终结点u;
(2.1.4)合并规则:对于OBDD结构中的非终结点u=
上述规则需重复执行,直至授权子OBDD不再变化;
非授权子OBDD的构造规则如下:
(2.2.1)剪除规则:从终结点 开始,自下而上剪除与无效路径无关的结点和边;
(2.2.2)删除规则1:对于非终结点u,如果满足u.low=u.high,则删除u.low;
(2.2.3)删除规则2:对于非终结点u,如果满足u.low=0,则将指向非终结点u的所有边连接至 然后删除非终结点u;
(2.2.4)合并规则:对于OBDD结构中的非终结点u=
上述规则需重复执行,直至非授权子OBDD不再变化;
(3)基于授权子OBDD和非授权子OBDD分别求取最小授权用户组合集MIN和最大非授权用户组合集MAX;
所述基于授权子OBDD求取最小授权用户组合集MIN,求取MIN的步骤如下:(3.1.1)通过遍历授权子OBDD获得全部有效路径,假设共有v条,记为V={V1,V2,…,Vi…,Vv};
(3.1.2)对于某条有效路径Vi中的二元组(xj,edgej),若edgej=1则将xj存入集合Mini,最终得到最小授权用户组合Mini={xj|(xj,edgej)∈Vi且edgej=1};
(3.1.3)根据全部有效路径求得MIN={Min1,Min2,…,Minv};
同理,基于非授权子OBDD求取最大非授权用户组合集MAX,求取MAX的步骤如下:(3.2.1)通过遍历非授权子OBDD获得全部无效路径,假设共有f条,记为F={F1,F2,…,Fi…,Ff};
(3.2.2)对于某条无效路径Fi中的二元组(xj,edgej),若edgej=1则将xj存入集合Maxi,最终得到Maxi={xj|(xj,edgej)∈Fi且edgej=1};
(3.2.3)根据全部无效路径求得MAX={Max1,Max2,…,Maxf};
(4)计算用户权重及秘密分享阈值;
首先进行以下约定:将用户xi的份额表示为si,满足si>0;对于用户组合Min、Max,使用|Min|、|Max|表示组合内所有用户拥有权重之和;
在Shamir秘密共享机制中,任意授权用户组合可完成秘密重构,而任意非授权用户组合无法完成秘密重构,因此必然满足① 满足|Mini|≥t;②满足|Maxj|
通过求解上述多项式便可得出各参与方的具体权重,并将Shamir秘密共享阈值t设置为集合{|Mini||Mini∈MIN}中元素的最小取值。