发明名称 一种基于数字水印的无线传感器网络数据安全保护方法
摘要 本发明公开了一种基于数字水印的无线传感器网络数据安全保护方法,通过源节点处感知数据并转为二进制数,再划分处理块;利用哈希函数得水印基数,计算水印信息;利用哈希函数生成水印嵌入位置基数,计算水印存储位置;根据二进制数、水印信息和水印存储位置,利用水印嵌入算法得到嵌入水印二进制数;利用安全字符变换算法将嵌入水印二进制数生成字符串并发送。基站节点收到数据后,通过逆向过程获得原始二进制数和嵌入的水印信息,再计算水印信息,若能与嵌入的水印依次等同,则可知原数据正确完整,否则将丢弃该包。本发明能根据原数据的长度嵌入适长的水印信息,可减少不必要的通信量,通过安全字符变换,提高了网络的安全性。
申请公布号 CN104486304A 申请公布日期 2015.04.01
申请号 CN201410727938.3 申请日期 2014.12.04
申请人 湖南科技大学 发明人 易昌;朱更明;张丹丹;王志强
分类号 H04L29/06(2006.01)I;H04W12/02(2009.01)I 主分类号 H04L29/06(2006.01)I
代理机构 贵阳天圣知识产权代理有限公司 52107 代理人 杜胜雄
主权项 一种基于数字水印的无线传感器网络数据安全保护方法,其特征在于,包括前提、定义和步骤;所述前提如下:1)基站节点是安全的;2)在未知区域有N个源节点{S<sub>1</sub>,S<sub>2</sub>,...,S<sub>N</sub>},每个源节点有唯一ID号,节点间互不相关,节点能独立确定感知数据;3)源节点{S<sub>1</sub>,S<sub>2</sub>,...,S<sub>N</sub>}都预存一个密钥,分别为{K<sub>1</sub>,K<sub>2</sub>,...,K<sub>N</sub>};4)基站节点预存所有节点密钥,即{K<sub>1</sub>,K<sub>2</sub>,...,K<sub>N</sub>};所述定义如下:1)采集的数据发送消息的格式:<tables num="0001" id="ctbl0001"><table><tgroup cols="3"><colspec colname="c001" colwidth="33%" /><colspec colname="c002" colwidth="33%" /><colspec colname="c003" colwidth="34%" /><tbody><row><entry morerows="1">源地址</entry><entry morerows="1">采集时间</entry><entry morerows="1">采集数据</entry></row></tbody></tgroup></table></tables>其中源地址用10位存储;采集时间格式为月日时分秒,用26位存储;采集数据根据实际数据长度存储;2)设定水印嵌入位置基数为wm_position_base=(wm_position_base<sub>0</sub>,wm_position_base<sub>1</sub>,...,wm_position_base<sub>blocks‑1</sub>)3)设定水印嵌入位置为wm_position=(wm_position<sub>0</sub>,wm_position<sub>1</sub>,...,wm_position<sub>blocks‑1</sub>);所述步骤如下:一、采集数据转换步骤: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,所述水印生成公式如下:对于<img file="FDA0000624341600000022.GIF" wi="228" he="84" />有wm<sub>i</sub>=b<sub>i</sub>mod2+'0'其中水印基数wm_base=(b<sub>1</sub>,b<sub>2</sub>,...,b<sub>32</sub>);水印信息wm_info=(wm<sub>1</sub>,wm<sub>2</sub>,...,wm<sub>32</sub>);2)根据步骤一中转换成的二进制数binary_str,不考虑其前10字节,再对其每256字节分块,不满256字节也算一个处理块,最后得出处理块数blocks;3)根据节点编号X获取预存的密钥K<sub>X</sub>,对于处理块号blocknum,有<img file="FDA0000624341600000023.GIF" wi="505" he="80" />满足blocknum,利用哈希函数F(K<sub>X</sub>+blocknum),可依次生成相应blocknum块的32字节水印嵌入位置基数wm_position_base<sub>blocknum</sub>,进而得到水印嵌入位置基数wm_position_base;4)根据水印嵌入位置基数wm_position_base,利用水印位置生成公式计算出水印存储位置wm_position,对于<img file="FDA0000624341600000024.GIF" wi="727" he="90" />满足i和blocknum,所述水印位置生成公式:p<sub>blocknum,i</sub>=pb<sub>i</sub>mod9+10+8*(i‑1)+blocknum*256其中p<sub>blocknum,i</sub>表示水印在相应blocknum块中的第i个存储位置;pb<sub>i</sub>表示水印在相应blocknum块中的第i个位置基数;wm_position_base<sub>blocknum</sub>=(pb<sub>1</sub>,pb<sub>2</sub>,...,pb<sub>32</sub>);wm_position<sub>blocknum</sub>=(p<sub>blocknum,1</sub>,p<sub>blocknum,2</sub>,...,p<sub>blocknum,32</sub>);5)根据步骤一中转换的二进制数binary_str、水印信息wm_info及水印存储位置wm_position,利用水印嵌入算法,可得嵌入水印的二进制数wm_binary_str,所述水印嵌入算法如下:<img file="FDA0000624341600000021.GIF" wi="1776" he="434" /><img file="FDA0000624341600000031.GIF" wi="1660" he="2101" />三、字符安全变换步骤:1)根据步骤二中获取嵌入水印的二进制数wm_binary_str,对其每6个字符分割成块,若分割块不足6字符,将对其补充字符0;2)获得分割块后,在每块前面添加字符0,在每块后面添加字符1;3)合并所有分割块转换为安全二进制数safe_binary_str;4)先将安全二进制数safe_binary_str每8个字符分割成块,计算出分割块数segment,然后依次以分割块为单位进行字符转换,即每个分割块转换为一个字符,即对<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mo>&ForAll;</mo><mi>s</mi><mo>&Element;</mo><mo>[</mo><mn>0</mn><mo>,</mo><mi>segment</mi><mo>)</mo><mo>,</mo></mrow>]]></math><img file="FDA0000624341600000042.GIF" wi="376" he="80" /></maths>满足s,char_str<sub>s</sub>=safe_binary_str<sub>s</sub>最后得到安全字符串char_str=(char_str<sub>0</sub>,char_str<sub>1</sub>,...,char_str<sub>s</sub>);四、水印及数据提取步骤: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获取预存的密钥K<sub>reveive_node</sub>,对于<img file="FDA0000624341600000043.GIF" wi="901" he="90" />满足reveive_blocknum,利用哈希函数F(K<sub>reveive_node</sub>+reveive_blocknum),可依次生成相应reveive_blocknum块的32字节水印嵌入位置基数reveive_wm_position_base<sub>reveive_blocknum</sub>,进而得到水印嵌入位置基数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,其中水印嵌入算法如下:<img file="FDA0000624341600000041.GIF" wi="1832" he="75" /><img file="FDA0000624341600000051.GIF" wi="1966" he="2809" />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,对于<img file="FDA0000624341600000061.GIF" wi="909" he="85" />依次对比extract_wm_info<sub>reveive_blocknum</sub>和reveive_wm_info,若extract_wm_info<sub>reveive_blocknum</sub>中的每位数据都能依次等同于reveive_wm_info的数据,则接收数据是正确可靠的,否则将不可信;12)若接收数据是正确可靠的,则对去除水印二进制数remove_wm_binary_str依次每八位进行提取,并转换成字符,即为原始数据;否则丢弃此接收数据。
地址 411201 湖南省湘潭市桃园路湖南科技大学
您可能感兴趣的专利