发明名称 用于无线传感器网络数据采集的网络编码方法
摘要 本发明公开了一种用于无线传感器网络数据采集的网络编码方法,能够达到提高数据传输安全性的目的;该方法的步骤为:给定各会话密钥和传感器节点的存储单元形式;传感器节点获取事件信息并进行编码更新;Sink节点进行译码:Sink节点随机选择多个传感器节点并采集编码包,加密得到包头hf;分别利用各会话密钥,对相应的hf解密得到编码矩阵C和编码包矩阵F;若C满秩,根据C<sup>-1</sup>和F,计算得到数据包b<sub>l-N</sub>,b<sub>l-N+1</sub>…,b<sub>l-1</sub>;否则,利用全局密钥GK进行加密并广播m<sub>1</sub>,…,m<sub>p</sub>;选取编码初始值为m<sub>1</sub>,…,m<sub>p</sub>中的一个的传感器节点;利用各会话密钥再次提取新采集的编码包包头中的信息,构建编码矩阵C<sub>1</sub>和编码包矩阵F<sub>1</sub>,若C<sub>1</sub>满秩,根据C<sub>1</sub>的逆<img file="dda0000157410500000011.GIF" wi="89" he="49" />计算得到有效数据包b<sub>l-N</sub>,b<sub>l-N+1</sub>…,b<sub>l-1</sub>;否则,译码结束。
申请公布号 CN102665206A 申请公布日期 2012.09.12
申请号 CN201210126316.6 申请日期 2012.04.26
申请人 北京邮电大学;北京工业大学 发明人 武斌;王秀娟;张冬梅;郑康锋;杨奎武;查选;丁靓子
分类号 H04W12/02(2009.01)I;H04L1/00(2006.01)I 主分类号 H04W12/02(2009.01)I
代理机构 北京理工大学专利中心 11120 代理人 郭德忠;李爱英
主权项 1.一种用于无线传感器网络数据采集的网络编码方法,该方法所涉及的无线传感器网络中设有无线传感器和Sink节点,其特征在于,该方法的具体步骤如下:1)数据初始化;在所述传感器网络中,所有传感器节点都共享一个全局密钥GK,同时Sink节点分别与每个传感器节点共享一个会话密钥,各会话密钥两两不同,每个传感器节点有B个存储单元S<sub>x</sub>,x为存储单元序号,x=0,...,B-1,每个存储单元用于存储编码包、编码初始值和编码系数,其中,编码包用于根据编码初始值,选取相应的有效数据包,将该有效数据包与相应的编码系数进行加权求和,得到该编码包值;随机分配编码初始值k给传感器节点各存储单元,k的取值范围为[0,N-1]的整数,N为编码周期;当编码初始值k确定后,每个传感器节点在域<img file="FDA0000157410470000011.GIF" wi="53" he="49" />内进行编码系数c<sub>x</sub>的选取,编码系数c<sub>x</sub>的选取原则为:对于同一传感器节点,在其任意两个存储单元中,若两个编码初始值相同,则所选取的两个存储单元的编码系数必须不同;所述<img file="FDA0000157410470000012.GIF" wi="53" he="49" />为伽罗瓦域GF(2<sup>q</sup>);2)传感器节点获取事件信息并进行编码更新;传感器网络中的所有传感器节点开始获取事件信息并生成数据包,当所有传感器开始进行事件信息获取后,每个传感器节点对所生成的有效数据包进行过时与否的判定,判定规则为:若所获取的有效数据包共N个,依次为b<sub>0</sub>…b<sub>j</sub>…b<sub>N-1</sub>,当该传感器节点再获取一个有效数据包b<sub>N</sub>时,则认为有效数据包b<sub>0</sub>过时,N>B;基于所述判定规则,每个传感器节点对自身的编码包进行编码更新的过程为:①当每个传感器节点获取到的有效数据包为b<sub>j-1</sub>,j≤N时,有效数据包未过时,判断j-1是否为当前编码初始值k中的一个,如果是,对编码初始值k≤j-1的编码包进行更新:给每个编码包f<sub>x</sub>加上<img file="FDA0000157410470000013.GIF" wi="170" he="61" />否则,仅对编码初始值k<j-1的编码包进行更新:给每个编码包f<sub>x</sub>加上<img file="FDA0000157410470000014.GIF" wi="170" he="61" />②当传感器节点获取到的有效数据包为b<sub>j-1</sub>,j>N时,将当前有效数据包的编号j-1减去N,判断(j-1)-N是否为当前编码初始值k中的一个,如果是,则将编码初始值为(j-1)-N的编码包形式替换为b<sub>j-1</sub>,并对编码初始值(j-1)-N加N,同时对其他存储单元的编码包形式进行更新:给每个编码包f<sub>x</sub>加上<img file="FDA0000157410470000021.GIF" wi="170" he="61" />否则,对所有的编码包形式进行更新:给每个编码包f<sub>x</sub>加上<img file="FDA0000157410470000022.GIF" wi="170" he="61" />3)Sink节点进行编码包解码;S00、Sink节点随机地选择n个传感器节点进行数据采集;S01、被选中的传感器节点在自身的多个存储单元中随机选择一个编码包f<sub>x</sub>,并对该编码包中的编码初始值进行加密并生成包头,将该编码包以及其包头发送至Sink节点;所述包头包含的信息包括相应编码包初始值k、编码系数c<sub>x</sub>和各传感器节点已生成的有效数据包个数l,l≥N;S02、Sink节点分别利用与每个传感器节点的会话密钥,对相应的包头解密得到c<sub>x</sub>、k和l,并将c<sub>x</sub>和N-l+k个0构成一个长度为N的编码向量<img file="FDA0000157410470000023.GIF" wi="73" he="59" /><img file="FDA0000157410470000024.GIF" wi="48" he="59" />为:<img file="FDA0000157410470000025.GIF" wi="1390" he="68" />Sink节点根据得到的所有编码向量,将这些编码向量记为<img file="FDA0000157410470000026.GIF" wi="222" he="61" />n>N,则编码包矩阵F表示为:<maths num="0001"><![CDATA[<math><mrow><mi>F</mi><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>f</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mi>f</mi><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mi>f</mi><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mi>f</mi><mn>4</mn></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>f</mi><mi>n</mi></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mi>C</mi><mo>&CenterDot;</mo><msub><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>3</mn></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mrow><mi>N</mi><mo>&times;</mo><mn>1</mn></mrow></msub><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mover><mi>c</mi><mi>r</mi></mover><mn>1</mn></msub></mtd></mtr><mtr><mtd><msub><mover><mi>c</mi><mi>r</mi></mover><mn>2</mn></msub></mtd></mtr><mtr><mtd><msub><mover><mi>c</mi><mi>r</mi></mover><mn>3</mn></msub></mtd></mtr><mtr><mtd><msub><mover><mi>c</mi><mi>r</mi></mover><mn>4</mn></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mover><mi>c</mi><mi>r</mi></mover><mi>n</mi></msub></mtd></mtr></mtable></mfenced><mo>&CenterDot;</mo><msub><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>3</mn></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mrow><mi>N</mi><mo>&times;</mo><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths>其中,C为编码矩阵;f<sub>1</sub>,f<sub>2</sub>,...,f<sub>n</sub>为所有编码向量<img file="FDA0000157410470000028.GIF" wi="260" he="61" />对应的编码包;b<sub>l-N</sub>,b<sub>l-N+1</sub>…,b<sub>l-1</sub>为传感器节点的最近的N个有效数据包;S03、Sink节点对编码矩阵C进行化简并求秩,并判断编码矩阵C是否满秩;若编码矩阵C满秩,即秩为N,则对编码矩阵C进行求逆并得到编码矩阵C的逆C<sup>-1</sup>,根据C<sup>-1</sup>和编码包矩阵F,计算得到数据包b<sub>l-N</sub>,b<sub>l-N+1</sub>…,b<sub>l-1</sub>,并转至步骤S05;若编码矩阵C不满秩,即秩不为N,则编码矩阵C不可逆;记Sink节点所选取的传感器节点的编码包f<sub>1</sub>,f<sub>2</sub>,...,f<sub>n</sub>的编码初始值分别为K<sub>1</sub>,K<sub>2</sub>,...,K<sub>n</sub>,结合(2)式,如果编码矩阵C满秩,则K<sub>1</sub>,K<sub>2</sub>,...,K<sub>n</sub>应取遍[l-N,l-1]内所有整数,而这里编码矩阵C不满秩,将K<sub>1</sub>,K<sub>2</sub>,...,K<sub>n</sub>在[l-N,l-1]内未取到的所有整数记为:m<sub>1</sub>,…,m<sub>p</sub>,p为所述未取到的所有整数的个数;Sink节点利用全局密钥GK对m<sub>1</sub>,…,m<sub>p</sub>进行加密并在传感器网络中广播;每个传感器节点在接收到Sink节点的广播数据后,对该广播数据进行解密得到m<sub>1</sub>,…,m<sub>p</sub>,该传感器节点判断自身存储单元中的编码初始值包含有m<sub>1</sub>,…,m<sub>p</sub>中的一个,若包含,则该传感器节点被Sink节点选中,被选中的传感器节点随机选择m<sub>1</sub>,…,m<sub>p</sub>中的一个,并以步骤S01中的方式生成包头,向Sink节点发送相应的编码包和包头;S04、Sink节点在收到多个传感器节点发送的编码包后,按照步骤S02的方法对其包头进行解密,并得到的相应编码矩阵C’和编码包矩阵F’,Sink节点根据C’和C,得到编码向量矩阵<maths num="0002"><![CDATA[<math><mfenced open='[' close=']'><mtable><mtr><mtd><mi>C</mi></mtd></mtr><mtr><mtd><msup><mi>C</mi><mo>&prime;</mo></msup></mtd></mtr></mtable></mfenced></math>]]></maths>并作初等行变换,可将冗余的编码系数消除并得到阶梯矩阵<maths num="0003"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>C</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>,</mo></mrow></math>]]></maths>同样地,根据F和F’,得到阶梯矩阵<maths num="0004"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>F</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>;</mo></mrow></math>]]></maths>其中,C<sub>1</sub>为N×N矩阵,F<sub>1</sub>为N×1矩阵;Sink节点对矩阵C<sub>1</sub>进行化简并求秩,并判断编码矩阵C<sub>1</sub>是否满秩;若矩阵C<sub>1</sub>满秩,则对矩阵C<sub>1</sub>进行求逆并得到编码矩阵C<sub>1</sub>的逆<img file="FDA0000157410470000034.GIF" wi="89" he="49" />由于,<maths num="0005"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><mi>F</mi></mtd></mtr><mtr><mtd><msup><mi>F</mi><mo>&prime;</mo></msup></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><mi>C</mi></mtd></mtr><mtr><mtd><msup><mi>C</mi><mo>&prime;</mo></msup></mtd></mtr></mtable></mfenced><msub><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>B</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>3</mn></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mrow><mi>N</mi><mo>&times;</mo><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>且<maths num="0006"><![CDATA[<math><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>C</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced></math>]]></maths>和<maths num="0007"><![CDATA[<math><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>F</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced></math>]]></maths>分别是由<maths num="0008"><![CDATA[<math><mfenced open='[' close=']'><mtable><mtr><mtd><mi>C</mi></mtd></mtr><mtr><mtd><msup><mi>C</mi><mo>&prime;</mo></msup></mtd></mtr></mtable></mfenced></math>]]></maths>和<maths num="0009"><![CDATA[<math><mfenced open='[' close=']'><mtable><mtr><mtd><mi>F</mi></mtd></mtr><mtr><mtd><msup><mi>F</mi><mo>&prime;</mo></msup></mtd></mtr></mtable></mfenced></math>]]></maths>作相同的初等行变换得到的,则有:<maths num="0010"><![CDATA[<math><mrow><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>F</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>C</mi><mn>1</mn></msub></mtd></mtr><mtr><mtd><mn>0</mn></mtd></mtr></mtable></mfenced><mo>=</mo><msub><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>3</mn></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mrow><mi>N</mi><mo>&times;</mo><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths>即:<maths num="0011"><![CDATA[<math><mrow><msub><mi>F</mi><mn>1</mn></msub><mo>=</mo><msub><mi>C</mi><mn>1</mn></msub><msub><mfenced open='[' close=']'><mtable><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>2</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mi>N</mi><mo>+</mo><mn>3</mn></mrow></msub></mtd></mtr><mtr><mtd><mo>.</mo><mo>.</mo><mo>.</mo></mtd></mtr><mtr><mtd><msub><mi>b</mi><mrow><mi>l</mi><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mrow><mi>N</mi><mo>&times;</mo><mn>1</mn></mrow></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>Sink节点根据<img file="FDA0000157410470000043.GIF" wi="62" he="49" />和矩阵F<sub>1</sub>,计算得到每个传感器节点的有效数据包为b<sub>l-N</sub>,b<sub>l-N+1</sub>…,b<sub>l-1</sub>;若编码矩阵C<sub>1</sub>不满秩,则转至步骤S05;S05、Sink节点译码结束。
地址 100876 北京市海淀区西土城路10号