基于区块链的可信通信的交互方法与流程

未命名 09-03 阅读:77 评论:0


1.本发明属于区块链通信技术领域,具体涉及基于区块链的可信通信的交互方法。


背景技术:

2.节点分布式存储身份与通信数据,每个节点都可以将整个链路上的数据全部保存至账本中,这样即便部分节点被攻击或者失效,也不会影响到整个链路上的数据,从而从根本上解决了中心化模式下的数据存储不安全问题。全部区块数据由联盟成员分布式存储,普通节点可选择性存储区块头信息,以减少存储量。
3.如图1是区块链的一个区块结构,其中区块主要被划分成两个部分:区块头、区块体。区块头中包括时间戳:表示区块生成的时间;当前区块哈希值:表示整个区块数据的哈希值;父区块哈希值:表示上一个区块的哈希值。区块体主要包括元数据哈希值构成的merkel树,每个元数据(如图中元数据1至元数据8)可以是一条隐私消息数据,包括发送者did、接收者did、时间戳和消息哈希地址等。计算每条消息元数据的哈希值,得到如图中hash1至hash8、hash34、hash56、hash78等,并最终得到整个区块提的根哈希值hash12345678。每个元数据也可以是一个did文档信息,包括json格式的数据项及其哈希值,保证实现用户信息数据访问、快速验证的功能。
4.每个区块的大小不超过1mb。区块链的数据结构使其能够被前驱节点追踪,并影响后续节点的信息,通过加密技术来防止被人篡改,从而保障其数据的安全性与完整性。


技术实现要素:

5.本发明解决上述背景技术的技术问题,提供基于区块链的可信通信的交互方法。
6.本发明的采用如下技术方案:
7.基于区块链的可信通信的交互方法,包括如下步骤:
8.通信过程中,发送者a和接收者b同时在线或发送者a与接收者b非好友关系,
9.首次通信需要建立好友关系,a向b申请好友的过程主要分为三次握手:
10.(1)申请信息:a生成好友申请报文m,对报文m进行摘要计算h1=h(m),之后通过使用a的私钥ska加密得到cs=enc(ska,h1),并加上a的身份标识dida,得到m1=m||cs||dida,然后使用a的私钥ska加密,作为a的数字签名sa=sig(ska,m1),将上述内容打包并标识为“1”发送给b;
11.(2)第一次握手:通过智能合约,b收到a发送的消息,使用b的私钥解密获取m1=m||cs||dida,获取dida后通过区块链验证对方身份是否合法,合法就获取对方的公钥pka,对m进行摘要算法得到h2=h(m),解密验证签名信息h1=h2是否成立,成立则选择是否同意申请;
12.如果拒绝,将生成拒绝申请的备注信息m1,使用skb签名后通过pka加密,将其发送给a,并标识为“2”;
13.如果同意,将生成同意申请的备注信息m2,并用a的公钥pka加密得到m2=enc(pkb,
m2),使用自己的私钥skb加密m2作为签名sb=sig(skb,m2),然后将(m2,sb)打包,标识为“2”,然后发送给a,同时b可将a的公钥及did等信息保存至本地,或选择上传至ipfs网络个人数据库。
14.(3)第二次握手:a通过智能合约接收到b发来的标记为“2”的应答信息,与上述过程相同,确认签名无误后,判断对方是否同意了自己的申请;
15.如果对方拒绝就停止操作;
16.如果对方同意,进行解密dec(pkb,sb)和dec(skb,m2)验证签名的合法性。随机生成对称密钥k,使用b的公钥pkb加密得到m3=enc(pkb,k)发送给a,标识为“3”。
17.(4)第三次握手:b通过智能合约接收到a发来的标识为“3”的消息,使用私钥skb解密获取密钥k=dec(skb,m3),将其绑定到好友a的信息中。
18.(5)双方已经结束了对称密钥的协商过程。
19.优选地,在接收者b完成最后一次握手后,其调用区块链智能合约向a发送确认信息,告诉a好友关系已经建立,可以开始通信,而a在收到这条消息后,就可以用对称密钥k进行加密通信。
20.进一步地,a在线,b不在线,通信过程如下:
21.(1)a向b发送一个消息(ipfs哈希地址),并等待b的回应;
22.(2)b的响应时间超过设定阈值,代表b未连接网络;
23.(3)此时a将消息上传ipfs的摘要地址和b的地址打包上传到区块链,交易信息经过网络共识,被写入区块链中;
24.(4)区块链中记录了b未接收的消息;
25.(5)b上线后,通过与周围节点同步区块消息,并主动搜索自己的消息,若有则解密根据消息中哈希摘要值到ipfs网络中去获取消息。
26.优选地,当节点b未在线错过a的消息时,数据保存至ipfs同时上传至区块链,并发布值网络共识;等b再次上线后,调用智能合约主动向周围节点同步b离线期间丢失的区块信息,并通过默克尔树结构快速查找属于自己的消息。
27.优选地,智能合约中的数据信息包括数据发送者身份、元数据、数字签名、数据哈希值和时间戳;消息产生并加密后通过智能合约传入ipfs存储系统,获得数据地址值,调用智能合约发起交易向接收者发送数据地址。接收者收到之后可使用智能合约向ipfs处获取消息并解密。
28.优选地,节点在本地自主生成公私钥对与did标识,并将did文档上传至区块链网络,经共识后该节点可成为区块链通信网络的合法用户。
29.本发明的有益效果是:
30.通过在基于区块链的数据通信模型中构建必要的智能合约,建立起用户和区块链之间的联系,实现整个信息的传递过程,从而确保了去中心化模式下的信息传递的稳定性和安全性。去中心化电子邮件方案中借助区块链智能合约设计了电子邮件的加密交换,将智能合约与通信结合具有成本低、安全可信的优点。
31.部署智能合约,完善通信过程,触发相应智能合约的自动执行机制实现通信数据的可靠交互,保证在去中心化的模型中消息传输的稳定性和安全性。在申请构建的区块链网络中,消息产生并加密后通过智能合约传入ipfs存储系统,获得数据地址值,调用智能合
约发起交易向接收者发送数据地址。接收者收到之后可使用智能合约向ipfs处获取消息并解密。
附图说明
32.图1为本发明的区块结构架构示意图;
33.图2为本发明的一致性共识协议过程流程图;
34.图3为本发明的上传文件到ipfs的savetextblobonipfs函数实例图;
35.图4为本发明的avetextblobonipfs函数的使用实例图;
36.图5为本发明的从ipfs读取数据实例图;
37.图6为本发明提供的公私钥对生成过程实例图;
38.图7为本发明提供的跨境数字身份架构图;
39.图8为本发明提供的身份链架构图;
40.图9为本发明提供的身份计算工作流程图;
41.图10为本发明提供的数据资产结构图;
42.图11为本发明提供的数据链架构图。
具体实施方式
43.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.实施例
45.本实施例的开发、测试的软硬件环境配置及工具如表所示:
46.开发、测试环境介绍
[0047][0048][0049]
区块设计
[0050]
节点分布式存储身份与通信数据,每个节点都可以将整个链路上的数据全部保存至账本中,这样即便部分节点被攻击或者失效,也不会影响到整个链路上的数据,从而从根本上解决了中心化模式下的数据存储不安全问题。全部区块数据由联盟成员分布式存储,普通节点可选择性存储区块头信息,以减少存储量。
[0051]
如图1是区块链的一个区块结构,其中区块主要被划分成两个部分:区块头、区块体。区块头中包括时间戳:表示区块生成的时间;当前区块哈希值:表示整个区块数据的哈希值;父区块哈希值:表示上一个区块的哈希值。区块体主要包括元数据哈希值构成的merkel树,每个元数据(如图中元数据1至元数据8)可以是一条隐私消息数据,包括发送者did、接收者did、时间戳和消息哈希地址等。
[0052]
计算每条消息元数据的哈希值,得到如图中hash1至hash8、hash34、hash56、hash78等,并最终得到整个区块提的根哈希值hash12345678。每个元数据也可以是一个did文档信息,包括json格式的数据项及其哈希值,保证实现用户信息数据访问、快速验证的功能。
[0053]
每个区块的大小不超过1mb。区块链的数据结构使其能够被前驱节点追踪,并影响后续节点的信息,通过加密技术来防止被人篡改,从而保障其数据的安全性与完整性。
[0054]
二、数据格式
[0055]
为了能够更清晰地表达出每个通信数据项的意义和功能,在数据项模型中,除了数据项编号和数据项值之外,还需要发送一些其他的数据项属性,如数据项类型、时间戳、发送者did、接收者did,ipfs文件地址等,其中,必要数据属性包含在数据包中,数据格式如表所示,主要包括数据发送者身份did、元数据m、数字签名s、数据哈希值h(m)和时间戳t。数据格式如表2所示。
[0056]
表2数据格式
[0057][0058]
三、智能合约
[0059]
通过在基于区块链的数据通信模型中构建必要的智能合约,建立起用户和区块链之间的联系,实现整个信息的传递过程,从而确保了去中心化模式下的信息传递的稳定性和安全性。去中心化电子邮件方案中借助区块链智能合约设计了电子邮件的加密交换。证明将智能合约与通信结合具有成本低、安全可信的优点。在本模型中主要涉及到以下几个智能合约。
[0060]
(1)数据发送与接收智能合约
[0061]
在本实施例构建的区块链网络中部署智能合约,完善通信过程,触发相应智能合约的自动执行机制实现通信数据的可靠交互,保证在去中心化的模型中消息传输的稳定性和安全性。在本实施例构建的区块链网络中,消息产生并加密后通过智能合约传入ipfs存储系统,获得数据地址值,调用智能合约发起交易向接收者发送数据地址。接收者收到之后可使用智能合约向ipfs处获取消息并解密。
[0062]
数据发送智能合约中,应将消息数据存入ipfs后得到地址message_addr_hash,将其作为消息数据发送给接收者,数据发送智能合约可表示为如下过程。
[0063]
[0064]
由于消息被分布式存储于ipfs,接收消息需要使用json解析器读取oraclize智能合约返回消息。
[0065][0066]
(2)身份可信验证智能合约
[0067]
利用区块链可编程智能合约进行数字身份的声明、发布、认证和授权的架构。由于智能合约具有可编程、不可篡改、状态同步、公开透明的特性,用户与身份提供商之间很容易构建起分布式身份声明与身份链上核验与发布的数字身份体系,而且由于智能合约的不可篡改特性,合约地址可以很方便地用来提供身份验证的过程协助,便于数字身份的管理。解决不同用户之间对身份合法性判断的一种有效方式。
[0068]
身份可信验证的主要过程为:通过对方did向did解析器获取did文档中公钥pk,用pk解密消息中经数字签名后的密文,验证对方身份真实性。
[0069]
(3)信息通知智能合约
[0070]
传统中心化的通信系统中,由中心服务器转发至通信对方,在基于区块链的通信模式中,由于没有中心化服务器,消息收发时的通知应由区块链上自动执行的代码来执行,当发送者将消息发送给接受者,智能合约自动执行消息通知功能,向接受者发送提醒,以便完成通信的过程。
[0071]
[0072][0073]
四、联盟链设计
[0074]
根据现有开源框架,可基于以太坊实现联盟链的实现与接入。在联盟链中,节点的加入均需通过联盟成员认证,因此,节点不采用算力竞争的方式获得记账权。拜占庭容错算法有较好的性能,为增强共识效率,在现有模型基础上,本实施例采用改进的实用拜占庭容错算法,主要思想如下。
[0075]
由于在pbft算法中,主节点选取缺乏可信性,为了避免出现恶意节点,本实施例采用的pbft算法增加了对主节点的选取过程。
[0076]
每个节点可根据网络中其他节点的表现进行评分,得到一份包含每个节点信任度值的得分。每个节点初始得分为10,若某节点在一轮共识过程中的结果与大多数节点不一致,则将其分数减1并标记其为可疑节点,如果分数低于6则标记其为恶意节点;共识结果与大多数节点一致则对其分数加1,标记为可信节点。因此,节点i的评分gi可表示为:
[0077]gi
=initial
i-lw+lc#(4.1)
[0078]
其中,initiali为节点i的初始得分,lw表示节点i共识结果与大多数节点不一致的次数,lc表示节点i共识结果与大多数节点一致的次数,当某节点对于节点i的gi≤6时,就向其他节点发送广播消息提醒,其余节点经过共识,即超过1/3节点判断出节点i为恶意节点,则将其拉出共识节点网络。此时共识算法流程如图2所示。
[0079]
考虑到大多数节点倾向作为轻节点,使用通信系统而非参与共识,因此应设立多组织参与的联盟链,轻节点可只同步区块头数据,而不需要下载区块中的所有数据,依赖于全节点通过默克尔树路径来验证数据是否存在于区块中。委员会节点负责提供用户身份的审核、验证和did文档解析等服务。
[0080]
五、ipfs存储与获取数据
[0081]
节点接入ipfs网络后,可以结合智能合约实现数据的上传与下载。其中数据存储到ipfs网络可由goipfs-api中的add方法来实现,返回结果为该文件的哈希值。上传文件的函数描述如图3所示:
[0082]
其中response[0].hash返回的是数据上传到ipfs后返回的hash字符串,如图4所示。
[0083]
其中,“ipfscontent”是数据,调用“this.savetextblobonipfs”方法将数据上传至ipfs后,会返回字符串“hash”,并且将hash存储到状态机变量strhash中。
[0084]
数据下载时需要输入文件哈希地址,调用“ipfs.cat”方法读取数据内容,读取内容的函数描述如图5所示。
[0085]
六、自主身份生成过程
[0086]
在基于区块链的可信通信模型中,用户的身份信息主要包括一对公私钥、did与所
对应的did文档。
[0087]
(1)公私钥对生成
[0088]
公私钥对与did是用户与区块链交互所必需的身份信息,为了密钥的安全性,本实施例方案中节点应在本地自主生成公私钥对与did标识,并将did文档上传至区块链网络,经共识后该节点可成为区块链通信网络的合法用户。
[0089]
密钥的生成使用openssl程序,首先生成1024位(或2048位)的私钥,再由私钥生成唯一对应的公钥,图6展示了使用openssl生成rsa算法的公私钥的过程。
[0090]
(2)生成did及did文档
[0091]
为了保证身份信息的隐私性,did应由用户自主生成。did的生成需要使用创建的公私钥对,保存私钥,使用公钥拼装《did document》内容。之后对《diddocument》做hash256运算,对结果再做ripemd160运算,再进行base58转换,最后在结果前添加前缀did:im:作为最终的did,可表示为:
[0092]
did=base58(ripemd160(hash(《did document》)))#(4.2)
[0093]
使用私钥对《did document》内容进行rsa数字签名,最终形成带有签名属性的《did document》。最后拼装《did document》内容,
[0094]
如图7展示了一个《did document》案例。
[0095]
创建did的过程是离线完成的,保证身份的隐私性,为了公开did,需要把did身份数据上链存储。经过全网传播,所有节点均可通过区块链查找与验证该身份信息。
[0096]
可信通信模型进一步地,
[0097]
可信通信模型需要考虑通信双方身份隐私性、可验证和通信数据的隐私、防篡改性。由于通信网络难以避免恶意节点的存在,通信的数据必须从发送者开始,到接收者的整个网络中处于安全可信,除对数据加密外,需要防止恶意节点对网络中消息的关联分析,尤其在短消息场景下,还需进一步保证加密数据的信息不披露。因此,需根据现有协议针对整个通信流程进行调整改进,以完成可信的区块链通信。
[0098]
一、首次通信协商密钥流程
[0099]
通信过程中的发送者a与接收者b非好友关系,首次通信需要建立好友关系。a向b申请好友的过程主要分为三次握手:
[0100]
(1)申请信息:a生成好友申请报文m,对报文m进行摘要计算h1=h(m),之后通过使用a的私钥ska加密得到cs=enc(ska,h1),并加上a的身份标识dida,得到m1=m||cs||dida,然后使用a的私钥ska加密,作为a的数字签名sa=sig(ska,m1),将上述内容打包并标识为“1”发送给b;
[0101]
(2)第一次握手:通过智能合约,b收到a发送的消息,使用b的私钥解密获取m1=m||cs||dida,获取dida后通过区块链验证对方身份是否合法,合法就获取对方的公钥pka,对m进行摘要算法得到h2=h(m),解密验证签名信息h1=h2是否成立,成立则选择是否同意申请;
[0102]
如果拒绝,将生成拒绝申请的备注信息m1,使用skb签名后通过pka加密,将其发送给a,并标识为“2”;
[0103]
如果同意,将生成同意申请的备注信息m2,并用a的公钥pka加密得到m2=enc(pkb,m2),使用自己的私钥skb加密m2作为签名sb=sig(skb,m2),然后将(m2,sb)打包,标识为“2”,
然后发送给a,同时b可将a的公钥及did等信息保存至本地,或选择上传至ipfs网络个人数据库。
[0104]
(3)第二次握手:a通过智能合约接收到b发来的标记为“2”的应答信息,与上述过程相同,确认签名无误后,判断对方是否同意了自己的申请;
[0105]
如果对方拒绝就停止操作;
[0106]
如果对方同意,进行解密dec(pkb,sb)和dec(skb,m2)验证签名的合法性。随机生成对称密钥k,使用b的公钥pkb加密得到m3=enc(pkb,k)发送给a,标识为“3”。
[0107]
(4)第三次握手:b通过智能合约接收到a发来的标识为“3”的消息,使用私钥skb解密获取密钥k=dec(skb,m3),将其绑定到好友a的信息中。
[0108]
至此,双方已经结束了对称密钥的协商过程。此外,在接收者b完成最后一次握手后,其调用区块链智能合约向a发送确认信息,告诉a好友关系已经建立,可以开始通信。而a在收到这条消息后,就可以用对称密钥k进行加密通信。具体流程如图8所示。
[0109]
二、非首次通信流程
[0110]
根据实际情况,在一般情况下两个通信用户(a和b)不是同时在线,不同于传统c/s架构下的通信模式,基于区块链的无中心的通信模式下需要保证数据在通信过程中不会遗漏,需要结合智能合约发出提醒,所以通信过程分为两种情景。
[0111]
情况1:a和b同时在线,这种情况与首次通信协商密钥之后的流程一致。双方可正常通过握手协议协商出对称密钥k,之后使用密钥k加密数据以实现最快的加解密速度和成本。
[0112]
情况2:a在线,b不在线,则通信暂时无法正常进行,但a的信息将被存储在ipfs网络上,应通过区块链中的智能合约触发信息提醒功能,向b发送提醒,避免通信内容的遗漏。在系统中,节点通过点对点(p2p)网络进行通信,因此如果在通信过程中对方掉线,就可能无法与对方节点建立连接,从而无法接收数据。在这种情况下,本地节点会尝试与其他节点建立连接,以接收数据。若其他节点具有相同的数据,便可从它们那里接收数据。若没有其他节点具有相同的数据,就无法接收丢失的数据。因此,在本实施例模型中,当节点b未在线错过a的消息时,数据保存至ipfs同时上传至区块链,并发布值网络共识。等b再次上线后,调用智能合约主动向周围节点同步b离线期间丢失的区块信息,并通过默克尔树结构快速查找属于自己的消息。
[0113]
主要过程可以描述为:
[0114]
(1)a向b发送一个消息(ipfs哈希地址),并等待b的回应。
[0115]
(2)b的响应时间超过设定阈值,代表b未连接网络。
[0116]
(3)此时a将消息上传ipfs的摘要地址和b的地址打包上传到区块链,交易信息经过网络共识,被写入区块链中。
[0117]
(4)区块链中记录了b未接收的消息。
[0118]
(5)b上线后,通过与周围节点同步区块消息,并主动搜索自己的消息,若有则解密根据消息中哈希摘要值到ipfs网络中去获取消息。
[0119]
整个过程可以描述如图9所示。
[0120]
系统测试与结果分析
[0121]
一、功能测试
[0122]
在通信中,身份认证、数据的安全性及功能性的实现都有赖于区块链的网路功能,因此,我们先对区块链功能进行了测试。根据测试用例涉及,测试分为区块链功能、分布式存储功能、分布式数字身份功能、通信功能和智能合约功能测试。测试内容及结果如表3所示。
[0123]
表3测试内容于结果
[0124][0125]
[0126]
根据测试,所有结果均符合预期。
[0127]
二、性能测试与分析
[0128]
(1)安全性分析
[0129]
研究现有技术所列出所有的方案都将通信数据或数据摘要上传至区块链的区块数据中,借助区块链的够开透明和不可篡改性保证数据在一经上传就无法被篡改。
[0130]
减少了数据上链的体量,身份注册后生成的did文档被上传至区块链中,借助did可靠的身份验证流程,使用户通过与区块链和智能合约的交互完成双方身份可信性的验证,并通过与did绑定的公钥经过四次握手过程协商出安全可信的通信密钥,用户可在对等网络中按网络协议正常通信而无需第三方的转发,保证了通信过程中双方身份与数据的真实可信性。
[0131]
在隐私保护方面:使用者发送消息时,使用无意义的did编号与其他实体进行通信,网络中只能检索到该身份对应的公钥信息,从而做出身份合法性验证,不能检索到该编号所对应的真实身份信息。而rsa密码算法在密钥长度为1024位时强度已经满足使用,在2048位时具有极强的安全性,可以保证密钥交换过程与加密过程的安全可信。
[0132]
在防篡改性方面:用户身份信息与公钥记录在merkle树结构中,多笔记录生成了根哈希值,验证根哈希值可快速验证所有记录的正确性。如果有恶意节点篡改任何一笔消息记录,都会造成根哈希值的改变。而且,区块链中的每个区块都有一个时间戳标记,表明这些数据是在某一时刻生成的,形成了不可篡改、不可伪造的记录。
[0133]
此外,消息还可能面临传输过程中被恶意节点截取篡改的可能性,但由于发送者私钥和加密对称密钥的保密性,消息不会泄露隐私,同时被篡改后的消息无法通过验证,因为验证结果无法与对消息进行本地摘要算法后的结果吻合。
[0134]
在区块链网络安全方面:联盟链采用的共识机制一般为分布式一致性算法和使用拜占庭共识机制。假设在联盟链中共识节点个数为n,恶意节点攻击共识节点的成功率为p(0《p《1),那么在pbft机制下有:
[0135][0136]
可知,n越大,则网络越安全。
[0137]
而在ipfs网络中,篡改一个数据块则其哈希值发生改变,且每一个文件快都被存储多份备份,对于一个被分成许多碎片的文件,除非攻击所有的数据碎片的拥有者,否则难以影响数据的真实性。
[0138]
(2)系统性能测试
[0139]
在实际应用中,除了要确保系统的各项功能能够正常工作外,还必须达到某些性能指标。
[0140]
对于数据处理的执行效率进行测试,主要测试在一般情况下数据发送与接收涉及到的所有加解密时间、处理和解析时间。由于数据在发送前被上传至ipfs网络,因此数据处理的过程主要包括:哈希算法时间开销、加密/解密时间开销、数据验证时间开销总和,考虑到这些过程所涉及到的单次数据量较小,分别准备大小为1kb至10kb大小的数据文件,每个文件重复发送3次,对结果取均值。结果如图10所示,数据发送处理时,当数据大小为1kb时,除数据上传/下载外,所需处理时间为100ms左右,由于实验环境网络和区块链环境网络性
能较差导致,在实际多节点部署的联盟链环境中将会有更好的表现。
[0141]
对于数据通信测试。本次系统性能测试主要是模拟两个用户节点之间通信流程,统计每一步骤耗时与结果正确性,首先借助hyperleader febric创建了一条区块链,建立本地多个节点的联盟链,以测试通信功能,系统配置了4gb内存与128gb硬盘,并成功接入了ipfs网络。根据现实通信场景下数据的平均大小,本实施例选择1k大小的文件测试三次取均值,测试的每秒吞吐量可以达到200左右,可以满足小型系统的基本需求。具体数据如表4所示。
[0142]
表4测试速率表
[0143][0144]
对于数据存储与获取测试。为了测试通信过程中不同大小数据的存储与获取的速率,考虑到实际通信场景中通信数据大多数在1k以下,涉及到文件、图片、视频等格式数据时,大小一般在1k以上,因此,本节从1k开始,依次成倍增大数据量大小,观察数据的上传与接收所需时间变化。首先,创建两个节点a与b,分别为发送者与接收者,分别准备大小为1k、2k、4k、8k、16k、32k、64k、128k、256k、512k、1m、2m、4m、8m、16m、32m、64m大小的数据文件,每个文件重复发送3次,对结果取均值。测试不同大小的文件在网络中加密、解密、传输的时间如图11所示。
[0145]
由于本实验环境中,节点数量有限,参与转发和共识的节点总共有10个,这种情况下区块链的共识过程较短,主要为数据的处理和存储时间,根据图可知,文件大小在1m以下时,时间受数据大小的变化缓慢,这是由于共识时间短,没有充分利用网络带宽,总体时间受到网络传输的影响,变化不明显,而当数据大小增加至4m以上时,数据处理、分片、上传的增加至4秒,尤其在上传ipfs阶段,数据被分割为一些碎片并经哈希运算导致时间增长。此外,ipfs网络中的在线节点数量也会影响到数据的传输速率。在32m大小以内,数据的传输时延最多达到3.5秒。因此,在1m大小以内的通信时延基本满足小范围用户的需求。而在获取大文件时的速度会快于传统网络。
[0146]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.基于区块链的可信通信的交互方法,其特征在于,包括如下步骤:通信过程中,发送者a和接收者b同时在线或发送者a与接收者b非好友关系,首次通信需要建立好友关系,a向b申请好友的过程主要分为三次握手:(1)申请信息:a生成好友申请报文m,对报文m进行摘要计算h1=h(m),之后通过使用a的私钥sk
a
加密得到c
s
=enc(sk
a
,h1),并加上a的身份标识did
a
,得到m1=m||c
s
||did
a
,然后使用a的私钥sk
a
加密,作为a的数字签名s
a
=sig(sk
a
,m1),将上述内容打包并标识为“1”发送给b;(2)第一次握手:通过智能合约,b收到a发送的消息,使用b的私钥解密获取m1=m||c
s
||did
a
,获取did
a
后通过区块链验证对方身份是否合法,合法就获取对方的公钥pk
a
,对m进行摘要算法得到h2=h(m),解密验证签名信息h1=h2是否成立,成立则选择是否同意申请;如果拒绝,将生成拒绝申请的备注信息m1,使用sk
b
签名后通过pk
a
加密,将其发送给a,并标识为“2”;如果同意,将生成同意申请的备注信息m2,并用a的公钥pk
a
加密得到m2=enc(pk
b
,m2),使用自己的私钥sk
b
加密m2作为签名s
b
=sig(sk
b
,m2),然后将(m2,s
b
)打包,标识为“2”,然后发送给a,同时b可将a的公钥及did等信息保存至本地,或选择上传至ipfs网络个人数据库。(3)第二次握手:a通过智能合约接收到b发来的标记为“2”的应答信息,与上述过程相同,确认签名无误后,判断对方是否同意了自己的申请;如果对方拒绝就停止操作;如果对方同意,进行解密dec(pk
b
,s
b
)和dec(sk
b
,m2)验证签名的合法性。随机生成对称密钥k,使用b的公钥pk
b
加密得到m3=enc(pk
b
,k)发送给a,标识为“3”。(4)第三次握手:b通过智能合约接收到a发来的标识为“3”的消息,使用私钥sk
b
解密获取密钥k=dec(sk
b
,m3),将其绑定到好友a的信息中。(5)双方已经结束了对称密钥的协商过程。2.根据权利要求1所述的基于区块链的可信通信的交互方法,其特征在于:在接收者b完成最后一次握手后,其调用区块链智能合约向a发送确认信息,告诉a好友关系已经建立,可以开始通信,而a在收到这条消息后,就可以用对称密钥k进行加密通信。3.根据权利要求1所述的基于区块链的可信通信的交互方法,其特征在于:a在线,b不在线,通信过程如下:(1)a向b发送一个消息(ipfs哈希地址),并等待b的回应;(2)b的响应时间超过设定阈值,代表b未连接网络;(3)此时a将消息上传ipfs的摘要地址和b的地址打包上传到区块链,交易信息经过网络共识,被写入区块链中;(4)区块链中记录了b未接收的消息;(5)b上线后,通过与周围节点同步区块消息,并主动搜索自己的消息,若有则解密根据消息中哈希摘要值到ipfs网络中去获取消息。4.根据权利要求3所述的基于区块链的可信通信的交互方法,其特征在于:当节点b未在线错过a的消息时,数据保存至ipfs同时上传至区块链,并发布值网络共识;等b再次上线后,调用智能合约主动向周围节点同步b离线期间丢失的区块信息,并通过默克尔树结构快速查找属于自己的消息。
5.根据权利要求1所述的基于区块链的可信通信的交互方法,其特征在于:智能合约中的数据信息包括数据发送者身份、元数据、数字签名、数据哈希值和时间戳;消息产生并加密后通过智能合约传入ipfs存储系统,获得数据地址值,调用智能合约发起交易向接收者发送数据地址。接收者收到之后可使用智能合约向ipfs处获取消息并解密。6.根据权利要求1所述的基于区块链的可信通信的交互方法,其特征在于:节点在本地自主生成公私钥对与did标识,并将did文档上传至区块链网络,经共识后该节点可成为区块链通信网络的合法用户。

技术总结
本发明通过在基于区块链的数据通信模型中构建必要的智能合约,建立起用户和区块链之间的联系,实现整个信息的传递过程,从而确保了去中心化模式下的信息传递的稳定性和安全性。去中心化电子邮件方案中借助区块链智能合约设计了电子邮件的加密交换,将智能合约与通信结合具有成本低、安全可信的优点。部署智能合约,完善通信过程,触发相应智能合约的自动执行机制实现通信数据的可靠交互,保证在去中心化的模型中消息传输的稳定性和安全性。在申请构建的区块链网络中,消息产生并加密后通过智能合约传入IPFS存储系统,获得数据地址值,调用智能合约发起交易向接收者发送数据地址。接收者收到之后可使用智能合约向IPFS处获取消息并解密。消息并解密。消息并解密。


技术研发人员:余益民 王会源 张玉 杨潜
受保护的技术使用者:云南农优科技有限公司
技术研发日:2023.06.26
技术公布日:2023/8/31
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐