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,基于密钥策略的属性加密)方案是将策略嵌入到密钥中,属性嵌入到密文中,包含一下四个算法:
:以安全参数
和属性全集U作为输入,初始化系统并生成系统公共参数pk及主密钥mk;
:以系统公共参数pk、主密钥mk以及用户的访问策略T为输入,输出与T对应的用户私钥
;
:以系统公共参数pk、属性集合w以及明文m为输入,输出密文
;
:以系统公共参数pk、用户私钥
及密文
为输入,当且仅当
对应的属性集合w满足
对应的访问控制策略T时,算法输出明文m。
3.2 CP-ABE
CP-ABE(Ciphertext Policy Attribute-based Encryption,基于密文策略的属性加密)方案和KP-ABE方案相似是将策略嵌入到密文中,属性嵌入到密钥中,包含一下四个算法:
:以安全参数
和属性全集U作为输入,输出系统公共参数pk及主密钥mk;
:输入系统公共参数pk、主密钥mk以及用户属性集合w,输出与w对应的用户私钥
;
:以系统公共参数pk、访问控制策略T以及明文m为输入,输出密文
;
:以系统公共参数pk、用户私钥
及密文
为输入,当且仅当
对应的属性集合w满足
对应的访问控制策略T时,输出明文m。