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