1.一种基于双水印的WSNs数据完整性认证方法,其特征在于,包括以下步骤:
S1、对采集数据流进行随机的动态分组,使每组数据长度不规则;
S2、向感知数据中嵌入双水印算法,其中,双水印算法的嵌入包括可逆水印嵌入和标志位水印嵌入;
S3、将可逆水印嵌入至感知数据的有效精度位中;
利用组头数据有效精度位生成的可逆水印,得到二进制水印序列,每次从水印序列中取指定大小水印嵌入至两相邻数据的有效位中,并判断水印序列长度是否满足分组长度要求,若满足,则循环嵌入,通过将可逆数字水印利用差值扩展技术嵌入到感知数据的有效精度位中,且可逆水印w是由组头数据有效精度位G1生成,得到二进制水印序列W,每次从W取
1bit水印w嵌入到两相邻数据的有效位中,若W长度小于分组长度l/2,则循环嵌入,原数据Si嵌入可逆水印后所得数据称为水印数据Si';为保证水印隐秘不可察觉,水印序列W的计算如下: 其中n为数据有效精度位的个数,X[j]是G1数据有效位的各位数字,且满足取值X[j]∈[1,9],j∈[1,n],l为分组长度,作为混沌序列的参数,r的取值范围在[3.5699456,4],这里取r为4;将前一组的后6个数据和当前组的前6个数据视为特殊数据集,组内其他数据称为剩余数据集;为方便运算,特殊数据集不必嵌入可逆水印;
S4、判断标志位水印的嵌入位置,分别对标志组数据以及组间数据进行嵌入;
分组判断是否嵌入到组头和组尾及其附近的标志组数据中,若满足条件,利用标志组数据构造标志检验矩阵,并通过该矩阵生成水印嵌入至标志组数据中;标志检验矩阵保证组头和组尾验证准确,避免分组错乱;取前一组组尾及其前五位数据和当前组组头及其后五位数据,共12位数据作为标志组数据,构成3*4矩阵A,将当前组组头和前一组组尾数据分别放在矩阵A(2,2),A(2,3)的位置;计算矩阵A内数据m的标志位时,以数据m为中心,与其周围8个数据构成3*3矩阵B,若无数据的位置则补0;用数据m与矩阵B中的剩余数据从左上依次比较大小,若m大于比较数据则对应位置取1,否则取0,当m遇数据A(2,2),A(2,3)时,直接取1;数据m与矩阵B剩余数据比较后会生成8位二进制序列,将二进制序列转换为十进制,取十进制数据最后两位作为标志位;判断是否要将水印嵌入至分组剩余的组间数据中,如满足条件,将基站与节点内部规定的不重复的十进制序列进行变换作为水印嵌入至组间数据中;其中,第一种情况是嵌入到组头和组尾及其附近数据即标志组数据中,利用标志组数据构造标志检验矩阵,并通过该矩阵生成水印嵌入到标志组数据中,目的是保证分组的健壮性;另一种情况是嵌入到分组剩余数据即组间数据中,将基站与节点内部规定的不重复的十进制序列进行变换作为水印嵌入到组间数据中;
S5、将嵌入数据传输至基站进行还原;
数据恢复认证须同时满足可逆数字水印认证条件和标志位水印认证条件,其中一个条件不满足则认为验证未成功,由于在嵌入水印时,未对组头数据有效精度位进行改动,所以利用组头数据根据水印序列W的计算公式生成待验证水印序列W',与从数据Si”中提取的可逆数字水印对比;同时,要对数据标志位进行认证,若数据验证未成功,则进行个体数据的双重认证,个体数据的双重认证包括:将嵌入双水印后的分组中同时嵌入数据有效精度为水印和标志位水印的剩余数据集中的数据分小组,采集并判断每两个数据被攻击情况,若被攻击,则检测出恶意攻击,并将其对应的当前小组第一个数据作为未验证标记,并将当前小组第二个数据与其下一数据组成新小组重新判断。
2.根据权利要求1所述的一种基于双水印的WSNs数据完整性认证方法,其特征在于,所述动态分组包括:
汇聚节点和中继节点均设指定长度的数组,随机生成与数组相关的且数据长度不规则的组长。
3.根据权利要求1所述的一种基于双水印的WSNs数据完整性认证方法,其特征在于,所述分组判断包括:
令数据流中指定长度的队列数据依次进入,判断是否存在数据满足组头、组尾标志位计算方案,若满足,则利用队列中数据构成标志检验矩阵,若矩阵内存在指定数量的数据标志位验证正确,则将满足组头、组尾标志位计算方案要求的数据分别作为头节点数据、尾节点数据。
4.根据权利要求1所述的一种基于双水印的WSNs数据完整性认证方法,其特征在于,所述标志位水印的嵌入包括:将水印嵌入至特殊数据集中的特殊标志位嵌入;以及
将水印嵌入至剩余数据集中的普通标志位嵌入。