• 沒有找到結果。

多層浮水印演算法及相關硬體架構之研究

N/A
N/A
Protected

Academic year: 2021

Share "多層浮水印演算法及相關硬體架構之研究"

Copied!
67
0
0

加載中.... (立即查看全文)

全文

(1)國立臺灣師範大學 資訊工程研究所碩士論文 指導教授: 黃 文 吉 教授. 多層浮水印演算法 及相關硬體架構之研究. A Multi-Layer Watermarking Algorithm and Hardware Architecture. 研究生: 中華民國. 董 名 蘂 107. 年. 撰 8. 月.

(2) 摘要 現今使用者大多會將較為機密和私人的資料儲存到雲端,然而在儲存資料 的過程中必須經由網路做資料的傳輸,但是透過網路傳遞資料勢必得承受資料 遭受竄改之風險,這將導致資料有安全性及正確性上的疑慮。. 為了確保資料的正確性及安全性,本研究將資料進行加密,再將更為機密 的資料以多層浮水印的形式嵌入其中,最後才透過網路進行資料的傳輸,使得 資料及機密資料無法輕易的被破解,大幅度提高了資料的可信度。. 本研究使用 Hadamard 法則進行浮水印的嵌入,且本法則可在資料中嵌入多 層浮水印,大量提高了浮水印的資料量,而且本法則的浮水印具有高度的脆弱 性,縱使資料只遭受過些許的更動,都會對浮水印造成劇烈的變化。另外本研 究也有設計相關的硬體架構,透過 Pipeline 的架構大幅度提升了電路的時脈。. 本法則的多層浮水印架構使得浮水印具有頗為可觀的嵌入資料量,同時浮 水印還具備高度的脆弱性,透過檢查浮水印能夠驗證資料是否無誤;在雲端資 料的存取過程中,透過運用本法則能夠使資料更為可靠。. 關鍵字:多層浮水印、資料隱藏、脆弱式浮水印、資料竄改. i.

(3) 誌謝 首先我要感謝我的論文指導教授,黃文吉. 教授。在進行論文研究的過程. 中,指導了我許多關於研究方面的方向及靈感,當我遇到困難的時候,也能指 引我方向以及經驗,不論是課業上或者生活上都給予我很大的幫助。此外,實 驗室也提供了許多的資源可以讓我從頭開始學起硬體設計的觀念以及技術,也 透過黃教授的訓練課程,從中學習到了許多 IC 設計的知識,透過這些資源來建 立好自己的實力,才能夠順利完成碩士學位,因此很慶幸能夠加入黃文吉教授 的實驗室。. 接著我要感謝我的學長,張元俊學長,陳志昌學長,陳映倫學長、黃得榮 學長。非常謝謝你們的照顧,如果沒有你們的幫忙,我無法解決一路上我所遇 到的問題。. 再來我要感謝我的家人,提供我各種幫助,使我能夠順利完成碩士班的學 業,由衷感謝你們。. 最後感謝所有幫助過我的人,由於一時無法列出所有人,無法在此悉數銘 謝,也因為有你們的幫助,我才能順利取得碩士學位,你們的幫助我始終銘記 在心。. ii.

(4) 目錄 摘要.................................................................................................................................. i 誌謝................................................................................................................................. ii 目錄................................................................................................................................ iii 表目錄............................................................................................................................ iv 圖目錄............................................................................................................................. v 第一章 緒論................................................................................................................... 1 第一節 研究背景與動機....................................................................................... 1 第二節 研究目的及方法....................................................................................... 4 第三節 全文架構................................................................................................... 6 第二章 演算法說明....................................................................................................... 7 第一節 影像加密................................................................................................... 8 第二節 嵌入浮水印............................................................................................... 9 第三節 擷取浮水印............................................................................................. 14 第四節 影像還原................................................................................................. 15 第五節 單層浮水印............................................................................................. 16 第六節 多層浮水印............................................................................................. 18 第三章 硬體架構與設計............................................................................................. 20 第一節 矩陣運算單元......................................................................................... 22 第二節 Hadamard Transform .............................................................................. 23 第三節 Stage 1 & Stage 3 運作方式 ................................................................... 25 第四節 數據隱藏單元......................................................................................... 28 第五節 Random Number Generator(RNG) ......................................................... 33 第六節 Clock Gating 省電技術 .......................................................................... 36 第四章 實驗數據與分析............................................................................................. 38 第一節 開發環境說明......................................................................................... 38 第二節 軟體數據分析......................................................................................... 41 第三節 硬體數據分析......................................................................................... 54 第五章 結論................................................................................................................. 58 參考著作....................................................................................................................... 59 iii.

(5) 表目錄 表 2.1 嵌入單層浮水印所需參數之計算結果........................................................... 17 表 2.2 嵌入第二層浮水印所需參數之計算結果....................................................... 19 表 3.1 四個 Cells 當前的狀態與 Cell i 更新後的狀態.............................................. 34 表 4.1 軟體與硬體之開發環境................................................................................... 38 表 4.2 表 4.3 表 4.4 表 4.5. 𝐽 = 1, 𝐽 = 1, 𝐽 = 1, 𝐽 = 2,. 𝑘 𝑘 𝑘 𝑘. = 2, 𝑞 = 1~8 ................................................................................... 45 = 1~4, 𝑞 = 1 ................................................................................... 45 = 1~4, 𝑞 = 8 ................................................................................... 45 = 2, 𝑞 = 1~8 ................................................................................... 45. 表 4.6 𝐽 = 2, 𝑘 = 1~4, 𝑞 = 1 ................................................................................... 46 表 4.7 𝐽 = 2, 𝑘 = 1~4, 𝑞 = 8 ................................................................................... 46 表 4.8 本法則架構與現有在加密後的影像嵌入浮水印的法則架構之效能比較... 47 表 4.9 論文 [2]、Non-Pipelined Structure 與 Pipelined Structure 之電路的效能比較 ....................................................................................................................................... 55 表 4.10 比較 Non-Pipelined Structure 之電路與 Pipelined Structure 之電路 ........... 56 表 4.11 在相同時脈的情況下比較 Non-Pipelined Structure 之電路在加入 Clock Gating 省電技術前後之效能表現 ............................................................................... 56. iv.

(6) 圖目錄 圖 1.1 浮水印 (a)嵌入之浮水印 (b)擷取遭破壞後之浮水印 ................................... 2 圖 2.1 演算法流程圖..................................................................................................... 7 圖 2.2 圖 2.3 圖 2.4 圖 2.5 圖 2.6. 影像加密流程圖................................................................................................. 9 以𝑞 = 1為範例之量化函數: (a) 𝑄0 (b) 𝑄1 .................................................... 12 嵌入浮水印之流程圖....................................................................................... 13 擷取浮水印之流程........................................................................................... 15 影像還原流程圖............................................................................................... 16. 圖 3.1 論文 [2]中浮水印嵌入之硬體架構流程圖 .................................................... 20 圖 3.2 Pipeline 示意圖 ................................................................................................. 21 圖 3.3 論文 [2]中之矩陣運算單元 ............................................................................ 22 圖 3.4 使用 Pipeline 後之矩陣運算單元 ................................................................... 23 圖 3.5 移位暫存器,由左往右的方式推移並儲存................................................... 24 圖 3.6 移位暫存器,以由上往下的方式推移並儲存............................................... 24 圖 3.7 使用 Pipeline 後之 Stage 1 電路架構.............................................................. 25 圖 3.8 使用 Pipeline 後之 Stage 3 電路架構.............................................................. 25 圖 3.9 Stage 1 完成第一行資料運算之結果 ............................................................... 25 圖 3.10 Stage 1 完成四行資料運算之結果 ................................................................. 26 圖 3.11 Stage 1 回傳第一列資料,並向下推移 ......................................................... 27 圖 3.12 Stage 1 完成 Hadamard 前轉換之計算結果 .................................................. 27 圖 3.13 論文 [2]電路架構之 Stage 2 ......................................................................... 28 圖 3.14 使用 Pipeline 後之 Stage 2............................................................................. 28 圖 3.15 數據隱藏單元 Pipeline 1 ............................................................................... 29 圖 3.16 數據隱藏單元 Pipeline 2 ............................................................................... 30 圖 3.17 數據隱藏單元 Pipeline 3 ............................................................................... 30 圖 3.18 數據隱藏單元 Pipeline 4 ............................................................................... 31 圖 3.19 數據隱藏單元 Pipeline 5 ............................................................................... 31 圖 3.20 數據隱藏單元 Pipeline 6 ............................................................................... 32 圖 3.21 數據隱藏單元 Pipeline 7 ............................................................................... 32 圖 3.22 Cell 的連接方式 .............................................................................................. 33 圖 3.23 1D 結構的 Cell 連接方式 ............................................................................... 34 圖 3.24 Cell 使用 Look-Up Table 查表 ....................................................................... 35 圖 3.25 將 64 個 bit 的 Initial Seed Value 放進 RNG 中的 64 個 Cell ...................... 35 圖 3.26 Clock Gating 電路元件 ................................................................................... 37 圖 3.27 波型圖............................................................................................................. 37 v.

(7) 圖 4.1 ASIC 開發流程 .................................................................................................. 39 圖 4.2 原始影像、加密後的影像及透過本法則還原後的影像 (a)原始影像 (b)加 密後的影像 (c)透過本法則還原後的影像 ................................................................ 49 圖 4.3 資料竄改流程圖............................................................................................... 49 圖 4.4. 浮水印 (a)第一層浮水印 (b)第二層浮水印 ................................................ 50 圖 4.5 遭受破壞的浮水印 (a)第一層浮水印 (b)第二層浮水印 ............................. 50 圖 4.6 遭受破壞的浮水印 (a)第一層浮水印 (b)第二層浮水印 ............................. 51 圖 4.7 灰階浮水印 (a)第一層灰階浮水印 (b)第二層灰階浮水印 ......................... 51 圖 4.8 在竄改機率為千分之一所擷取之灰階浮水印灰階浮水印 (a)第一層灰階浮 水印 (b)第二層灰階浮水印 ........................................................................................ 52 圖 4.9 在竄改機率為萬分之一所擷取之灰階浮水印(a)第一層灰階浮水印 (b)第二 層灰階浮水印............................................................................................................... 52 圖 4.10 在竄改機率為十萬分之一所擷取之灰階浮水印 (a)第一層灰階浮水印 (b) 第二層灰階浮水印....................................................................................................... 53 圖 4.11 一千次資料竄改的系統性評估結果 ............................................................. 54. vi.

(8) 第一章 緒論. 第一章 緒論 第一節 研究背景與動機 隨著電腦與網路的快速發展,生活中的大小事物透過網路與世界緊密的連 接在一起,使得數位資料可以不受時間與空間的限制,能夠藉由網路快速的傳 播。當我們將各種影像與聲音使用數位訊號的方式保存成為檔案後,越來越多 的人選擇將檔案放至雲端硬碟,方便隨時管理以及下載使用。而醫院、企業甚 至是政府機關也紛紛選擇將檔案上傳到雲端硬碟做管理,但是對於比較敏感、 機密以及隱私性的檔案,我們並不希望受到第三者的窺視或是惡意的竄改而影 響了檔案的價值。. 本研究透過浮水印技術確保資料的正確性,首先將影像資料加密成為一張 肉眼不可辨識的影像,再於加密後的影像中嵌入浮水印,最後再進行影像資料 的傳輸;當管理者取得影像資料後,透過檢查影像資料中的浮水印能夠得知影 像資料是否遭受到竄改,這樣不僅可以確保影像資料的正確性,同時還可以將 機密性的資料透過浮水印技術進行資料的隱藏與傳輸。. 浮水印的種類分為可見浮水印以及不可見浮水印。可見浮水印技術經常應 用於在影像資料中直接嵌入一個具有代表性的標誌,透過人眼可以直接從影像 中辨識以及判斷出標誌。當不可見浮水印嵌入於影像資料後並進行傳送,如果 1.

(9) 第一章 緒論. 傳送過程中遭受到惡意的攻擊或是竄改,此時收到影像資料的管理者從中擷取 出浮水印後,如果依然能夠維持原本的內容或是不受到太大的影響,則具有此 特性的浮水印稱為強健式浮水印。當浮水印應用於保護商標以及版權時,浮水 印必須要能抵抗各種破壞,不論是資料壓縮或是惡意攻擊造成的破壞,浮水印 需要能夠維持原本的內容而不受到影響;如果擷取出的浮水印有明顯的變化或 是遭受到嚴重的破壞,則具有此特性的浮水印稱為脆弱式浮水印,即使是資料 受到細微的更動一樣也會造成浮水印明顯的變化。. 脆弱式浮水印以論文 [1]的法則為例,圖 1.1(a)為嵌入於資料中的浮水印, 浮水印的內容為擁有者的名字,倘若資料遭受到破壞,則從資料中擷取出的浮 水印就會出現很明顯的雜訊;圖 1.1(b)的浮水印擷取自遭受到破壞的資料,從圖 中可以明顯的辨識出些許黑點與白點的雜訊;因此擷取出浮水印後,可以透過 人眼觀察浮水印有無出現雜訊來判斷資料是否遭受過攻擊或是竄改。. (a) 嵌入之浮水印 (b) 擷取遭破壞後之浮水印 圖 1.1 浮水印 (a)嵌入之浮水印 (b)擷取遭破壞後之浮水印 一般來說,為了使我們的浮水印能夠保護原始資料,在浮水印的安全強度. 2.

(10) 第一章 緒論. 上,我們希望浮水印有以下的特性:隱藏性、安全性、靈敏性、可逆性以及高 容量,同時希望浮水印的內容不容易被破解,如果浮水印的內容過於簡易,或 是浮水印的嵌入位置太過單調,那麼浮水印就喪失了存在的意義。. 讓浮水印不可被察覺是很重要的,如果嵌入的浮水印不具備隱藏性,那麼 此浮水印的可用性就非常的低,因為很容易會遭到其他人惡意的複製或破壞, 使得我們獲得錯誤的資料。. 而在難以察覺浮水印的情況下,同時浮水印也應該具備安全性,如果浮水 印遭受過竄改,應該要能夠明顯的察覺浮水印已遭到修改,而嵌入的浮水印也 不能太過於容易的被偽造,以確保資料的正確性,而同時我們也希望浮水印具 備可偵測被修改過的靈敏性,倘若圖像已經被第三者修改,或是在傳輸過程中 發生問題使得資料錯誤,最好是能夠找出被修改過後的位置,以方便使用者調 查圖像發生了什麼錯誤。. 在一般的情況下,浮水印最好是具備可逆性的性質,也就是在嵌入浮水印 後,擷取出的浮水印影像最好要能夠還原成原本的浮水印。一些具備高價值的 資料,像是醫院拍攝的醫療用影像,是必須絕對正確、不能容許一點差錯的, 一些細微的改變很有可能就會影響專業上的判斷,因此還原後的影像是必須和 原圖不能有任何細節上的落差。. 3.

(11) 第一章 緒論. 在浮水印具備可逆性的同時,我們也希望影像在完成浮水印的嵌入後和原 本尚未嵌入符水印的原影像不能有太大的落差,而這也是基於安全性考量,如 果有很明顯的差異反而可能會引起注意,造成影像被有意的做擷取測試和竄 改,讓安全性出現疑慮,因此這也是需要設法避免的狀況。. 第二節 研究目的及方法 本法則的流程是先將影像資料進行加密,使得影像資料無法用肉眼辨識 後,再於資料中嵌入多層浮水印,將大量機密性的資料做資料隱藏再進行資料 傳輸,當管理者接收到資料後,透過截取浮水印可以判斷資料是否遭受過竄 改,以此確保資料的正確性及安全性。. 本研究所嵌入之浮水印為脆弱式浮水印,脆弱式浮水印可以使用於保護原 始資料,不同於一般保護商標所使用的強健式浮水印,倘若資料遭到破壞或是 竄改時,則擷取出的脆弱式浮水印能夠很明確的發現已被破壞。最後本研究透 過資料竄改的實驗,驗證本法則的浮水印具有高度的脆弱性。. 現今使用者大多會將較為機密和私人的資料儲存到雲端,並經由網路傳輸 資料,但是資料有可能會遭受到惡意的修改或破壞。本研究的資料傳輸方式不 同於一般使用者直接將資料進行傳輸,本研究會先將資料進行加密,使得資料 無法被辨識,再於資料中嵌入多層的浮水印,最後再進行資料傳輸。當管理者 4.

(12) 第一章 緒論. 接收到資料後可以透過擷取浮水印,觀察浮水印來判斷資料是否遭受到竄改。. 本論文將以論文 [2]之硬體架構為基礎進行時脈的改良,加快硬體執行速度 的主要方法為,將原硬體架構中之數據隱藏單元架構修改為 Pipeline 的架構,因 為原架構中之數據隱藏單元為一個較大的組合電路,本研究透過 Pipeline 的架構 取代較大的組合電路,縮短電路中之 Critical Path 以及提升時脈(Clock Rate),以 達到加快硬體執行速度之目的。. 5.

(13) 第一章 緒論. 第三節 全文架構 本論文總共分為五個章節,以下以條列式說明各章節的內容概要:. 第一章 緒論. 說明本論文研究之背景、動機、目的與方法,以及全文架構說明。. 第二章 演算法說明. 介紹本論文之演算法則以及相關數學公式。. 第三章 硬體架構與設計. 說明與分析本法則的相關硬體架構與設計,以及硬體運作之流程。. 第四章 實驗數據與分析. 說明開發環境,並進行軟體數據分析及硬體合成完後之電路時脈、面積 與功耗相關數據分析。. 第五章 結論. 將本論文提出之法則與本法則之硬體電路架構以及數據分析之結果進行 總結。. 6.

(14) 第二章 演算法說明. 第二章 演算法說明 為了確保雲端資料存取的正確性及安全性,本研究先將資料進行加密後, 再將機密性資料以多層浮水印的形式嵌入其中。本研究使用 Hadamard 法則進行 浮水印的嵌入,且本法則可在資料中嵌入多層的浮水印,因此大量提高了浮水 印的資料量。本法則的浮水印具有高度脆弱之特性,縱使資料只遭受過些許的 更動,都會對浮水印產生明顯的影響,此特性可以使雲端資料的存取更為可 靠。. 本法則可嵌入的浮水印沒有層數上的限制,以下為了方便討論以兩層浮水 印為例,演算法流程如下圖 2.1 所示,首先從圖中的左半部分並由上至下依序討 論。. Original Image. Watermark 1 Data Embedding Key 1. Watermark 2 Data Embedding Key 2. Encryption. Watermark Embedding. Watermark Embedding. Encryption Key. Data Embedding Key 1. Data Embedding Key 2. 圖 2.1 演算法流程圖. 7. Decryption. Fully Recovered Image. Watermark Extraction. Extracted Watermark 1. Watermark Extraction. Extracted Watermark 2.

(15) 第二章 演算法說明. 首先使用加密金鑰及串流加密產生亂數,並與影像資料進行加密運算;接 著再使用不同的加密金鑰產生亂數,以不同的亂數決定浮水印嵌入的位置,而 各層浮水印皆可分別獨立的被擷取出來,並且沒有擷取順序上的限制;另外也 可以隨時進行影像還原,且獨立於擷取浮水印並也沒有順序上的限制,因此本 法則在運用上非常靈活與實用。以下依序進行本法則的詳細說明。. 第一節 影像加密 本研究以加密後的影像為資料,並嵌入浮水印於資料中。本論文所選擇的 加密方式為論文 [3]中所提及的 Cellular Automata 方式進行加密。影像 S 的大小 為2𝑁 × 2𝑁 ,且影像 S 為灰階影像,每一個 Pixel 包含有 8-bit,其中 N ∈ ℤ,並且 為正整數。若以二進制的方式來表示一個 Pixel 的數值,則一個 Pixel S 的數值為 (𝑠7 𝑠6 … 𝑠0 )2,如公式(2.1)所示。 𝑆 = 𝑠7 27 + 𝑠6 26 + ⋯ 𝑠0 20. (2.1). 首先使用 Encryption Key 𝒦於串流加密 Ƒ1 產生亂數 R,其二進制表示的數 值為(𝑟7 𝑟6 … 𝑟0 )2 ,接著將 Pixel S 與亂數 R 進行 XOR 運算,如公式(2.2)所示。. 𝑥𝑖 = 𝑠𝑖 ⊕ 𝑟𝑖 , 𝑖 = 0, … ,7. (2.2). 其中 ri 為亂數 R 的第 i 個 bit,Pixel X 的二進制表示的數值為(𝑥7 𝑥6 … 𝑥0 )2, Pixel X 屬於加密後的影像 X,接下來依序將影像 S 內所有的 Pixel 依照上式進行 8.

(16) 第二章 演算法說明. XOR 運算後,可以獲得加密後的影像 X,其大小依然是2𝑁 × 2𝑁 ,其中每一個 Pixel 都以不同的亂數進行加密,影像加密的流程如下圖所示。. 讀入欲加密之 灰階影像. 將灰階8-bit Pixels轉成 Binary陣列 進行XOR運算. 將Binary陣列 轉成8-bit之 Pixels. 輸出 完全加密的影像. 使用亂數產生器 產生亂數 Binary陣列. 圖 2.2 影像加密流程圖. 第二節 嵌入浮水印 當獲得加密後的影像 X 後,在進行嵌入浮水印之前,首先將加密後影像 X 以固定大小的 Block 進行切割,接下來使用 Hadamard Transform 依序將 Block 從 空間域轉換至轉換域中,並使用 Data Embedding Key 𝒦1 於串流加密 Ƒ2 產生亂 數,根據亂數決定浮水印資料嵌入於 Block 的位置;而嵌入第二層浮水印則運用 不同於上一層浮水印的 Data Embedding Key 𝒦2 於串流加密 Ƒ3 以產生不同的亂 數,並根據此亂數嵌入浮水印資料,由於每層浮水印資料的嵌入皆根據不同的 亂數決定嵌入的位置,因此本法則的浮水印非常不容易破解。以下將嵌入浮水 印之流程依序細分為 Hadamard Transform、浮水印資料的嵌入、浮水印可逆之條 件,並分別進行詳細的討論。. 9.

(17) 第二章 演算法說明. 第2-2.1節. Hadamard Transform. 本法則透過 Hadamard Transform 於轉換域中嵌入浮水印,Hadamard Transform 命名源自法國數學家 Jacques Solomon Hadamard,Hadamard 矩陣的大 1. 小為2𝑘 × 2𝑘 ,在提出純量( )𝑘 後,元素只會是 1 或-1,且為正交及對稱的矩 √2. 陣,並且可以透過下列公式(2.3)擴增矩陣的大小。. 𝐇 2𝑘 = (. 𝐇2𝑘−1 𝐇2𝑘−1. 𝐇2𝑘−1 1 ) , 𝐇0 = 1, 𝐇1 = [ −𝐇2𝑘−1 1. 1 ] −1. (2.3). 根據加密後影像 X 的大小及浮水印的大小,決定好 Block 的大小及 Hadamard 矩陣的大小後,接下來就可以將 Block 進行 Hadamard Transform,藉 由 Hadamard 前轉換將 Block 從空間域變換到轉換域,接下來將會說明如何進行 浮水印資料的嵌入。. 第2-2.2節. 浮水印資料的嵌入. 當 Block 從空間域變換到轉換域後,首先使用加密金鑰及串流加密產生亂 數,並根據亂數決定浮水印資料的嵌入位置;當決定好嵌入位置後,根據位置 於 Block 中取出對應的係數,最後將此係數透過量化函數嵌入浮水印資料。. 在說明量化函數之前,首先進行相關數學符號的定義,其中加密後影像 X 的大小為2𝑁 × 2𝑁 ,浮水印 W 的大小為2𝑛 × 2𝑛 ,浮水印 W 中的每一個 Pixel 皆 包含有 q-bit;在進行嵌入浮水印之前,需要先把加密影像 X 分割成大小相同且 10.

(18) 第二章 演算法說明. 彼此不重疊的 Block 𝐀 𝑖,𝑗 ,0 ≤ 𝑖, j≤ 2𝑛 − 1,其中 i 為影像的高度索引值,j 為影 像的寬度索引值,而每個 Block 的大小皆為2𝑘 × 2𝑘 ,且𝑘 = 𝑁 − 𝑛,首先將 Block 𝐀 𝑖,𝑗 進行 Hadamard 前轉換,變換到轉換域後的 Block 為𝐔𝑖,𝑗 ,如下列公式 (2.4)所示。. 𝐔𝑖,𝑗 = 𝐇𝑘 𝐀 𝑖,𝑗 𝐇𝑘𝑇. (2.4). 接下來根據亂數從 Block 𝐔𝑖,𝑗 中選出一個係數 u 進行量化,當嵌入的浮水印 W 中的一筆 Pixel 𝑤𝑖,𝑗 含有 q 個位元時,在係數 u 中嵌入𝑤𝑖,𝑗 後會產生2𝑞 種的量 化函數𝑄𝑓 , 𝑓 = 0, … , 2𝑞 − 1,量化函數𝑄𝑓 如公式(2.5)所示。 𝑄𝑓 (𝑢) = (2𝑞 𝑔 + 𝑓)𝐿. (2.5). 其中量化大小的單位 L 為一個正的常數,並且𝐿 ∈ ℝ;𝑔為一個整數𝑔 ∈ ℤ, 並且滿足𝑢 ∈ 𝔗𝑓,𝑔 ,而𝔗𝑓,𝑔 為一個區間,定義如公式(2.6)所示。 1 1 𝔗𝑓,𝑔 = {𝑡: (2𝑞 (𝑔 − ) + 𝑓) 𝐿 ≤ 𝑡 < (2𝑞 (𝑔 + ) + 𝑓) 𝐿} 2 2. (2.6). 因此量化函數𝑄𝑓 是根據多個非重疊性的區間𝔗𝑓,𝑔 所組成,並且每一個𝔗𝑓,𝑔 區 間的長度為2𝑞 𝐿,而每個區間的中心值為(2𝑞 𝑔 + 𝑓)𝐿。而每個量化函數𝑄𝑓 的映射 結果之間隔大小也是2𝑞 𝐿。接下來將舉例在𝑞 = 1的情況下,係數 u 輸入至量化 函數𝑄𝑓 的映射結果之係數 v,如下圖 2.3 所示。. 11.

(19) 第二章 演算法說明. v. v. .... .... -4L -3L -2L -L. 4L. 4L. 3L. 3L. 2L. 2L. L. L. -L. L. 2L 3L 4L. u. -4L -3L -2L -L. -L. L. -2L. -2L. -3L. -3L. -4L. -4L. 2L 3L 4L. u. .... ... (a). (b). 圖 2.3 以𝑞 = 1為範例之量化函數: (a) 𝑄0 (b) 𝑄1 因為𝑞 = 1浮水印資料為 0 或 1,因此會有兩種量化函數𝑄0 以及𝑄1,而每個 量化結果的每一個量化區間大小皆為2𝐿,並且𝑄0 及𝑄1量化函數的映射結果分別 為{2𝑔𝐿, 𝑔 ∈ ℤ}以及{2𝑔 + 1, 𝑔 ∈ ℤ}。假設係數 u 輸入量化函數並進行嵌入浮水印 後獲得的映射結果為係數 v,量化函數如公式(2.7)所示。此外,係數 u 與係數 v 之關係式如下公式(2.8)所示。. 𝑣 = 𝑄𝑓 (𝑢), when 𝑤𝑖,𝑗 = 𝑓 |𝑢 − 𝑣| < 2𝑞−1 𝐿. (2.7). (2.8). 由於浮水印資料 Pixel 𝑤𝑖,𝑗 的嵌入位置是根據亂數所決定,而這個位置只會 對應到 Block 內的一筆係數,因此除了此係數之外,其餘的係數皆不會更動到。 其中 Pixel 𝑤𝑖,𝑗 與係數 u 及係數 v 之關係式如公式(2.9)所示。 12.

(20) 第二章 演算法說明. 𝑤𝑖,𝑗 =. 𝑣 mod 2𝑞 𝐿. (2.9). 在完成浮水印資料的嵌入後,接著會把完成嵌入浮水印的 Block 𝐕𝑖,𝑗 進行 Hadamard 後轉換,把 Block 從轉換域變換回到空間域上,如公式(2.10)所示。. 𝐙𝑖,𝑗 = 𝐇𝑘𝑇 𝐕𝑖,𝑗 𝐇𝑘. (2.10). 上式 Block 𝐙𝑖,𝑗 為 Block 𝐕𝑖,𝑗 轉換回空間域的結果,由於 Block 經過 Hadamard Transform 以及嵌入浮水印之程序,因此 Block 𝐙𝑖,𝑗 中的每一個 Pixel 都 包含有小數點,本法則只保留與浮水印資料相關的小數點部分,並採用二進制 的數值表示方式來儲存資料,所以在整個流程的最後要將 Pixel 做精度上的調 整,只保留 Pixel 內最大的 m 個位元,在完成精度調整後得到 Block 𝐁𝑖,𝑗 ;依照 相同的流程依序處理完所有的 Block 後,即可獲得加密後與嵌入完浮水印的影像 Y。完整的嵌入浮水印之流程如下圖 2.4 所示。. 轉換域. 空間域 4. 加密後影像X. 1. 4. 浮水印W Block. 1. 128. 512 128 512. Block 𝐀. 𝑤𝑖,𝑗 ,. Block. ,. Block. 精度調整 m. v. 嵌入浮水印 係數u. 嵌入完浮水印的加密影像 Y. 1. 4. 4. 1. Hadamard 前轉換. ,. Hadamard 後轉換. q. 8. 空間域. 4 512. 4 Block 𝐔 ,. m. 圖 2.4 嵌入浮水印之流程圖. 13. 512. ,.

(21) 第二章 演算法說明. 第2-2.3節. 浮水印可逆之條件. 浮水印資料必須要使用符合相關條件的方式進行嵌入,這樣才可以將浮水 印資料完整無缺失的擷取出來。假設 X 為加密後影像 X 中的 Pixel,而 Y 為加密 後與嵌入完浮水印的影像 Y 中的 Pixel,且 X 在影像 X 中的位置和 Y 在影像 Y 中的位置一樣。而為了滿足本法則的可逆性,Pixel X 與 Pixel Y 之關係必須滿足 公式(2.11)之條件。. |𝑋 − 𝑌| < 0.5. (2.11). 加密後影像 X 中的每一個 Pixel X 皆為 8-bit,而加密後與嵌入完浮水印的影 像 Y 中的每一個 Pixel Y 為𝑚-bit,且𝑚 ≥ 8。在滿足公式(2.10)的情況下,Y 包含 了 8-bit 的整數,以及(𝑚 − 8)-bit 的小數部分,在進行影像還原時,只需要將 Y 的(𝑚 − 8)的小數部分做四捨五入,即可還原成 8-bit 的 Pixel X。. 第三節 擷取浮水印 從加密後與嵌入完浮水印的影像 Y 中進行擷取浮水印的流程,與嵌入浮水 印之流程相似,首先將 Y 分割成2𝑘 × 2𝑘 大小的 Block 𝐁𝑖,𝑗 ,0 ≤ 𝑖, j≤ 2𝑛 − 1,接 下來對 Block 𝐁𝑖,𝑗 做 Hadamard 前轉換獲得 Block 𝐂𝑖,𝑗 ,接下來使用相同的金鑰與 串流加密,產生與嵌入浮水印時相同的亂數,因為浮水印資料的擷取位置必須 要和嵌入時的位置一致,才能根據此位置從 Block 𝐂𝑖,𝑗 中獲得正確的係數 c,最 14.

(22) 第二章 演算法說明. 後才能從係數 c 中成功擷取出𝑤 ̅ 𝑖,𝑗 ,𝑤 ̅ 𝑖,𝑗 如公式(2.12)所示,擷取浮水印之流程如 下圖 2.5 所示。 𝑐 𝑤 ̅ 𝑖,𝑗 = round( ) mod 2𝑞 𝐿. (2.12). 轉換域. 空間域 4 嵌入完浮水印的加密影像 Y. 浮水印𝐖. 1. 4. 1. 128 512. q. 128. 8. 𝑤𝑖,𝑗. 512. 擷取浮水印. Block 𝐁 ,. 1. 係數c 1. Hadamard 前轉換. 4 4 Block 𝐂 ,. 圖 2.5 擷取浮水印之流程. ̅ ,𝐖 ̅ = 依照相同的流程依序處理完所有的 Block 後,即可獲得浮水印𝐖 ̅ 與和嵌入時的浮水印 W, {𝑤 ̅ 𝑖,𝑗 , 0 ≤ 𝑖, 𝑗 ≤ 2𝑛 − 1}。而比較擷取出來的浮水印𝐖 即可得知擷取浮水印的結果是否正確。. 第四節 影像還原 影像還原的流程與影像加密的流程相似,影像還原之流程如下圖 2.6 所示, 首先將影像內所有的 Pixels 進行四捨五入去除小數,再使用相同的金鑰與串流加 密,產生與影像加密時相同的亂數陣列進行 XOR 運算;依序將所有的 Pixels 進 15.

(23) 第二章 演算法說明. 行相同的流程處理後,即可獲得完全恢復的影像資料。 將Pixels做 Rounding Off 轉成灰階8-bit. 將灰階8-bit Pixels轉成 Binary陣列 進行XOR運算. 讀入 已嵌入浮水印的 加密灰階影像. 將Binary陣列 轉成8-bit之 Pixels. 輸出 完全恢復的影像. 使用亂數產生器 產生亂數 Binary陣列. 圖 2.6 影像還原流程圖. 第五節 單層浮水印 本節將說明本法則在浮水印的嵌入與擷取時要使用到的相關參數及計算公 式,首先從單層浮水印開始說明,在開始說明相關數學公式前,首先進行相關 參數的名稱定義,浮水印資料量 q、資料量 m、量化大小 L、Block 大小2𝑘 × 2𝑘 、量化誤差範圍𝜖,以下依序討論各參數的計算公式:. 浮水印的資料量 q 為浮水印 W 內 Pixel 的位元數,資料量 m 為加密後與嵌入完 浮水印的影像 Y 內 Pixel 的位元數,資料量 m 的計算根據論文 [4],在滿足公式 (2.11)的條件下,資料量 m 的計算如下公式(2.13)所示:. 𝑚=𝑞+9. (2.13). 而量化大小 L 為一個正實數,在滿足公式(2.11)的條件下,量化大小 L 的計算公 式如下公式(2.14)所示:. 16.

(24) 第二章 演算法說明. 𝐿 > 2𝑘−𝑚+8. (2.14). 量化大小 L 允許的調整範圍如下公式(2.15)所示:. 𝐿 = 𝐿𝑚𝑖𝑛 + ϵ. (2.15). 其中量化大小 L 的最小值𝐿𝑚𝑖𝑛 如下公式(2.16)所示: 𝐿𝑚𝑖𝑛 = 2𝑘−𝑚+8. (2.16). 公式(2.15)中量化誤差範圍𝜖的計算如下公式(2.17)所示:. 0 < ϵ < 2𝑘−𝑞−1 (1 − 2−𝑞 ). (2.17). 下表為單層浮水印的嵌入與擷取之流程需要使用到之相關參數,以下根據浮水 印的資料量列出各參數的計算結果:. 表 2.1 嵌入單層浮水印所需參數之計算結果. 17.

(25) 第二章 演算法說明. 第六節 多層浮水印 接下來以單層浮水印為基礎,進行多層浮水印的相關參數及計算公式的說 明,首先定義相關參數及數學符號,多層浮水印的表示為𝐖1 , ⋯ , 𝐖𝐽 ,𝐽 ≥ 2,其 中𝐖1 為上節的單層浮水印𝐖,嵌入後的第𝑗層浮水印表示方法為𝐖𝑗 , 𝑗 = 1, ⋯ , 𝐽; 加密後的影像表示為 X,嵌入了多層浮水印的加密後影像表示為𝐘𝑗 , 𝑗 = 1, ⋯ , 𝐽, 而每嵌入一層浮水印的輸入為𝐗𝑗 ,𝐗 𝑗 = 𝐘𝑗−1 , 𝑗 = 1, ⋯ , 𝐽,其中𝐗1 與𝐘0 為加密後 的影像𝐗。首先定義𝐿𝑗 為第𝑗層的量化大小,𝐿𝑗 的計算如下公式(2.18)所示,其中 𝐿1 = 𝐿:. 𝐿𝑗 = 𝐿𝑗,𝑚𝑖𝑛 + 𝜖𝑗. (2.18). 其中公式(2.18)內的𝐿𝑗,𝑚𝑖𝑛 計算如下公式(2.19)所示,其中𝑚0 = 8,𝑚1 = 𝑚: 𝐿𝑗,𝑚𝑖𝑛 = 2𝑘−𝑚𝑗+8. (2.19). 其中公式(2.19)內的𝑚𝑗 計算如下公式(2.20)所示,其中𝑞1 = 𝑞:. 𝑚𝑗 = 𝑞𝑖 + 𝑚𝑖−1 + 1. (2.20). 公式(2.18)中量化範圍𝜖𝑗 的計算如下公式(2.21)所示,其中𝜖1 = 𝜖: 0 < 𝜖𝑗 < 2𝑘−𝑞𝑗−𝑚𝑗−1 +7 (1 − 2−𝑞𝑗 ). (2.21). 在嵌入完多層浮水印後,加密影像資料中 Pixel 的資料量𝑚𝐽 計算方式如下式 18.

(26) 第二章 演算法說明. (2.22)所示: 𝐽. 𝑚𝐽 = ∑. 𝑗=1. 𝑞𝑗 + 𝑚0 + 𝐽, 𝑚0 = 8. (2.22). 接續上表 2.1 繼續討論,接著進行第二層浮水印所需參數與計算結果之說明,並 根據第二層浮水印的資料量列出參數的計算結果,其中𝑞1 = 𝑞2 :. 表 2.2 嵌入第二層浮水印所需參數之計算結果 由於本法則為多層浮水印的架構,大量提高了浮水印的資料量;而且各層 浮水印之間使用不同的加密金鑰及不同的串流加密產生亂數,並根據不同的亂 數決定浮水印資料的嵌入位置,因此浮水印非常不容易破解;此外各層浮水印 皆可分別獨立的進行擷取,並且沒有擷取順序上的限制,另外也可以隨時進行 影像還原,且獨立於擷取浮水印並也沒有順序上的限制,因此本法則在運用上 非常靈活與實用。. 19.

(27) 第三章 硬體架構與設計. 第三章 硬體架構與設計 本論文之硬體是基於論文 [2]中的嵌入浮水印硬體之架構(以下簡稱原硬體 架構)進行效能方面的改良。原硬體架構分為 3 個 Stage,分別為 Hadamard 前轉 換、數據隱藏以及 Hadamard 後轉換,架構如圖 3.1 所示。. Stage 1 Stage 1 Controller. 4. 4. Input Data Buffer. M U X. 4. 1D Transform Circuit. 4. 16. Hadamard Transform. 4. Stage 2 Stage 2 Controller. RNG. 4. 16. 4. 16. Data Hiding. 16. Data Hiding C. PISO Blocks. 4. Stage 3 Stage 3 Controller. 4. M U X. 4. 1D Transform Circuit 2. 4. Hadamard Transform 2. 4. Output. 4. 圖 3.1 論文 [2]中浮水印嵌入之硬體架構流程圖 本論文使用 Pipeline 的架構將原硬體架構做加速及效能優化的改良,改良的 20.

(28) 第三章 硬體架構與設計. 方式為將一個較大的組合邏輯電路插入多個 Pipeline Registers,使得最長路徑縮 短,藉此提升電路整體的時脈(Clock Rate),Pipeline 示意圖如圖 3.2 所示。。. Combinational Logic. Logic 1. Logic 3. Logic 2. Logic 4. 圖 3.2 Pipeline 示意圖 原硬體架構為一次處理一個 Block,一個 Block 包含 16 個 Pixels,當 Block 在進行 Hadamard 轉換的過程中會再將 16 個 Pixels 細分為一次處理 4 個 Pixels, Hadamard 前轉換(Stage 1)及 Hadamard 後轉換(Stage 3)中包含有矩陣運算單元, 矩陣運算單元在一個 Clock 中處理一筆資料(4 個 Pixels)需等待兩次的加法或減 法運算,才能輸出運算完成的資料。當一個 Block 傳送到 Stage 2 進行嵌入浮水 印時,因為數據隱藏單元為一個較大的組合邏輯電路,其中包含了 Quantization Circuit、Random Number Generator 以及嵌入浮水印之電路,所以當一筆資料經 過 Stage 2 需要等待很長的時間才能將資料送至 Stage 3 中。因此本論文將原架構 的 Stage 1、Stage 2 及 Stage 3 使用插入 Pipeine Register 的方式改良為 Pipeline 的 架構,進行電路架構及效能上的優化。. 接下來說明矩陣運算單元及數據隱藏單元中如何改良為 Pipeline 的架構,其. 21.

(29) 第三章 硬體架構與設計. 中矩陣運算單元使用於 Stage 1 及 Stage 3,數據隱藏單元使用於 Stage 2。. 第一節 矩陣運算單元 在論文 [2]中的矩陣運算單元如圖 3.3 所示。當一筆資料 4 個 Pixels 要輸入 到在 Stage 1 中,要經過矩陣運算單元時,一個 Clock 必須等待 2 次的加減法運 算才可獲得運算結果,因此運算時間為 2 次的加減法運算。. a. a-b-c+d. b. a+b-c-d. c. a-b+c-d. d. a+b+c+d 圖 3.3 論文 [2]中之矩陣運算單元. 針對此問題,本論文使用 Pipeline 的架構將此矩陣運算單元做優化,如圖 3.4 所示。使用 Pipeline 架構優化後的矩陣運算單元分為兩個運算單元,在此架 構下一個 Clock 將只需要等待一次加減法的運算,即可將運算結果輸出給下ㄧ級 運算單元進行第二次的加減法運算,因此可以達到縮短路徑與提升時脈的目 的。. 22.

(30) 第三章 硬體架構與設計. a. a+b. a+b. a-b-c+d. b. a-b. a-b. a+b-c-d. c. c+d. c+d. a-b+c-d. d. c-d. c-d. a+b+c+d. 圖 3.4 使用 Pipeline 後之矩陣運算單元. 第二節 Hadamard Transform 第 2-2.1 節所提到之 Hadamard Transform 之電路架構中,除了上一節所提到 的矩陣運算單元外,另外還包含一個移位暫存器(Shift Register),且使用於 Stage 1 以及 Stage 3 中。本節將說明如何透過移位暫存器完成 Stage 1 以及 Stage 3 中 所需要的矩陣相乘運算,Stage 1 及 Stage 3 的詳細內容將於下一節說明。. Stage 1 及 Stage 3 電路功能是進行三個矩陣的相乘運算,即上一章所提及的 公式 2.4 以及公式 2.10。電路內部的運作是先進行前兩個矩陣的相乘運算,接著 將運算完成的結果乘上第三個矩陣。在進行前兩個矩陣的相乘運算時,移位暫 存器將資料以由左往右的方式推移並儲存,如下圖 3.5。. 23.

(31) 第三章 硬體架構與設計. Element. Element. Element. Element. Element. Element. Element. Element. 圖 3.5 移位暫存器,由左往右的方式推移並儲存 接著再將運算完成的結果乘上第三個矩陣,將資料以由上往下的方式推移 並儲存,如下圖 3.6 所示,完成三個矩陣運算後,即完成 Hadamard Transform。 Element. Element. Element. Element. Element. Element. Element. Element. 圖 3.6 移位暫存器,以由上往下的方式推移並儲存. 24.

(32) 第三章 硬體架構與設計. 第三節 Stage 1 & Stage 3 運作方式 論文 [2]中之 Stage 1 及 Stage 3 分別為 Hadamard 前轉換以及後轉換。使用 Pipeline 架構優化後的 Stage 1 如圖 3.7 所示,Stage 3 如圖 3.8 所示。本節將以 Stage 1 為例進行說明。. 4. M U X. 4. Input Data Buffer. 4. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 16. Hadamard Transform. Stage 2. 4. 圖 3.7 使用 Pipeline 後之 Stage 1 電路架構 M U X. 4. 4. 矩陣運算單元 2 Pipeline 1. 4. 矩陣運算單元 2 Pipeline 2. 4. 4. Hadamard Transform 2. Output. 4. 圖 3.8 使用 Pipeline 後之 Stage 3 電路架構 Stage 1 在運作過程中會將一個 Block 中的 16 個 Pixels 細分為一次處理 4 個 Pixels。首先輸入第一行資料(4 個 Pixels)進入到 Input Data Buffer,再透過多工器 將第一行資料輸入到矩陣運算單元進行矩陣運算,最後透過移位暫存器以由左 往右推移的方式儲存運算結果,如圖 3.9 所示。. 4. 1. 2. 3. 4. 5. 6. 7. 8. 1. 2. 3. 4. 5. 6. 7. 8. Input Data Buffer. 1. 6. 6. 0. 5. -4. -4. 0. 1. 6. 6. -8. 5. -4. -4. 12. 0 0. 4. M U X. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 4. -8 12. Hadamard Transform. 4. 圖 3.9 Stage 1 完成第一行資料運算之結果 25. 16. Stage 2.

(33) 第三章 硬體架構與設計. 接著輸入的第二行、第三行及第四行資料皆依照相同的方式進行運算,並 且將每一行資料以由左往右推移的方式儲存於移位暫存器,最後完成計算的四 行資料如圖 3.10 所示。. 4. 1. 2. 3. 4. 5. 6. 7. 8. 1. 2. 3. 4. 5. 6. 7. 8. Input Data Buffer. 4. 4. 12. 12. 0. 8. -4. -4. 0. 4. 12. 12. -8. 8. -4. -4. 24. M U X. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 4. 0. 0. 0. 0. 0. 0. 0. -8. -8. -8. -8. 0. 24 20 16 12. Hadamard Transform. 16. Stage 2. 4. 圖 3.10 Stage 1 完成四行資料運算之結果 接著以一列資料(4 個 Pixels)為單位,由最下面的一列資料開始回傳至 前端的多工器,並進行第一列資料的運算,在第一列資料完成運算後,移 位暫存器會把第一列資料以由上往下的方式向下推移的方式做儲存,如圖 3.11 所示。Stage 1 完成四列資料的計算後如圖 3.12 所示,最後把完成計算 的一個 Block 資料(16 個 Pixels)輸出至 Stage 2。. 26.

(34) 第三章 硬體架構與設計. 往回輸入第一列 0. 0. 0. 0. 0. 0. 0. -8. -8. -8. -8. 0. 24 20 16 12. 4. 4. Input Data Buffer. M U X. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 4. 16. Hadamard Transform. Stage 2. 4. 向下推. 4. 4. Input Data Buffer. 12. 28. 28. 0. 16. -4. -4. -16. 20. 44. 44. -8. 24. -4. -4. 72. M U X. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 4. 7. -8. -16. 0. 0. 0. 0. 0. 0. 0. 0. 0. -8. -8. -8. -8. 16. Hadamard Transform. Stage 2. 4. 圖 3.11 Stage 1 回傳第一列資料,並向下推移 往回輸入第四列. 4. Input Data Buffer. 4. M U X. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 4. 0. 0. 0. 0. -32. 0. 0. 0. 72. -8 -16 -8. 0. 0. 0. 0. 16. Hadamard Transform. Stage 2. 4. 向下推. 4. Input Data Buffer. 4. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. -8. 0. 0. 0. 0. M U X. 4. 矩陣運算單元 1 Pipeline 1. 4. 矩陣運算單元 1 Pipeline 2. 4. 0. 0. 0. 0. 0. 0. 0. 0. -32. 0. 0. 0. 72. -8 -16. Hadamard Transform. 0. 16. Stage 2. 4. 圖 3.12 Stage 1 完成 Hadamard 前轉換之計算結果 而 Stage 3 為 Hadamard 後轉換,運作的方法與流程皆與 Stage 1 相同。. 27.

(35) 第三章 硬體架構與設計. 第四節 數據隱藏單元 本章節將以論文 [2]中 Stage 2 為基礎,使用 Pipeline 架構進行硬體架構方面 的優化。原電路架構之 Stage 2 如下圖 3.13 所示,圖中數據隱藏單元分為 Data Hiding 及 Data Hiding C,此部分為一較大的組合邏輯電路,當一個 Block 的資 料(16 個 Pixels)輸入至數據隱藏單元時,需要花費過多的時間進行運算。針對此 架構的問題,本論文以插入 Pipeline Register 的方式進行電路架構的優化,使用 Pipeline 後之 Stage 2 電路架構如下圖 3.14 所示。. RNG. Random Number(4-bit). 16. Data Hiding. 16. Data Hiding C. 16. PISO Blocks. 4. Stage 3. 圖 3.13 論文 [2]電路架構之 Stage 2 RNG. Random Number(4-bit). 16. 16. 數據隱藏單元 Pipeline 1. 數據隱藏單元 Pipeline 2. 數據隱藏單元 Pipeline 3. 數據隱藏單元 Pipeline 4. 數據隱藏單元 Pipeline 7. 數據隱藏單元 Pipeline 5. 16. PISO Blocks. 4. Stage 3. 數據隱藏單元 Pipeline 6. 圖 3.14 使用 Pipeline 後之 Stage 2 在 Stage 2 的運作流程中,首先將一個 Block 中的 16 個 Pixel 依據 RNG 亂 數產生器所產生之亂數,取出一個 Pixel 做為嵌入浮水印的嵌入點係數 u,接著 28.

(36) 第三章 硬體架構與設計. 將係數 u 進行量化處理,接著嵌入浮水印資料獲得係數 v,最後將嵌入完浮水印 資料的係數 v 放回原本取出係數 u 的位置,最後連同其他沒有更動過的 15 個 Pixel,組合回原本 16 個 Pixel 的 Block 輸出至 Stage 3。. 論文 [2]中 Stage 2 裡的 Data Hiding 在使用 Pipeline 架構優化後分為兩個電 路,分別為數據隱藏單元 Pipeline 1,如圖 3.15 所示,與數據隱藏單元 Pipeline 𝑁. 2,如圖 3.16 所示。首先定義相關參數量化大小 L= 𝐷𝐿,其中𝑁𝐿 與𝐷𝐿 為整數,由 𝐿. 於在電路的運作過程中是採用二進制進行運算,當𝑁𝐿 與𝐷𝐿 為 2 的倍數時,電路 可以改用位移的運作方式取代乘法或除法的運算,以減少硬體的資源消耗,因 此以下和乘法或除法相關的運算皆使用位移進行取代。接著定義硬體設計過程 中會使用到的位移參數𝑆 = log 2 𝑁𝐿 ,其中 pipeline 2 中的 p 為係數 u 完成量化並 且嵌入浮水印𝑤𝑖,𝑗 後的輸出。. Reg Reg. 圖 3.15 數據隱藏單元 Pipeline 1. 29.

(37) 第三章 硬體架構與設計. M U X. 圖 3.16 數據隱藏單元 Pipeline 2 在論文 [2]中 Stage 2 裡的 Data Hiding C 在使用 Pipeline 架構優化後分為五 個電路,分別為數據隱藏單元 Pipeline 3,如圖 3.17 所示、數據隱藏單元 Pipeline 4,如圖 3.18 所示、數據隱藏單元 Pipeline 5,如圖 3.19 所示、數據隱藏 單元 Pipeline 6,如圖 3.20 所示,與數據隱藏單元 Pipeline 7,如圖 3.21 所示。. 圖 3.17 數據隱藏單元 Pipeline 3. 30.

(38) 第三章 硬體架構與設計. 圖 3.18 數據隱藏單元 Pipeline 4. M U X `. M U X ```. 圖 3.19 數據隱藏單元 Pipeline 5. 31.

(39) 第三章 硬體架構與設計. M U X `. M U X `. 圖 3.20 數據隱藏單元 Pipeline 6 1 M U X. Reg_1. `. 2 M U X. M U X. `. Reg_2. `. . . . . . .. M U X. Reg_. `. 圖 3.21 數據隱藏單元 Pipeline 7. 32.

(40) 第三章 硬體架構與設計. 第五節 Random Number Generator(RNG) Random Number Generator(RNG)使用於 Stage 2,透過 RNG 產生亂數決定浮 水印的嵌入位置。此硬體架構設計之 RNG 是以 Cellular Automata(CA)為基礎來 設計,CA 可以視為一個 Cell 陣列,而每一個 Cell 皆處於兩種狀態{0,1}之間。 而每一個 Cell 的更新條件為:(1)Cell 與鄰近 Cell 的連接方式,(2)鄰近 Cell 當前 的狀態。. 假設 Cell i 上連接有四個 Cells,分別為 a、b、c、d,連接方式如下圖 3.22 所示。. 圖 3.22 Cell 的連接方式 本論文的 RNG 架構中包含了 64 個 Cell,並以 CA 為基礎來運作,其中,每 一個 Cell 包含 4 個 1 Bit Input 以及 1 Bit Output,並且 Cell 的連接方式是採用 1D 的結構做連接,如下圖 3.23,每一個 Cell 的每一個 Input 都以固定的連接方 式與相鄰的 Cell 作連接。假設有 z 個 Cell,並且0 ≤ z ≤ 63,第 z 個 Cell 的 4 個 Input 分別為 z-1、z-2、z、z+1。如下圖 3.23 所示為例子,Cell 0 的 4 個 Input 則 33.

(41) 第三章 硬體架構與設計. 分別為 Cell 62、Cell 63、Cell 0 及 Cell 1。. .... 62. 63. 0. 1 .... 圖 3.23 1D 結構的 Cell 連接方式 每一個 Cell 會將 4 個 Input 根據表 3.1 以及圖 3.24 進行查表,先將 4 個 Input 輸入至 Look-Up Table(LUT),進行查表後即會得到一個新的 1 Bit 輸出, 再將這 1 Bit 輸出儲存於 1 Bit Cell 中取代原本的數值,便完成一次的亂數產生。 下表 3.1 表示四個 Cells 當前的狀態與 Cell i 更新後的狀態。. 表 3.1 四個 Cells 當前的狀態與 Cell i 更新後的狀態. 34.

(42) 第三章 硬體架構與設計. a b c d LUT Data Embedding Key `. MUX Cell i. 圖 3.24 Cell 使用 Look-Up Table 查表 本論文整個亂數產生的過程首先會先將 64 個 bit 的 Initial Seed Value 放進 RNG 中的 64 個 Cell 當作亂數產生的初始值,如下圖 3.25 所示,當一個 Block 𝐀 𝑖,𝑗 轉換成 Block 𝐁𝑖,𝑗 後,要進行係數選擇時,RNG 就會進行一次亂數產生,並 輸出一組新的 64 個 bit 數值,接著指定 64 個 Cell 中的 4 個 Cell 輸出至數據隱藏 單元中,作為係數 u 選擇的依據。而 4 個 Cell 的輸出即為 4 個 bit,4-bit 即可表 示一個 Block 中包含的 16 筆 Pixels。. Initial Seed Value. .... 62. 63. 0. 1 .... 圖 3.25 將 64 個 bit 的 Initial Seed Value 放進 RNG 中的 64 個 Cell. 35.

(43) 第三章 硬體架構與設計. 第六節 Clock Gating 省電技術 本論文的硬體設計上為了降低電路的功耗,而導入 Clock Gating 省電技術, 期望能進一步降低電路動態功耗。動態功耗的產生是因為電路的邏輯切換,例 如 D Flip Flop 的 Clock 訊號不斷切換運作,就會產生動態功耗,即使 D Flip Flop 並沒有被啟動。在本論文的電路中,在同一個 Clock Cycle 時,也並非所有 的電路元件都需要被啟動,但是只要有 Clock 不斷地切換都依然會產生動態功 耗。. Clock Gating 技術就是用來解決上述的情況,透過在電路中插入一些邏輯 閘,來讓電路能夠自動的抑制系統的 Clock 訊號到某些電路元件,讓其不會被 Clock 訊號影響而啟動,進而減少動態功耗。Clock Gating 設計的條件限制在電 路需要有 Enable 訊號,當 Enable 訊號 Active 時,則可接受 Clock 訊號輸入,反 之 Clock 訊號則維持不變。典型的 Clock Gating 電路設計如下圖 3.26 所示,由 Latch 和一個 AND 邏輯閘所組成,透過觀察下圖 3.27 的波型圖,得知當只有啟 動訊號 EN Active 的時候,系統時脈 CLK 訊號才會透過 AND 邏輯閘,送出 gated_clk 訊號做動 D Flip Flop。. 36.

(44) 第三章 硬體架構與設計. EN. D. Q. D. Output of Latch Gated Clock. En. Q. >. DFF Latch. CLK. 圖 3.26 Clock Gating 電路元件. 圖 3.27 波型圖 本論文在合成電路上使用設定 Clock Gating 參數來降低動態功耗,並於第四 章中分析有無 Clock Gating 的電路效能。. 37.

(45) 第四章 實驗數據與分析. 第四章 實驗數據與分析 本章將說明本論文之研究成果。第一節將說明軟體與硬體的開發環境。第 二節將透過分析軟體數據來展示本法則的特性。第三節將分析及說明不同參數 合成出的電路之面積、時脈及功耗。. 第一節 開發環境說明 本法則的實作分成軟體與硬體兩個部分,軟體部分使用 Matlab 做開發,硬 體部分使用 Verilog 做撰寫,另外透過比對軟體與硬體的輸出結果進行硬體的功 能驗證;本論文的開發環境如下表 4.1 所示。 軟體實驗環境 CPU:Intel® Core™ i7-4790CPU. 硬體實驗環境 Platform:. CIC EDA CLOUD. @ 3.60GHz RAM:DDR III 32GB Matlab 版本:R2014a. Technology: TSMC 40 nm Synthesize:. Synopsys Design Compiler 2013.03-SP4. Simulation:. Synopsys VCS-MX 2013.06. Power. Synopsys PrimeTime. Estimation:. 2013.06-sp2. 表 4.1 軟體與硬體之開發環境. 38.

(46) 第四章 實驗數據與分析. 目前常見之電路架構開發環境主要實現在 FPGA 以及 ASIC。FPGA 為現場 可程式邏輯門陣列之縮寫(Field Programmable Gate Array),ASIC 為特殊應用積 體電路之縮寫(Application Specific Integrated Circuit)。. 本篇論文之硬體部分實現於 ASIC 開發流程。與 FPGA 不同的地方是, FPGA 是在製造出來的晶片上重複燒寫電路邏輯,並且 FPGA 晶片版所提供的硬 體資源都是固定的;相對的 ASIC 則是可以依照電路設計的規格需求,來調整電 路所需要的硬體資源,再將設計好的電路資料透過下線(Tapeout)至做成晶片 (Chip)。ASIC 開發的流程如下圖 4.1 所示。 Design Specification. RTL Description (HDL) Functional Verification Technology Library. Logic Synthesize Gate Level Simulation Place and Route Post-layout Verification Tapeout. Chip. 圖 4.1 ASIC 開發流程 39.

(47) 第四章 實驗數據與分析. 當設定好電路的規格及需求後,開發者以硬體描述語言 HDL(Hardware Description Language)來描述電路的行為,接著使用模擬器(Simulation Tool)來模 擬及確認電路的邏輯是否正確無誤。此階段之模擬是以 High-Level 的角度來觀 察電路的行為,因此僅需考慮電路邏輯是否正確,而此模擬行為一般稱為暫存 器傳輸級(Register Transfer Level,RTL)。當 RTL 模擬完成且驗證後結果正確無誤 時,我們就會將 RTL 的描述檔案以及所選的製程元件庫(Technology Library)交給 邏輯合成器做電路合成(Logic Synthesize)做合成的動作。合成器會根據元件庫所 提供的邏輯元件、RTL 描述檔案以及開發者所設定之電路參數等資訊,把 HighLevel 的描述檔案轉換為硬體元件之間的連接之描述,而此描述檔為電路網路描 述(Netlist)。開發者可以將此描述檔案搭配合成器所產生的電路延遲資訊(Timing) 進行 Gate-Level Simulation,做進一步的合成,並驗證完成後的結果是否正確, 並接著進行電路的功耗計算。. 本論文的電路架構完成 ASIC 開發流程中的 RTL 模擬、電路合成與 GateLevel 模擬,所使用的開發工具由國家晶片系統設計中心(CIC)所提供,於 CIC 的開發平台中進行電路的設計與開發,使用的平台與工具名稱之詳細資訊如上 表 4.1 所示。. 40.

(48) 第四章 實驗數據與分析. 第二節 軟體數據分析 本章節將會呈現以軟體實作本法則的效能,並將嵌入完浮水印之加密影像 做儲存消耗的 bit 數量之分析。首先,透過使用幾個不同的指標來呈現本法則在 嵌入不同 bit 數量浮水印後的性能。接下來將說明之後會使用到的指標 T(bits)、 R(bpp)、𝑅̅ (bpb)及 PSNR(dB)。. T(bits)表示整張影像所能夠負載的浮水印總 bit 量。當嵌入的浮水印僅有一 層時,T 的算法如下公式(4.1)所示。其中 q 為嵌入浮水印的資料量(bit),而 N 與 k 代表之意義如第 2-2.2 節所述。. 𝑇 = 𝑞 × 2𝑁−𝑘 × 2𝑁−𝑘 , for 𝐽 = 1. (4.1). 而若當嵌入的浮水印大於一層時,則 T 的計算方法如下公式(4.2)所示。. 𝐽. 𝑇 = ∑ 𝑞𝑗 × 2𝑁−𝑘 × 2𝑁−𝑘 , for 𝐽 > 1. (4.2). 𝑗=1. R(bpp, Bit Per Pixel),代表在嵌入浮水印後,整張影像平均每一個 Pixel 所可 以藏入的浮水印 bit 數量,R 的定義如下公式(4.3)所示。.. 𝑅=. 所有浮水印所能附載的Bit數量 嵌入完浮水印之影像的總Pixel數量. 41. (4.3).

(49) 第四章 實驗數據與分析. 若不考慮浮水印的可逆性時,R 的計算方法可以表示如下公式(4.4)所示。. 𝑅=. 2𝑁. 𝑇 × 2𝑁. (4.4). 在考慮浮水印的可逆性的情況下,當嵌入的浮水印僅有一層時,R 的計算方法則 如下公式(4.5)所示。. 𝑅=. 𝑞 , for 𝐽 = 1 2𝑘 × 2𝑘. (4.5). 相同的,若當嵌入的浮水印大於一層時,R 的算法則如下公式(4.6)所示。. 𝑅=. ∑𝐽𝑗=1 𝑞𝑗 2𝑘 × 2𝑘. , for 𝐽 > 1. (4.6). 另一種實用的計算指標為𝑅̅ (bpb, Bit Per Bit),𝑅̅ 代表在嵌入浮水印後,整張 影像平均每一個 bit 所可以藏入的浮水印數量,𝑅̅ 的定義如下公式(4.7)所示。. 𝑅̅ =. 所有浮水印所能附載的Bit數量 嵌入完浮水印之影像所有Pixels的總Bit數量. (4.7). 當影像嵌入多層的浮水印後,影像使用𝐘𝐽 表示,此時的𝑅̅ 則如公式(4.7)所示,而 公式(4.8)中的𝑚𝐽 已在第二章中的公式(2.22)提及。. 𝑅̅ =. 𝑅 𝑚𝐽. 而根據公式(4.1)到公式(4.8)所述,𝑅̅ 也可表示為公式(4.9)。 42. (4.8).

(50) 第四章 實驗數據與分析. 𝑅̅ =. 2𝑁. 𝑇 × 2𝑁 × 𝑚𝐽. (4.9). 當嵌入的浮水印僅有一層時,根據公式(2.13)及公式(4.1)所述,𝑅̅ 的算法可以表 示如公式(4.10)所示。. 𝑅̅ =. 1 𝑞 , for 𝐽 = 1 2𝑘 × 2𝑘 𝑞 + 9. (4.10). 若當嵌入的浮水印資料量 q 過大時,𝑅̅ 的計算方式則改變成如公式(4.11)所示。. lim 𝑅̅ =. 𝑞→∞. 1 2𝑘 × 2𝑘. (4.11). 而當嵌入的浮水印多於一層時,將公式(2.22)代入公式(4.9)得下公式(4.12)。. 𝑅̅ =. 𝑇 , for 𝐽 > 1 (𝐺 + 𝑚0 + 𝐽) × 2𝑁 × 2𝑁. (4.12). 其中 G 為全部浮水印 bit 數量的加總,如公式(4.13)所示. 𝐽. 𝐺 = ∑ 𝑞𝑗. (4.13). 𝑗=1. 最後將公式(4.2)代入公式(4.12)得下公式(4.14)。. 𝑅̅ =. 2𝑘. 1 𝐺 , for 𝐽 > 1 𝑘 × 2 𝐺 + 𝑚0 + 𝐽. 最後所使用的指標 PSNR,為峰值信噪比的縮寫(Peak Signal to Noise 43. (4.14).

(51) 第四章 實驗數據與分析. Ratio)。PSNR 一般是用於量測最大值信號與背景噪音之間的一個工程項目;有 時為了衡量經過處理後的影像品質,也會使用 PSNR 值來衡量某個處理程序是否 完整,而在這邊則是使用 PSNR 來做為影像解密還原後的指標,PSNR 的定義如 下公式(4.15)及公式(4.16)所示。. 𝑃𝑆𝑁𝑅 = 10 log10. 𝑀𝑆𝐸 =. 2552 𝑀𝑆𝐸. 511 511 1 ∑ ∑ [𝑌(𝑖, 𝑗) − 𝑋(𝑖, 𝑗)]2 512 × 512 𝑖=0 𝑗=0. (4.15). (4.16). 在公式(4.16)中的 MSE(Mean Squared Error)均方差,是反映估計量與被估計 量之間差異程度的一種度量,一般來說 MSE 越小越好。而在這裡我們將 MSE 做 為嵌入浮水印的加密後影像 Y 之 Pixel 及加密後影像 X 之 Pixel 的差值平方取平 均,因此 MSE 越小,所得到的 PSNR 越大,則代表兩張影像的誤差越小,同時 也代示影像失真的越少。. 首先說明及分析當嵌入不同資料量的浮水印時,各項數值指標所產生的改 變,以下嵌入浮水印之原影像皆以大小為512 × 512為例子。當嵌入一層浮水印 (𝐽 = 1),Block 大小為22 × 22 (𝑘 = 2),且浮水印資料量為 1-bit~8-bit(𝑞 = 1~8) 時,各指標之數值如下表 4.2 所示。. 44.

(52) 第四章 實驗數據與分析. q. 1. 2. 3. 4. 5. 6. 7. 8. T(bits). 16384. 32768. 49152. 65536. 81920. 98304. 114688. 131072. R(bpp). 0.0625. 0.125. 0.1875. 0.25. 0.3125. 0.375. 0.4375. 0.5. 𝑅̅(bpb). 0.00625. 0.01136. 0.01563. 0.01923. 0.02232. 0.025. 0.02734. 0.02941. 表 4.2 𝐽 = 1, 𝑘 = 2, 𝑞 = 1~8 當嵌入一層浮水印(𝐽 = 1),Block 大小為21 × 21 (𝑘 = 1)到24 × 24 (𝑘 = 4), 且浮水印資料量為 1-bit(𝑞 = 1)時,各指標之數值如下表 4.3 所示。而當浮水印 資料量為 8-bit(𝑞 = 8)時,各指標之數值如表下表 4.4 所示。 2𝑘 × 2𝑘. 2×2. 4×4. 8×8. 16 × 16. T(bits). 65536. 16384. 4096. 1024. R(bpp). 0.25. 0.0625. 0.01563. 0.00391. 𝑅̅ (bpb). 0.025. 0.00063. 0.00016. 0.00039. 表 4.3 𝐽 = 1, 𝑘 = 1~4, 𝑞 = 1 2𝑘 × 2𝑘. 2×2. 4×4. 8×8. 16 × 16. T(bits). 524288. 131072. 32768. 8192. R(bpp). 2. 0.5. 0.125. 0.03125. 𝑅̅(bpb). 0.11765. 0.02941. 0.00735. 0.00184. 表 4.4 𝐽 = 1, 𝑘 = 1~4, 𝑞 = 8 當嵌入兩層浮水印(𝐽 = 2),且𝑞 = 𝑞1 = 𝑞2,Block 大小為22 × 22 (𝑘 = 2),且 浮水印資料量為 1-bit~8-bit(𝑞 = 1~8)時,各指標之數值如表 4.5 所示。. q. 1. 2. 3. 4. 5. 6. 7. 8. T(bits). 32768. 65536. 98304. 131072. 163840. 196608. 229376. 262144. R(bpp). 0.125. 0.25. 0.375. 0.5. 0.625. 0.75. 0.875. 1. 𝑅̅(bpb). 0.00442. 0.01786. 0.02344. 0.02778. 0.03125. 0.03409. 0.03646. 0.03846. 表 4.5 𝐽 = 2, 𝑘 = 2, 𝑞 = 1~8 45.

(53) 第四章 實驗數據與分析. 當嵌入兩層浮水印(𝐽 = 2)時,且𝑞 = 𝑞1 = 𝑞2,Block 大小為21 × 21 (𝑘 = 1)到 24 × 24 (𝑘 = 4),且浮水印資料量為 1-bit 及 8-bit(𝑞 = 1,8)時,各指標之數值如表 4.6 及表 4.7 所示。 2𝑘 × 2𝑘. 2×2. 4×4. 8×8. 16 × 16. T(bits). 131072. 32768. 8192. 2048. R(bpp). 0.5. 0.125. 0.03125. 0.00781. 𝑅̅(bpb). 0.04167. 0.01042. 0.00261. 0.00065. 表 4.6 𝐽 = 2, 𝑘 = 1~4, 𝑞 = 1 2𝑘 × 2𝑘. 2×2. 4×4. 8×8. 16 × 16. T(bits). 1048576. 262144. 65536. 16384. R(bpp). 4. 1. 0.25. 0.0625. 𝑅̅(bpb). 0.15385. 0.03846. 0.00962. 0.00242. 表 4.7 𝐽 = 2, 𝑘 = 1~4, 𝑞 = 8 在表 4.4 中,呈現了當原影像大小為512 × 512時,一次嵌入 8 個 bit 浮水 印,並且將影像切為不同 Block 大小後所能嵌入的浮水印量。表格中可以看出, 當𝑘 = 1時,Block 所能嵌入的浮水印數量高達 524288 個 bit 數,而當𝑘 = 4時, Block 所能嵌入的浮水印數量僅剩 8192 個 bit 數。雖然相較於𝑘 = 4時,以𝑘 = 1 為 Block 大小進行浮水印嵌入可以嵌入非常大量的浮水印資料量,但是由於每次 進行 Hadamard 轉換的 Pixel 只有 4 個,而經過 Hadamard 前轉換進入到轉換域 後,能夠選擇嵌入浮水印的位置也僅有 4 個,因此浮水印被破解的風險較高。 相對的,當以𝑘 = 4為 Block 大小進行浮水印嵌入時,雖然可以選擇嵌入浮水印. 46.

(54) 第四章 實驗數據與分析. 的位置高達 256 個,但是整張影像所能嵌入的浮水印資料量也就相對的大幅下 降,雖然提升了安全性,卻犧牲了整張影像的浮水印嵌入資料量。因此在本論 文之硬體實作中,選擇以𝑘 = 2為 Block 大小進行浮水印的嵌入,這樣既能維持 良好的浮水印資料量,同時也能保障浮水印的安全性。. 接著將比較本法則架構,與現有在加密後的影像嵌入浮水印的法則架構在 𝑅、𝑅̅ 及 PSNR 上的效能表現,如下表 4.8 所示。 演算法. [5]. [6]. 本論文 𝐽 = 1, 𝑘 = 1, 𝑞 = 2. 本論文 𝐽 = 1, 𝑘 = 2, 𝑞 = 5. R(bpp). 0.0200. 0.2952. 0.5000. 0.3125. 𝑅̅(bpb). 0.0025. 0.0369. 0.04545. 0.02232. PSNR(db). 59.92. 37.90. 512 × 512. 512 × 512. 512 × 512. 512 × 512. ×8. ×8. × 11. ×14. Watermarked Image Size (bits). 表 4.8 本法則架構與現有在加密後的影像嵌入浮水印的法則架構之效能比較 在上表 4.8 中,𝑅為嵌入浮水印後,整張影像平均每一個 Pixel 所可以藏入的浮 水印 bit 數量,𝑅̅ 為在嵌入浮水印後,整張影像平均每一個 bit 所可以藏入的浮水 印 bit 數量,PSNR 用來做為影像解密還原後的指標,以及要嵌入浮水印的原影 像大小 Watermarked Image Size(bits),其中 PSNR 僅在還原後的原影像上使用加 密金鑰進行測量。雖然表 4.8 中所示的演算法 [5]及演算法 [6]為可逆的,但是 必須同時進行浮水印擷取以及影像還原才可實現可逆。因此當只有將影像解 密,而沒有將浮水印擷取時,就會引起影像上的失真,而表中的 PSNR 就是用來 測量失真的指標。 47.

(55) 第四章 實驗數據與分析. 從表 4.8 也可看出,本論文所提出的演算法的 PSNR 值接近 1,這是因為本 法則無影像上的失真。與現有的法則相比之下,現有的法則的 PSNR 值將與本法 則的 PSNR 值有更大的差異。. 表 4.8 中所提及的𝑅表示本演算法中,在嵌入浮水印後,整張影像平均每一 個 Pixel 所可以藏入的浮水印 bit 數量,從表 4.8 中可得知本演算法具有較高的嵌 入率𝑅,特別是在𝑘 = 1 和𝑞 = 2時,本法則的嵌入率𝑅為 0.5 bpp,此嵌入率高於 表中其他的論文。因此證明了本法則是有效的,並且本法則的浮水印嵌入過程 是一個能夠容納大量資料量的量化過程。. 從表 4.8 還可以看出,本論文所提出的法則可以使嵌入浮水印後的影像中的 Pixel 產生更多 bit 的數量(即更大的𝑚)。在𝑘 = 1 和𝑞 = 2時,𝑚的值由公式(2.13) 計算得到 11。而如表中所示,嵌入完浮水印的影像大小為512 × 512 × 11個 bits,因為本論文提出的法則可以使得嵌入完浮水印的影像中的每個 Pixel 產生 較多的 bit 數量,因此本法則可以容納的浮水印量相對的也較多。. 接下來將使用竄改實驗來驗證本法則的浮水印之脆弱程度。本論文使用下 圖 4.2(a)做為原始影像 S,接下來將原始影像 S 進行影像加密並得到下圖 4.2(b) 加密後的影像 X,圖 4.2(b)為一張雜亂且沒有規則的影像,並完全無法使用肉眼 辨識出其原本的內容。而圖 4.2(c)為未進行竄改時,進行影像還原所得之還原影. 48.

(56) 第四章 實驗數據與分析. 像。. (a) (b) (c) 圖 4.2 原始影像、加密後的影像及透過本法則還原後的影像 (a)原始影像 (b)加 密後的影像 (c)透過本法則還原後的影像 在第一章中提到浮水印的脆弱性,因此本研究針對此浮水印的特性進行資 料竄改實驗,驗證本法則的浮水印之脆弱程度是否足夠。資料竄改的位置沒有 限制,意即竄改位置可以是在影像加密後、嵌入完第一層浮水印後或是嵌入完 第二層浮水印後,本竄改實驗選擇在嵌入完第二層浮水印後進行資料竄改,資 料竄改的流程如下圖 4.3 所示。 Original Image. Watermark 1 Data Embedding Key 1. Watermark 2 Data Embedding Key 2. Encryption. Encryption Key. Data Embedding Key 1. Watermark Embedding. Watermark Embedding. Data Tampering. Data Embedding Key 2. 圖 4.3 資料竄改流程圖 49. Decryption. Fully Recovered Image. Watermark Extraction. Extracted Watermark 1. Watermark Extraction. Extracted Watermark 2.

(57) 第四章 實驗數據與分析. 首先在加密後的影像資料中嵌入兩層浮水印,兩層浮水印皆為黑白浮水 印,且資料量皆為 8-bit,浮水印如圖 4.4 所示。. (a). (b) 圖 4.4. 浮水印 (a)第一層浮水印 (b)第二層浮水印. 資料竄改實驗一是以萬分之一的機率進行加密影像資料的竄改,在資料竄 改後分別擷取出兩層浮水印,遭受竄改的浮水印如下圖 4.5 所示。. (a). (b) 圖 4.5 遭受破壞的浮水印 (a)第一層浮水印 (b)第二層浮水印. 資料竄改實驗二是以十萬分之一的機率進行加密影像資料的竄改,在資料 竄改後分別擷取出兩層浮水印,遭受竄改的浮水印如下圖 4.6 所示,竄改機率即 使是十萬分之一,從圖中還是可以明顯察覺浮水印遭受破壞。 50.

(58) 第四章 實驗數據與分析. (a). (b) 圖 4.6 遭受破壞的浮水印 (a)第一層浮水印 (b)第二層浮水印. 資料竄改實驗三則是在加密影像資料中嵌入兩層灰階浮水印後再進行資料 竄改,嵌入的灰階浮水印如下圖 4.7 所示,竄改機率分別設定為千分之一、萬分 之一以及十萬分之一。. (a) (b) 圖 4.7 灰階浮水印 (a)第一層灰階浮水印 (b)第二層灰階浮水印 首先以千分之一的機率對嵌入浮水印後的加密影像進行竄改。截取出的第 一層及第二層浮水印如下圖 4.8 所示。由圖 4.8 中可以觀察出,在竄改機率為千 分之一的情況下,由影像中所截取出的浮水印有許多被修改過的痕跡,因此可 以很明顯的判斷出資料遭受破壞。. 51.

(59) 第四章 實驗數據與分析. (a) (b) 圖 4.8 在竄改機率為千分之一所擷取之灰階浮水印灰階浮水印 (a)第一層灰階浮 水印 (b)第二層灰階浮水印 接著以萬分之一的機率對嵌入浮水印後的加密影像進行竄改。截取出的第 一層及第二層浮水印如下圖 4.9 所示。由圖 4.9 中可以觀察出,在竄改機率為萬 分之一的情況下,截取出的浮水印有些許被修改過的痕跡。此外由於竄改機率 降低,因此被破壞過的痕跡較竄改機率為千分之一時少一點。. (a) (b) 圖 4.9 在竄改機率為萬分之一所擷取之灰階浮水印(a)第一層灰階浮水印 (b)第二 層灰階浮水印 最後以十萬分之一的機率對嵌入浮水印後的加密影像進行竄改。截取出的. 52.

(60) 第四章 實驗數據與分析. 第一層及第二層浮水印如下圖 4.10 所示。. (a) (b) 圖 4.10 在竄改機率為十萬分之一所擷取之灰階浮水印 (a)第一層灰階浮水印 (b) 第二層灰階浮水印 由圖 4.8 至圖 4.10 可以觀察出,在竄改機率為千分之一的情況下,浮水印 遭到嚴重的破壞,而在竄改機率為十萬分之一這麼微小的情況下,浮水印依然 可以觀察出被破壞過的痕跡。因此透過資料竄改的實驗驗證了本法則的浮水印 之脆弱程度非常足夠。. 在判斷資料是否受到破壞的方法上,除了直接將浮水印擷取出來做判斷 外,本論文另外也對原加密影像進行系統性的評估來判斷資料是否遭到竄改。 此實驗使用嵌入完兩層浮水印後的加密影像進行資料竄改,再進行影像還原, 並與原本加密後的影像進行比較,判斷資料是否遭到竄改。透過重覆進行數次 的竄改與比較做系統性的評估。. 設定實驗的竄改次數為一千次的情況下,對嵌入完兩層皆為 8-bit 的浮水印 53.

(61) 第四章 實驗數據與分析. 後的加密影像分別以千分之一、萬分之一以及十萬分之一的竄改機率進行竄 改,接著與原本加密後的影像進行一千次的比較。在完成竄改以及比較後的結 果如下圖 4.11 所示。由下圖 4.11 中可以看出,不論竄改機率為千分之一、萬分 之一或是十萬分之一,一千次的資料竄改皆能被系統偵測出來。. 竄改機率. 竄改次數 1000. 千分之一. 萬分之一. 十萬分之一. 100%. 100%. 100%. 圖 4.11 一千次資料竄改的系統性評估結果. 第三節 硬體數據分析 本節將分析與比較論文 [2]之硬體、優化後的論文 [2]之硬體以及使用 Pipeline 架構設計之硬體,並透過調整系統中之參數以及加入上一章所提到的 Clock Gating 省電技術,進行電路效能的分析。. 以下的數據分析中,Non-Pipelined Structure 為優化論文 [2]後之硬體,而上 一章所提出的使用 Pipeline 架構之電路則簡稱為 Pipelined Structure。. 首先在不使用 Clock Gating 省電技術下,分析論文 [2]之硬體、NonPipelined Structure 與 Pipelined Structure 在時脈、面積與功耗的效能,如表 4.9 所 示。. 54.

(62) 第四章 實驗數據與分析. 架構. 效能 時脈 面積 功耗. 論文 [2]. Non-Pipelined Structure. Pipelined Structure. 166.67 MHz. 250 MHz. 769.23 MHz. 11278.08. 2 8745.63. 1.416 mW. 2 11379.69. 0.6557 mW. 2. 0.724 mW. 表 4.9 論文 [2]、Non-Pipelined Structure 與 Pipelined Structure 之電路的效能比較 由表 4.9 中可以觀察出,在沒有加入 Clock Gating 省電技術時,論文 [2]的 電路時脈僅有 166.67 MHz,在 Non-Pipelined Structure 之電路中,時脈則有 250 MHz,而將電路架構改良為 Pipelined Structure 後,時脈則大幅提升至 769.23 MHz;在面積的部分,因為 Non-Pipelined Structure 之電路是論文 [2]改良後的 版本,因此面積下降不少。而 Pipelined Structure 是將 Non-Pipelined Structure 之 電路中插入數個 Pipeline Registers,因此會造成 Pipelined Structure 之電路面積上 升。在功耗的部分,論文 [2]則是比 Non-Pipelined Structure 與 Pipelined Structure 之電路都高上許多。. 接著比較 Non-Pipelined Structure 與 Pipelined Structure 在使用 Clock Gating 省電技術下的時脈、面積及功耗,如下表 4.10 所示。. 55.

(63) 第四章 實驗數據與分析. 架構. 效能 時脈. 面積 功耗. Non-Pipelined Structure. Pipelined Structure. 250 MHz. 769.23 MHz. 8009.44. 2. 0.535 mW. 10797.95. 2. 0.584 mW. 表 4.10 比較 Non-Pipelined Structure 之電路與 Pipelined Structure 之電路 在使用 Clock Gating 後之效能表現 在表 4.10 中可以看出在使用 Clock Gating 後,不論是 Non-Pipelined Structure 或是 Pipelined Structure,在面積上都有大幅的下降,並且功耗也有大幅 的下降。. 接著在相同時脈的情況下,比較 Non-Pipelined Structure 的電路在未加入 Clock Gating 省電技術以及加入 Clock Gating 省電技術後之面積及功耗,如表 4.11 所示。. Clock Gating 效能 時脈. 面積 功耗. 無. 有. 250 MHz. 250 MHz. 8745.63. 2. 0.6557 mW. 8009.44. 2. 0.535 mW. 表 4.11 在相同時脈的情況下比較 Non-Pipelined Structure 之電路在加入 Clock Gating 省電技術前後之效能表現 56.

參考文獻

相關文件

„ „ 利用電腦來安排與整合多種媒體,可產生 利用電腦來 更多樣化的作品。如某一段背景配樂在影 片中的哪個時間點開始播放、新聞播報中 子母畫面的相對位置、文字字幕出現在畫

現時,STEM 教育已融入了在小學課程當中;不少學校在規劃及組織 STEM 相關學習活 動時,更融入藝術教育/人文精神的學習元素,以

本論文之目的,便是以 The Up-to-date Patterns Mining 演算法為基礎以及導 入 WDPA 演算法的平行分散技術,藉由 WDPA

本論文結合了 GPU-FPM 以及 Bitmap 的優點,並利用 Multi-GPU 架構提出 Multi-GPU CSFPM 的演算法,由於 CSFPM 如同 GPU-FPM

由於 DEMATEL 可以讓我們很有效的找出各準則構面之因果關係,因此國內外 有許多學者皆運用了 DEMATEL

由於醫療業導入 ISO 9000 品保系統的「資歷」相當資淺,僅有 三年多的年資 11 ,因此,對於 ISO 9000 品保系統應用於醫療業之相關 研究實在少之又少,本研究嘗試以通過

近年來,大蒜對人體保健及疾病治療的研究陸續發表,許多人開始重視大蒜在醫療上,以及保健方面

現時,STEM 教育已融入了在小學課程當中;不少學校在規劃及組織 STEM 相關學習活 動時,更融入藝術教育/人文精神的學習元素,以