一种基于公有区块链的隐蔽通信方法与流程

文档序号:22685127发布日期:2020-10-28 12:50阅读:103来源:国知局
一种基于公有区块链的隐蔽通信方法与流程

本发明涉及的技术领域为网络通信技术与信息安全领域,具体涉及一种基于公有区块链点对点(p2p)网络的隐蔽通信方法,可用于双方或多方通信,保护通信各方免受中间人攻击、身份欺骗等攻击,并防止通信被溯源。



背景技术:

传统的网络通信方式(比如,电子邮件、tcp通信、http/https通信、irc通信等)通过中心化服务器或直接连接传递通信数据,存在安全性问题,若中心化服务器产生故障,通信各方即无法进行通信;此外,传统的网络通信协议存在被中间人攻击的风险。



技术实现要素:

为了克服上述现有技术的不足,本发明提供一种基于公有区块链的隐蔽通信方法,其能够有效地防止通信被屏蔽、溯源,防止中间人攻击和身份欺骗。

本发明利用大型公有区块链应用分布全球的节点和高强度的密码学算法有效防止通信被屏蔽、溯源,有效抵御中间人攻击,并防止身份欺骗。区块链是基于p2p协议、密码学、博弈论、分布式系统等多种技术的分布式数据库,无需第三方进行运作和管理。所述方法包括。

通信双方部署客户端,其特征在于:通信各方使用加密算法生成公私钥对,并使用公钥生成自身身份标识。

发送消息时,发送数据的客户端获得待发送通信数据,对通信数据用接收方的公钥进行加密,并使用发送方的私钥对通信数据进行签名。加密后的通信数据被嵌入到区块链的交易中发送,并在公有区块链网络中进行广播。

接收方对区块链上广播的所有交易使用发送方的公钥进行数字签名校验,校验成功即说明该交易由发送方发出。

接收方从交易数据中提取已加密的通信数据,并使用接受方的私钥对通信数据进行解密,得到原始通信数据。

相对于现有技术而言,本发明具有以下有益效果。

本发明提供一种基于公有区块链网络的隐蔽通信方法。所述方法包括:部署通信双方客户端,生成通信双方的公私钥对。发送方将通信数据使用接收方的公钥进行加密,并嵌入公有区块链交易中,使用发送方私钥签名后发送至公有区块链网络。接收方通过数字签名校验从公有区块链网络中标识来自发送方的交易,并使用接收方私钥对通信数据进行解密,得到原始通信数据。该通信方法其信道隐蔽安全可靠、通信时延低,能防止中间人攻击、通信溯源、信道屏蔽、身份欺骗等攻击。同时,通信数据被存储于公有区块链中,能有效防止通信数据丢失,且第三方难以对其进行解密。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是本发明较佳实施例提供的终端设备的方框示意图。

图2是本发明第一实施例提供的基于公有区块链网络的通信流程图。

图3是本发明第一实施例提供的图2所示的步骤s110的子步骤流程图。

图4是本发明第一实施例提供的图2所示的步骤s120的子步骤流程图。

图5是本发明第一实施例提供的图2所示的步骤s130的子步骤流程图。

图标:100-终端设备;110-存储器;120-处理器;130-网络模块;200-通信客户端程序。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1是本发明较佳实施例提供的终端设备100的方框示意图。所述终端设备100包括存储器110、通信客户端程序200、处理器120及网络模块130。

在本实施例中,所述终端设备100可以是,但不限于,个人电脑(pc)、平板电脑、移动上网设备、便携式计算机、智能终端等。

所述存储器110、处理器120及网络模块130相互之间直接或间接地电性连接,以实现数据的传输或交互。存储器110中存储有通信客户端程序200,所述通信客户端程序200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块,所述处理器120通过运行存储在存储器110内的软件程序以及模块,从而执行各种功能应用以及数据处理。

其中,所述存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器110用于存储程序,所述处理器120在接收到执行指令后,执行所述程序。进一步地,上述存储器110内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

所述处理器120可以是一种集成电路芯片,具有信号的处理能力。上述的处理器120可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

网络模块130用于通过网络建立终端设备100与外部设备之间的通信连接。

可以理解,图1所述的结构仅为示意,终端设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

第一实施例。

请参照图2,图2是本发明第一实施例提供的基于公有区块链的通信方法步骤流程图之一。所述方法应用于终端设备100。下面对基于公有区块链的通信方法具体流程进行详细阐述。所述方法包括步骤s110、步骤s120及步骤s130。

步骤110,对通信双方客户端进行部署。

请参照图3,图3是本发明第一实施例提供的图2所示步骤s110的子步骤流程图。所述步骤s110包括:子步骤s111、子步骤s112及子步骤s113。

子步骤s111,通信双方通过非对称加密算法生成双方的公私钥对。

在本实施例中,通信双方生成一定长度的字节数据,作为己方的私钥,然后使用非对称加密算法生成对应的公钥。非对称加密算法是一种密钥的保密方法。其需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公钥与私钥是一对,加密和解密使用的是两个不同的密钥,如果用公钥对数据进行加密,只有用对应的私钥才能解密。

在本实施例中,所述预设私钥长度可以是,但不限于32字节,即256位。常用的加密算法其密钥长度从128位到2048位不等。在本实施例中,所述预设非对称加密算法可以是,但不限于ecc。ecc(ellipticcurvecryptography,椭圆曲线加密算法)是基于椭圆曲线数学理论实现的一种非对称加密算法,其理论基础是椭圆曲线离散对数问题(ellipticcurvediscretelogarithmproblemecdlp)没有亚指数时间的解决方法。在本实施例中,所述预设由私钥生成公钥所使用的椭圆曲线可以是,但不限于secp256k1。secp256k1为基于fp有限域上的椭圆曲线,使用secp256k1作为椭圆曲线加密算法参数的优点是其占用很少的带宽和存储资源,密钥的长度很短,且让所有用户可使用同样的操作完成域运算,是一类比较安全的椭圆曲线。

子步骤s112,通信双方将对方的公钥保存至所在终端设备。

在本实施例中,通信双方的终端设备100需要保存对方的公钥,用于对通信双方发出的公有区块链交易的数字签名进行校验。在本实施例中,所述预设的数字签名算法为椭圆曲线数字签名算法(ellipticcurvedigitalsignaturealgorithm,ecdsa)。椭圆曲线数字签名算法是使用椭圆曲线密码对数字签名算法的模拟。ecdsa已在ansix9.62,fips186-2,ieee1363-2000和iso14888-3提案中被标准化。

子步骤s113,通信双方连接至公有区块链网络。

在本实施例中,所述预设的公有区块链可以是,但不限于比特币。比特币(bitcoin)是基于区块链的去中心化分布式账本,其交易数据对所有人公开可见,是目前节点分布最广泛,协议最稳定的公有区块链应用。在本实施例中,通信双方使用部署于终端设备100的通信程序200连接至比特币网络。所述预设通信程序200可以是,但不限于基于javabitcoinj应用程序编程接口进行开发。

在本实施例中,java是一种面向对象的计算机程序设计语言,具有易于理解、可移植性强、跨平台等优点,可用于编写桌面应用程序、web应用程序、分布式系统和嵌入式系统应用程序等。

步骤s120,发送方对通信数据进行加密并嵌入公有区块链网络中,对其进行签名后发送至公有区块链网络中。

请参照图4,图4是本发明第一实施例提供的图2所示步骤s120的子步骤流程图。所述步骤s120包括:子步骤s121、子步骤s122、子步骤s123、子步骤s124及子步骤s125。

子步骤s121,发送方获得通信数据。

在本实施例中,发送方将通信数据通过终端设备100输入到通信程序200中。由于公有区块链对交易数据段长度有限制,若通信数据大于阈值,则需要进行分片。在本实施例中,单次交易可嵌入的通信数据长度阈值为83字节。

子步骤s122,使用接收方的公钥对通信数据进行加密。

在本实施例中,通信程序200将通信数据使用在子步骤s112中保存的接收方公钥对通信数据进行加密,使用的加密算法为椭圆曲线加密算法,得到加密后的通信数据。

子步骤s123,将通信数据嵌入公有区块链交易中。

在本实施例中,使用的公有区块链为比特币。向比特币交易中嵌入数据的方法可以是,但不限于使用比特币协议中的op_return脚本函数。op_return脚本函数允许交易附加最多83字节的数据。在本实施例中,终端设备100将子步骤s122得到的加密数据通过op_return脚本函数附加至交易中,得到嵌入数据后的未签名交易。

子步骤s124,使用发送方的私钥对交易进行签名。

在本实施例中,发送方通过通信程序200对交易进行签名,通信程序200首先对子步骤s123中得到的未签名交易通过安全散列算法进行2次哈希运算,得到该交易的消息摘要。安全散列算法(securehashalgorithm,sha)是一个密码散列函数家族,是fips所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。在本实施例中,所述预设密码散列函数为sha-256算法。得到交易的消息摘要后,通信程序200使用椭圆曲线数字签名算法(ecdsa)对交易的消息摘要进行签名,然后将得到的签名和发送方的公钥附加到交易中,得到签名后的交易。

子步骤s125,将交易发送至公有区块链网络中。

在本实施例中,通信程序200随机连接至公有区块链网络的任意节点,将子步骤s124得到的已签名交易通过特定的比特币消息发送至该节点。比特币节点之间通过比特币消息进行数据交互。比特币协议包括多种消息类型:version-当一个节点收到连接请求时,它立即宣告其版本。远程节点会以自己的版本响应,在通信双方都得到对方版本之前,不会有其他通信。verack-应答version消息时发送verack消息。addr-提供网络上已知节点的信息。tx-描述一笔比特币交易。在本实施例中,通信程序200与比特币节点交互的过程如下:通信程序200发送一条version消息,其中包括协议版本号、网络标识号等信息;比特币节点返回一条version消息,标识其客户端版本号;通信程序200发送一条tx消息,其中包含子步骤s124中得到的已签名交易数据。交易数据发送成功后,若该比特币节点验证该交易为合法,该交易将被广播至其连接的所有节点,如此往复,该交易将被广播至比特币网络中的所有节点。

步骤s130,接收方从公有区块链网络中标识来自发送方的交易,从中提取并解密得到原始通信数据。

请参照图5,图5是本发明第一实施例提供的图2所示步骤s130的子步骤流程图。所述步骤s130包括:子步骤s131、子步骤s132、子步骤s133及子步骤s134。

子步骤s131,接收方连接至公有区块链网络。

在本实施例中,接收方的终端设备100通过通信程序200连接至公有区块链网络的任意节点,本方案使用的公有区块链网络为比特币网络。

子步骤s132,获得在公有区块链网络中被广播的每一条新交易。

在本实施例中,当新的交易被广播至已连接的比特币节点时,该比特币节点会将新交易广播至通信程序200。由此,通信程序200可获得经该比特币节点广播的每一条新的比特币交易。

子步骤s133,使用发送方公钥对被广播的新交易进行数字签名校验,标识来自发送方的交易。

在本实施例中,通信程序200使用子步骤s112保存的发送方公钥通过椭圆曲线数字签名算法对被广播的新交易进行数字签名校验。攻击者无法在未拥有发送方私钥的情况下伪造数字签名,且比特币理论上不存在被双花的可能性,即理论上不存在重放攻击的可能性。由此,接收方可通过数字签名校验准确标识来自发送方的交易。

子步骤s134,从发送方发出的交易中提取出被加密的通信数据,使用接收方的私钥对通信数据进行解密。

在本实施例中,通信程序200从子步骤s133所得到交易的op_return数据段中提取出被加密的通信数据,随后使用接收方的私钥对被加密的通信数据进行解密,得到原始的通信数据。由此,通信数据被安全、准确地通过公有区块链网络发送至接收方。

综上所述,本发明提供一种基于公有区块链网络的隐蔽通信方法。所述方法包括:部署通信双方客户端,生成通信双方的公私钥对。发送方将通信数据使用接收方的公钥进行加密,并嵌入公有区块链交易中,使用发送方私钥签名后发送至公有区块链网络。接收方通过数字签名校验从公有区块链网络中标识来自发送方的交易,并使用接收方私钥对通信数据进行解密,得到原始通信数据。

该通信方法其信道隐蔽安全可靠、通信时延低,能防止中间人攻击、通信溯源、信道屏蔽、身份欺骗等攻击。同时,通信数据被存储于公有区块链中,能有效防止通信数据丢失,且第三方难以对其进行解密。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1