1.一种基于函数加密的隐私安全数据共享方法,其特征在于:所述基于函数加密的隐私安全数据共享方法包括按顺序进行的下列步骤:
1)系统初始化阶段:
在本阶段中,云服务提供商设置全局安全参数,并作为参数调用函数加密算法FE中的初始化子算法,生成整个系统的主公钥Pk和主私钥Sk;随后,部署智能合约SC,并调用其中的Init函数公开主公钥Pk;
2)数据上传阶段:
数据所有者从智能合约SC中读取主公钥Pk,并运行函数加密算法FE中的加密子算法对原始数据进行加密,随后对加密数据进行哈希运算,将加密后的数据上传至云服务提供商进行保管;同时,将哈希值和数据描述作为参数调用智能合约SC中的Upload函数,完成数据上传;
3)数据访问阶段:
数据使用者通过浏览数据描述,选定想要获取的数据;随后,将数据处理方式F和用于加密数据处理结果的公钥Upk作为参数调用智能合约SC中的Require函数,等待数据处理结果返回;
4)密钥派生阶段:
云服务提供商从智能合约SC中读取数据使用者上传的数据处理方式F,并运行函数加密算法FE中的密钥派生子算法为数据使用者生成专属的密钥Dk,并用公钥Upk对密钥Dk进行加密;随后调用智能合约SC中的Datakey函数,上传加密后的密钥Dk;
5)数据处理结果解密阶段:
数据使用者获取到加密的密钥Dk后,或选择从云服务提供商处获取加密数据,自己运行函数加密算法FE中的解密子算法进行解密,或直接委托云服务提供商进行解密,并传回数据处理结果。
2.根据权利要求1所述的基于函数加密的隐私安全数据共享方法,其特征在于:在步骤
1)中,所述系统初始化的方法如下:
λ l
101)云服务提供商选取全局安全参数l,l;
λ l
102)云服务提供商运行函数加密算法FE中的初始化子算法(l ,l),生成主公钥及主私钥(Pk,Sk);
103)云服务提供商调用智能合约SC中的Init函数公开主公钥Pk,触发事件Initial。
3.根据权利要求1所述的基于函数加密的隐私安全数据共享方法,其特征在于:在步骤
2)中,所述数据上传的方法如下:
201)数据所有者从步骤103)触发的事件Initial中获取主公钥Pk;
202)数据所有者运行函数加密算法FE中的加密子算法(Pk,x),对自己的原始数据x进行加密,得到密文Ct;
203)数据所有者对密文Ct进行哈希运算,得到哈希密文HashCt,将密文Ct上传给云服务提供商;
204)数据所有者以哈希密文HashCt和数据描述为参数,调用智能合约SC中的Upload函数,完成数据上传。
4.根据权利要求1所述的基于函数加密的隐私安全数据共享方法,其特征在于:在步骤
3)中,所述数据访问的方法如下:
301)数据使用者浏览智能合约SC中的数据描述,选定所需要的数据,并记录数据的哈希值;
302)数据使用者确定数据处理方式F,并生成公钥Upk;
303)数据使用者以数据处理方式F,公钥Upk,以及选定数据哈希值作为参数调用智能合约SC中的Reuqire函数,触发事件Newrequire,请求数据。
5.根据权利要求1所述的基于函数加密的隐私安全数据共享方法,其特征在于:在步骤
4)中,所述密钥派生的方法如下:
401)云服务提供商从步骤303)触发的事件Newrequire获取数据处理方式F、公钥Upk以及所需数据的哈希值;
402)云服务提供商运行函数加密算法FE中的密钥派生子算法(Sk,F)派生出密钥Dk;
403)云服务提供商使用公钥Upk对密钥Dk进行加密;
404)云服务提供商调用智能合约SC中的Datakey函数,触发事件Finished,上传加密后的密钥,表示数据共享完成。
6.根据权利要求1所述的基于函数加密的隐私安全数据共享方法,其特征在于:在步骤
5)中,所述数据处理结果解密的方法如下:
501)数据使用者从步骤404)触发的事件Finished中获取加密后的密钥Dk;
502)数据使用者选择是自行解密还是委托云服务提供商进行解密;
503)如数据使用者选择自行解密,则向云服务提供商请求加密数据Ct;
504)数据使用者对加密数据Ct进行哈希计算,并与智能合约SC中记录的哈希密文HashCt进行对比,以确定是否一致;
505)数据使用者运行函数加密算法FE中的解密子算法(PK,Ct,Dk),获取数据处理结果F(x);
506)如数据使用者委托云服务提供商进行解密,数据使用者使用公钥Upk对应的私钥Usk对加密后的密钥Dk进行数字签名Sig,并将数字签名Sig和公钥Upk发送给云服务提供商;
507)云服务提供商则运行函数加密算法FE中的解密子算法(PK,Ct,Dk),然后将公钥Upk加密后的数据处理结果F(x)传给数据使用者。