当前位置: 首页 > 专利查询>天津大学专利>正文

一种基于区块链的公钥分发方法技术

技术编号:19865819 阅读:149 留言:0更新日期:2018-12-22 13:45
本发明专利技术涉及一种基于区块链的公钥分发方法,包括以下步骤:第一步,用户向代理节点申请将公钥托管在区块链中;第二步,用户生成公钥私钥对,并生成公钥信息,将自己的公钥信息广播到区块链网络中;第三步,节点对收到的公钥信息进行验证,加入本地缓存;第四步,节点在生成或收到一个新的区块后,开始进行下一个区块的生成;第五步,当用户需要获取其他用户的公钥时,向区块链请求公钥信息。

【技术实现步骤摘要】
一种基于区块链的公钥分发方法
本专利技术涉及计算机信息安全领域,具体的说是一种基于区块链的公钥分发模型。技术背景在公钥密码体系中,一个难题在于如何保证用户获得的公钥和通信目标节点的公钥保持一致,也就是公钥认证问题。为了避免公钥信息被攻击者篡改,建立合适的公钥系统能够降低节点的公钥信息被篡改的风险。传统的公钥分发方案基于系统中存在的一个可信的中心节点,由可信的中心节点负责系统中的公钥的生成和分发工作。由于传统上分布式系统存在系统中难以达成一致的共识的难题,因此分布式系统在信息存储相关应用上受到很大的限制。在引入区块链的共识形成机制之后,能够给出一个较为可行的实现方式。通过区块链技术,在分布式网络中能够实现各个节点之间能够构建一个统一的公钥记录表。用户存储在公钥系统中的公钥能够有较高的抗更改性能。本专利技术通过将区块链技术运用于公钥分发环节,提出了一个分布式的公钥分发系统。
技术实现思路
本专利技术的目的是构建一个公钥系统。该方法通过区块链网络为网络中的各个节点之间建立起共识,在节点之间传递公钥信息,保证各个节点中存储的公钥信息一致。为实现上述目的,本专利技术采用以下技术方案:一种基于区块链的公钥分发方法,包括以下步骤:第一步,用户向代理节点申请将公钥托管在区块链中用户向代理节点发送请求,请求在一定时间内将公钥存储在区块链网络中的权利,代理节点在通过申请后,生成一对临时的公钥私钥对以及用户的ID,代理节点将临时公钥、用户ID、用户托管的起止时间、代理节点的ID、签名算法以及信息类型标志打包成一个信息包,利用代理节点的公钥签名后发布到网络中,代理节点将密钥对信息以及用户ID发送给请求的用户,用户在信息被区块链确认之后,发布自己的公钥;第二步,用户生成公钥私钥对,并生成公钥信息,将自己的公钥信息广播到区块链网络中用户在生成自己的密钥之后,将密钥的生效时间段、用户ID、签名算法以及信息类型标志封装成附加信息附在生成的公钥之后,生成完整的公钥信息,用户对完整的公钥信息进行签名,签名所使用的私钥为存在于区块链中的有效公钥信息对应的私钥,使得收到信息的节点能够对公钥信息进行验证;第三步,节点对收到的公钥信息进行验证,加入本地缓存当节点从网络中收到一条公钥信息时,通过附加信息中存储的签名者ID查找到用户存储于区块链中的公钥信息;通过验证签名的方式证明信息由用户自身生成;在信息通过签名验证后,节点会将公钥信息存储入本地缓存中,同时转发用户的公钥信息;第四步,节点在生成或收到一个新的区块后,开始进行下一个区块的生成节点首先对收到的区块进行验证,保证区块符合当前区块链的难度目标,并且转发符合难度目标的区块,当新收到的区块位于主链上时,将本地缓存的公钥信息进行整理,和收到的区块中的信息进行比对,将未包含在链中的公钥信息生成一颗哈希树,以上一个区块头的哈希值,区块体的哈希树根,时间戳和随机值四部分为内容生成区块头,通过调节随机值的内容,开始生成新的区块;当新区块不位于主链上时,区块链产生分叉,当新区块所在链的长度不大于于节点正在工作的链的长度时,节点只是将区块进行存储,只有当新到的链使得一个支链长度超过节点当前工作的链,成为新的主链后,才切换到新的链上进行工作,在链之间切换时,对区块的两个链进行比对,避免原有主链中存储的信息丢失;第五步,当用户需要获取其他用户的公钥时,向区块链请求公钥信息用户需要其他用户的公钥信息时,向区块链网络发起请求,区块链网络中的节点在收到请求后,在本地查找被请求用户的公钥信息,请求的报文不会被转发给其他的节点,当节点在本地查找到有效的信息时,将用户公钥信息和该信息对应的默克尔分支包装成报文返回给发起请求的用户,用户在收到信息后,对信息进行简单的验证,默克尔树的节点的值由节点的子节点通过哈希运算得到,在获得公钥信息和对应的默克尔分支之后,用户通过运算得到默克尔树根的值,通过和存储在区块头中的信息进行比较,验证传递的信息是否被更改。本专利技术由于采用以上技术方案,其具有以下优点:本专利技术采用区块链技术对分布式系统中的公钥信息进行共识产生。使得在分布式系统上建立一个公钥系统在技术上变得可行。在克服了分布式系统难以达成共识的问题之后,在分布式系统上建立公钥分发系统成为可行的概念。在克服了共识难以建立的问题后,分布式系统能够发挥相对于中心系统响应效率高,抗干扰能力强的优势。为了验证基于区块链的公钥系统所具有的安全性,通过对公钥系统中常见的问题进行模拟,以此来验证公钥系统能够对抗一些常见的攻击方式,验证了中间人攻击以及信息篡改两种常见的攻击方式难以对基于区块链的公钥系统造成威胁。附图说明图1是区块链系统存储结构的示意图图2是公钥系统工作方式的示意图。图3是攻击者篡改信息的成功率r与攻击者控制运算力占系统比例q之间的关系。具体实施方式下面通过具体实施例和附图对本专利技术作进一步的说明。本实例仅限于说明本专利技术的一种实施方法,不代表对本专利技术覆盖范围的限制。本专利技术利用区块链技术,通过将存储系统拆分到网络中的组成节点中,通过区块链网络中的节点共同承担密钥存储的职责,构建一个公钥系统。该方法通过区块链网络为网络中的各个节点之间建立起共识,在节点之间传递公钥信息,保证各个节点中存储的公钥信息一致。在保证节点之间拥有相同的公钥信息备份之后,分布式系统能够将公钥查询任务交给各个参与节点提供,用户在请求公钥信息时还可以从多个节点获取验证信息进行交叉比对。该方法包括以下步骤:步骤(1):节点向代理节点申请将公钥托管在区块链系统中。用户向代理节点发送请求,请求在一定时间内将公钥存储在区块链网络中的权利。代理节点在通过申请后,生成一对临时的公钥私钥对以及用户的ID。代理节点将临时公钥和相关的信息打包成一个信息报,利用代理节点的公钥签名后发布到网络中。公钥信息可由以下形式表示:{e,S,f(hash({e,S}),d)}。其中各个部分表示的含义如下:e代表用户的临时公钥,S代表信息报的附加信息,包括用户ID、用户托管的起止时间、代理节点的ID、签名算法以及信息类型标志。f(x,d)为用户选择的公钥签名算法,参数d为代理节点的私钥,hash(x)为系统中规定的哈希算法。代理节点将密钥对信息以及用户ID发送给请求的用户。用户在信息被区块链确认之后,可以发布自己的公钥。步骤(2):用户生成公钥私钥对,并生成公钥信息。用户将自己的公钥信息广播到区块链网络中。用户在本地生成自身的公钥私钥对。公钥私钥对的生成不需要额外的信息,用户的密钥信息不必基于用户的信息,用户和密钥的绑定问题由公钥系统的抗更改性来解决。用户的私钥信息由用户本地进行保存,不需要经过网络传输。用户在本地生成希望存储在区块链中的公钥私钥对,并在本地生成公钥信息。公钥信息的格式和临时公钥信息相似,可由以下形式表示:{ei,S,f(hash({ei,S}),dit1)}。其中各个部分表示的含义如下:i表明当前为节点的第i对密钥,其中公钥为ei,私钥为di。当节点在区块链中没有存放有效的公钥信息时,使用的密钥为从托管节点获得的临时密钥。S为附加信息,包括节点id,公钥算法,公钥生效的起止时间,是否为临时公钥等附加信息。当节点生成公钥信息之后,利用自身已经存储在区块链中的私钥对信息进行加密。f(x,d)为用户本文档来自技高网...

【技术保护点】
1.一种基于区块链的公钥分发方法,包括以下步骤:第一步,用户向代理节点申请将公钥托管在区块链中用户向代理节点发送请求,请求在一定时间内将公钥存储在区块链网络中的权利,代理节点在通过申请后,生成一对临时的公钥私钥对以及用户的ID,代理节点将临时公钥、用户ID、用户托管的起止时间、代理节点的ID、签名算法以及信息类型标志打包成一个信息包,利用代理节点的公钥签名后发布到网络中,代理节点将密钥对信息以及用户ID发送给请求的用户,用户在信息被区块链确认之后,发布自己的公钥;第二步,用户生成公钥私钥对,并生成公钥信息,将自己的公钥信息广播到区块链网络中用户在生成自己的密钥之后,将密钥的生效时间段、用户ID、签名算法以及信息类型标志封装成附加信息附在生成的公钥之后,生成完整的公钥信息,用户对完整的公钥信息进行签名,签名所使用的私钥为存在于区块链中的有效公钥信息对应的私钥,使得收到信息的节点能够对公钥信息进行验证;第三步,节点对收到的公钥信息进行验证,加入本地缓存当节点从网络中收到一条公钥信息时,通过附加信息中存储的签名者ID查找到用户存储于区块链中的公钥信息;通过验证签名的方式证明信息由用户自身生成;在信息通过签名验证后,节点会将公钥信息存储入本地缓存中,同时转发用户的公钥信息;第四步,节点在生成或收到一个新的区块后,开始进行下一个区块的生成节点首先对收到的区块进行验证,保证区块符合当前区块链的难度目标,并且转发符合难度目标的区块,当新收到的区块位于主链上时,将本地缓存的公钥信息进行整理,和收到的区块中的信息进行比对,将未包含在链中的公钥信息生成一颗哈希树,以上一个区块头的哈希值,区块体的哈希树根,时间戳和随机值四部分为内容生成区块头,通过调节随机值的内容,开始生成新的区块;当新区块不位于主链上时,区块链产生分叉,当新区块所在链的长度不大于于节点正在工作的链的长度时,节点只是将区块进行存储,只有当新到的链使得一个支链长度超过节点当前工作的链,成为新的主链后,才切换到新的链上进行工作,在链之间切换时,对区块的两个链进行比对,避免原有主链中存储的信息丢失;第五步,当用户需要获取其他用户的公钥时,向区块链请求公钥信息用户需要其他用户的公钥信息时,向区块链网络发起请求,区块链网络中的节点在收到请求后,在本地查找被请求用户的公钥信息,请求的报文不会被转发给其他的节点,当节点在本地查找到有效的信息时,将用户公钥信息和该信息对应的默克尔分支包装成报文返回给发起请求的用户,用户在收到信息后,对信息进行简单的验证,默克尔树的节点的值由节点的子节点通过哈希运算得到,在获得公钥信息和对应的默克尔分支之后,用户通过运算得到默克尔树根的值,通过和存储在区块头中的信息进行比较,验证传递的信息是否被更改。...

【技术特征摘要】
1.一种基于区块链的公钥分发方法,包括以下步骤:第一步,用户向代理节点申请将公钥托管在区块链中用户向代理节点发送请求,请求在一定时间内将公钥存储在区块链网络中的权利,代理节点在通过申请后,生成一对临时的公钥私钥对以及用户的ID,代理节点将临时公钥、用户ID、用户托管的起止时间、代理节点的ID、签名算法以及信息类型标志打包成一个信息包,利用代理节点的公钥签名后发布到网络中,代理节点将密钥对信息以及用户ID发送给请求的用户,用户在信息被区块链确认之后,发布自己的公钥;第二步,用户生成公钥私钥对,并生成公钥信息,将自己的公钥信息广播到区块链网络中用户在生成自己的密钥之后,将密钥的生效时间段、用户ID、签名算法以及信息类型标志封装成附加信息附在生成的公钥之后,生成完整的公钥信息,用户对完整的公钥信息进行签名,签名所使用的私钥为存在于区块链中的有效公钥信息对应的私钥,使得收到信息的节点能够对公钥信息进行验证;第三步,节点对收到的公钥信息进行验证,加入本地缓存当节点从网络中收到一条公钥信息时,通过附加信息中存储的签名者ID查找到用户存储于区块链中的公钥信息;通过验证签名的方式证明信息由用户自身生成;在信息通过签名验证后,节点会将公钥信息存储入本地缓存中,同时转发用户的公钥信息;第四步,节点在生成或收到一个新的区块后,开始进行下一个区块的生成节点...

【专利技术属性】
技术研发人员:平鉴川刘敬浩
申请(专利权)人:天津大学
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1