首页> 中国专利> 一种无线自组网间数据安全传输的方法

一种无线自组网间数据安全传输的方法

摘要

本发明公开了一种无线自组网间数据安全传输的方法,包括:节点构建节点公钥表;发送节点向接收节点发送数据消息;接收节点接收数据消息并安全检查后,向发送节点发送应答消息;发送节点接收应答消息并安全检查和比对数据后,向接收节点发送数据确认消息;接收节点接收数据确认消息,根据数据确认消息类型选择保留或丢弃数据。该方法在无线自组网的网络架构基础之上,融合了哈希算法、公钥密码算法和加密认证技术,设计了一种全新的数据安全传输方法,从而实现无线自组网内部节点之间数据的安全交互。该方法适用范围广,易实现,安全可靠,可以用在一些安全要求极高的网络环境。

著录项

  • 公开/公告号CN112714507A

    专利类型发明专利

  • 公开/公告日2021-04-27

    原文格式PDF

  • 申请/专利权人 江苏正赫通信息科技有限公司;

    申请/专利号CN202110054147.9

  • 申请日2021-01-15

  • 分类号H04W84/18(20090101);H04W12/03(20210101);H04W12/04(20210101);H04L9/06(20060101);H04L9/32(20060101);

  • 代理机构32296 南京睿之博知识产权代理有限公司;

  • 代理人杨晓玲

  • 地址 210000 江苏省南京市江宁经济技术开发区秣周东路9号

  • 入库时间 2023-06-19 10:44:55

说明书

技术领域

本发明涉及一种无线自组网间数据安全传输的方法,尤其是敏感数据在无线自组网间进行安全传输,属于无线通信和密码学相结合的技术领域。

背景技术

无线自组网,又称Mesh网络,是一种支持多跳中继的无线通信系统,系统里每个节点可以自由移动,系统拓扑变化时可快速重构路由并形成新的网络拓扑,实时保证系统里所有在线节点的互联互通,无线自组网特别适用于现场应急指挥、小分队快速组网等应用场合,目前广泛应用于公共安全、应急和军事等行业。

有鉴于无线自组网应用的特殊性,其内部传输的数据有时候需要进行保密,传统无线通信中对数据的保密措施主要分为两种:对数据本身的保密和对数据传输信道的保密。具体可以分为如下几种方法:

(1)MAC地址过滤:采用硬件控制的机制来对接入设备进行有效性识别。任何网络硬件设备的网卡都只具有唯一的MAC地址,在无线自组网内各个节点可以启用MAC地址过滤机制,判断接入设备的MAC地址是否合法,防止非法节点接入网络。

(2)WEP/WPA/WPA2加密:这是一系列保护wifi信息安全的体制。因为无线自组网支持终端设备通过wifi来接入,所以使用该方法可以禁止未经授权的终端私自连接网络节点。

(3)IPsec:互联网安全协议,它是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族。基于IPsec协议包实现的VPN技术主要实现在两个有数据隐私传输需求的子网之间建立安全的传输通道。

(4)算法加密:通过对原始数据进行打包加密,然后通过无线网络传输到接收节点,由接收节点对加密的数据包进行解密,从而保证数据在空中传输的安全可靠。常用的加密算法是AES。

传统的MAC地址过滤和WEP/WPA/WPA2加密这两种方法采用的是接入防护措施,即防止未经授权的节点或终端进入网络,但是如果有合法的节点叛变,将收到的数据丢弃或者伪造成其他数据继续传输,那么这两种方法都不能解决合法节点叛变、故意篡改数据的问题;IPsec也是采用加密和认证技术来保证数据安全,它的前提是在传输数据之前,发送节点和接收节点之间建立一个固定的VPN隧道,而且接收节点和发送节点都必须要支持额外的隧道协议,但是无线自组网由于具有组网灵活性和移动性,节点之间的传输路径并非固定不变的,而是根据现场环境动态变化,所以不能建立固定的VPN隧道,因此IPsec VPN普遍存在成本高、复杂度高的问题,所以在很多需要实施简单、不需改变现有网络结构、运营成本低的场景中不适用,同时IPsec VPN还不能解决数据丢包的问题;算法加密是对原始数据本身进行加密,这种方法不能解决源认证的问题,即不能确定原始数据就是发送节点发送的,也就是说还是不能解决合法节点叛变的问题,同时也不能解决数据丢包的问题。

发明内容

发明目的:针对背景技术中存在的问题,本发明提供了一种无线自组网间数据安全传输的方法,该方法在无线自组网的网络架构基础之上,融合了哈希算法、公钥密码算法和加密认证技术,设计了一种新的数据安全传输方法,从而实现无线自组网内部节点之间数据的安全交互。该方法适用范围广,易实现,安全可靠,可以用在一些安全要求极高的网络环境。

技术方案:本发明采用如下技术方案:提供一种无线自组网间数据安全传输的方法,该方法具体步骤如下:

步骤1、无线自组网里每个节点独立生成RSA密钥对,密钥对里的私钥由每个节点独立安全保存,同时将密钥对里的公钥广播给其他节点,节点根据收到的公钥构建节点公钥表,每个节点的节点公钥表创建成功则进入步骤2;

步骤2、发送节点使用哈希算法、非对称加密算法和数字签名对原始数据进行加密获得数据密文,将数据密文构造成数据消息发送给接收节点,同时设置定时器等待接收节点的应答消息;

步骤3、接收节点从数据消息里提取数据密文,然后解密数据密文,接着对解密出的数据进行安全检查,需要先后判断解密出的数据是否为发送节点所发送,以及判断数据里包含的原始数据是否没被篡改;

如果这两项判断均为是,则安全检查通过,接收节点使用哈希算法、非对称加密算法和数字签名对数据里包含的原始数据哈希值进行加密得到数据完整的应答密文,将该应答密文构造成IP数据报作为应答消息发送给发送节点,同时设置定时器,等待发送节点返回的数据确认消息;

如果这两项判断中有一项为否,则安全检查不通过,则接收节点构建数据安全检查失败的应答密文,将该应答密文构造成IP数据报作为应答消息发送给发送节点;

步骤4、发送节点从接收到的应答消息里提取应答密文,首先清除步骤2里设置的定时器,然后解密应答密文,接着对解密出的应答信息进行安全性检查,需要先后判断应答信息是否为接收节点所发送,以及应答信息里所携带的应答值是否没被篡改;

如果这两项判断均为是,则安全检查通过,继续判断应答信息类型,如果是数据完整的应答信息,则发送节点将应答信息里所携带的原始数据哈希值,与本地所保存的原始数据哈希值进行比对,如果比对一致,则说明接收节点已经收到正确的原始数据,那么发送节点给接收节点发送数据确认消息通知接收节点原始数据无误;如果比对不一致,说明接收节点没有收到正确的原始数据,则发送节点给接收节点发送数据确认消息通知接收节点丢弃原始数据,并重新返回步骤2重发数据消息;如果是数据安全检查失败的应答信息,则重新返回步骤2重发数据消息;

如果这两项判断中有一项为否,则安全检查不通过,发送节点给接收节点发送数据确认消息通知接收节点重发应答消息;

步骤5、接收节点接收到数据确认消息,首先清除步骤3中设置的定时器,接着判断数据确认消息类型,如果是原始数据正确的数据确认消息,则保留原始数据;如果是原始数据不正确的数据确认消息,则将原始数据丢弃;如果是步骤4中安全检查不通过的数据确认消息,则返回步骤3重新发送应答消息。

本发明所述的一种无线自组网间数据安全传输的方法,其中,所述的步骤2进一步包括:

步骤201、发送节点使用哈希算法对原始数据进行加密得到原始数据哈希值,同时将原始数据哈希值保存在本地;

步骤202、发送节点使用自己的私钥对原始数据和原始数据哈希值这两项数据进行数字签名得到签名值;

步骤203、发送节点根据接收节点的IP信息,在本地的节点公钥表里查找接收节点的公钥,然后用接收节点的公钥对原始数据、原始数据哈希值和签名值这三项数据进行非对称加密得到数据密文;

步骤204、发送节点把数据密文按照标准IP数据报格式构建数据消息,并将数据消息通过无线自组网发送给接收节点,同时设置定时器等待接收节点的应答消息;

步骤205、定时器设置时间到达时,发送节点如果没有收到接收节点的应答消息,则再次将数据消息发送给接收节点,同时进行失败统计,如果连续三次在定时器设置时间到达时都没有收到接收节点的应答消息,则产生网络异常的告警并清除定时器;

如果收到应答消息,则进入步骤4应答消息解析过程,同时清除定时器。

本发明所述的一种无线自组网间数据安全传输的方法,其中,所述的步骤3进一步包括:

步骤301、接收节点从接收到的数据消息里提取数据密文,然后用自己的私钥对数据密文进行解密,得到原始数据、原始数据哈希值和签名值;

步骤302、接收节点对解密出的数据进行安全检查,根据发送节点的IP信息,从本地节点公钥表查找发送节点的公钥,用发送节点公钥以及签名值、原始数据和原始数据哈希值这三项数据来验签,如果验签通过,则说明数据密文中的原始数据和原始数据哈希值确实为发送节点所构建并发送的,进入步骤303;如果验签不通过,则将数据消息丢弃,安全检查不通过,进入步骤304给发送节点发送验签不通过的应答消息;

步骤303、接收节点使用哈希算法对原始数据进行加密得到原始数据哈希值,将该哈希值与从数据密文解密出的原始数据哈希值进行比对,如果比对一致,则说明原始数据没有被篡改或丢失,安全检查通过,进入步骤304给发送节点发送数据完整的应答消息;如果比对不一致,则说明原始数据可能被篡改或丢失,安全检查不通过,进入步骤304给发送节点发送哈希值不匹配的应答消息;

步骤304、接收节点根据安全检查结果构建相应的应答消息,如果是解密出的数据通过安全检查,则接收节点使用哈希算法对原始数据哈希值进行加密得到原始数据哈希值的哈希值,然后用自己的私钥对原始数据哈希值和原始数据哈希值的哈希值进行数字签名得到签名值,接着接收节点在本地节点公钥表里查找发送节点的公钥,用该公钥对原始数据哈希值、原始数据哈希值的哈希值和签名值这三项数据进行加密,得到应答密文,接收节点把应答密文按照标准IP数据报格式构建应答消息,并将应答消息通过无线自组网发送给发送节点,同时设置定时器等待发送节点的数据确认消息,如果定时器设置时间到达时,没有收到发送节点发来的数据确认消息,则重新给发送节点发送应答消息,如果连续三次在定时器设置时间到达时都没有收到发送节点的数据确认消息,则产生网络异常的告警,同时丢弃解密出的数据并取消定时器;

如果是解密出的数据没有通过安全检查,则接收节点构建失败信息,同时用哈希算法对失败信息进行加密得到失败信息的哈希值,然后用自己的私钥对失败信息和失败信息的哈希值进行数字签名得到签名值,接着接收节点在本地节点公钥表里查找发送节点的公钥,用该公钥对失败信息、失败信息的哈希值和签名值这三项进行加密,得到数据安全检查失败的应答密文,接收节点把该应答密文按照标准IP数据报格式构建应答消息,并将应答消息通过无线自组网发送给发送节点。

本发明所述的一种无线自组网间数据安全传输的方法,其中,所述的步骤4进一步包括:

步骤401、发送节点接收到应答消息后,首先清除步骤2里设置的定时器,接着从应答消息里提取应答密文,然后用自己的私钥对应答密文进行解密,得到解密后的应答信息;

步骤402、发送节点对应答信息进行安全检查,从应答信息里提取出签名值和应答数据,然后根据接收节点的IP地址信息,从本地节点公钥表查找接收节点的公钥,接着用接收节点公钥、签名值、应答数据这三项来对应答数据进行验签,如果验签通过,则说明应答数据确实为接收节点所构建并发送的,进入步骤403;如果验签不通过,则进入步骤406,给接收节点发送验签不通过的数据确认消息,通知接收节点重发应答消息;

步骤403、发送节点从应答数据里提取出应答值和应答值的哈希值,然后用哈希算法重新计算应答值的哈希值,接着与应答数据里携带的应答值的哈希值进行比对,如果比对一致,则安全检查通过,进入步骤404,如果比对不一致则安全检查不通过,进入步骤406,给接收节点发送哈希值匹配不通过的数据确认消息,通知接收节点重发应答消息;

步骤404、发送节点判断应答值类型,如果是数据完整的应答值,则进入步骤405;如果是数据安全检查失败的应答值,则重新返回步骤2,发送节点重发数据消息;

步骤405、发送节点将应答数据携带的原始数据哈希值与步骤2里保存在本地的原始数据哈希值进行比对,如果比对一致,则说明接收节点已经收到了正确的原始数据,安全检查通过,进入步骤406给接收节点发送原始数据正确的数据确认消息;如果比对不一致,则说明接收节点收到的原始数据有误或者丢失,则进入步骤406给接收节点发送原始数据有误的数据确认消息;

步骤406、发送节点根据安全检查结果构建相应的数据确认消息,如果接收节点接收的原始数据正确,则把数据确认消息中数据确认标志位置1,如果接收节点接收的原始数据有误,则把数据确认标志位置0,如果应答消息验签不通过或应答消息哈希值匹配不通过,则把数据确认标志位置2;用数据确认标志位和原始数据哈希值构建数据确认信息,接着用发送节点自己的私钥给数据确认信息进行数字签名,得到签名值,然后在本地节点公钥表里查找接收节点的公钥,用接收节点公钥对数据确认标志位、原始数据哈希值和签名值进行加密得到数据确认密文,最后发送节点把该数据确认密文按照标准IP数据报格式构建数据确认消息,并将数据确认消息通过无线自组网发送给接收节点。

本发明所述的一种无线自组网间数据安全传输的方法,其中,所述的步骤5进一步包括:

步骤501、接收节点接收到数据确认消息,取消步骤3中设置的定时器;

步骤502、接收节点从数据确认消息中提取数据确认密文,接收节点用自己的私钥对数据确认密文进行解密,从解密出的数据中提取数据确认信息和签名值,接着根据发送节点IP地址信息从本地节点公钥表里查找发送节点的公钥,使用数据确认信息和签名值,结合该公钥来三方验签,如果验签通过,则说明数据确认信息确实为发送节点所构建并发送的,接着从数据确认信息中提取数据确认标志位和原始数据哈希值,如果该数据确认标志位置1,则根据原始数据哈希值在本地找到对应的原始数据,该原始数据是正确的予以保留;如果该数据确认标志位置0,则根据原始数据哈希值在本地找到对应的原始数据,该原始数据不正确予以丢弃;如果该数据确认标志位置2,则返回步骤3,接收节点重新把应答消息发送给发送节点,同时设置定时器,等待发送节点返回的数据确认消息;如果验签不通过则返回步骤3,接收节点重新把应答消息发送给发送节点。

本发明所述的一种无线自组网间数据安全传输的方法,其中,所述步骤2里所述的定时器的设置时间可以根据实际情况进行调整。

本发明所述的一种无线自组网间数据安全传输的方法,其中,所述步骤3里所述的定时器的设置时间可以根据实际情况进行调整。

有益效果:本发明具有如下有益效果:

本发明用一种数据安全传输方法作为主要手段,在无线自组网的网络架构基础之上,融合了哈希算法、公钥密码算法和加密认证技术,能够实现无线自组网内部节点之间数据的安全交互。该发明适用范围广,易实现,安全可靠,不需要增加无线自组网的硬件资源,即不改变现有IP网络结构、不需要网络节点支持其他协议、不需要改变无线自组网通信协议,只需要对原始数据本身在软件层面进行加密认证并封装成IP报文进行传输,保证了数据在传输过程中不丢失、不被篡改,同时也有效防止了合法节点来篡改数据,可以用在一些安全要求极高的网络环境。

附图说明

图1为本发明中无线自组网网络拓扑图;

图2为本发明中数据安全传输方法流程图;

图3为本发明中节点公钥表创建流程图;

图4为本发明中节点公钥表和节点公钥条目结构示意图;

图5为本发明中发送节点构建数据消息流程图;

图6为本发明中接收节点解析数据消息和构建应答消息流程图;

图7为本发明中发送节点解析应答消息和构建数据确认消息流程图;

图8为本发明中接收节点解析数据确认消息流程图。

具体实施方式

下面结合附图和具体实施方式对本发明所述的一种无线自组网间数据安全传输的方法作进一步详细说明:

首先需要说明的是,本发明所述的一种无线自组网间数据安全传输的方法的前提条件是无线自组网已经组网成功,无线自组网内所有节点都已经实现了互联互通。

如图1所示,无线自组网内有五个在线节点,假设节点A为发送节点,节点D为接收节点,节点A需要将采集的数据发送给节点D,根据无线自组网的网络拓扑图可以看出,数据先后通过节点B、节点C,最后才到达节点D。那么数据在空中传播时可能因为存在信号干扰或网络拥塞导致丢失,同时节点B或节点C也有可能篡改数据,或者故意将原始数据丢弃并把伪造数据发送给节点D。

如图2所示,本发明所述的一种无线自组网间数据安全传输的方法的主要步骤如下:

1、无线自组网内每个节点独立构建节点公钥表,节点公钥表包含了无线自组网内所有在线节点的公钥信息;

2、发送节点使用哈希算法、非对称加密算法和数字签名技术对原始数据进行加密,并构建数据消息发送给接收节点;

3、接收节点接收到数据消息后,通过解密和验签得到原始数据,然后使用哈希算法、非对称加密算法和数字签名技术对应答数据进行加密,并构建应答消息发送给发送节点;

4、发送节点接收到应答消息后,通过解密和验签得到应答数据,根据应答数据来判断接收节点是否收到正确的原始数据,然后使用哈希算法、非对称加密算法和数字签名技术对数据确认信息进行加密,并构建数据确认消息发送给接收节点;

5、接收节点接收到数据确认消息后,通过解密和验签得到数据确认信息,根据数据确认信息来判断自己已经收到的原始数据是否正确。

如图3-8所示,本发明所述的一种无线自组网间数据安全传输的方法的具体步骤依次如下:

1、节点公钥表的创建

如图3所示,无线自组网里每个节点独立生成RSA密钥对,RSA密钥对里包含私钥和公钥;每个节点独立安全保存自己的私钥,同时把公钥广播给其他节点;每个节点根据收到的公钥来构建自己的节点公钥表;节点公钥表里包含了无线自组网内所有节点的公钥信息,节点公钥表由若干节点公钥条目组成,无线自组网内每个节点对应一条节点公钥条目,节点公钥表和节点公钥条目结构如图4所示,节点公钥条目的Key值对应的是节点IP信息,节点公钥条目的Value值对应的是该IP节点所生成的公钥信息。其中,RSA密钥对的生成已属于现有技术,故本发明不在此作赘述。

2、发送节点构建数据消息

如图5所示,发送节点使用哈希算法对原始数据进行加密得到原始数据哈希值,哈希算法保证无法通过原始数据哈希值逆向推算出原始数据,同时原始数据对应唯一的原始数据哈希值,这样能有效保证原始数据安全且能及时检测到原始数据被篡改。假设原始数据为data,原始数据哈希值为data_hash=hash(data),同时将data_hash保存到本地。其中hash()表示哈希算法加密过程,本发明后面使用的hash()均表示该定义,不再作赘述。

发送节点使用自己的私钥对原始数据和原始数据哈希值这两项数据进行数字签名得到签名值,数字签名保证被签名的数据只能由签名使用的私钥所对应的公钥才能验签成功,而公钥和私钥同属一对,由一个节点所属,保证被签名的数据确实由该节点构建并签名的,其他节点由于没有该节点的私钥,所以无法伪造该节点来发数据。假设私钥为privateKey,签名值为sign_data=sign(data||data_hash,privateKey)。其中||表示将两侧的数据顺序拼接成一个整体的数据,本发明后面使用的||均表示该定义,不再作赘述;sign(a,b)表示数字签名过程,a表示待签名的数据,b表示数字签名所需的私钥,本发明后面使用的sign(a,b)均表示该定义,不再作赘述。

发送节点根据接收节点的IP信息,查找本地的节点公钥表,找到接收节点的公钥,然后用该公钥对原始数据、原始数据哈希值和签名值这三项数据进行加密得到数据密文,公钥加密的密文只能由对应的私钥来解密,这样保证只能由接收节点用自己的私钥来解密该密文,其他节点都无法解密该密文,因为没有接收节点的私钥。那么首先将原始数据、原始数据哈希值和签名值组成待加密的数据,即msg=data||data_hash||sign_data,假设publicKey为接收节点公钥,数据密文为en_msg=encry(msg , publicKey),其中encry(a,b)表示非对称加密算法里的加密过程,a表示待加密的数据,b表示加密所用的公钥,本发明后面使用的encry()均表示该定义,不再作赘述。

发送节点把数据密文en_msg按照标准IP数据报格式构建数据消息,并将数据消息发送给接收节点,同时设置定时器等待接收节点的应答消息,定时器的设置时间可以根据实际情况进行调整;如果在定时器设置时间未到时,收到应答消息,则进入应答消息解析过程,同时清除定时器;如果定时器设置时间到达时,发送节点仍没有收到应答消息则再次将数据消息发送给接收节点,同时进行失败统计,如果连续三次在定时器设置时间到达时都没有收到应答消息,则产生网络异常的告警并清除定时器。

3、接收节点解析数据消息并构建应答消息

如图6所示,接收节点从数据消息里提取数据密文en_msg,然后用自己的私钥privateKey对数据密文进行解密,msg=decrypt(en_msg, privateKey),msg为解密后的数据,从msg中提取出原始数据data、原始数据哈希值data_hash和签名值sign_data,其中decrypt(a,b)表示非对称加密算法里的解密过程,a表示待解密的数据,b表示解密所用的私钥,本发明后面使用的decrypt(a,b)均表示该定义,不再作赘述。

接收节点对解密出的数据msg进行安全检查,根据发送节点的IP信息,从本地节点公钥表查找发送节点的公钥publicKey,用发送节点公钥publicKey以及签名值sign_data、原始数据data和原始数据哈希值data_hash这三项数据来验签,isValid=verify(publicKey, data||data_hash, sign_data),如果isValid为True,则验签通过,说明数据密文中的data||data_hash确实为发送节点所构建并发送的;如果isValid为False,则验签不通过,将数据消息丢弃,安全检查不通过。其中,verify(a,b,c)定义为数字签名中的验签过程,a为数字签名使用私钥所对应的公钥,b为待验签的数据,c为数字签名得到的签名值,本发明后面使用的verify(a,b,c)均表示该定义,不再作赘述。

对于验签通过的数据,其中包含原始数据和原始数据哈希值,即data||data_hash,接收节点重新计算原始数据的哈希值,new_data_hash=hash(data),然后将new_data_hash和data_hash进行比对,如果比对一致,则说明原始数据data没有被篡改或丢失,如果比对不一致,则说明原始数据data可能被篡改或丢失。

针对验签通过且原始数据哈希值比对一致的情况,意味着数据完整,接收节点使用哈希算法对原始数据哈希值加密得到原始数据哈希值的哈希值,即data_hash´=hash(data_hash),然后用接收节点自己的私钥privateKey对应答数据reply_data=data_hash||data_hash´进行数字签名得到签名值,即sign_data=sign(data_hash||data_hash´,privateKey),接着接收节点在本地节点公钥表里查找发送节点的公钥publicKey,用publicKey对msg=data_hash||data_hash´||sign_data加密得到应答密文,即en_msg=encry(data_hash||data_hash´||sign_data, publicKey),接收节点把应答密文en_msg按照标准IP数据报格式构建应答消息,并将应答消息通过无线自组网发送给发送节点,同时设置定时器等待发送节点的数据确认消息,定时器的设置时间可以根据实际情况进行调整,如果在定时器设置时间未到时,收到数据确认消息,则清除定时器;如果定时器设置时间到达时,没有收到发送节点发来的数据确认消息,则重新给发送节点发送应答消息,如果连续三次在定时器设置时间到达时都没有收到发送节点的数据确认消息,则产生网络异常的告警,同时丢弃解密出的数据并取消定时器。

针对验签不通过,或者验签通过但原始数据哈希值比对不一致的情况,接收节点创建失败信息fail_data,这意味着数据安全检查失败,fail_data里面包含了失败标志位,该标志位表明了失败的原因,比如验签不通过或者原始数据哈希值匹配不一致;接收节点使用哈希算法对fail_data进行加密得到失败信息的哈希值,即fail_hash=hash(fail_data),然后用接收节点自己的私钥privateKey对应答数据reply_data=fail_data||fail_hash进行数字签名得到签名值,即sign_data=sign(fail_data||fail_hash,privateKey),接着用发送节点的公钥publicKey对msg=fail_data||fail_hash||sign_data进行加密得到应答密文,即en_msg=encry(fail_data||fail_hash||sign_data,publicKey),然后接收节点把应答密文en_msg按照标准IP数据报格式构建应答消息,并将应答消息通过无线自组网发送给发送节点。

4、发送节点解析应答消息并构建数据确认消息

如图7所示,发送节点接收到应答消息后,首先清除自身所设置的等待接收节点回复应答消息的定时器,接着从应答消息里提取应答密文en_msg,然后用发送节点私钥privateKey对en_msg进行解密,得到解密后的应答信息,即msg=decrypt(en_msg,privateKey),从msg里面提取出签名值sign_data和应答数据reply_data,应答数据由应答值reply_value及其对应的哈希值reply_hash组成,根据应答信息类型,应答数据要么是reply_data=data_hash||data_hash´,要么是reply_data=fail_data||fail_hash。

发送节点对应答信息msg进行安全检查,根据接收节点的IP地址信息,从本地节点公钥表查找接收节点的公钥publicKey,然后对应答数据进行验签,isValid=verify(publicKey, reply_data, sign_data),如果isValid是True,则验签通过,则说明reply_data确实为接收节点所构建并发送的;如果验签不通过,则将应答信息丢弃,安全检查不通过,给接收节点发送验签不通过的数据确认消息通知接收节点重发应答消息。

对于验签通过的情况,发送节点从reply_data中分别提取应答值reply_value和其对应的哈希值reply_hash,然后重新计算reply_value的哈希值,用该哈希值与reply_hash进行比对,如果比对一致,则说明reply_value没有被篡改或丢失,如果比对不一致,则安全检查不通过,给接收节点发送哈希值匹配不通过的数据确认消息通知接收节点重发应答消息。

对于哈希值比对一致的情况,发送节点判断应答值reply_value类型,如果是数据安全检查失败的应答值fail_data,则发送节点重新将原始数据组装成数据消息发送给接收节点。

对于哈希值比对一致的情况,发送节点判断应答值reply_value类型,如果是数据完整的应答值data_hash,发送节点将data_hash与保存在本地的原始数据哈希值data_hash进行比对,如果比对一致,则说明接收节点已经收到了正确的原始数据,给接收节点发送原始数据正确的数据确认消息;如果比对不一致,则说明接收节点收到的原始数据有误或者丢失,给接收节点发送原始数据有误的数据确认消息,并重新将原始数据组装成数据消息发送给接收节点。

发送节点根据验签结果和安全检查结果构建相应的数据确认消息,如果接收节点接收的原始数据正确,则把数据确认消息中数据确认标志位置1,如果接收节点接收的原始数据错误,则把数据确认标志位置0,如果是应答消息验签不通过或应答消息哈希值匹配不通过,则把数据确认标志位置2;用数据确认标志位和原始数据哈希值构建数据确认信息confirm_info,即confirm_info=flag||data_hash,接着用发送节点自己的私钥privateKey给数据确认信息进行数字签名,即sign_data=sign(confirm_info,privateKey),接着在本地节点公钥表里查找接收节点的公钥publicKey,用publicKey对confirm_info和sign_data进行加密,即en_msg=encry(flag||data_hash||sign_data,publicKey),得到数据确认密文en_msg,最后发送节点把en_msg按照标准IP数据报格式构建数据确认消息,并将数据确认消息通过无线自组网发送给接收节点。

5、接收节点解析数据确认消息

如图8所示,接收节点一旦接收到数据确认消息,首先取消所设置的等待发送节点回复数据确认消息的定时器;接着接收节点从数据确认消息中提取数据确认密文en_msg,接收节点用自己的私钥privateKey对en_msg进行解密,即msg=decrypt(en_msg,privateKey),从msg里面提取出签名值sign_data和数据确认信息confirm_info,然后用发送节点的公钥来对confirm_info进行验签,即isValid=verify(publicKey, confirm_info, sign_data),如果isValid是True,则验签通过,则说明confirm_info确实为发送节点所构建并发送的;如果验签不通过,则将数据确认信息丢弃,同时重新发送应答消息给发送节点,同时设置定时器,等待发送节点返回的数据确认消息。

针对验签通过的情况,进一步说明,接收节点从confirm_info里面解析出数据确认标志位flag和原始数据哈希值data_hash,接着判断flag设置的数值,如果flag是1,则根据data_hash在本地找到对应的原始数据,保留该原始数据;如果flag是0,则根据data_hash在本地找到对应的原始数据,丢弃该原始数据;如果flag是2,则接收节点重新发送应答消息给发送节点,同时设置定时器,等待发送节点返回的数据确认消息。

以上所述的实施方式仅仅是对本发明的优选实施方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号