1.一种基于区块链的供应链物流数据安全共享方法,其特征在于,包括以下方法:由Fabric‑CA中心产生带有用户属性的用户私钥密文,并为用户颁发用户证书,所述用户包括数据请求者和数据提供者,具体包括:用户向Fabric‑CA中心发送注册申请信息,其中所述注册申请信息包括用户身份标识Id以及用户属性A;
Fabric‑CA中心收到注册申请信息后验证注册申请信息的合法性;
验证成功后Fabric‑CA中心根据身份标识Id,使用加密算法生成用户的工作密钥对(, ),其中 为用户的工作公钥, 为用户的工作私钥;
根据用户属性A和用户的工作公钥 ,生成用户属性私钥对应的密文 ;
Fabric‑CA中心生成用户的身份证书,并使用其自身的私钥 对所述用户的身份证书进行签名;
Fabric‑CA中心向用户返回用户证书信息以及用户属性私钥对应的密文 ,即用户私钥密文;
将供应链物流数据按照指定时间和指定区域的访问策略进行加密,具体包括:输入系统公钥PP、待上链的数据M以及与访问策略相关联的访问控制结构P,生成加密密文 ,表示为 ;
将加密过的供应链物流数据打包上传至区块链;
所述供应链物流数据成功上链后,数据请求者根据区块链中数据的地址值对所需数据进行请求,并通过验证所述数据请求者的属性判断是否满足访问策略,具体包括:数据请求者向拥有供应链物流数据资源的数据拥有者发送访问请求,并通过资源中的策略执行点将请求转发给区块链中的上下文处理器;
区块链中的上下文处理器向策略管理点发送策略查询请求,策略管理点在请求中提取权限转移策略事务链接,并在区块链中检索与此链接相关的权限策略转移事务;
策略管理点整合检索到的权限策略转移事务数据与原始访问请求,生成一个标准的访问策略,并返回给授权系统中的上下文处理器;
上下文处理器请求策略信息点检索策略中的相关属性;将获取到的相关属性嵌入到原始访问请求中生成新的请求,并转发给策略判决点,由策略判决点对用户的访问权限进行评估,并将评估结果返回给策略执行点,由策略执行点执行策略;
若验证共享请求通过,数据使用者将用户私钥密文解密后得到自身的私钥,并利用自身的私钥对数据进行解密,获取数据,即完成数据共享过程;
数据使用者利用私钥对数据解密的过程具体包括:
其中,输入密文 、用户密钥 以及系统公钥
PP,属性集合A满足访问策略,算法自动解密密文并获得相应的明文数据M。
2.根据权利要求1所述的一种基于区块链的供应链物流数据安全共享方法,其特征在于,所述由Fabric‑CA中心产生带有用户属性的用户私钥密文之前还包括对策略属性基加密系统初始化,具体步骤包括输入安全参数λ,输出系统公钥PP和系统主密钥MSK,表示为。
3.根据权利要求1所述的一种基于区块链的供应链物流数据安全共享方法,其特征在于,所述加密算法包括RSA非对称加密算法、DES加密算法或者AES加密算法。
4.根据权利要求1所述的一种基于区块链的供应链物流数据安全共享方法,其特征在于,所述与访问策略相关联的访问控制结构包括第一数据提供者按照其所需的时间限制制定出第一访问策略,第二数据提供者根据供应链中的地址信息规划出物流配送路线的区域限制制定出第二访问策略。
5.根据权利要求1所述的一种基于区块链的供应链物流数据安全共享方法,其特征在于,所述将加密过的数据打包上传至区块链的具体步骤包括:记账节点收录交易,按链式数据结构将加密后的供应链物流数据打包成区块;
共识算法驱动各节点验证新区块里的交易,确保计算出一致的结果;
验证通过后,执行链码生成的背书响应,在收到足够的背书响应以后,将交易进行排序打包生成区块;
将区块广播到所有节点,每个区块链节点都存储一个完整的区块数据副本。
6.根据权利要求5所述的一种基于区块链的供应链物流数据安全共享方法,其特征在于,所述共识算法中各节点对交易的验证包括对签名交易的标识、交易中背书人的签名以及满足相应链码的命名空间的背书策略进行验证。