[发明专利]区块链密钥分层管理方法有效
| 申请号: | 201910591293.8 | 申请日: | 2019-07-02 |
| 公开(公告)号: | CN110300112B | 公开(公告)日: | 2022-05-10 |
| 发明(设计)人: | 郑丽娟;李兆轩;胡畅霞;刘豫晋;张宇;周文峰;毛志俊 | 申请(专利权)人: | 石家庄铁道大学 |
| 主分类号: | H04L9/40 | 分类号: | H04L9/40;H04L9/32;H04L9/30;H04L9/08 |
| 代理公司: | 石家庄轻拓知识产权代理事务所(普通合伙) 13128 | 代理人: | 王占华 |
| 地址: | 050043 河*** | 国省代码: | 河北;13 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 区块 密钥 分层 管理 方法 | ||
1.一种区块链密钥分层管理方法,其特征在于包括如下步骤:
初始化区块链系统中的用户口令pw、登录凭证uid,口令密钥pwkey,主密钥mastkey以及主密钥密文mastkeyciper;
生成用户私钥prikey,用户公钥pubkey,密钥文件keyfile以及用户私钥密文prikeyciper;
对文件加密密钥filekey,文件file,文件密文fileciper,文件加密密钥密文filekeyciper以及上传文件fileupload进行分层管理;
共享相应的文件,完成区块链密钥分层管理;
所述方法还包括口令恢复:
当用户首次注册时,会将口令分散加密存储在可信赖的区块链节点上,以便口令恢复时使用,口令分散存储的过程如下:
1)用户本地客户端将用户的口令拆分成n个子口令pw→(pw1,pw2,...,pwn),其中n≥1;
2)由于所有人都可查看区块链上的信息,所以为了保护口令要对子口令加密才能存储;用户利用其生物特征B,使用现有的模糊提取器生成参数公开参数P和秘密参数R,公式为:Gen(B)→(P,R);
3)将秘密参数R的哈希值作为用户口令保护的私钥sk1=H(R),生成用户口令保护公私钥对(sk1,pk1)=(h(R),h(R)·G);
4)使用用户口令保护公钥pk1对由用户口令拆分后的子口令进行分组加密得到密文组C,记为(C1,C2,......,Cn),其中当n=1时,即利用用户口令保护公钥pk1对用户口令整体进行加密,是分组加密的特殊形式;
5)用户本地客户端将公开参数P,Ci和pk1进行分组打包生成n个秘密串,记为(P,Ci,pk1),其中i=1,2,....,n(n≥1);
6)用户本地客户端通过区块链客户端打包好的n个秘密串上传到n个可信赖的区块链节点上,并将节点的Blockhash和txhash记录下来;
当用户恢复口令时,将之前存在区块链节点当中的口令备份下载到本地客户端,然后进行恢复,口令恢复的过程如下:
1)用户本地客户端从之前可信赖的区块链节点中选择至少t个节点,根据之前存储的Blockhash和txhash通过区块链客户端将节点上的秘密串(P,Ci,pk1)下载到本地客户端;
2)利用公开参数P以及用户生物特征B'还原秘密参数R',公式为Rep(P,B')→R';由模糊提取器的概念,若生物特征B'和原始生物特征B的distance(B,B')<s,则前后生成的R'=R,即模糊提取值相同;其中distance()为相似度距离函数,s为模糊提取器规定好的错误极限值;
3)根据得到的秘密参数R',计算其哈希值得到用户口令保护的私钥sk1'=H(R');
4)从t个秘密串当中提取密文组C',记为(C1,C2,......,Ct);利用得到的用户口令保护私钥sk1'对密文组进行分组解密,得到t个子口令其中1≤i≤t;
5)利用得到的t个子口令pwi',运用Lagrange插值法恢复出用户用户口令pw'←(pw1',pw2',...,pwt');当B'和B满足distance(B,B')<s时,R'=R,sk1'=sk1并且pwi'=pwi,则pw'=pw;
所述方法还包括密更新步骤:
口令密钥更新流程如下:
1)将原口令密钥命名中的Status标签改为“invalid”;
2)将用户口令重新分割加密存储在区块链节点中;
3)对主密钥和用户的私钥进行重新加密,生成新的密钥文件;新密钥文件的Version标签在原来的Version标签上加1,原密钥文件的Status标签改为“invalid”,将新旧密钥文件通过区块链客户端上传到区块链网络中;
4)在本地客户端中修改命名表中的相应信息;
主密钥的更新流程如下:
1)将原主密钥命名中的Status标签改为“invalid”,新密钥的Version标签在原来的Version标签上加1;
2)将原主密钥加密过的文件加密密钥重新进行加密,重新与文件密文拼接生成上传文件,将原来的上传文件的Status标签改为“invalid”,新的上传文件的Version标签在原来的Version标签上加1,将新旧上传文件通过区块链客户端上传到区块链网络中;
3)在本地客户端中修改命名表中的相应信息;
用户公私钥的更新流程如下:
1)利用椭圆曲线算法生成新的公私钥对,将原公钥命名中的Status标签改为“invalid”,新公钥的Version标签在原来的Version标签上加1,并将新旧公钥上传到区块链节点上;
2)利用口令密钥将用户的私钥进行加密,与主密钥的密文拼接生成密钥文件,将原来的密钥文件的Status标签改为“invalid”,新的密钥文件的Version标签在原来的Version标签上加1,将新旧密钥文件通过区块链客户端上传到区块链网络中;
3)在本地客户端中修改命名表中的相应信息;
文件加密密钥的更新流程如下:
1)重新生成文件加密密钥,将原文件加密密钥命名中的Status标签改为“invalid”,新文件加密密钥的Version标签在原来的Version标签上加1;
2)利用新的文件加密密钥加密文件得到新的文件密文,利用主密钥加密新的文件加密密钥生成新的文件加密密钥密文,将两者拼接生成新的上传文件,将原上传文件命名中的Status标签改为“invalid”,新上传文件的Version标签在原来的Version标签上加1,并将新旧上传文件上传到区块链节点上;
3)在本地客户端中修改命名表中的相应信息;
生成其余密钥的方法如下:
利用椭圆曲线加密算法生成用户私钥prikey和用户公钥pubkey,用户私钥prikey存储在客户端本地,用户公钥pubkey通过区块链客户端上传到区块链节点上;
然后使用口令密钥pwkey加密用户私钥prikey得到私钥的密文prikeyciper=Encpwkey(prikey);
用户的主密钥mastkey和口令密钥pwkey在加密的层次上是同一层,在存储的时候拼接在一起得到密钥文件keyfile=mastkeyciper||prikeyciper,并通过区块链客户端将密钥文件keyfile上传到区块链节点上;
当本地客户端生成用户私钥prikey,或用户公钥pubkey和密钥文件keyfile经过上链存储在区块链节点上后,向本地命名表记录中添加相应的命名记录;
反之,用户可以根据本地的命名表记录的密钥文件keyfile的Blockhash和txhash通过区块链客户端将密钥文件keyfile下载到本地客户端;将keyfile拆分得到主密钥密文mastkeyciper和用户私钥密文prikeyciper,再利用口令密钥pwkey对两者进行解密得到主密钥mastkey=Decpwkey(mastkeyciper)和用户私钥prikey=Decpwkey(prikeyciper)。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于石家庄铁道大学,未经石家庄铁道大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910591293.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:页面显示方法、装置、终端设备和服务器
- 下一篇:数据传输方法及装置、存储介质





