基于属性加密方案的发展

1.公钥加密体制:

与对称密码体制相比,公钥密码体制加密密钥(公钥)和解密密钥(私钥)是不一样的,加密密钥是可以公开的,并且不会危及密码算法的安全性。其过程可以简单的表示如下图所示:

如上图所示,其步骤如下所示:

  • Bob拥有密钥对K1与K2,一个密钥(K1)用于封箱,另一个密钥(K2)用于开锁;
  • Bob可以将锁与钥匙K1发给任何人(如Alice),使其可以安全地向Bob发消息。
  • Bob 请求发送方(如Alice)用这个锁与钥匙K1封锁内容;
  • 然后Bob可以用密钥K2开锁。

2.基于身份的加密:

公钥加密体制虽然具有很好的安全性,但是存在一个最大的问题就是,每个人的公钥都是无意义的一串类似随机数的字符串,如果在加密过程中公钥使用错误,密文就不能被正确的接收者所解密。同时,这很可能就将信息透露给了错误的用户,甚至透露给恶意用户。现实生活中确实存在这样的攻击方法:恶意用户欺骗加密者,将接收者的公钥替换为自己的公钥并告知加密者。

解决这个方法是引入了一个可信的第三方。第三方维护一个大的表格,表格中存放各个用户的身份,以及其所对应的公钥信息。加密者可以在加密之前首先向可信第三方进行公钥查询,这就可以正确进行加密了。这种解决方法虽然好,但是也有一个问题:当用户数量过多,这个表格的维护就变得很困难。

所以在1984年,Shamir提出了身份基密码体制的思想(Identity-Based Cryptosystem),该方案基于公钥密码系统,但有一个变化:用户选择他的名字和网络地址(也可以使用姓名、社会保险号、街道地址、办公室号码或电话号码的任意组合,前提是它能唯一标识用户)作为他的公钥,而不是生成一对随机的公钥和私钥,并发布这些密钥中的一个。

基于身份的方案类似于理想的邮件系统:如果知道某人的姓名和地址,就可以向他发送只有他能阅读的消息,并且可以验证只有他才能提供的签名。其步骤简括如下:

  • 当用户A想要向用户B发送消息时,A使用智能卡中的密钥对消息进行签名,使用B的姓名和网络地址对结果进行加密;
  • A将自己的姓名和网络地址添加到消息中,然后将消息发送给B;
  • 当B收到消息是,他使用智能卡中的密钥对消息进行解密;
  • 然后使用发送者的姓名和网络地址作为验证密钥来验证签名。

3.基于属性的加密:

2006年,Goyal V, Pandey A, Sahai A, Waters B在the 13th ACM Conf. on Computer and Communications Security会议上提出了基于属性加密的概念, Sahai A, Waters B提出了第一个基于属性加密方案。其概念如下图所示:

数据拥有者需要制定一条仅有这n个用户才能满足的访问策略,接着输入公共参数PP、该条策略以及明文文件至ABE加密算法,进行加密一次,形成唯一一份密文。得到密文后,数据拥有者将该份密文分别发送给n个不同的用户。

ABE的思想源于基于身份的加密,ABE的基本方案有两个,分别如下:

3.1 KP-ABE方案

 KP-ABE(Key Policy Attribute-based Encryption,基于密钥策略的属性加密)方案是将策略嵌入到密钥中,属性嵌入到密文中,包含一下四个算法:

  • Setup(\gamma ,U):以安全参数\gamma和属性全集U作为输入,初始化系统并生成系统公共参数pk及主密钥mk;
  • KeyGen(pk,mk,T):以系统公共参数pk、主密钥mk以及用户的访问策略T为输入,输出与T对应的用户私钥SK_{T}
  • Encrypt(pk, w,m):以系统公共参数pk、属性集合w以及明文m为输入,输出密文CT_{w}
  • Decrypt(pk,SK_{T},CT_{w}):以系统公共参数pk、用户私钥SK_{T}及密文CT_{w}为输入,当且仅当CT_{w}对应的属性集合w满足SK_{T}对应的访问控制策略T时,算法输出明文m。 

3.2 CP-ABE 

 CP-ABE(Ciphertext Policy Attribute-based Encryption,基于密文策略的属性加密)方案和KP-ABE方案相似是将策略嵌入到密文中,属性嵌入到密钥中,包含一下四个算法:

  • Setup(\gamma ,U):以安全参数\gamma和属性全集U作为输入,输出系统公共参数pk及主密钥mk;
  • KeyGen(pk,mk,w):输入系统公共参数pk、主密钥mk以及用户属性集合w,输出与w对应的用户私钥SK_{w}
  • Encrypt(pk, T,m):以系统公共参数pk、访问控制策略T以及明文m为输入,输出密文CT_{T}
  • Decrypt(pk,SK_{w},CT_{T}):以系统公共参数pk、用户私钥SK_{w}及密文CT_{T}为输入,当且仅当SK_{w}对应的属性集合w满足CT_{T}对应的访问控制策略T时,输出明文m。
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
属性加密算法(Attribute-Based Encryption,简称ABE)是一种属性访问控制的加密技术。在Python中,可以使用第三方库 `charm-crypto` 来实现ABE算法。下面是一个示例: 首先,确保已安装 `charm-crypto` 库,可以使用以下命令进行安装: ``` pip install charm-crypto ``` 然后,可以使用以下代码实现一个简单的ABE加密和解密过程: ```python from charm.toolbox.abenc import Gabe09 # 初始化ABE加密方案 abe = Gabe09() # 生成主密钥对 pk, mk = abe.setup() # 定义访问策略 policy = '(AGE > 18) AND (GENDER == "male")' # 生成访问策略的访问密钥 sk = abe.keygen(pk, mk, policy) # 明文消息 message = b'Hello, World!' # 加密消息 ciphertext = abe.encrypt(pk, message, policy) # 解密消息 decrypted_message = abe.decrypt(pk, sk, ciphertext) print('Decrypted message:', decrypted_message) ``` 在上述代码中,我们使用 `charm-crypto` 库中的 `Gabe09` 类来实现ABE加密方案。首先,我们进行初始化,并生成主密钥对。然后,定义访问策略,并通过主密钥对生成相应的访问密钥。接下来,我们指定明文消息,并使用访问密钥和访问策略对消息进行加密。最后,使用私钥对密文进行解密,并输出解密后的消息。 请注意,ABE算法的具体实现可能因库的版本而有所不同,以上代码仅作为示例参考。在实际应用中,还需要考虑更多的安全性和性能方面的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ZhInen丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值