1.一种基于水印技术的验证数据个体完整性的认证方法,其特征在于,包括以下步骤:将第j个原始的传感器数据dj记作原始数据A,将汇聚节点接收到数据项记作接收数据B;
水印生成,包括:
将传感器数据dj乘以100,将其向下取整得到整数m;
将传感器数据dj的小数部分限制为4个,如果传感器数据dj的小数部分小于4个,余位填充0,如果传感器数据dj的小数部分大于4个,删除多余小数部分,传感器数据dj的4个小数部分的其中第三个和第四个小数分别表示为小数一l1和小数二l2;
由整数m通过哈希运算生成一个128位的二进制数M;
将二进制数M平均分成六段后折叠成六个比特,分别表示为b1,b2,b3,b4,b5,b6;
将六个比特分成两个相等的段,并将前三位即比特段一(b1,b2,b3)和后三位即比特段二(b4,b5,b6)分别转换为十进制数字水印一B1和水印二B2作为水印:2
Bk=Dec[b(k:3k)](k=1,2)Bk表示第k个作为水印的十进制数字,b表示比特,Dec表示十进制转换函数;
水印嵌入:
将小数一l1,和小数二l2分别替换为水印一B1和水印二B2:d′j=Replace(B1,B2,l1,l2,dj);
其中dj表示第j个传感器数据,d′j表示第j个传感器数据替换小数位的数据,Replace表示替换函数;
在嵌入后,对接收数据B的数据项的小数部分的顺序进行随机置乱,得到最终生成的数据项:d″j=RanScram(d′j)d″j表示第j个最终生成的数据项,RanScram表示随机置乱函数;
比较:当汇聚节点接收到数据项时,通过水印比较判断数据是否被篡改。
2.根据权利要求1所述的一种基于水印技术的验证数据个体完整性的认证方法,其特征在于:由整数m通过哈希运算生成一个128位的二进制数M的公式为:M=Hash(m)
其中,Hash表示哈希运算函数。
3.根据权利要求2所述的一种基于水印技术的验证数据个体完整性的认证方法,其特征在于:将二进制数M平均分成六段后折叠成六个比特,分别表示为b1,b2,b3,b4,b5,b6的公式为:Xi=Slice(M)(i=1,2…6)
bi=Folding(Xi)(i=1,2…6)Xi表示将M平均分成六段的其中第i段,bi表示第i个比特,Slice表示分段函数,Folding表示折叠函数。
4.根据权利要求3所述的一种基于水印技术的验证数据个体完整性的认证方法,其特征在于:两个十进制数字B1和B2的范围为0≤B1,B2≤7。
5.根据权利要求4所述的一种基于水印技术的验证数据个体完整性的认证方法,其特征在于:当汇聚节点接收到接收数据B的数据项时,通过反向置乱将接收数据B的数据项的小数部分恢复到原始顺序。再使用和传感器节点水印生成中相同的方法计算水印并与提取的水印进行比较。
6.根据权利要求5所述的一种基于水印技术的验证数据个体完整性的认证方法,其特征在于:当前收集的数据项的计算方法与传感器节点的描述相同,得到两个十进制数,表示为B′1和B′2;提取该数据项的最低两个小数部分,表示为l′1和l′2;比较生成和提取的水印,以检查是否存在篡改。
7.根据权利要求6所述的一种基于水印技术的验证数据个体完整性的认证方法,其特征在于:如果生成的水印B′1和B′2将与原始水印不同,则判定数据项的非水印部分在传输过程中被篡改;
如果提取的水印信息l′1和l′2发生变化,则判定数据项的水印部分在传输过程中被篡改。