1. 公钥加密体制
在1976年,Whitfield Diffie和Martin Hellman发表了《New directions in cryptography》奠定了公钥密码系统的基础。和对称密码体制不同,公钥密码体制加密密匙和解密密匙是不一样的,加密密匙是可以公开的,并且不会危及密码算法的安全性。自从公钥密码的概念被提出以来,相继提出了许多公钥密码方案,如RSA、ElGamal等。
1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥。
2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
公钥加密体制一个典型的特点是存在着PKI,加密者Alice在PKI查询到Bob的公钥,即可用Bob的公钥来进行加密,将密文发送给Bob之后,Bob能用自己的私钥解密密文,得到明文数据。
随后,Shamir提出了一种基于身份的加密(identity-based encryption,IBE)方案。首先假设存在一个可信的密钥生成服务器;用户选择他的名字(或者是,网络地址,所在街道地址门牌号,电话号码)作为公钥,相应的私钥由KGG计算出来分配给每个加入网络中的用户。IBE有点类似于理想的邮件系统:如果你知道某个人的姓名和地址,你可以发给他只有他才能读的信,你可以认证他签的签名。
到了2006年,Goyal V, Pandey A, Sahai A, Waters B在the 13th ACM Conf. on Computer and Communications Security会议上提出了基于属性加密的概念,Bethencourt J, Sahai A, Waters B提出了第一个基于属性加密方案。
在基于属性加密中,Alice使用如图所示的访问控制策略采用shamir秘密值分大产生密文,密文中暗含了访问控制策略,因此能够限制用户的访问,达到“一次加密,多人共享”的目的。如图,Alice加密之后,Bob和ALex能够解密到密文数据,而Alan不能,因为Alan的属性“数学学院”不满足左子树“AND”的要求。如何来使用shamir秘密值分发呢?
2.属性基加密秘密分发
如下图所示,在进行秘密值分发之前,加密者先随机选择秘密值s(以s=5)为例,然后,先从根节点构造多项式f(x)=ax^(n-1)+bx^(n-2)...+c,其中n表示的为(t,n)门限的的t-1。如果为"AND"门,取值为其子树的数目-1,"OR"结构取值为1即可,常数项c设置为秘密值s。从左到右依次编号,带入1,2,3...来进行秘密值分发,如8=5+3*1,11=5+3*2....第一层分发完成之后进入第二层进行秘密值分发,按照此规律完成加密过程。
3.基于属性加密过程
3.1.初始化
3.2.加密
用秘密值分发得到的子秘密值qy(0)进行加密即可得到密文CT,其中H(att(y))值将属性att(y)映射到G域。
3.3.私钥生成
授权机构会根据用户属性,产生相对应的属性密钥,用于解密
3.4.解密
解密分成两部分,先解密叶子节点:
再进行拉格朗日插值
进而进行最终解密得到秘密值s
4.应用
密文策略基于属性加密可以在如云环境,医院,政府,智慧工厂等多个场合得到应用。