1.一种基于区块链的医疗信息共享认证方法,其特征在于包括如下步骤:
上传数据阶段中医生为患者诊断,并将全程的诊断结果保存到医疗机构提供的系统中,医生无法创建电子病历,只有医疗机构才能创建电子病历并将电子病历签名存储在链下数据库中,然后将电子病历在链下数据库的存储地址签名广播到区块链;
共享数据阶段中,访问者为医生和医疗机构,针对区块链和链下数据库的访问者仅为医疗机构,医生向自己所在的医疗机构提交申请,医疗机构访问区块链上的数据,得到患者电子病历在链下数据库的地址,并到链下数据库访问患者电子病历的详细数据,最终通过医疗机构内部系统发送给合法的医生;
上传数据阶段的方法如下:
医疗机构A使用对称密钥K通过对称加密算法AES加密电子病历M,得到C1=EAES(K,M);
使用属性密钥AKi通过多授权属性加密算法MA‑ABS加密对称密钥K,得到C2=EMA‑ABE(AKi,K),其中,属性密钥来自多个授权机构,属性密钥集为{AK1,...,AKN},因此密文C2={EMA‑ABE(AK1,K),...,EMA‑ABE(AKN,K)};
计算h=H(C1,C2),其中H(C1,C2)表示对C1,C2进行Hash计算,并使用签名密钥SK签名,得到签名结果S=Sig(SK,h),Sig(SK,h)表示使用秘钥SK对h进行数字签名,最终,医疗机构将{C1,C2,S}发送给链下数据库;
链下数据库服务器MS为电子病历M分配存储地址Add,使用对称密钥K1通过对称加密算法AES加密地址Add,得到C3=EAES(K1,Add);
使用属性密钥AK1i通过多授权属性加密算法MA‑ABS加密对称密钥K1,得到C4=EMA‑ABE(AK1i,K1),其中,属性密钥来自多个授权机构,属性密钥集为{AK11,...,AK1N},因此密文C4={EMA‑ABE(AK11,K1),...,EMA‑ABE(AK1N,K1)};
计算h1=H(C3,C4),其中H(C3,C4)表示对C3,C4进行Hash计算,并使用签名密钥SK1签名,得到S1=Sig(SK1,h1),最终,医疗机构将{C3,C4,S1}广播到区块链;
其中,h为医疗数据上传阶段中,医疗机构对C1、C2进行Hash计算得到的哈希值,h1为医疗数据上传阶段中,医疗机构对C3、C4进行Hash计算得到的哈希值;
医疗数据共享的方法如下:
医疗机构B在区块链广播想要访问医疗机构A上传的电子病历M,得到{C3,C4,S1},使用医疗机构B所具有的属性生成验证密钥和属性密钥,只有与链下数据库服务器具有相同属性的医疗机构才能生成正确的验证密钥VK1和属性密钥AK1i;
计算h1'=H(C3,C4)并使用验证密钥VK1验证签名S1'=V(VK1,h1'),如果签名验证通过,证明消息确实由合法的链下数据库发布,使用属性密钥AK1i解密C4得到对称密钥K1,再用对称密钥K1解密C3得到电子病历M所在链下数据库地址Add;
医疗机构B根据地址Add访问链下数据库,得到{C1,C2,S},使用医疗机构B所具有的属性生成验证密钥和属性密钥,只有与医疗机构A具有相同属性的医疗机构才能生成正确的验证密钥VK和属性密钥AKi;
计算h'=H(C1,C2)并使用验证密钥VK验证签名S'=V(VK,h'),如果签名验证通过,证明消息确实由医疗机构上传,使用属性密钥AKi解密C2得到对称密钥K,再用对称密钥K解密C1得到电子病历M;
其中,h′为医疗数据共享阶段中,访问者对C1、C2进行Hash计算得到的哈希值,h1′为医疗数据共享阶段中,访问者对C3、C4进行Hash计算得到的哈希值。