網際網路被廣泛運用,人們將資料儲存在雲端上,也透過各種軟體來傳遞訊息,這些資料和訊息必須妥當保護以免外洩。本文將介紹結合資訊隱藏與影像加密的技術,可將機密訊息透過嵌入演算法嵌入至影像中,並透過加密演算法來保護原始影像。
資訊隱藏」與「影像加密」都是時常被運用在保護訊息的技術,其中資訊隱藏是一種將機密或敏感的訊息嵌入在多媒體資料的技術,而多媒體資料的種類包括聲音、影像、影片等等。傳送方利用嵌入演算法將機密訊息嵌入至其中,而不引起第三方的察覺,接著將多媒體資料傳送給接收方,接收方再透過取出演算法將其中的機密訊息取出。
影像加密則是一種將明文影像透過加密演算法進行加密,使其變成無法透過肉眼進行辨識的狀態,藉此來保護影像資料的一種技術。當傳送方將明文影像進行加密後,再將加密影像傳送給接收方,接收方再使用解密金鑰還有解密演算法將影像恢復成原始的明文影像。在本文中介紹了一種將「資訊隱藏」和「影像加密」進行結合的技術,該技術不僅可以將機密訊息透過嵌入演算法嵌入至影像中,同時又能透過加密演算法來保護原始影像。
背景知識介紹
本文所介紹的是將可逆式資訊隱藏的技術應用在加密影像上,傳送方首先透過加密金鑰將影像進行加密,使其成為無法透過肉眼辨識的影像,再利用嵌入演算法將敏感的機密訊息嵌入在影像中,當接收方收到影像資料時,不僅可以將影像中的機密訊息取出,同時可以將加密後的影像解密,並還原成無損的原始影像。
數位影像在電腦中的表達方式
以下分成電腦中的影像、數位影像的種類兩部分做說明。
在人類的雙眼中,映入眼簾的畫面是生動且精采的,但是對於電腦或機器而言,所謂的「照片」卻是一堆排列整齊的數字。通常而言,數位影像在電腦中儲存的方法是由一個二維的整數陣列所組成。
在三原色光RGB的模式中,數位影像由三種顏色組成了三個頻道(Channel),包括紅色(Red)、綠色(Green)與藍色(Blue),示意圖如圖1所示,而每個頻道中都有其顏色的強度值(Intensity),其值範圍為0~255。當三原色的色光以不同比例相加,就可以產生各種不同的色彩,因此,在全彩的數位影像系統中,總共會有256×256×256 = 16,777,216種不同的顏色。
數位影像的種類可分成以下三種,分別做說明:
‧二值影像:二值影像顧名思義就是影像中只有兩種顏色存在,分別為黑與白,所以影像中的像素強度值範圍為0與1,二值影像又可以稱為1-bit影像,如圖2(a)所示。
‧灰階影像:灰階影像又可以稱為灰度影像,影像中的強度值範圍為0~255之間,不同的強度表示不同程度的灰階影像,當數值越接近255時,越接近白色,反之,越接近黑色。灰階影像又可以稱為8-bit影像,因為灰階影像總共可以表達28種不同強度的顏色,灰階影像如圖2(b)所示。
‧全彩影像:全彩影像又可稱為24-bit影像,其原因就是由三個8-bit的RGB三原色頻道所組成,三種顏色的強度透過比例不同進行混合時,就可以產生出不同顏色。三個頻道皆有256種不同強度進行混合,其組合有224種,因此在RGB的色彩模式中可以產生出16,777,216種顏色,全彩影像如圖2(c)所示。
認識資訊隱藏技術
對電腦或機器而言,影像中各部分的顏色分別透過不同的數字儲存在一個棋盤格中,而資訊隱藏技術,就是針對這些儲存在棋盤格中的數字動些手腳,便可以達成資訊隱藏的目的。
資訊隱藏(Information Hiding)技術又可稱為偽裝術(Steganography),是指將較為機密或是敏感的訊息藏匿在無害或不易引起注意的檔案之中,而且藏匿後的載體對於人類而言,不易透過感官而察覺,例如嵌入訊息後的影像無法透過肉眼發現、嵌入後的音檔無法透過耳朵聽出異狀等等,藉由這個特性,便可達成保護資訊安全的目的,接收方收到影像後,再透過取出演算法將敏感訊息取出,
資訊隱藏的概念,若透過文字的呈現方式就有如「藏頭詩」,唯有知道藏匿規則的接收方,才能透過這個規則將嵌入在文章中的訊息進行取出,而讓一般人無法察覺出文章中有另外想要傳達的訊息內容。
而應用於影像的資訊隱藏技術架構如圖3所示,對於電腦而言,聲音、影像、影片等不同的檔案都是以一堆0與1的數字訊號儲存於電腦中,但也因為這個特性,所以能夠透過一些數學運算,針對這些數字訊號進行處理,藉此達到資料藏匿的目的。
一個可靠的資訊隱藏技術,必須盡可能地達成以下六個特性:
‧不可察覺性(Imperceptibility):隱藏在載體中的資訊必須能夠避免被人體感官直接察覺,當有惡意的攻擊者想要竊取資訊時,無法從載體中起疑或是察覺異狀,如此資訊隱藏技術才有「偽裝術」的稱呼。
‧強韌性(Robustness):隱藏後的影像在面對一些日常性的處理時,例如濾波、旋轉、裁切、添加雜訊等等,經過處理後能夠保持影像中的機密訊息不受影響或是有一定的抵抗程度。
‧高容量(High Capacity):一個好的資訊隱藏技術會追求越高的藏匿容量,不過往往需要在藏匿容量和影像品質之間取捨,藏匿容量越低,影像品質通常較高,反之,藏匿容量越高時,通常影像的失真程度會越大,這取決於演算法的設計,因此許多研究人員致力於提升影像的藏匿量,並且能夠維持一定的影像品質。
‧安全性(Security):隱藏的資訊不能輕易被惡意的攻擊者偵測或破解,即使對方已經知道這張影像有藏匿訊息,攻擊者也無法從中取得其中的訊息。
‧不可偵測性(Undetectable):經過隱藏後的載體通常會伴隨載體本身的特性,導致有跡可循,例如通常影像具有相鄰像素值相近的特性,攻擊者可能會依循這個特性對其進行統計分析,可能導致曝露一些敏感訊息,為了保護敏感或機密訊息,因此不可偵測也是非常重要的特性。
‧效率性(Efficiency):資訊隱藏的技術必須兼顧演算法的運算上是否有效率,包括嵌入時間(Embedding time)、取出時間(Extracting time)以及復原時間(Recovery time),一個好的資訊隱藏方法必須追求演算法的效率、降低複雜度與系統的執行時間。若一個嵌入演算法需要花上數小時或數天的話,就失去其效率性。
不可逆式的資訊隱藏技術為當訊息嵌入影像中,可以有效地將嵌入其中的訊息取出,但是受到更改後的影像無法進行還原,其中,常見的方法包括了最低位元替代法(Least Significant Bit replacement,LSB replacement)。其運作的原理即為將像素值轉換為二進制表示法後,接著將最低的n個位元替換為機密訊息,藉此達到資訊隱藏目的的方法。
圖4中使用了2-bits的最低位元替代法作為範例,假設有四個十進位制的原始像素120、68、202與78,首先將其轉換為八位元的二進制數字,轉換後分別為01111000、01000100、11001010以及01001110,並假定一段秘密訊息S= 11100110須進行LSB替代法來進行秘密訊息的嵌入,先將秘密訊息S切分成四段得11、10、01和10,再將四個二進制的兩位最低位元替換成秘密訊息,其中標記為紅色的部分(虛線框選)為將末兩位的位元替換成秘密訊息,最後再將像素轉換為十進位制得到123、70、201與78,即完成LSB替代的隱藏方法。
待接收方收到偽裝像素後,只要將其轉換為八位元的二進制數字後,並讀取這四個像素末端的兩個位元,就可以把嵌入其中的機密訊息取出,最後再串接回來,即可以回復秘密訊息S= 11100110。
選擇最低的位元進行替代的原因是,只針對像素中的最低位元進行更改,影像像素變動量不會太大,所以在人類的視覺系統無法輕易觀察出影像有明顯地改變,嵌入前與嵌入後的視覺效果如圖5(a)與圖5(b)所示。
可逆式資訊隱藏技術最大的特性就是傳送方將訊息嵌入至影像後,接收方可以透過取出演算法以及還原演算法將嵌入其中的訊息取出,並將影像恢復成原始圖像。在一些實際的應用中,對於一些敏感的影像如軍事影像、醫學影像等等,無法容忍影像品質受損導致失真,因此可逆式資訊隱藏技術較被廣為採用,因為不僅能保護嵌入的資訊,同時還能確保圖像可以恢復原狀。
常見的可逆式資訊隱藏方法包括差值擴張法(Difference Expansion)、直方圖位移法(Histogram Shifting)以及誤差預測法(Error Prediction)等等。
可逆式資訊隱藏技術的架構如圖6所示,有別於不可逆式資訊隱藏的部分是在於取出訊息之後,必須透過還原演算法將變動後的像素進行恢復,通常會受到還原影像這個步驟的限制,嵌入的容量或是影像品質也會受到影響。
認識影像加密技術
影像加密技術是一個最直觀用來保護影像的技術,其技術為傳送方透過金鑰與加密演算法對影像進行演算,以取得加密影像,接著將加密影像傳送給接收方,待接收方收到加密影像後,接收方從安全的通道中取得解密金鑰,再進行解密以恢復原始影像,常用的影像加密技術包括像素置亂方法、互斥或運算、DES(資料加密標準)與AES(進階加密標準)等等。
圖7為XOR互斥或運算加密的範例,針對影像Cat.png使用互斥或運算進行影像加密,可以觀察到經過加密後的影像無法從中得知影像中的任何資訊,除非照片的持有者擁有原先進行加密的金鑰,再對其進行互斥或的運算,才能將影像進行解密與還原。
可逆式資訊隱藏應用於加密影像
以下針對可逆式資訊隱藏應用於加密影像進行說明,並與其他技術進行比較。
可逆式資訊隱藏應用於加密影像的技術,不僅可以保護原始的明文影像,傳送方(Sender)也可以讓中間的資料藏匿方(Data hider)在無法得知影像原始內容的情況下,嵌入其他秘密訊息,並將影像傳遞給接收方(Receiver),接收方可以透過取出演算法來得知在影像中的敏感訊息,同時使用解密演算法將影像解密得到解密影像,最後透過還原演算法將解密影像恢復成原始影像。可逆式資訊隱藏應用於加密影像的架構,如圖8所示。
表1中列出了可逆式資訊隱藏應用於加密影像技術與其他技術的比較,可以了解可逆式資訊隱藏應用於加密影像的技術,不僅可以在影像中嵌入訊息,並且能兼顧影像的安全性,同時讓中間方在無法得知影像內容的狀態下嵌入其他訊息。收到影像後的接收方,能夠從影像中取得嵌入其中的訊息,並且將影像解密並恢復成原圖,對於一些高機密性且不能容忍失真的影像,如醫學影像、軍事影像等等,能夠有效確保其安全性與完整性。
實驗操作與示例
以下針對所介紹的可逆式資訊隱藏應用於加密影像技術進行說明,讓大家了解這個技術如何操作並應用於影像上,下列說明包含了加密、嵌入、解密與還原方法的流程。
傳送方想要將大小為512×512的IMG_Cat.png的影像進行加密,並讓中間方能夠在影像中嵌入訊息後傳送給接收方,讓接收方可以從影像中取得嵌入其中的資訊,並且能將加密影像解密與還原成原始影像,原始影像如圖9所示。
STEP 1 首先使用隨機金鑰產生器來產生一組將影像進行加密的金鑰,並利用2×2的區塊對影像進行XOR加密,每個區塊金鑰採取8位元長度,以影像尺寸512×512為範例,因此將得到65,536組不同的8位元數字做為金鑰,如圖10所示,產生完成後,傳送方會透過安全的通道將key.txt傳送給接收方。
STEP 2 讀取影像IMG_Cat.png與金鑰key.txt,接著進行XOR運算,得到加密後的影像En_IMG.png,將加密後的影像En_IMG.png傳送給資料藏匿方,如圖11所示,如此一來,除非持有key.txt並知道使用的加密標準與區塊大小的使用者,才得以將IMG_Cat.png解密恢復成原始影像。
STEP 3 接著資料藏匿方想要將藏入的訊息「Hello Zero, Pony wants to ask you out, may you make a date to have a coffee with him?」嵌入至En_IMG.png中,資料藏匿方可以先透過ASCII轉換工具,將這段訊息轉換成ASCII編碼,如圖12所示。
STEP 4 轉換完成以後,資料藏匿方可以將這段ASCII數字編碼透過嵌入演算法來藏匿至加密後的影像中,產生出一張附帶訊息的加密影像,接著再將附帶訊息的加密影像Em_En_IMG.png傳送給接收方,如圖13所示。
解密與還原方法流程示例
接收方(Receiver)收到附帶訊息的加密影像,並已經從安全通道中取得key.txt,接著接收方需要從影像中取得嵌入其中的訊息,並將影像從加密的狀態進行解密與復原,以取得完整無損的訊息以及無失真的影像。
STEP 1 接收方收到影像後,接著需要透過取出演算法將嵌入在加密影像其中的訊息取出,如圖14所示。
STEP 2 取出的編碼結果無法直接辨識其中所要傳達的訊息,因此接收方需要利用ASCII轉換工具將取出的編碼結果進行轉換,以取得資料藏匿方(Data Hider)嵌入在影像中的訊息「Hello Zero, Pony wants to ask you out, may you make a date to have a coffee with him?」,示意圖如圖15所示。
STEP 3 當訊息取出後,必須透過已取得的key.txt將加密後的影像以XOR運算進行解密,由於附帶訊息的加密影像Em_En_IMG其像素已經過變動,因此進行解密運算,會導致解密影像發生失真,如圖16所示,必須透過還原演算法將失真的解密影像進行還原。
STEP 4 最後透過還原演算法,將失真的解密影像進行還原,如此一來,接收方就可以成功取得嵌入在其中的訊息,並將影像解密且完全還原成原始的影像,如圖17所示。
情境演練說明
放射科的阿玲醫師以及臨床的主治醫師小宇時常需要運用資訊系統進行醫學影像的傳遞。在過程中,阿玲需要使用雲端服務將醫學影像傳送給被授權的接收方小宇,但是這些醫學影像都是屬於每個病患的隱私資料,隱私安全保護極其重要。
為了方便管理這些醫學影像以及讓被授權的接收方易於使用這些影像資料,雲端服務提供者(Cloud Service Provide,CSP)需要在不知道影像內容的情況下能夠加入一些輔助資料,例如資料來源、分類、詮釋資料(Metadata)等等,為了解決上述情境,可以使用本文所介紹的加密影像結合可逆式資訊隱藏技術來解決。
首先,放射科的阿玲醫師在取得病人的醫學影像之後,透過加密演算法將影像進行加密,以確保未經授權的人無法查看影像中的內容,接著阿玲醫師再把加密後的影像透過雲端服務將其上傳至雲端。同時,雲端服務平台能夠透過嵌入演算法將相關的詮釋資料嵌入至影像其中,再將加密且嵌入訊息的醫學影像傳送給小宇或是其他醫院的醫師。
接著,小宇取得影像後能夠透過取出演算法將詮釋資料取出,同時利用解密演算法將醫學影像解密,最後執行還原演算法來取得完整無損的醫學影像,情境演練的示意圖如圖18所示。
透過這個方法,不僅可以確保醫學影像的安全性,同時能在不透露影像內容的條件之下讓中間者能夠對影像嵌入訊息,最後在被授權的接收端,不但可以將嵌入在影像中的內容取出,同時也能夠對影像進行解密與還原,更利於醫生後續的診斷與治療。
結語
資訊科技與網際網路的發展不斷進步,儘管帶來了便利的生活,但相對地,隱私的資訊也很容易曝露在網際網路世界中,因此保護資訊傳輸的安全是一個非常重要的議題。
本文中介紹了可逆式資訊隱藏應用於加密影像的技術,不僅可以讓傳送方對影像進行加密,更可以讓第三方在無法得知影像內容的情況下嵌入其他訊息並傳送給接收方,當接收方在收到影像後,不僅能夠將嵌入的訊息取出,且可以將影像解密並還原成原始的影像。
<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)元智大學Multimedia Security and Image Processing Lab(多媒體安全與影像處理實驗室)由黃正達博士率領成員們致力數位多媒體應用與研究,其領域包含不限於Cryptography(密碼學)、Steganography(偽裝學)、Medical Image Application(醫學影像應用)、Machine/Deep Learning Application(機器學習、深度學習)、Mixed Reality(MR) Technology(混合實境)。>