關 閉

        新聞中心

        EEPW首頁 > 工控自動化 > 設計應用 > 一種基于數字水印的無線傳感器網絡敏感數據通信協議

        一種基于數字水印的無線傳感器網絡敏感數據通信協議

        作者: 時間:2010-03-16 來源:網絡 收藏
        具有節(jié)點成本低、電源消耗小、自組織等優(yōu)點,已廣泛地應用于很多領域[1]。
        在很多應用中,存在著在節(jié)點間傳輸信息的需求。數據是指密鑰、ID、軍事領域中的關鍵數據、節(jié)點的身份驗證信息等涉及系統(tǒng)安全、穩(wěn)定運行的一類關鍵數據。這類數據通常要求采用一種比常規(guī)通信方式更安全、可靠的方式傳遞。數據的傳輸有很多種方法,比較常見的是加密技術來實現。但由于節(jié)點資源有限,復雜的算法無法在節(jié)點中實現[2],這些算法在資源耗費方面、加密強度方面尚不完美。
         本文的原理來實現敏感數據的傳輸,通過信息隱藏來實現敏感數據的傳輸。與加密傳輸相比,該算法具備簡單高效、不易察覺等優(yōu)點,適合于在傳感器網絡中實現。
         (digital watermarking)技術是實現信息隱藏的一種主要手段。敏感信息可以毫無察覺地嵌入到數據中,嵌入的信息就叫做[3]。水印是信息隱藏學的一個分支,是利用人類感覺器官的不敏感及多媒體數據中存在的冗余,將秘密信息隱藏到宿主信息中,水印的添加不會影響原數據的正常使用[4-7]。
         以上原理,本文提出一種基于數字水印技術和信息隱藏的敏感信息通信
         目前絕大多數傳感器節(jié)點都支持16位的寄存器,傳感數據在通信時也是基于16位無符號數整數傳輸的。而16位無符號整數的取值范圍是0~65 535。當實際采集的傳感數據值比較大時,改變最低位對傳感器數據值的影響很小,可以忽略不計。
         因此,本文通過16位無符號整數的最低位來傳輸敏感數據,并利用數字水印嵌入算法將敏感數據嵌入其中,達到敏感數據隱蔽傳輸的目的。為避免最低位的改變對傳感數據的精度造成太大影響,本文設置了一個閥值,只有大于該值的數據才會被嵌入敏感信息。

        1 敏感數據嵌入及提取過程
         嵌入敏感信息的方法與數字水印的嵌入方法基本相同。如圖1所示,首先將敏感信息轉化為一個二進制流,命名為輸入二進制流;將傳感數據轉化為一個16位無符號整數流,命名為輸入整數流;將輸出的含有敏感數據的無符號整數流命名為輸出整數流。則敏感數據嵌入過程描述如下:如果輸入整數流當前位置的傳感數據值大于或等于閥值,且輸入二進制流中當前位置的二進制值為“1”,則將整數流當前位置的數據最低位置“1”,并添加到輸出整數流中,否則置“0”;如果輸入整數流當前位置的傳感數據值小于閥值,則不添加水印,直接將該數添加到輸出整數流中。

        本文引用地址:http://www.104case.com/article/163209.htm


        敏感數據的嵌入算法描述如下:
        #define N 0x0100; //閥值
        typedef BitStream TInputBitStream; //定義輸入二進制流
        typedef Uint16Stream TInputUintStream; //定義輸入無符號整數流
        typedef Uint16Stream TOutputUintStream;//定義輸出無符號整數流
        //---------------------------------------
        /** 用敏感數據初始化輸入二進制流 **/
        TInputBitStream * TheIBS=
          new TInputBitStream(SensitiveData aData);
        /** 用傳感數據初始化輸入無符號整數流**/
        TInputUintStream * TheIUS=
          new TInputUintStream(SensorData aData);
        /** 用空數據初始化輸出無符號整數流 **/
        TOutputUintStream * TheOUS=new TOutputUintStream();
        //------------------------------------
        /** 數字水印嵌入方法
        ** 注意:本方法假定輸入整數流的長度
        *足以嵌入所有的敏感數據
        * 參數TheIBS: 輸入二進制流
        * 參數TheIUS:輸入無符號整數流
        * 參數N:預先定義的閥值
        * 返回值:輸出無符號整數流TheOUS **/
        TOutputUintStream* InsertWaterMarking(TheIBS,TheIUS,N)
        {
        uint16_t TheUintIndex=0; //用于保存輸入整數流的位號
        uint16_t TheBitIndex=0; //用于保存輸入二進制流的位號
        uint16_t CurrentUintData; //用于保存當前的無符號整數值
        bit_t CurrentBitData; //用于保存當前的二進制值
        while(TheBitIndexTheIBS.Size)
        {
        CurrentUintData=TheIUS.Read(TheUintIndex,1);
        CurrentBitData=TheIBS.Read(TheBitIndex,1);
        /**若當前無符號整數值小于閥值,則讀取下一個值,
        *直到大于閥值時,停止循環(huán) **/


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 大石桥市| 离岛区| 华宁县| 郓城县| 兰西县| 图们市| 临江市| 喜德县| 平顶山市| 海林市| 迭部县| 扎兰屯市| 郴州市| 武城县| 龙山县| 东源县| 汝阳县| 恩平市| 巍山| 剑川县| 庄浪县| 金沙县| 章丘市| 北宁市| 浪卡子县| 深水埗区| 盐边县| 宜黄县| 睢宁县| 平果县| 九台市| 万盛区| 宁武县| 大足县| 苗栗县| 普陀区| 即墨市| 西平县| 德江县| 张掖市| 北川|