一种基于数字水印的无线传感器网络数据安全保护方法转让专利

申请号 : CN201410727938.3

文献号 : CN104486304B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 易昌朱更明张丹丹王志强

申请人 : 湖南科技大学

摘要 :

本发明公开了一种基于数字水印的无线传感器网络数据安全保护方法,通过源节点处感知数据并转为二进制数,再划分处理块;利用哈希函数得水印基数,计算水印信息;利用哈希函数生成水印嵌入位置基数,计算水印存储位置;根据二进制数、水印信息和水印存储位置,利用水印嵌入算法得到嵌入水印二进制数;利用安全字符变换算法将嵌入水印二进制数生成字符串并发送。基站节点收到数据后,通过逆向过程获得原始二进制数和嵌入的水印信息,再计算水印信息,若能与嵌入的水印依次等同,则可知原数据正确完整,否则将丢弃该包。本发明能根据原数据的长度嵌入适长的水印信息,可减少不必要的通信量,通过安全字符变换,提高了网络的安全性。

权利要求 :

1.一种基于数字水印的无线传感器网络数据安全保护方法,其特征在于,包括前提、定义和步骤;

所述前提如下:

1)基站节点是安全的;

2)在未知区域有N个源节点{S1,S2,...,SN},每个源节点有唯一ID号,节点间互不相关,节点能独立确定感知数据;

3)源节点{S1,S2,...,SN}都预存一个密钥,分别为{K1,K2,...,KN};

4)基站节点预存所有节点密钥,即{K1,K2,...,KN};

所述定义如下:

1)采集的数据发送消息的格式:

源地址 采集时间 采集数据

其中源地址用10位存储;采集时间格式为月日时分秒,用26位存储;采集数据根据实际数据长度存储;

2)设定水印嵌入位置基数为

wm_position_base=(wm_position_base0,wm_position_base1,...,wm_position_baseblocks-1)

3)设定水印嵌入位置为

wm_position=(wm_position0,wm_position1,...,wm_positionblocks-1);

所述步骤如下:

一、采集数据转换步骤:

1)每个节点向其周围进行数据采集,获取采集时间和采集数据;

2)根据定义1)中消息格式将采集数据转换为二进制数binary_str,其中源地址占10位,采集时间占26位,其中月占4位、日占5位、时占5位、分占6位及秒占6位,采集数据占其字节长度*8位;

二、水印嵌入步骤:

1)根据步骤一中转换成的二进制数binary_str,利用哈希函数F(binary_str)可得32字节的水印基数wm_base,由水印生成公式计算出32字节的水印信息wm_info,所述水印生成公式如下:对于  有wmi=bimod 2+'0'

其中水印基数wm_base=(b1,b2,...,b32);水印信息wm_inf o=(wm1,wm2,...,wm32);

2)根据步骤一中转换成的二进制数binary_str,不考虑其前10字节,再对其每256字节分块,不满256字节也算一个处理块,最后得出处理块数blocks;

3)根据节点编号X获取预存的密钥KX,对于处理块号blocknum,有满足blocknum,利用哈希函数F(KX+blocknum),可依次生成相应blocknum块的32字节水印嵌入位 置基数wm_position_baseblocknum,进而得到水印嵌入位置基数wm_position_base;

4)根据水印嵌入位置基数wm_position_base,利用水印位置生成公式计算出水印存储位置wm_position,对于 满足i和blocknum,所述水印位置生成公式:

pblocknum,i=pbimod9+10+8*(i-1)+blocknum*256其中pblocknum,i表示水印在相应blocknum块中的第i个存储位置;pbi表示水印在相应blocknum块中的第i个位置基数;wm_position_baseblocknum=(pb1,pb2,...,pb32);wm_positionblocknum=(pblocknum,1,pblocknum,2,...,pblocknum,32);

5)根据步骤一中转换的二进制数binary_str、水印信息wm_info及水印存储位置wm_position,利用水印嵌入算法,可得嵌入水印的二进制数wm_binary_str,所述水印嵌入算法如下:输入:二进制数串binary_str、水印信息wm_info及水印存储位置wm_position输出:嵌入水印的二进制数串wm_binary_str三、字符安全变换步骤:

1)根据步骤二中获取嵌入水印的二进制数wm_binary_str,对其每6个字符分割成块,若分割块不足6字符,将对其补充字符0;

2)获得分割块后,在每块前面添加字符0,在每块后面添加字符1;

3)合并所有分割块转换为安全二进制数safe_binary_str;

4)先将安全二进制数safe_binary_str每8个字符分割成块,计算出分割块数segment,然后依次  以分割块为单位进行字符转换,即每个分割块转换为一个字符,即对满足s,char_strs=safe_binary_strs

最后得到安全字符串char_str=(char_str0,char_str1,...,char_strsegment-1);

四、水印及数据提取步骤:

1)基站节点获取每个节点转发的安全字符串char_str,将其转换为接收二进制数receive_binary_str;

2)对接收二进制数receive_binary_str每8个字符分割成块,并去除每块首位和末位字符;

3)合并所有分割块转换为嵌入水印接收二进制数reveive_wm_binary_str;

4)根据嵌入水印接收二进制数reveive_wm_binary_str,解析前10位字符为无符号长整型数,即为源节点ID号reveive_node;

5)根据嵌入水印接收二进制数reveive_wm_binary_str,不考虑其前10字节,再对其每

256字节分块,不满256字节也算一个处理块,最后得出处理块数reveive_blocks;

6)根据源节点ID号reveive_node获取预存的密钥Kreveive_node,对于 满足reveive_blocknum,利用哈希函数F

(Kreveive_node+reveive_blocknum),可依次生成相应reveive_blocknum块的32字节水印嵌入位置基数reveive_wm_position_basereveive_blocknum,进而得到水印嵌入位置基数reveive_wm_position_base;

7)根据水印嵌入位置基数reveive_wm_position_base,同步骤二中第4)步,解析出水印存储位置reveive_wm_position;

8)根据接收二进制数串receive_binary_str、水印存储位置reveive_wm_position,利用水印提取算法,可得去除水印的二进制数remove_wm_binary_str和嵌入水印信息extract_wm_info,其中水印提取算法如下:输入:接收二进制数串receive_binary_str及水印存储位置receive_wm_position输出:去除水印的二进制数串remove_wm_binary_str和嵌入的水印信息extract_wm_info

9)根据去除水印二进制数remove_wm_binary_str,利用哈希函数F(remove_wm_binary_str)可得32字节的接收水印基数reveive_wm_base;

10)根据接收水印基数reveive_wm_base,同步骤二中第1)步,计算出接收水印信息reveive_wm_info;

11)根据提取的水印信息extract_wm_info,对于 依次对比extract_wm_inf oreveive_blocknum和reveive_wm_info,若extract_wm_inf oreveive_blocknum中的每位数据都能依次等同于reveive_wm_info的数据,则接收数据是正确可靠的,否则将不可信;

12)若接收数据是正确可靠的,则对去除水印二进制数remove_wm_binary_str依次每八位进行提取,并转换成字符,即为原始数据;否则丢弃此接收数据 。

说明书 :

一种基于数字水印的无线传感器网络数据安全保护方法

技术领域

[0001] 本发明涉及无线传感器网络数据安全领域,具体是一种基于数字水印的无线传感器网络数据安全保护方法。

背景技术

[0002] 无线传感器网络(Wireless Sensor Network,WSN)是由部署在监测区域内大量的廉价微型传感器节点组成,其目的是协作地感知、采集、处理和传输,网络覆盖区域内采集对象的监测信息,并报告给控制中心。无线传感器网络主要以数据为中心,实时采集监控数据,用于对监控区域的分析判断。数据的准确和安全与否将直接影响是否做出正确决策。如何保证任务执行的机密性、数据产生的可靠性、数据融合的高效性以及数据传输的安全性,是无线传感器网络安全问题需要全面考虑的内容。
[0003] 针对无线传感器网络所具有的安全问题,现有的技术主要有以下几种方案:
[0004] Hu  L,Evans D.Secure aggregation for wireless networks[C]//Applications and the Internet Workshops,2003.Proceedings.2003 Symposium on.IEEE,2003:384-391.提出有汇聚节点通过加密其子节点的汇聚数据产生消息验证码的方法,并且在数据包中还携带子节点生成的消息验证码,能在一定程度上解决数据伪造和数据完整性问题,但由于产生的MAC数据量较大,增加了额外通信开销。
[0005] Chan H,Perrig A,Song D.Random key predistribution schemes for sensor networks[C]//Security and Privacy,2003.Proceedings.2003 Symposium on.IEEE,2003:197-213.针对大型的分布式传感网络,提出了一种灵活的分组随机密钥分布方案。该方案把所有的节点划分为组单位,并使用单向哈希函数来产生组到组的成对密钥来增加密钥的连通性。
[0006] Zhu S,Setia S,Jajodia S.LEAP+:Efficient security mechanisms for large-scale distributed sensor networks[J].ACM Transactions on Sensor Networks(TOSN),2006,2(4):500-528.提出了能量有效的基于模式码的安全数据汇聚协议。具有相同模式码的不同传感器节点集合只需传送其中之一的原始数据到簇头。簇头根据模式码选择数据,然后采用加密形式传送到基站,在传输过程中任何中间节点均不需要解密。
[0007] Boyle P,Newe T.A Survey of Authentication Mechanisms:Authentication for Ad-Hoc Wireless Sensor Networks[C]//Sensors Applications Symposium,2007.SAS'07.IEEE.IEEE,2007:1-6.等提出了在无线传感器网络中基于身份的多用户广播认证协议。他们认为所有的基于公钥算法都不能同时解决安全性、可测量性和稳定性,但他们提出的IMBAS算法可以实现这些性能。
[0008] Sun X,Su J,Wang B,et al.Digital Watermarking Method for Data Integrity Protection in Wireless Sensor Networks[J].International Journal of Security&Its Applications,2013,7(4).提出了一种新的数据完整性保护战略基于数字水印的技术。源节点使用单向哈希函数收集到的数据来创建水印信息,然后与嵌入的目标字节冗余空间中的数据进行关联,在基站提取印算法的目的是提取水印信息,相较于其他的数字水印方法,该算法不增加额外的数据存储空间,并保持数据的准确性,具有更多的应用价值。
[0009] 上述方法可以有效地保证数据的安全,提高网络的安全性,但在实际运用中很难做到低消耗和数字水印的灵活性。

发明内容

[0010] 本发明的目的在于提供一种基于数字水印的无线传感器网络数据安全保护方法,能判断出在任何情况下的数据是否丢失或窜改,从而保证完整数据的安全性;水印信息根据数据包的长度进行适长嵌入,能起到节约耗能的作用;水印嵌入位置由哈希函数产生,散列性强,提高了水印的安全。
[0011] 为实现上述目的,本发明提供如下技术方案:
[0012] 一种基于数字水印的无线传感器网络数据安全保护方法,包括前提、定义和步骤;
[0013] 所述前提如下:
[0014] 1)基站节点是安全的;
[0015] 2)在未知区域有N个源节点{S1,S2,...,SN},每个源节点有唯一ID号,节点间互不相关,节点能独立确定感知数据;
[0016] 3)源节点{S1,S2,...,SN}都预存一个密钥,分别为{K1,K2,...,KN};
[0017] 4)基站节点预存所有节点密钥,即{K1,K2,...,KN};
[0018] 所述定义如下:
[0019] 1)采集的数据发送消息的格式:
[0020]源地址 采集时间 采集数据
[0021] 其中源地址用10位存储;采集时间格式为月日时分秒,用26位存储;采集数据根据实际数据长度存储;
[0022] 2)设定水印嵌入位置基数为
[0023] wm_position_base=(wm_position_base0,wm_position_base1,...,wm_position_baseblocks-1)
[0024] 3)设定水印嵌入位置为
[0025] wm_position=(wm_position0,wm_position1,...,wm_positionblocks-1);
[0026] 所述步骤如下:
[0027] 一、采集数据转换步骤:
[0028] 1)每个节点向其周围进行数据采集,获取采集时间和采集数据;
[0029] 2)根据定义1)中消息格式将采集数据转换为二进制数binary_str,其中源地址占10位,采集时间占26位,其中月占4位、日占5位、时占5位、分占6位及秒占6位,采集数据占其字节长度*8位;
[0030] 二、水印嵌入步骤:
[0031] 1)根据步骤一中转换成的二进制数binary_str,利用哈希函数F(binary_str)可得32字节的水印基数wm_base,由水印生成公式计算出32字节的水印信息wm_info,所述水印生成公式如下:对于 有
[0032] wmi=bimod2+'0'
[0033] 其中水印基数wm_base=(b1,b2,...,b32);水印信息wm_info=(wm1,wm2,...,wm32);
[0034] 2)根据步骤一中转换成的二进制数binary_str,不考虑其前10字节,再对其每256字节分块,不满256字节也算一个处理块,最后得出处理块数blocks;
[0035] 3)根据节点编号X获取预存的密钥KX,对于处理块号blocknum,有满足blocknum,利用哈希函数F(KX+blocknum),可依次生成相应
blocknum块的32字节水印嵌入位置基数wm_position_baseblocknum,进而得到水印嵌入位置基数wm_position_base;
[0036] 4)根据水印嵌入位置基数wm_position_base,利用水印位置生成公式计算出水印存储位置wm_position,对于 满足i和blocknum,所述水印位置生成公式:
[0037] pblocknum,i=pbimod9+10+8*(i-1)+blocknum*256
[0038] 其中pblocknum,i表示水印在相应blocknum块中的第i个存储位置;pbi表示水印在相应blocknum块中的第i个位置基数;wm_position_baseblocknum=(pb1,pb2,...,pb32);wm_positionblocknum=(pblocknum,1,pblocknum,2,...,pblocknum,32);
[0039] 5)根据步骤一中转换的二进制数binary_str、水印信息wm_info及水印存储位置wm_position,利用水印嵌入算法,可得嵌入水印的二进制数wm_binary_str,所述水印嵌入算法如下:
[0040]
[0041] 三、字符安全变换步骤:
[0042] 1)根据步骤二中获取嵌入水印的二进制数wm_binary_str,对其每6个字符分割成块,若分割块不足6字符,将对其补充字符0;
[0043] 2)获得分割块后,在每块前面添加字符0,在每块后面添加字符1;
[0044] 3)合并所有分割块转换为安全二进制数safe_binary_str;
[0045] 4)先将安全二进制数safe_binary_str每8个字符分割成块,计算出分割块数segment,然后依次以分割块为单位进行字符转换,即每个分割块转换为一个字符,即对满足s,
[0046] char_strs=safe_binary_strs
[0047] 最后得到安全字符串char_str=(char_str0,char_str1,...,char_strsegment-1;
[0048] 四、水印及数据提取步骤:
[0049] 1)基站节点获取每个节点转发的安全字符串char_str,将其转换为接收二进制数receive_binary_str;
[0050] 2)对接收二进制数receive_binary_str每8个字符分割成块,并去除每块首位和末位字符;
[0051] 3)合并所有分割块转换为嵌入水印接收二进制数reveive_wm_binary_str;
[0052] 4)根据嵌入水印接收二进制数reveive_wm_binary_str,解析前10位字符为无符号长整型数,即为源节点ID号reveive_node;
[0053] 5)根据嵌入水印接收二进制数reveive_wm_binary_str,不考虑其前10字节,再对其每256字节分块,不满256字节也算一个处理块,最后得出处理块数reveive_blocks;
[0054] 6)根据源节点ID号reveive_node获取预存的密钥Kreveive_node,对于满足rev_ebilvoeck,n利um用哈希函数F
(Kreveive_node+reveive_blocknum),可依次生成相应reveive_blocknum块的32字节水印嵌入位置基数reveive_wm_position_basereveive_blocknum,进而得到水印嵌入位置基数reveive_wm_position_base;
[0055] 7)根据水印嵌入位置基数reveive_wm_position_base,同步骤二中第4)步,解析出水印存储位置reveive_wm_position;
[0056] 8)根据接收二进制数串receive_binary_str、水印存储位置reveive_wm_position,利用水印提取算法,可得去除水印的二进制数remove_wm_binary_str和嵌入水印信息extract_wm_info,其中水印嵌入算法如下:
[0057]
[0058]
[0059] 9)根据去除水印二进制数remove_wm_binary_str,利用哈希函数F(remove_wm_binary_str)可得32字节的接收水印基数reveive_wm_base;
[0060] 10)根据接收水印基数reveive_wm_base,同步骤二中第1)步,计算出接收水印信息reveive_wm_info;
[0061] 11)根据提取的水印信息extract_wm_info,对于 依次对比extract_wm_inforeveive_blocknum和reveive_wm_info,若extract_wm_inforeveive_blocknum中的每位数据都能依次等同于reveive_wm_info的数据,则接收数据是正确可靠的,否则将不可信;
[0062] 12)若接收数据是正确可靠的,则对去除水印二进制数remove_wm_binary_str依次每八位进行提取,并转换成字符,即为原始数据;否则丢弃此接收数据。
[0063] 与现有技术相比,本发明的有益效果是:本发明主要针对无线传感器网络中的数据完整性安全和信息隐藏,提出了一个基于数字水印技术的数据安全方法。本发明将数字水印技术和无线传感器网络所固有的特性相结合,形成一个高效的数据安全保障算法,能判断出在任何情况下的数据是否丢失或窜改,从而保证完整数据的安全性;本发明的水印信息根据数据包的长度进行适长嵌入,具有一定的随机性,减小了通信量,能起到节约耗能的作用;本发明的水印嵌入位置由哈希函数产生,散列性强,提高了水印的安全。从总体上看,本发明提高了网络的安全性。

附图说明

[0064] 图1是基于数字水印的无线传感器网络数据安全保护方法示意图;
[0065] 图2是基于数字水印的无线传感器网络数据安全保护方法的源节点采集数据及嵌入水印过程示意图;
[0066] 图3是基于数字水印的无线传感器网络数据安全保护方法的基站获得数据及提取水印过程示意图。

具体实施方式

[0067] 下面将结合本发明实施例及附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0068] 请参阅图1,本发明实施例中,一种基于数字水印的无线传感器网络数据安全保护方法,包括前提、定义和步骤。
[0069] 前提如下:
[0070] 1)基站节点是安全的;
[0071] 2)在未知区域有N个源节点{S1,S2,...,SN},每个源节点有唯一ID号,节点间互不相关(节点能独立确定感知数据);
[0072] 3)源节点{S1,S2,...,SN}都预存一个密钥,分别为{K1,K2,...,KN};
[0073] 4)基站节点预存所有节点密钥,即{K1,K2,...,KN}。
[0074] 定义如下:
[0075] 2)采集的数据发送消息的格式:
[0076]源地址 采集时间 采集数据
[0077] 其中源地址用10位存储;采集时间格式为月日时分秒,用26位存储;采集数据根据实际数据长度存储;
[0078] 2)设定水印嵌入位置基数为
[0079] wm_position_base=(wm_position_base0,wm_position_base1,...,wm_position_baseblocks-1)
[0080] 3)设定水印嵌入位置为
[0081] wm_position=(wm_position0,wm_position1,...,wm_positionblocks-1);
[0082] 步骤如下:
[0083] 一、采集数据转换步骤:
[0084] 1)每个节点向其周围进行数据采集,获取采集时间和采集数据;
[0085] 2)根据定义1)中消息格式将采集数据转换为二进制数binary_str,其中源地址占10位,采集时间占26位(月占4位、日占5位、时占5位、分占6位及秒占6位),采集数据占其字节长度*8位。
[0086] 二、水印嵌入步骤:
[0087] 1)根据步骤一中转换成的二进制数binary_str,利用哈希函数F(binary_str)可得32字节的水印基数wm_base,由水印生成公式计算出32字节的水印信息wm_info,水印生成公式如下:对于 有
[0088] wmi=bimod2+'0'
[0089] 其中水印基数wm_base=(b1,b2,...,b32);水印信息wm_info=(wm1,wm2,...,wm32);
[0090] 2)根据步骤一中转换成的二进制数binary_str,不考虑其前10字节,再对其每256字节分块,不满256字节也算一个处理块,最后得出处理块数blocks;
[0091] 3)根据节点编号X获取预存的密钥KX,对于处理块号blocknum,有满足blocknum,利用哈希函数F(KX+blocknum),可依次生成相应
blocknum块的32字节水印嵌入位置基数wm_position_baseblocknum,进而得到水印嵌入位置基数wm_position_base;
[0092] 4)根据水印嵌入位置基数wm_position_base,利用水印位置生成公式计算出水印存储位置wm_position,对于 满足i和blocknum,水印位置生成公式:
[0093] pblocknum,i=pbimod9+10+8*(i-1)+blocknum*256
[0094] 其中pblocknum,i表示水印在相应blocknum块中的第i个存储位置;pbi表示水印在相应blocknum块中的第i个位置基数;wm_position_baseblocknum=(pb1,pb2,...,pb32);wm_positionblocknum=(pblocknum,1,pblocknum,2,...,pblocknum,32);
[0095] 5)根据步骤一中转换的二进制数binary_str、水印信息wm_info及水印存储位置wm_position,利用水印嵌入算法,可得嵌入水印的二进制数wm_binary_str,水印嵌入算法如下:
[0096]
[0097] 三、字符安全变换步骤:
[0098] 1)根据步骤二中获取嵌入水印的二进制数wm_binary_str,对其每6个字符分割成块,若分割块不足6字符,将对其补充字符0;
[0099] 2)获得分割块后,在每块前面添加字符0,在每块后面添加字符1;
[0100] 3)合并所有分割块转换为安全二进制数safe_binary_str;
[0101] 4)先将安全二进制数safe_binary_str每8个字符分割成块,计算出分割块数segment,然后依次以分割块为单位进行字符转换,即每个分割块转换为一个字符,即对满足s,
[0102] char_strs=safe_binary_strs
[0103] 最后得到安全字符串
[0104] char_str=(char_str0,char_str1,...,char,_strsegment-1);
[0105] 四、水印及数据提取步骤:
[0106] 1)基站节点获取每个节点转发的安全字符串char_str,将其转换为接收二进制数receive_binary_str;
[0107] 2)对接收二进制数receive_binary_str每8个字符分割成块,并去除每块首位和末位字符;
[0108] 3)合并所有分割块转换为嵌入水印接收二进制数reveive_wm_binary_str;
[0109] 4)根据嵌入水印接收二进制数reveive_wm_binary_str,解析前10位字符为无符号长整型数,即为源节点ID号reveive_node;
[0110] 5)根据嵌入水印接收二进制数reveive_wm_binary_str,不考虑其前10字节,再对其每256字节分块,不满256字节也算一个处理块,最后得出处理块数reveive_blocks;
[0111] 6)根据源节点ID号reveive_node获取预存的密钥Kreveive_node,对于满足reveive_blocknum,n利um用哈希函数F
(Kreveive_node+reveive_blocknum),可依次生成相应reveive_blocknum块的32字节水印嵌入位置基数reveive_wm_position_basereveive_blocknum,进而得到水印嵌入位置基数reveive_wm_position_base;
[0112] 7)根据水印嵌入位置基数reveive_wm_position_base,同步骤二中第4)步,解析出水印存储位置reveive_wm_position;
[0113] 8)根据接收二进制数串receive_binary_str、水印存储位置reveive_wm_position,利用水印提取算法,可得去除水印的二进制数remove_wm_binary_str和嵌入水印信息extract_wm_info,其中水印嵌入算法如下:
[0114]
[0115]
[0116] 9)根据去除水印二进制数remove_wm_binary_str,利用哈希函数F(remove_wm_binary_str)可得32字节的接收水印基数reveive_wm_base;
[0117] 10)根据接收水印基数reveive_wm_base,同步骤二中第1)步,计算出接收水印信息reveive_wm_info;
[0118] 1 1 ) 根 据 提 取 的 水 印 信 息 e x t r a c t _ w m _ i n f o ,对 于依次对比extract_wm_inforeveive_blocknum和reveive_wm_info,若extract_wm_inforeveive_blocknum中的每位数据都能依次等同于reveive_wm_info的数据,则接收数据是正确可靠的,否则将不可信;
[0119] 12)若接收数据是正确可靠的,则对去除水印二进制数remove_wm_binary_str依次每八位进行提取,并转换成字符,即为原始数据;否则丢弃此接收数据。
[0120] 请参阅图2,本发明实施例中,源节点采集数据及嵌入水印过程,具体步骤为:
[0121] 1)源节点ID号为87,用十位二进制数表示为0001010111;采集时间为09月27日16时07分37秒,用26位二进制数表示为1001 11011 10000 000111 100101;采集数据为WSN,用二进制数表示为01010111 01010011 01001110;三者合并构成二进制数binary_str(0001010111 1001 11011 10000 000111 100101 01010111 01010011 01001110);
[0122] 2 ) 根 据 二 进 制 数 b i n a r y _ s t r 生 成 水 印 基 数 w m _ b a s e(E6E3EE2D395D46563BE1B4505201461F),进而生成水印信息wm_info(10111100111000101011001010010010);根据源节点ID号87和块号0,生成32字节水印嵌入位置基数wm_position_base(22FB0CEE7E1F3BDE58293DE743871417),进而生成水印存储位置信息wm_position(15 23 33 37 45 54 64 72 75 88 94 105 112 117 127 136 146 
148 159 165 176 183 192 195 209 216 220 227 238 249 254 259);
[0123] 3)根据二进制数binary_str、水印信息wm_info及水印存储位置wm_position生成嵌入水印二进制数wm_binary_str(000101011110011110111000000001111001101011010111011010011011001110);
[0124] 4)根据嵌入水印二进制数wm_binary_str进行安全字符变换,生成安全二进制数safe_binary_str
[0125](0000101100111101001111010111000100000011011100110101011100101111001101010011
011100011101);
[0126] 5)根据安全二进制数safe_binary_str将其转换为安全字符串char_str(♂==qsW/57);
[0127] 6)源节点将安全字符串进行发送。
[0128] 请参阅图3,本发明实施例中,基站获得数据及提取水印过程,具体步骤为:
[0129] 1)基站接收到数据为♂==qsW/57,将其转化为接收二进制数receive_binary_str(0000101100111101001111010111000100000011011100110101011100101111001101010011011100011101);
[0130] 2)根据接收二进制数receive_binary_str,去安全字符变换,得到嵌入水印接收二进制数reveive_wm_binary_str
[0131] (000101011110011110011000000001011001001011010111011010011011001110);
[0132] 3)根据嵌入水印接收二进制数reveive_wm_binary_str,解析前10位字符可得源节点ID号reveive_node(0001010111B=87D);获得块号为0;
[0133] 4)根据源节点ID号87和块号0,根据源节点ID号87和块号0,生成32字节水印嵌入位置基数reveive_wm_position_base(22FB0CEE7E1F3BDE58293DE743871417),进而生成水印存储位置信息reveive_wm_position(15 23 33 37 45 54 64 72 75 88 94 105 112 117 127 136 146 148 159 165 176 183 192 195 209 216 220 227 238 249 254 259);
[0134] 5)根据嵌入水印接收二进制数reveive_wm_binary_str和水印存储位置信息reveive_wm_position,提取水印信息extract_wm_info(101111),并得到去除水印二进制数 r e m o v e _ w m _ b i n a r y _ s t r(000101011110011100110000000101100001010101110101001101001110);
[0135] 6)根据去除水印二进制数remove_wm_binary_str,生成接收水印基数reveive_wm_base(E6E3EE2D395D46563BE1B4505201461F),进而生成接收水印信息reveive_wm_info(10111100111000101011001010010010);
[0136] 7)根据比较提取水印信息extract_wm_info和接收水印信息reveive_wm_info可知此包正确可靠,并解析出数据为采集节点ID:87,采集时间:9月25日16:05:33,采集数据:WSN。
[0137] 本发明主要针对无线传感器网络中的数据完整性安全和信息隐藏,提出了一个基于数字水印技术的数据安全方法。本发明将数字水印技术和无线传感器网络所固有的特性相结合,形成一个高效的数据安全保障算法,能判断出在任何情况下的数据是否丢失或窜改,从而保证完整数据的安全性;本发明的水印信息根据数据包的长度进行适长嵌入,具有一定的随机性,减小了通信量,能起到节约耗能的作用;本发明的水印嵌入位置由哈希函数产生,散列性强,提高了水印的安全。从总体上看,本发明提高了网络的安全性。
[0138] 对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。
[0139] 此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。