數據校驗,就是為保證數據的完整性,用一種指定的算法對原始數據計算出的一個校驗值。接收方用同樣的算法計算一次校驗值,如果和隨數據提供的校驗值一樣,就說明數據是完整的。
最簡單的檢驗實現方法:最簡單的校驗就是把原始數據和待比較數據直接進行比較,看是否完全一樣這種方法是最安全最准確的。同時也是效率最低的。
適用范圍:簡單的數據量極小的通訊。
奇偶校驗Parity Check
實現方法:在數據存儲和傳輸中,字節中額外增加一個比特位,用來檢驗錯誤。校驗位可以通過數據位異或計算出來。
應用例子:單片機串口通訊有一模式就是8位數據通訊,另加第9位用於放校驗值。
bcc異或校驗法(block check character)
實現方法:很多基於串口的通訊都用這種既簡單又相當准確的方法。它就是把所有數據都和一個指定的初始值(通常是0)異或一次,最后的結果就是校驗值,通常把它附在通訊數據的最后一起發送出去。接收方收到數據后自己也計算一次異或和校驗值,如果和收到的校驗值一致就說明收到的數據是完整的。
校驗值計算的代碼類似於:
unsigned uCRC=0;//校驗初始值
for(int i=0;i<DataLenth;i++) uCRC^=Data[i];
適用范圍:適用於大多數要求不高的數據通訊。
應用例子:ic卡接口通訊、很多單片機系統的串口通訊都使用。
crc循環冗余校驗
(Cyclic Redundancy Check)
實現方法:這是利用除法及余數的原理來進行錯誤檢測的.將接收到的碼組進行除法運算,如果除盡,則說明傳輸無誤;如果未除盡,則表明傳輸出現差錯。crc校驗具還有自動糾錯能力。
crc檢驗主要有計算法和查表法兩種方法,網上很多實現代碼。
適用范圍:CRC-12碼通常用來傳送6-bit字符串;CRC-16及CRC-CCITT碼則用是來傳送
8-bit字符。CRC-32:硬盤數據,網絡傳輸等
應用例子:rar,以太網卡芯片、MPEG解碼芯片中
md5校驗和數字簽名
實現方法:主要有md5和des算法。
適用范圍:數據比較大或要求比較高的場合。如md5用於大量數據、文件校驗,des用於保
密數據的校驗(數字簽名)等等。
應用例子:文件校驗、銀行系統的交易數據
數字水印
數字水印(Digital Watermarking)是指嵌入數字載體(包括多媒體、文檔、軟件等)中的數字信號,它可以是圖像、文字、符號、數字等所有可以作為標識的信息。數字水印既不影響原始載體的正常使用及存在價值,也不容易被人感知。 目錄數字水印的分類數字水印的原理數字水印的特點數字水印的缺點數字水印的算法數字水印的應用領域
數字水印的分類 1.按特性划分 按水印的特性可以將數字水印分為魯棒數字水印和脆弱數字水印兩類。魯棒數字水印主要用於在數字作品中標識着作權信息,如作者、作品序號等,它要求嵌入的水印能夠經受各種常用的編輯處理;脆弱數字水印主要用於完整性保護,與魯棒水印的要求相反,脆弱水印必須對信號的改動很敏感,人們根據脆弱水印的狀態就可以判斷數據是否被篡改過。 2.按水印所附載的媒體划分 按水印所附載的媒體,我們可以將數字水印划分為圖像水印、音頻水印、視頻水印、文本水印以及用於三維網格模型的網格水印等。隨着數字技術的發展,會有更多種類的數字媒體出現,同時也會產生相應的水印技術。 3.按檢測過程划分 按水印的檢測過程可以將數字水印划分為明文水印和盲水印。明文水印在檢測過程中需要原始數據,而盲水印的檢測只需要密鑰,不需要原始數據。一般來說,明文水印的魯棒性比較強,但其應用受到存儲成本的限制。目前學術界研究的數字水印大多數是盲水印。 4.按內容划分 按數字水印的內容可以將水印划分為有意義水印和無意義水印。有意義水印是指水印本身也是某個數字圖像(如商標圖像)或數字音頻片段的編碼;無意義水印則只對應於一個序列號。有意義水印的優勢在於,如果由於受到攻擊或其他原因致使解碼后的水印破損,人們仍然可以通過視覺觀察確認是否有水印。但對於無意義水印來說,如果解碼后的水印序列有若干碼元錯誤,則只能通過統計決策來確定信號中是否含有水印。 5.按用途划分 不同的應用需求造就了不同的水印技術。按水印的用途,我們可以將數字水印划分為票據防偽水印、版權保護水印、篡改提示水印和隱蔽標識水印。 票據防偽水印是一類比較特殊的水印,主要用於打印票據和電子票據的防偽。一般來說,偽幣的制造者不可能對票據圖像進行過多的修改,所以,諸如尺度變換等信號編輯操作是不用考慮的。但另一方面,人們必須考慮票據破損、圖案模糊等情形,而且考慮到快速檢測的要求,用於票據防偽的數字水印算法不能太復雜。 版權標識水印是目前研究最多的一類數字水印。數字作品既是商品又是知識作品,這種雙重性決定了版權標識水印主要強調隱蔽性和魯棒性,而對數據量的要求相對較小。 篡改提示水印是一種脆弱水印,其目的是標識宿主信號的完整性和真實性。 隱蔽標識水印的目的是將保密數據的重要標注隱藏起來,限制非法用戶對保密數據的使用。 6.按水印隱藏的位置划分 按數字水印的隱藏位置,我們可以將其划分為時(空)域數字水印、頻域數字水印、時/頻域數字水印和時間/尺度域數字水印。 時(空)域數字水印是直接在信號空間上疊加水印信息,而頻域數字水印、時/頻域數字水印和時間/尺度域數字水印則分別是在DCT變換域、時/ 頻變換域和小波變換域上隱藏水印。 隨着數字水印技術的發展,各種水印算法層出不窮,水印的隱藏位置也不再局限於上述四種。應該說,只要構成一種信號變換,就有可能在其變換空間上隱藏水印。
數字水印的原理 數字水印是通過一定的算法將一些標志性信息直接嵌入到多媒體內容當中,但不影響原內容的價值和使用,並且不能被人的知覺系統覺察或注意到,只有通過專用的檢測器或閱讀器才能提取。其中的水印信息可以是作者的序列號、公司標志、有特殊意義的文本等,可用來識別文件、圖像或音樂制品的來源、版本、原作者、擁有者、發行人、合法使用人對數字產品的擁有權。與加密技術不同,數字水印技術並不能阻止盜版活動的發生,但它可以判別對象是否受到保護,監視被保護數據的傳播、真偽鑒別和非法拷貝、解決版權糾紛並為法庭提供證據。
數字水印的特點 不可見性:數字水印作為標識信息隱藏於數字作品中,對攔截者而言,應不可見。 安全性:數字水印應當具備難以篡改或偽造的要求,並應當具有較低的誤檢測率和較強的抵抗性。 魯棒性:在經過多種信號處理過程后,數字水印仍能保持部分完整性及檢測的准確性。 脆弱性:能直接反映出水印是否遭受篡改等。
數字水印的缺點 (1)設計對水印系統進行公正的比較和評價方法,在這方面已經有部分學者有了一些初步的研究;但缺乏普遍性和原理性,水印系統的脆弱之處無法進行全面測試與衡量; (2)從現實的角度看,水印系統必然要在算法的魯棒性、水印的嵌入信息量以及不可覺察性之間達到一個平衡,這涉及魯棒性算法的原理性設計、水印的構造模型、水印能量和容量的理論估計、水印嵌入算法和檢測算法的理論研究等方面。如何確定平衡點仍是一個難題,目前大多數水印算法均利用經驗而不是從理論上解決此問題; (3)如何將水印技術與現行國際圖像及視頻壓縮標准(如JPEG2000和MPEG-4)相結合,以及如何將水印技術應用於DVD工業標准中; (4)所有權的證明問題還沒有完全解決,就目前已經出現的很多算法而言,攻擊者完全可以破壞掉圖像中的水印,或復制出一個理論上存在的"原始圖像",這導致文件所有者不能令人信服地提供版權歸屬的有效證據。因此一個好的水印算法應該能夠提供完全沒有爭議的版權證明,在這方面還需要做很多工作。目前將水印作為版權保護的法律證據還不可能; (5)聲頻和視頻水印的解決方案還不完善,大多數的視頻水印算法實際上是將其圖像水印的結果直接應用與視頻領域中,而沒有考慮視頻應用中大數據量以及近乎實時的特性。從今后的發展上看,水印在包括DVD等數字產品在內的視頻和音頻領域將有極為廣闊的應用前景。因此如何設計成熟的、合乎國際規范的水印算法仍然懸而未決; (6)現有水印算法中在原理上有許多雷同之處,但目前國內外的工作尚未能對這些有內在聯系的不同算法中的共性問題進行高度提煉和深入的理論研究,因而缺乏對數字水印作進一步研究具有指導意義的理論結果。
數字水印的算法 1、空域算法:該類算法中典型的水印算法是將信息嵌入到隨機選擇的圖像點中最不重要的像素位 (LSB:least significant bits)上 ,這可保證嵌入的水印是不可見的。但是由於使用了圖像不重要的像素位 ,算法的魯棒性差 ,水印信息很容易為濾波、圖像量化、幾何變形的操作破壞。另外一個常用方法是利用像素的統計特征將信息嵌入像素的亮度值中。Patchwork算法方法是隨機選擇N對像素點 (ai,bi) ,然后將每個ai點的亮度值加 1 ,每個bi點的亮度值減 1,這樣整個圖像的平均亮度保持不變。適當地調整參數,Patchwork方法對JPEG壓縮、FIR濾波以及圖像裁剪有一定的抵抗力,但該方法嵌入的信息量有限。為了嵌入更多的水印信息,可以將圖像分塊,然后對每一個圖像塊進行嵌入操作。 2、變換域算法:該類算法中,大部分水印算法采用了擴展頻譜通信(spread spectrum communication)技術。算法實現過程為:先計算圖像的離散余弦變換 (DCT),然后將水印疊加到DCT域中幅值最大的前k系數上(不包括直流分量),通常為圖像的低頻分量。若DCT系數的前k個最大分量表示為D={ di },i=1 ,… ,k,水印是服從高斯分布的隨機實數序列W ={ wi },i=1 ,… ,k,那么水印的嵌入算法為di = di(1 + awi),其中常數a為尺度因子 ,控制水印添加的強度。然后用新的系數做反變換得到水印圖像I。解碼函數則分別計算原始圖像I和水印圖像I*的離散余弦變換 ,並提取嵌入的水印W*,再做相關檢驗以確定水印的存在與否。該方法即使當水印圖像經過一些通用的幾何變形和信號處理操作而產生比較明顯的變形后仍然能夠提取出一個可信賴的水印拷貝。一個簡單改進是不將水印嵌入到DCT域的低頻分量上,而是嵌入到中頻分量上以調節水印的頑健性與不可見性之間的矛盾。另外,還可以將數字圖象的空間域數據通過離散傅里葉變換(DFT)或離散小波變換(DWT)轉化為相應的頻域系數;其次,根據待隱藏的信息類型,對其進行適當編碼或變形;再次,根據隱藏信息量的大小和其相應的安全目標,選擇某些類型的頻域系數序列(如高頻或中頻或低頻);再次,確定某種規則或算法,用待隱藏的信息的相應數據去修改前面選定的頻域系數序列;最后,將數字圖象的頻域系數經相應的反變換轉化為空間域數據。該類算法的隱藏和提取信息操作復雜,隱藏信息量不能很大,但抗攻擊能力強,很適合於數字作品版權保護的數字水印技術中。 3、壓縮域算法:基於JPEG、MPEG標准的壓縮域數字水印系統不僅節省了大量的完全解碼和重新編碼過程,而且在數字電視廣播及VOD(Video on Demand)中有很大的實用價值。相應地,水印檢測與提取也可直接在壓縮域數據中進行。下面介紹一種針對MPEG-2壓縮視頻數據流的數字水印方案。雖然MPEG-2數據流語法允許把用戶數據加到數據流中,但是這種方案並不適合數字水印技術,因為用戶數據可以簡單地從數據流中去掉,同時,在MPEG-2編碼視頻數據流中增加用戶數據會加大位率,使之不適於固定帶寬的應用,所以關鍵是如何把水印信號加到數據信號中,即加入到表示視頻幀的數據流中。對於輸入的MPEG-2數據流而言,它可分為數據頭信息、運動向量(用於運動補償)和DCT編碼信號塊3部分,在方案中只有MPEG-2數據流最后一部分數據被改變,其原理是,首先對DCT編碼數據塊中每一輸入的Huffman碼進行解碼和逆量化,以得到當前數據塊的一個DCT系數;其次,把相應水印信號塊的變換系數與之相加,從而得到水印疊加的DCT系數,再重新進行量化和Huffman編碼,最后對新的Huffman碼字的位數n1與原來的無水印系數的碼字n0進行比較,只在n1不大於n0的時候,才能傳輸水印碼字,否則傳輸原碼字,這就保證了不增加視頻數據流位率。該方法有一個問題值得考慮,即水印信號的引入是一種引起降質的誤差信號,而基於運動補償的編碼方案會將一個誤差擴散和累積起來,為解決此問題,該算法采取了漂移補償的方案來抵消因水印信號的引入所引起的視覺變形。 4、NEC算法:該算法由NEC實驗室的Cox等人提出,該算法在數字水印算法中占有重要地位,其實現方法是,首先以密鑰為種子來產生偽隨機序列,該序列具有高斯N(0,1)分布,密鑰一般由作者的標識碼和圖象的哈希值組成,其次對圖象做DCT變換,最后用偽隨機高斯序列來調制(疊加)該圖象除直流(DC)分量外的1000個最大的DCT系數。該算法具有較強的魯棒性、安全性、透明性等。由於采用特殊的密鑰,因此可防止IBM攻擊,而且該算法還提出了增強水印魯棒性和抗攻擊算法的重要原則,即水印信號應該嵌入源數據中對人感覺最重要的部分,這種水印信號由獨立同分布隨機實數序列構成,且該實數序列應該具有高斯分布N(0,1)的特征。 5、生理模型算法:人的生理模型包括人類視覺系統HVS(HumanVisualSystem)和人類聽覺系統HAS。該模型不僅被多媒體數據壓縮系統利用,同樣可以供數字水印系統利用。利用視覺模型的基本思想均是利用從視覺模型導出的JND(Just Noticeable Difference)描述來確定在圖象的各個部分所能容忍的數字水印信號的最大強度,從而能避免破壞視覺質量。也就是說,利用視覺模型來確定與圖象相關的調制掩模,然后再利用其來插入水印。這一方法同時具有好的透明性和強健性。
數字水印的應用領域 1、版權保護:即數字作品的所有者可用密鑰產生一個水印,並將其嵌入原始數據,然后公開發布他的水印版本作品。當該作品被盜版或出現版權糾紛時,所有者即可利用圖3或圖4的方法從盜版作品或水印版作品中獲取水印信號作為依據,從而保護所有者的權益。 2、加指紋:為避免未經授權的拷貝制作和發行,出品人可以將不同用戶的ID或序列號作為不同的水印(指紋)嵌入作品的合法拷貝中。一旦發現未經授權的拷貝,就可以根據此拷貝所恢復出的指紋來確定它的來源。 3、標題與注釋:即將作品的標題、注釋等內容(如,一幅照片的拍攝時間和地點等)以水印形式嵌入該作品中,這種隱式注釋不需要額外的帶寬,且不易丟失。 4、篡改提示:當數字作品被用於法庭、醫學、新聞及商業時,常需確定它們的內容是否被修改、偽造或特殊處理過。為實現該目的,通常可將原始圖象分成多個獨立塊,再將每個塊加入不同的水印。同時可通過檢測每個數據塊中的水印信號,來確定作品的完整性。與其他水印不同的是,這類水印必須是脆弱的,並且檢測水印信號時,不需要原始數據。 5、使用控制:這種應用的一個典型的例子是DVD防拷貝系統,即將水印信息加入DVD數據中,這樣DVD播放機即可通過檢測DVD數據中的水印信息而判斷其合法性和可拷貝性。從而保護制造商的商業利益。
數字水印的應用前景 1.數字作品的知識產權保護 數字作品(如電腦美術、掃描圖像、數字音樂、視頻、三維動畫)的版權保護是當前的熱點問題。由於數字作品的拷貝、修改非常容易,而且可以做到與原作完全相同,所以原創者不得不采用一些嚴重損害作品質量的辦法來加上版權標志,而這種明顯可見的標志很容易被篡改。 "數字水印"利用數據隱藏原理使版權標志不可見或不可聽,既不損害原作品,又達到了版權保護的目的。目前,用於版權保護的數字水印技術已經進入了初步實用化階段,IBM公司在其"數字圖書館"軟件中就提供了數字水印功能,Adobe公司也在其着名的Photoshop軟件中集成了Digimarc公司的數字水印插件。然而實事求是地說,目前市場上的數字水印產品在技術上還不成熟,很容易被破壞或破解,距離真正的實用還有很長的路要走。 2.商務交易中的票據防偽 隨着高質量圖像輸入輸出設備的發展,特別是精度超過 1200dpi的彩色噴墨、激光打印機和高精度彩色復印機的出現,使得貨幣、支票以及其他票據的偽造變得更加容易。 據美國官方報道,僅在1997年截獲的價值4000萬美元的假鈔中,用高精度彩色打印機制造的小面額假鈔就占19%,這個數字是1995年的9.05 倍。目前,美國、日本以及荷蘭都已開始研究用於票據防偽的數字水印技術。其中麻省理工學院媒體實驗室受美國財政部委托,已經開始研究在彩色打印機、復印機輸出的每幅圖像中加入唯一的、不可見的數字水印,在需要時可以實時地從掃描票據中判斷水印的有無,快速辨識真偽。 另一方面,在從傳統商務向電子商務轉化的過程中,會出現大量過度性的電子文件,如各種紙質票據的掃描圖像等。即使在網絡安全技術成熟以后,各種電子票據也還需要一些非密碼的認證方式。數字水印技術可以為各種票據提供不可見的認證標志,從而大大增加了偽造的難度。 3.聲像數據的隱藏標識和篡改提示 數據的標識信息往往比數據本身更具有保密價值,如遙感圖像的拍攝日期、經/緯度等。沒有標識信息的數據有時甚至無法使用,但直接將這些重要信息標記在原始文件上又很危險。數字水印技術提供了一種隱藏標識的方法,標識信息在原始文件上是看不到的,只有通過特殊的閱讀程序才可以讀取。這種方法已經被國外一些公開的遙感圖像數據庫所采用。 此外,數據的篡改提示也是一項很重要的工作。現有的信號拼接和鑲嵌技術可以做到"移花接木"而不為人知,因此,如何防范對圖像、錄音、錄像數據的篡改攻擊是重要的研究課題。基於數字水印的篡改提示是解決這一問題的理想技術途徑,通過隱藏水印的狀態可以判斷聲像信號是否被篡改。 4.隱蔽通信及其對抗 數字水印所依賴的信息隱藏技術不僅提供了非密碼的安全途徑,更引發了信息戰尤其是網絡情報戰的革命,產生了一系列新穎的作戰方式,引起了許多國家的重視。 網絡情報戰是信息戰的重要組成部分,其核心內容是利用公用網絡進行保密數據傳送。迄今為止,學術界在這方面的研究思路一直未能突破"文件加密"的思維模式,然而,經過加密的文件往往是混亂無序的,容易引起攻擊者的注意。網絡多媒體技術的廣泛應用使得利用公用網絡進行保密通信有了新的思路,利用數字化聲像信號相對於人的視覺、聽覺冗余,可以進行各種時(空)域和變換域的信息隱藏,從而實現隱蔽通信。