KP-ABE基于属性的加密加解密算法及Access Tree构建

本文深入介绍了基于属性的加密(ABE)中的KP-ABE算法,包括其加解密流程、Access Tree的构造以及门限方案。KP-ABE的关键在于Access Tree,它决定了哪些属性的组合可以解密密文。文章通过实例解释了如何构建Access Tree,并展示了加密和解密的过程。
摘要由CSDN通过智能技术生成

注:本文加解密算法构建完全参考经典ABE paper:
Attribute-Based Encryption for Fine-Grained Access Control of Encrypted Data。

一.ABE介绍
ABE算法有两种类型,KP-ABE(Key-Policy Attribute-based encryption)和CP-ABE(Ciphertext-policy Attribute-based encryption)。从名字就可以看出
CP-ABE 密文与 A c c e s s T r e e Access Tree AccessTree相关,密钥与 a t t r i b u t e attribute attribute相关。KP-ABE刚好反过来,密钥与 A c c e s s T r e e Access Tree AccessTree相关,密文与 a t t r i b u t e attribute attribute相关。
我们这篇讲解KP-ABE。它除了选择数据的 a t t r i b u t e attribute attribute外,就不会控制谁有权访问加密的数据,所以必须相信密钥发行者能发出适当的密钥。适用于日志管理,付费视频网络(明文用一个 A c c e s s T r e e Access Tree AccessTree加密后,只要用户密钥的属性满足这个 T r e e Tree Tree就可以进行解密)。我们在后面会具体讲 A c c e s s T r e e Access Tree AccessTree A t t r i b u t e Attribute Attribute,建议看完全文后再次返回来看这部分内容,会更清晰。

二.KP-ABE加解密总流程
KP-ABE方案共有四个算法:
1.Setup。输入安全参数,输出公共参数 P K PK PK和主密钥 M K MK MK
2.Encryption。输入消息 m m m,属性集合 γ \gamma γ,公共参数 P K PK PK。输出密文 E E E。(可以看到密文和属性相关)
3.Key Generation。输入 A c c e s s T r e e A Access Tree A AccessTreeA,公共参数 P K PK PK和主密钥 M K MK MK,输出解密密钥 D D D
4.Decryption。输入基于属性 γ \gamma γ加密的密文 E E E,基于 A c c e s s T r e e A Access Tree A AccessTreeA生成的解密密钥 D D D和公共参数 P K PK PK。如果 γ \gamma γ属于 A A A即属性 γ \gamma γ满足访问结构 A A A,则输出 m m m

三.Access Tree构造
首先来说一下门限方案:
设秘密 s s s被切分为 n n n个部分信息,每一个部分称为子密钥,有一个参与者持有使得:
1.由 k k k个或多于 k k k个参与者的部分信息可重构 s s s
2.少于 k k k个参与者不能重构消息 s s s
3.少于 k k k个参与者持有的部分信息得不到 s s s任何信息。
( k , n ) (k,n) (k,n)为秘密分割门限方案,k称为门限值。

下面来讲解 A c c e s s T r e e Access Tree AccessTree
T T T表示 A c c e s s T r e e Access Tree AccessTree,它其实就是一个树。每一个非叶子节点表示一个陷门,每一个非叶子节点有 n u m x numx numx个子节点, k x k_x kx表示门限值, 0 < k x ≤ n u m x 0<k_x \leq numx 0<kxnumx. k x = 1 k_x=1 kx=1表示是一个或门 ( O R g a t e ) (OR gate) (ORgate), k x = n u m x k_x=numx kx=numx 表示是一个与门 ( A N D g a t e ) (AND gate) (ANDgate).每一个叶子节点代表属性,其门限值为1.
该方案是基于多项式的拉格朗日插值法的。已知一个函数 p ( x ) p(x) p(x) k k k个互不相同的点的函数值 p ( x i ) p(xi) p(xi),寻求一个满足 f ( x i ) = p ( x i ) f(xi)=p(xi) f(xi)=p(xi)的函数 p ( x ) p(x) p(x)用来逼近 p ( x ) p(x) p(x).
拉格朗日插值:已知 p ( x ) p(x) p(x) k k k个不同点的函数值 p ( x i ) ( i = 1 , 2.... k ) p(xi)(i=1,2....k) p(xi)(i=1,2....k),可以构造 k − 1 k-1 k1次插值多项式。
在这里插入图片描述
即由k-1次多项式 f ( x ) f(x) f(x)k个互不相同的函数值 f ( x i ) f(xi) f(xi)构造多项式 f ( x ) f(x) f(x).若把密钥 s s s取做 f ( 0 ) f(0) f(0), n n n个子密钥 f ( x i ) f(xi) f(xi),其中任意 k k k个可重构出 f ( 0 ) f(0) f(0).
进行具体举例:
将加密密钥 s s s放在根节点上,对每一个非叶节点构造多项式。与门意味着n-1阶多项式,或门意味着0阶多项式。
( A a n d B a n d C ) a n d ( D o r E o r F ) (A and B and C)and(D or E or F) (AandBandC)and(DorEorF)
构建两个多项式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到 s s s是我们需要得到的密钥。and门需要 A , B , C A,B,C A,B,C均获得才可恢复 f 1 ( 0 ) = f 0 ( 1 ) f_1(0)=f_0(1) f1(0)=f0(1),或门只需要一个就可恢复 f 0 ( 2 ) f_0(2) f0(2),然后在 f 0 ( x ) f_0(x) f0(x)中恢复出密钥 s s s

四.KP-ABE方案
G 1 G_1 G1是一个素数 p p p阶双线性群, g g g是生成元。 e : G 1 × G 1 → G 2 e:G_1 \times G_1 \rightarrow G_2 e:G1×G1G2(双线性默认已知,如果需要补充的话请留言),安全参数k。拉格朗日系数
在这里插入图片描述1.setup。定义属性全集 U = 1 , 2 , . . . , n U={1,2,...,n} U=1,2,...,n。对每一个属性 i i i属于 U U U,从 Z p Z_p Zp随机选择一个数 t i t_i ti。最后,从 Z p Z_p Zp随机选择y。公共参数 P K PK PK如下:
在这里插入图片描述
主密钥 M K MK MK如下:
在这里插入图片描述
2.加密
基于属性 γ \gamma γ加密一个消息M属于 G 2 G_2 G2,选择随机值s属于 Z p Z_p Zp。加密后密文如下:
在这里插入图片描述
3.key Generation。
算法仅当属性 γ \gamma γ满足 A c c e s s T r e e T Access Tree T AccessTreeT时可获得解密密钥。按照我们上面讲到的 a c c e s s T r e e access Tree accessTree建造方法构造树。对每一个叶子节点x。计算
在这里插入图片描述
a t t ( x ) att(x) att(x)函数表示返回叶子节点x的属性值。

4.decryption
输入私钥 D D D(Key generation产生),密文:
在这里插入图片描述
定义 D e c r y p t N o d e ( E , D , x ) DecryptNode(E,D,x) DecryptNodeE,D,x)函数, i = a t t ( x ) i=att(x) i=att(x),当x是叶子节点时:
在这里插入图片描述当他是非叶节点时:对于 x x x的所有孩子 z z z,调用 D e c r y p t N o d e ( E , D , x ) DecryptNode(E,D,x) DecryptNodeE,D,x,结果存为 F z F_z Fz
在这里插入图片描述

均能计算出 e ( g , g ) s ⋅ q x ( 0 ) e(g,g)^{s\cdot q_x(0)} e(g,g)sqx(0).当我们调用DecryptNode(E,D,r)=
e ( g , g ) y s = Y S e(g,g)^{ys}=Y^{S} e(g,g)ys=YS.我们的密文 E ′ = M Y S E'=MY^{S} E=MYS,则作除法就可获得明文M。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

密码猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值