1.基于联盟链的汽车维修数据存储方法,其特征在于:所述数据存储方法包括如下步骤:步骤1,初始化系统,整个系统由身份认证节点CA,客户端节点,代理重加密节点,以及参与用户组成,联盟链中仅保存相关数据索引信息,对于真实数据内容,则保存在联盟链的云存储服务器上;
步骤2,身份认证节点CA根据参与用户在整个系统中的角色赋予不同的权限,并为参与用户颁发数字证书,同时生成公共信息;
步骤2具体实现步骤为:
步骤2-1,选择拥有政府信用背书的完全可信节点身份认证节点CA,作为联盟链中的身份服务节点,负责发放和管理用户及组织的身份;
步骤2-2,参与共识的节点由身份认证节点CA授予权限,参与P-DPoS算法的执行,称之为身份认证节点;
步骤2-3,客户端节点分为全量级客户端与轻量级客户端,用户通过轻量级客户端节点上传维修数据,并送至身份认证节点验证处理,用户通过全量级客户端节点查询部分可公开信息;客户端节点无参与共识的权限;
步骤2-4,代理重加密节点负责代理重加密算法的执行,具体由部署在代理重加密节点上的智能合约自动执行;
步骤2-5,各个参与用户通过客户端节点使用OpenSSL工具集生成密钥对,对于任一用户x而言,密钥对为(skx,vkx),其中skx为私钥,vkx为公钥;用户x执行CSR指令,得到证书certx,此外,定义参与用户x的客户端节点的索引indx=vkx mod 2k,其中k=Bit(vkx)DIV
4;
步骤2-6,身份认证节点CA为每个身份认证节点生成一个共识积分Cs(i),为每个indx生成一个安全指数indx_Sr;
步骤3,当汽车发生事故后,用户综合整理各信息;
步骤3具体实现步骤为:
步骤3-1,用户x在事故发生后,整理以下基本信息:保险购买凭证,车辆行驶证,统计为相关凭证信息Prx,个人身份信息IDx;
步骤3-2,整理以下证明信息:附有交警数字签名的事故鉴定书,附有保险公司工作人员数字签名的查勘报告,统计为Rpx;
步骤3-3,整理以下多媒体信息:行车记录仪的视频信息,事故现场照片信息,统计为Mdx;
步骤3-4,整理以下维修信息:维修网点,维修时间,维修部件,维修费用凭证,统计为Rex,附有维修网点数字签名;同时生成关键字Key,指示部分公开维修数据,供其他用户检索;
步骤4,用户x整理完成的信息msgx经客户端节点提交至身份认证节点;
步骤5,用户信息msgx被送至各身份认证节点以及代理重加密节点,经身份认证节点验证后,执行P-DPoS算法,将相关数据写入联盟链中;
步骤5具体实现步骤为:
步骤5-1,各身份认证节点接收到msgx后,将自己的公钥vki传至代理重加密节点,由代理重加密节点上的智能合约执行代理重加密算法,具体如下:步骤5-1-1,代理重加密节点将接收到的vki反馈至indx,indx上的智能合约生成密钥RKskx→vki,并将密钥送至代理重加密节点;
步骤5-1-2,代理重加密节点用x生成的密钥RKskx→vki将密文Ct转化为indi的私钥能够解密的密文Cti,其中代理重加密节点只提供转化服务,无法获取明文;
步骤5-1-3,代理重加密节点将转换的密文送至indi,indi调用智能合约上的getTrans()函数解密验证;并在验证完成后调用upTrans()函数改变msgx状态,使其成为合法msgx;
步骤5-2,P-DPoS共识算法选举产生授权代表,P-DPoS共识算法执行如下:步骤5-2-1,每个拥有共识积分Cs(i)的身份认证节点都需要把票投给信任的身份认证节点,或投给自身;经过一轮投票后,拥有票数的最高的101个节点轮流记账;除去这101个授权代表外,还需选举出一定数量的备选代表,得票数按公式 计算;
步骤5-2-2,如果101个记账节点中的某个节点错过签署新的区块,则更新其共识积分Cs(i),更新后的Cs(i)=100-α(Δt)×Δt,Δt∈(0,10),α是延迟时间Δt的线性函数;
步骤5-2-3,对于Cs(i)过低的代表被投票出席;
步骤5-2-4,若有授权代表被投票出席,则从备选代表队列中选择队首节点加入到授权代表队列的末尾;
步骤5-3,授权代表以键值对key-value的形式将数据写入联盟链的区块中,一旦记录成功写入,更新记录提交方的用户x的indx_Sr;每一条记录的头部都会引用授权代表的公钥vki;区块中merkle树存储了每条密文的hash值,即为数据信息的索引,数据信息本身的实际存储地址为云存储服务器,每条数据信息带有特定时间戳;其中,存入云存储服务器的数据密文将被切分成若干个子密文;
步骤6,新的用户x’在提交数据msgx’之前,通过客户端节点根据关键字Key查询联盟链中所存储的数据;关键字Key包含以下不涉及个人身份隐私的可公开信息:维修地点La、维修部件Comp、维修价格Pr和维修时间Time,表示成Key→[La,Comp,Pr,Time];根据查询结果,用户x’选择合适的地点以合适的价格完成汽车的维修;
步骤7,用户x在提交完数据后,通过merkle root验证法进行数据完整性和保密性的确认;
步骤7及其merkle root验证法具体实现步骤为:
步骤7-1,用户将加密后的密文切分成若干个等长的子密文,数量为n,记为e(e0,e1,....,en-1);
步骤7-2,用户用随机数生成器生成n个随机数,记为r(r0,r1,....rn-1);
步骤7-3,将每个ei与ri合并,得到hashi=H(ei+ri);
步骤7-4,n个hashi作为merkle树的叶子节点,最终得到merkle root值;
步骤7-5,密文被分成n个子密文存入云存储服务器时还需要将每个hashi送至云存储服务器;
步骤7-6,如果用户想要证明其是某个数据的所有者,只需上传一个ri,如果ri与其中某个子密文合并后得到hash值能在上传的hashi表中检索到,则证明该用户是数据所有者;
步骤7-7,用户将所有的ri上传,与每个ei计算hash值,得到root值,如果该root值和merkle root值相同的话,则证明数据具有完整性;
步骤8,用户x向保险公司索赔时需要单独向保险公司公开其加密数据。
2.根据权利要求1所述的基于联盟链的汽车维修数据存储方法,其特征在于:步骤4具体实现步骤为:步骤4-1,计算用户个人基本信息Cf=ESK(Ksym,(Prx,IDx,indx_Sr)),其中Ksym为由SOK协议生成的加密密钥;再计算双重加密后的个人基本信息Cf’=EPK(vkx,Cf);
步骤4-2,计算加密后的申赔信息Ct=EPK(vkx,(Rpx,Mdx,Rex));
步骤4-3,计算用户信息msgx=Combine(Cf’,Ct,Key,indx,vkx),其中Key包含维修信息关键字,但不含任何个人隐私,其他用户无法通过Key得知indx的任何现实信息;
在上述步骤中,EPK为轻量级的公钥加密算法,ESK为对称加密算法。
3.根据权利要求1所述的基于联盟链的汽车维修数据存储方法,其特征在于:步骤8具体实现方法为:步骤8-1,用户x通过代理重加密节点将存储在云存储服务器的密文转换成保险公司私钥能解密的密文;
步骤8-2,保险公司将相关维修数据核实后获取用户x的真实身份信息;
步骤8-3,真实身份的获取通过基于身份的密钥共享体制即SOK协议完成;
步骤8-4,核实无误后,完成赔付;
步骤8-5,用户x如果需要再次向某保险公司购买保险,保险公司仅需查询其安全指数indx_Sr,根据indx_Sr划定合理的保险费用。