LSSS线性秘密共享方案详细构造方法与原理解释

关于LSSS线性秘密共享方案详细构造方法与原理解释

1.LSSS定义

LSSS英文精确定义如下:
在这里插入图片描述翻译后:

一个关于参与者集合 P \Rho P关于秘密分享方案 Π \Pi Π Z p Z_p Zp上是线性的,则需要满足以下条件:
1.每一个参与者的分享份额(见2点)构成 Z p Z_p Zp上的一个向量;
2.存在一个关于 Π \Pi Π的秘密生成矩阵 M M M,这个矩阵有 m m m d d d列,对于 i = 1 , 2 , . . . . m i=1,2,....m i=1,2,....m M M M的第 i i i M i M_i Mi被一个参与者 ρ ( i ) \rho (i) ρ(i)标识, ρ \rho ρ是一个从 { 1 , 2 , . . . , m } \{1,2,...,m\} {1,2,...,m}映射到 P \Rho P(参与者集合)的一个函数。给一个列向量 v ⃗ = ( s , r 2 , . . . , r d ) \vec {v}=(s,r_2,...,r_d) v =(s,r2,...,rd),其中 s ∈ Z p s \in Z_p sZp是需要共享的秘密, r 2 , r 3 , . . . , r d r_2,r_3,...,r_d r2,r3,...,rd是随机选取的。 M v ⃗ M \vec{v} Mv 表示 Π \Pi Π对秘密 s s s m m m个分享份额, λ i = ( M v ⃗ ) i \lambda _i=(M\vec{v})_i λi=(Mv )i是属于参与者 ρ ( i ) \rho(i) ρ(i)的分享份额。

初步感知一下 M M M m m m d d d列的, v ⃗ \vec{v} v d d d 1 1 1列的, M v ⃗ M\vec{v} Mv 则是 m m m 1 1 1列的,每一行的一个值就是每个对应的参与者的分享份额。

2.Access Tree转化为LSSS矩阵方法

下面讲如何将访问树(access tree,构造参见KP-ABE那一篇)转化为分享生成矩阵。前面一篇讲过访问树叶子节点代表属性,非叶节点表示与或门,约定 ( 1 , 0 , 0 , . . . , 0 ) (1,0,0,...,0) (1,0,0,...,0)是目标向量。
构造方式如下:

(a).根节点标识为向量 ( 1 ) (1) (1),全局计数器 c = 1 c=1 c=1,自上而下构建其他节点。
(b).如果节点x是一个被向量 v v v标记的与门,则将x的一个子节点标记为 v ∣ 1 v|1 v1(|表示连接),另一个节点标记为 ( 0 , 0 , . . . , 0 ) ∣ − 1 (0,0,...,0)|-1 (0,0,...,0)1, ( 0 , . . . 0 ) 长 度 为 c (0,...0)长度为c (0,...0)c,然后c加1.
©.如果节点x是被向量v标记的或门,则x子节点也为 v v v.最后所有节点被标记,当叶子节点长度不等时,用0填充至相同长度。
叶子节点各向量即为LSSS分享生成矩阵各行向量。
举例 ( A A N D ( D O R ( B A N D C ) ) ) (A AND (D OR (B AND C))) (AAND(DOR(BANDC)))
在这里插入图片描述
按照定义(a)设定根节点AND为 ( 1 ) (1) (1),c=1。根据定义(b),根节点左边节点A为 ( 1 , 1 ) (1,1) (1,1),右边或门节点为(0,-1).根据定义©右边或门的子孙节点D和AND节点为 ( 0 , − 1 ) (0,-1) (0,1).根据定义(b)节点B和节点C为 ( 0 , − 1 , 1 ) (0,-1,1) (0,1,1) ( 0 , 0 , − 1 ) (0,0,-1) (0,0,1).
最终得到分享生成矩阵为:
( 1 1 0 0 − 1 1 0 0 − 1 0 − 1 0 ) \begin{pmatrix} 1&1 &0 \\ 0 & -1 & 1\\ 0 & 0&-1 \\ 0& -1 &0 \end{pmatrix} 100011010110

3.LSSS算法正确性证明

证明一下算法正确性:
λ = M ⋅ ν , M : ( m , d ) , v ⃗ = ( s , r 2 , . . . , r d ) \lambda=M\cdot \nu ,M:(m,d),\vec{v} =(s,r_{2},...,r_{d}) λ=Mν,M:(m,d),v =(s,r2,...,rd)

在这里插入图片描述
∑ i ∈ I ω i M i = ( 1 , 0 , . . . , 0 ) \sum_{i \in I} \omega_{i} M_{i}=(1,0,...,0) iIωiMi=(1,0,...,0)
即 可 写 为 M T ⋅ ω = ( 1 , 0 , . . . , 0 ) , ω 作 列 向 量 , 这 里 讲 的 是 存 在 这 些 ω 。 没 有 给 具 体 求 法 即可写为M^{T}\cdot \omega =(1,0,...,0), \omega作列向量,这里讲的是存在这些\omega 。没有给具体求法 MTω=(1,0,...,0),ωω
∑ i ∈ I ω i λ i = s \sum_{i \in I}\omega_{i} \lambda_i =s iIωiλi=s
即 可 写 为 λ T ⋅ ω = s 即可写为\lambda ^{T}\cdot \omega =s λTω=s
ν M T ⋅ ω = s , 因 为 M T ⋅ ω = ( 1 , 0 , . . . , 0 ) , 均 为 i ∈ I , 则 得 到 了 我 们 的 秘 密 s \nu M^{T} \cdot \omega =s,因为M^{T}\cdot \omega =(1,0,...,0) ,均为i \in I,则得到了我们的秘密s νMTω=s,MTω=(1,0,...,0)iI,s

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
高清中文版共分3卷 这是学习struts2最后的一笔书 这是我读过的讲解框架最好的一本书。   学习任何东西,需要知其所以然,把握其核心思想、理念和方法论,才能做到融会贯通。尤其对于一个框架来说,它的代码、API等早晚都会被淘汰,但其核心的思想会被后来者所传承下去。如果我们在学习时只是满足于该框架的应用,就会成为框架未来的陪葬品;相反,如果我们把握了它核心的设计思想,就能够做到处变不惊,以不变应万变。因为所有的变化都是表象,对于我们来说,本质的东西并没有变。   struts2的内核是基于webwork构建起来的。个人认为本书是学习struts2的最佳参考书,其最牛逼之处在于不仅让你知其然,还会知其所以然,其字里行间流露出的框架设计理念非常精彩,深刻而又清晰,每每让我拍案叫绝。同时本书对细节的把握又恰到好处,不会因为内容的增多而让你感觉晦涩。毫不夸张地说,读完这本书,你能够自己去实现一个简单的类struts框架了。   我们为什么需要struts2这样一个框架?struts2的核心是什么?Interceptor实现的原理是什么?它是怎么同Action协同工作的?为啥我在Action中定制一个变量并编写了setter/getter方法,struts2能把参数准确为我注入,咋实现的呢?为什么需要Ioc模式,它在struts2中如何体现其价值?struts2是如何利用基本的servlet构建出来这样一个灵活的框架的……这所有的疑问,在本书中都会给你一个满意的解答。   市面上的什么“深入浅出struts2”、“精通struts2”、“this struts2”、“that struts2”,读来让人感觉是在隔靴搔痒,戳不到struts2框架的本质之处,顶多可以称为参考手册。参考手册不适合通读、精读,因为读了之后你不出几天就会全部忘掉。关键还是要理解struts2框架的原理、思想,掌握了本质的东西那么再想忘掉也难了。从这个角度来讲,本书是struts2最佳参考书,也是众多讲解框架类书籍的典范。   不得不提的是,本书的翻译质量很高,看得出译者非常用心,赞一个!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅逼码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值