Attribute-Based Private Data Sharing With Script-Driven Programmable Ciphertext and Decentralized Key Management in Blockchain Internet of Things

密钥生成算法
第 1 步:对于属性集A=
的用户IDk,他首先将属性集A发送给Pi并且计算 
,然后,用户计算身份的参数 并将其发送给Pi。
第 2 步:此步骤用于描述完整节点参数的生成。首先,对于每个属性 
,节点Pi选择一个随机数
。随后,Pi取一个随机数θi,通过使用Shamir (t, n)-阈值SSS(secret sharing scheme)在所有Pi之间共享它,如下所示。Pi随机选择t−1次多项式

使得 
是某个有限域中的随机元素。最后,Pi 计算 n 个共享段 
hi(pn) 并秘密地将 hi(pj) 分配给股东 Pj,其中 j ∈ [1, n]。当节点Pi从Pj接收到所有共享段hj(pi)时,它分别计算
。
第3步:每个节点 Pi 使用其私钥 SKi 和步骤 1 和 2 创建的参数来计算用户私钥的片段信息。
对于主私钥的片段,Pi 计算

对于属性集 
,Pi计算属性子键的片段为

最后,Pi发送
到用户IDk。
在这一步中,通过使用拉格朗日插值公式,用户将根据接收到的密钥片段重建其主私钥和属性子密钥。我们定义拉格朗日系数为 
, 
对于主私钥,它进行重构

对于属性子键,用户进行重构

最后,让 
并且用户通过如下方式获得他的私钥sk_k



















