欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2021105990614
申请人: 天津理工大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种基于可信计算的软件数据完整性多方共识方法,其特征在于:所述的基于可信计算的软件数据完整性多方共识方法包括按顺序进行的下列步骤:

1)创建分布式文件管理系统;软件数据提供方datan,ffer将软件数据datai,soft上传到分布式文件管理系统,计算出软件数据datai,soft对应的软件可信标识符SCIDn并存入分布式文件管理系统;同时将智能合约集M上传到区块链中,智能合约集M中包含四个合约:添加软件合约、计算标识符合约、存储标识符并验证可信计算过程合约和获取标识符合约;

2)软件数据提供方datan,offer发起调用请求,使得区块链上的智能合约集M调用可信执行环境模块Enclave,并检查可信执行环境模块Enclave的可信状态;可信执行环境模块Enclave生成可信公私钥对PKcredible,SKcredible,利用可信公钥PKcredible对上述分布式文件管理系统中的软件数据datai,soft进行加密,利用可信私钥SKcredible解密,并对解密数据进行验证,得到解密数据的软件可信标识符SCIDm;验证成功后进行可信计算,并将可信计算结果resi广播至区块链;软件数据提供方datan,offer获取可信计算结果resi后并记录,将运行链上的智能合约集M进行销毁;

3)从区块链节点中选出若干个软件数据验证Xidfm;软件数据验证人idfm验证由收集人提供的待确认的区块Bj的可信硬件信息infom是否正确,可信硬件信息infom中包含可信计算结果resi;区块Bj是由软件数据验证人idfm协商一致后生成的,其中包括软件数据提供方信息datan,offerinfo、软件数据datai,soft,软件说明explainsoft、软件在分布式文件管理系统中的地址addresssoft及可信计算结果resi;如果信息正确,软件数据验证人idfm则收集区块Bj的入口数据,并进行可用性与有效性投票,获得确认后的区块,直至达成多方共识;然后将确认后的区块Bj作为候选区块Bi,之后将候选区块Bi的信息及出口信息上传到区块链;入口数据,候选区块Bi的信息以及出口信息中均包含可信计算结果resi;

4)软件数据需求方datan,demand通过分布式文件管理系统获取所需的软件数据datai,soft并计算出对应的软件可信标识符SUIDt;然后调用智能合约集M获取区块链上的包含该软件数据datai,soft的候选区块Bi中的软件可信标识符SUIDm,之后将上述软件可信标识符SUIDt与区块链上候选区块Bi中的软件可信标识符SUIDm进行比较,如果两者相同,则表明该软件数据datai,soft是完整的,否则证明该软件数据datai,soft不完整,由此完成软件数据datai,soft的完整性校验。

2.根据权利要求1所述基于可信计算的软件数据完整性多方共识方法,其特征在于:在步骤1)中,所述的创建分布式文件管理系统;软件数据提供方datan,ffer将软件数据datai,soft上传到分布式文件管理系统,计算出软件数据datai,soft对应的软件可信标识符SCIDn并存入分布式文件管理系统的具体步骤如下:

101)创建分布式文件管理系统,此系统将存储软件数据提供方datan,offer的软件数据以及计算得到的软件可信标识符SCIDn;

102)多个软件数据提供方datan,offer分别将各自的软件数据datai,soft上传到分布式文件管理系统,每一软件数据提供方datan,offer分别利用安全散列算法1及国产哈希算法计算出软件数据datai,soft对应的标识符SUIDi,1,SUIDi,2:SUIDi,1=SHA1(datai,soft);

SUIDi,2=SM3(datai,soft);

103)将两个标识符SUIDi,1,SUIDi,2利用SM3算法形成新的标识符并在尾端添加前6个字节Chd作为校验位而得到软件可信标识符SCIDn:SCIDn=SM3(SCIDi,1,SCIDi,2)+Chd;

104)将软件可信标识符SCIDn存入分布式文件管理系统中。

3.根据权利要求1所述基于可信计算的软件数据完整性多方共识方法,其特征在于:在步骤2)中,所述的软件数据提供方datan,offer发起调用请求,使得区块链上的智能合约集M调用可信执行环境模块Enclave,并检查可信执行环境模块Enclave的可信状态;可信执行环境模块Enclave生成可信公私钥对PKcredible,SKcredible,利用可信公钥PKcredible对上述分布式文件管理系统中的软件数据datai,soft进行加密,利用可信私钥SKcredible解密,并对解密数据进行验证,得到解密数据的软件可信标识符SCIDm;验证成功后进行可信计算,并将可信计算结果resi广播至区块链;软件数据提供方datan,offer获取可信计算结果resi后并记录,将运行链上的智能合约集M进行销毁的具体步骤如下:

201)软件数据提供方datan,offer发起请求调用使得区块链上的智能合约集M调用可信执行环境模块Enclave;

202)软件数据提供方datan,offer将应用程序代码、软件数据datai,soft全部复制到可信执行环境模块Enclave中;

203)软件数据提供方datan,offer将可信执行环境模块Enclave加载到内存中;

204)软件数据提供方datan,offer从可信执行环境模块Enclave中获取签名公钥Spk0、度量值Enclavevalue,从而得到SECS结构:签名公钥Spk0、度量值Enclavevalue、软件唯一标识符SUIDn;

205)软件数据提供方datan,offer从可信执行环境模块Enclave中获取公钥Spk1、Enclave属性Enclavea、签名者身份Sigi,从而得到EINITTOKEN结构:公钥Spk1、Enclave属性Enclavea、签名者身份Sigi;

206)软件数据提供方datan,offer检查EINITTOKEN结构是否允许执行可信执行环境模块Enclave,如允许,使用公钥Spk1进行身份验证;

207)软件数据提供方datan,offer将SIGSTRUCT结构中的MRENCLAVE与SECS结构、EINITTOKEN结构中的对应属性值进行匹配,如果匹配成功则说明可信执行环境模块Enclave的执行过程是可信的;

208)软件数据提供方datan,offer发出软件数据datai,soft使用请求后,进行可信计算:TC(datai,soft);

209)可信执行环境模块Enclave生成可信公私钥对PKcredible,SKcredible,并将可信公钥PKcredible发送给软件数据提供方datan,offer,然后使用可信公钥PKcredible对软件数据datai,soft进行加密,获得加密数据Encryp‑Data0:Encryp‑Data0=Encry(datai,soft,PKcredible);

210)软件数据提供方datan,offer用个人私钥SKp对上述加密数据签名后获得签名加密数据Message0并上传至可信执行环境模块Enclave:Message0=Sign(SKp,Encryp_Data0);

211)可信执行环境模块Enclave收到签名加密数据Message0后,使用区块链上软件数据提供方datan,offer的公钥PKoffer验证签名并用可信私钥SKcredible进行解密,获得解密数据Decryp_Data:

Decryp_Data=Decry(Message,PKoffer,SKcredible);

212)将上述解密数据Decryp_Data的软件可信标识符SCIDm与软件数据提供方datan,offer在分布式文件管理系统上的软件可信标识符SCIDn进行比较计算,获得比较计算结果Is_Avail:

Is_Avail=Integrity(SUIDn,SUIDm);

213)可信执行环境模块Enclave将比较计算结果Is_Avail使用软件数据提供方datan,offer的个人公钥PKp进行加密而获得可信计算结果resi,然后将可信计算结果resi返回软件数据提供方datan,offer后将运行链上的智能合约集M进行销毁:resi=Encry(Is_Avail,PKp);

214)若步骤212)中解密数据Decryp_Data的软件可信标识符SCIDm与软件数据提供方datan,offer在分布式文件管理系统上提供的软件可信标识符SCIDn相同,则在可信计算结果resi中存入解密数据Decryp_Data的软件可信标识符SCIDm,用于共识过程。

4.根据权利要求1所述基于可信计算的软件数据完整性多方共识方法,其特征在于:在步骤3)中,所述的从区块链节点中选出若干个软件数据验证人idfm;软件数据验证人idfm验证由收集人提供的待确认的区块Bj的可信硬件信息infom是否正确,可信硬件信息infOm中包含可信计算结果resi;区块Bj是由软件数据验证人idfm协商一致后生成的,其中包括软件数据提供方信息datan,offerinfo、软件数据datai,soft,软件说明explainsoft、软件在分布式文件管理系统中的地址addresssoft及可信计算结果resi;如果信息正确,软件数据验证人idfm则收集区块Bj的入口数据,并进行可用性与有效性投票,获得确认后的区块,直至达成多方共识;然后将确认后的区块Bj作为候选区块Bi,之后将候选区块Bi的信息及出口信息上传到区块链;入口数据,候选区块Bi的信息以及出口信息中均包含可信计算结果resi的具体步骤如下:

301)从区块链节点中选出若干个软件数据验证人idfm;

302)软件数据验证人idfm验证由收集人提供的待确认的区块Bj的可信硬件信息infom是否正确,以防止软件数据验证人idfm进行非法行为;其中待确认的区块Bj指未构建的区块;可信硬件信息infom包含:此区块的可信状态、可信计算结果resi;区块Bj是由软件数据验证人idfm协商一致后生成的,其中包括软件数据提供方信息datan,offerinfo、软件数据datai,soft,软件说明explainsoft、软件在分布式文件管理系统中的地址addresssoft及可信计算结果resi;

303)如果可信硬件信息infom正确,软件数据验证人idfm则收集待确认的区块Bj的入口数据,包括可信计算结果resi,然后进行可用性与有效性投票,直至达成多方共识,由此完成对区块Bj的确认;

304)软件数据验证人idfm将确认后的区块Bj作为候选区块Bi,然后将候选区块Bi的信息及出口信息上传至区块链;其中候选区块Bi的信息包括:区块头headerc、其他信息egressc,可信计算结果resi;出口信息包括:区块头headerc,、其他信息egressc。

5.根据权利要求1所述基于可信计算的软件数据完整性多方共识方法,其特征在于:在步骤302)中,所述的软件数据验证人idfm验证收集人提供的待确认的区块Bj的可信硬件信息infom的具体步骤如下:

30201)软件数据验证人idfi,m利用提名权益证明算法(Nominated Proof of Stake,简称NPOS算法)对待确认的区块Bj的可信硬件信息infom进行验证;

30202)假设所有软件数据提供方datan,offer都清楚负责第i个区块和第i+1个区块的软件数据验证人idfm的分组情况,将第i个区块的所有软件数据验证人idfi,m作为一个小组,确保第i个区块中至少有一个软件数据验证人idfi,m;

30203)将收集人cps提供的某一区块作为待确认的区块Bj,检查待确认的区块Bj的正确性,以防止恶意收集人cps将非法或难计算的区块提供给软件数据验证人idfm;其中收集人cps负责收集软件数据datai,soft,并将该软件数据datai,soft打包成区块后提供给软件数据验证人idfm;

30204)若收集人cps提供的待确认的区块Bj不正确,则从手续费中扣除罚金Ccon作为惩罚,其中罚金Ccon由确认区块时间t0、区块大小size0和收集人cps应得手续费cash’决定:cash1=cash’‑Ccon

其中,cash1表示收集人cps实得手续费;

30205)检查软件数据验证人idfm是否做出过不合法性验证行为:包括签名了不合法的区块,不处理出口信息中被投票为已生效的信息或不参与到多方共识中;

30206)若软件数据验证人idfm做出过非法或投票状态不一致的行为将受到惩罚:cash2=cash’‘×0.5

其中,cash2表示软件数据验证人idfm实得费用,cash’‘表示软件数据验证人idfm的抵押费用。

6.根据权利要求1所述基于可信计算的软件数据完整性多方共识方法,其特征在于:在步骤303)中,所述的软件数据验证人idfm收集待确认的区块Bj的入口数据,包括可信计算结果resi,然后进行可用性与有效性投票,直至达成多方共识,由此完成对区块Bj的确认的具体步骤如下:

30301)第i个区块的软件数据验证人idfi,m收集作为待确认的区块Bj的第i个区块B0的入口数据,包括可信计算结果resi,先进行可用性投票,如果入口数据完好,则投票为“是”、否则为“不是”;然后进行有效性投票:如果可信计算结果resi有效,则投票为1,表示“是”,否则投票为0,表示“不是”;第i个区块B0的所有软件数据验证人idfi,m在一定时间中都必须投票;

30302)根据下述条件判断是否达成共识:至少三分之二的软件数据验证人idfi,m投票为“1”,并且需要超过三分之一的软件数据验证人idfi,m对出口信息egressc的可用性与否投票为“是”;

30303)若达成共识,完成对第i个区块B0的确认;否则重新选出第i个区块的软件数据验证人idfi,m并再次进行多方共识过程。

7.根据权利要求1所述基于可信计算的软件数据完整性多方共识方法,其特征在于:在步骤304)中,所述的软件数据验证人idfm将确认后的区块Bj作为候选区块Bi,然后将候选区块Bi的信息及出口信息上传至区块链的具体步骤如下:

30401)软件数据验证人idfi,m将确认后的区块Bj作为候选区块Bi,然后将候选区块Bi的信息 上传至区块链;

30402)软件数据验证人idfi,m发送候选区块Bi的出口信息exinfoc:exinfoc=(headerc,egressc)。