資訊隱藏 數位浮水印 峰值訊噪比 資訊藏匿技術 機敏資料 駭客

隱藏式數位浮水印技術延伸 解密讀出前外觀毫無可疑

文件隱身嵌入尋常圖檔 資訊藏匿工具確保機密性

本文將介紹資訊隱藏技術並使用開源軟體FileStegano實作,透過該技術,可以在不引起第三方人士注意的情況下嵌入特定資訊到圖片中,不僅達到版權保護並能維持圖片的美觀與完整性,甚至能夠嵌入其他隱私資訊至圖片內,以達到資訊保護的目的。

網際網路固然方便互相傳輸資訊,同時也代表著資料極有可能遭到不當使用。很多人會使用網路上的素材,引用網路著作中的部分語句、使用圖片在自己的作品內,以豐富作品的內容。雖然大部分都在合理使用的範圍內,但有些不肖人士卻利用此一途徑獲取不當利益。

為了防止這類事件一而再、再而三地發生,除了各大創作平台逐漸完善作品盜用的檢舉流程,創作者們也開始重視著作權是否遭到侵害。有些創作者會提出版權聲明,藉由法規來約束這類事件的發生。

要提出版權聲明,需要證明作品是出自於自己的創作。因此,當作品完成後,附上作品的部分資料,或是留下具辨識度的特殊標記,可以確保作品受到保護。為了不因記號而影響作品本身的觀賞性,透過資料嵌入技術,可以將指定的「資料」分解並嵌入作品,除了人體感官難以辨識外,亦可確保作品的版權。這種透過嵌入特定資訊以保護作品安全的技術,稱為浮水印。

背景知識說明

以下說明資料隱藏與數位浮水印的相關原理與技術。

資訊隱藏的原理

所有的資訊到了電腦上,都會轉為1和0所組成的二進位編碼。此時,在這些編碼中修改部分的數值,可以達到不影響觀賞但能夠嵌入資料的效果。因此,數位浮水印技術不只能運用於圖片,甚至文字、音訊檔都能夠附加上數位浮水印。

以圖片而言,可分為二元、灰階及全彩影像。二元影像為僅由黑、白兩色,透過顆粒密度排列方式,使人產生深淺有別的錯覺。而灰階影像,則是二元影像的進化版,由黑到白分為多個漸層。常見的灰階影像為8位元(bit)及16位元之灰階,即擁有28與216種灰階之影像,而全彩影像則是透過R(Red)、G(Green)、B(Blue)三原色疊加,每種顏色各有256種深淺,創造出和現實極為相近的彩色圖片。

因為二元影像的組成只有0和1兩種數值,因此最多也只能呈現兩種顏色,還須透過排列密集度使大腦產生深淺不一的錯覺。而二元影像並不只能由黑白構成,只要僅使用兩種顏色,即為廣義中的二元影像。

而灰階影像顧名思義,由黑至白的漸層所組成。比二元影像多了一些深淺不同的顏色可以使用,因此能使圖片表達得較為生動與細緻。但依舊限制在黑與白之間,與人眼能觀察到的現實依舊相差許多。

以全彩影像來說,由於人眼對光的受器主要為紅、綠、藍三種感知細胞構成,引此所看到的顏色也就由此三種顏色構成。全彩影像也由此概念,模擬出十分雷同人眼所見的影像。全彩影像由前述三種顏色圖層,各有256種深淺疊加而成,能組成的顏色組成遠超人眼能分辨的數量,因此全彩影像的呈現基本上與人眼所見一樣。

數位影像是由高度H(Height) × 寬度W(Width)之像素所構成,可以把數位影像想像為一個非常龐大的矩陣,矩陣內每一個值都稱做一個像素。矩陣內每個像素都存在一個數值,數值表示這個像素在電腦中會呈現出的顏色。若是二元影像,則像素的值便只會有1和0。而8位元灰階影像,則可能包含256種不同的值。而全彩,則是紅色、綠色、藍色三種顏色各256種不同深淺,疊加而成。

依目前科學研究報告顯示,一般人眼能辨別的顏色僅有180多種。8位元灰階影像共有256種不同程度的黑與白、全彩影像更是有著256×256×256種不一樣的顏色。因此,即便在電腦內特定的像素偷偷修改其數值,只要不跟原始值相差太多,就會得到一個十分相近的顏色,而且以人類的眼睛,是無法辨認出差異的。

因此,在資訊藏匿的應用中,可以透過微調影像中像素數值,悄悄地將一些資訊嵌入影像,便能夠得到一張看似一模一樣,實則暗藏玄機的圖片。

認識數位浮水印

數位浮水印是資訊隱藏(Information Hiding)中的一個分支。人們對浮水印的概念,大多可能是影片某個角落出現如同印章般的標記。其實,浮水印並不只有這一種,也不一定要能被「看」到,才能達到它防盜用的目標。倒不如說,有時候能不被直接辨識,才是浮水印真正的目的。所謂數位浮水印是將特定的資訊,嵌入數位的資料中。若以可見性區分浮水印,可以分為可視浮水印(Visible Watermark)和隱藏式浮水印,在本文中主要針對隱藏式浮水印進行實作與介紹。

圖1為可視浮水印的範例,可以在任何想加入資訊的位置加上浮水印,其形式不受限於影像或文字,甚至是QR Code,同時也可以調整浮水印的尺寸大小、擺放位置、透明度等其他屬性。在不影響原始圖片的情況下,可為影像添加浮水印以達到宣告版權的效果。

圖1  可視文字浮水印。

而隱藏式的浮水印指的是無法直接透過肉眼觀察到嵌入在影像中的浮水印,必須透過演算法或是電腦程式的計算,才能將浮水印取出,所以在肉眼可觀察的情況下,它就是一張正常的圖片。

圖片品質的衡量

一般來說,當影像被嵌入量愈多,對影像造成的失真程度也會愈大,對於嵌入訊息後的影像品質通常會使用峰值訊噪比(Peak Signal-to-noise Ratio,PSNR)這個指標進行衡量,其數值愈高,即偽裝影像與原始影像就愈相似,相反地,數值愈低則表示兩張影像的差異性愈大。通常以30為臨界值,當PSNR值小於30時,人類肉眼就容易從影像中觀察到其失真。圖2與圖3顯示了影像在不同PSNR值所呈現出的影像效果。

以夕陽的風景照作為範例,在圖2中,圖2(a)至圖2(f)分別為原始影像以及影像PSNR大約在50、40、30、25及20的狀態,從圖中可以觀察到PSNR在50.48時,從肉眼中幾乎無法分辨它與原始影像的差別;PSNR在40.02時,若無原始圖片可以相互比較,無法對其起疑心甚至認為這張影像有動過手腳;當PSNR在30.23時,可以觀察到在太陽周遭的光圈周圍有一些失真情況的發生,但其餘部分的特徵都保持良好;至於PSNR在25.08與20.12時,則可以透過肉眼觀察到整張影像已經發生明顯失真的情況。

圖2  夕陽風景圖在不同的PSNR值的視覺效果。

以貓咪的圖片作為範例,在圖3中,圖3(a)至圖3(f)分別為貓咪的原始影像以及影像PSNR約在50、40、30、25及20的狀態,可以觀察到PSNR在50.12、40.13及30.12時,從肉眼中幾乎無法分辨它與原始影像的差別;但是當PSNR為25.80和20.12時,已經可以明顯發現在貓咪後方的畫面已經出失真的情況,因此可以推論這張影像可能經過了資料嵌入或是受到其他圖片處理或操作。

圖3  貓咪圖在不同的PSNR值的視覺效果。

與夕陽照片相比,可以得知夕陽照在太陽的光圈周遭的顏色非常接近白色,即像素值接近255的邊界像素,在某些嵌入演算法中為了不讓像素值超出邊界而有一些其他的處理方式,因此在夕陽照當中,當PSNR = 30.23時就已經能透過肉眼發現一些失真情形,但以貓咪圖片而言,由於像素值居多落在中間值,即遠離邊界像素,因此於PSNR = 30.12時,仍無法透過肉眼發現影像有明顯發生失真的狀態。

FileStegano實作與示例

在本文中,使用一款免費的資訊藏匿技術軟體FileStegano作為實作工具,其容量非常小巧且具備便攜的特性,支援PDF、BMP、JPG、PNG等格式作為嵌入訊息的載體,並可透過設定密碼來取出訊息的功能,對於時常需要保護機密文件以及想要學習這個領域知識的使用者來說,是一款非常好的入門工具。

‧FileStegano下載網址:https://m.majorgeeks.com/files/details/filestegano.html

實驗操作準備

實驗開始之前,先準備原始圖片以及欲嵌入的資訊。在原始圖片部分,將選擇一張尺寸為1,872×1,100的夕陽的風景圖片作為嵌入訊息的載體,原始影像與原始圖片屬性如圖4和圖5所示。

圖4  欲嵌入訊息的原始圖片。
圖5  原始影像的資訊。

而欲嵌入的資訊,則選擇一張尺寸為554×739的貓咪圖片Cat.jpg作為欲嵌入的機密訊息,欲嵌入的圖片與圖片屬性如圖6及圖7所示。

圖6  欲嵌入的圖片Cat.jpg。
圖7  隱藏圖片的資訊。

FileStegano介面介紹

圖8所示為FileStegano的操作介面,在功能欄列上有三個選項,包括「Hide(嵌入)」、Recover(回復)以及「How to use(如何使用)」,其簡易操作且無冗餘功能的介面,讓使用者可以輕鬆地將欲藏匿的資訊嵌入到影像的載體當中。

圖8  FileStegano操作介面。

嵌入訊息

嵌入訊息的操作步驟,分別說明如下:

STEP 1:點選Cover file與File to Fide下方的〔Browse〕按鈕,分別瀏覽欲嵌入訊息的圖片以及想要嵌入其中的秘密訊息,操作步驟如圖9所示。

圖9  選取掩體圖片以及欲嵌入的檔案

STEP 2:分別選取完成後,從介面中可以預覽選擇的檔案名稱、以及其尺寸與檔案類型,接著透過下方的「Passphrase」密碼欄位來設定接收方取出時須輸入的密碼。在範例中,以任意一組密碼「LIoCvCeL」作為密碼,同時可以自行勾選「Open Stego-file when done」來決定在嵌入完成後是否要開啟完成嵌入後的偽裝影像。待設定都完成後按下〔HIDE〕按鈕,即可完成嵌入,過程如圖10所示。

圖10  FileStegano介面。

STEP 3:嵌入完成的偽裝影像以「夕陽_貓咪.jpg」命名,將檔案輸出至檔案夾中,並預覽嵌入完成後的偽裝影像,可發現從圖片外觀無法察覺到影像其實有嵌入訊息,檔案儲存位置與嵌入過後的偽裝影像如圖11、圖12所示。

圖11  儲存檔案位置。
圖12  嵌入貓咪圖片的夕陽_貓咪.jpg。

取出隱藏資訊

接下來,介紹取出隱藏資訊的步驟:

STEP 1:當接收方收到偽裝影像以及取出訊息的密碼後,接收者也可以透過FileStegano將嵌入其中的訊息進行取出,接收方首先開啟FileStegano並切換到「Recover」功能欄下,按下Stego file下的〔Browse〕按鈕,瀏覽從傳送方收到的「夕陽_貓咪.jpg」,如圖13所示。

圖13  選取掩體圖片以及欲嵌入的檔案。

STEP 2:接著,接收方在「Passphase」欄位中輸入傳送方從安全通道傳送過來的密碼「LIoCvCeL」,也可自行勾選是否要在取出後開啟藏匿其中的檔案,設定完成即可按下〔RECOVER〕按鈕,將秘密訊息取出,如圖14所示。

圖14  輸入取出密碼與執行取出步驟。

STEP 3:選取輸出秘密訊息的檔案儲存位置,並將檔案命名為「復原_貓咪.jpg」,可得到隱藏於夕陽照當中的貓咪圖片,取出的存放位置以及取出的圖片預覽如圖15與圖16所示,由圖中可以得知已經成功將嵌入於夕陽照片中的貓咪圖片成功還原出來。

圖15  輸出取出訊息的檔案儲存位置。
圖16  取出的貓咪圖片 - 復原_貓咪.jpg。

實際情境演練

翊佳公司是一間經商公司,為了顧及股東的利益及權利,每個月公司都會將營運的績效和業績繪製成圖表,並公布於公司官方的雲端硬碟,供人確認。為了使機密資料檔案不必經過過多重複的傳輸而增加風險,公司亦會將未來的計畫以及營運方針、修改之企業流程及部分機密,製作成文件並利用資料藏匿技術,將機密文件嵌入至績效及業績圖表中。

圖17說明了翊佳公司將合作機密文件嵌入至各季業績圖表的示意圖,機密文件中包含該公司下期的合作內容、產品、期間、預估產量、產品配方等不得公開的商業機密。為了避免一些極度機密的資訊遭擷取或洩漏,翊佳公司之負責人僅將資訊取出方式透過實體會議公布給予公司高層及合作對象等相關負責人員。透過這樣的方式,當公司內部人員想要確認案件的新政策運作情形,便可以在雲端硬碟內部查看各季的圖表,並透過資料藏匿與取出工具將機密訊息還原。

圖17  將「下期合作內容.pdf」藏入公司業績表示意圖。

圖18顯示了透過軟體FileStegano實作翊佳公司將機密文件藏入業績圖表的過程,在步驟中,嵌入訊息的載體為「2019-2021各季業績.jpg」,需要謹慎保密的機密文件為「下期合作內容.pdf」。先分別讀取這兩樣檔案到FileStegano當中,並設定密碼為「cooperation」,最後按下〔HIDE〕產生出附帶「下期合作內容.pdf」的偽裝影像。此時,翊佳公司再將該偽裝影像傳送給授權的合作人士與負責的相關人員,並於實體會議時公布資訊的取出方式。

圖18  將檔案嵌入至圖表的操作過程。

當被授權的接收端取得偽裝影像以及取出密碼「cooperation」後,即可透過FileStegano將嵌入業績圖表中的合作機密「下期合作內容.pdf」取出,並得知嵌入其中的機密訊息內容,如圖19所示。

圖19  將機密文件從圖表取出。

倘若接收端任意拿其他的圖片或者輸入錯誤的密碼,FileStegano則會顯示出錯誤訊息,並無法取得嵌入至影像中的機密訊息,圖20呈現了輸入錯誤密碼或選取錯誤圖片而顯示的失敗訊息。

圖20  將檔案嵌入至圖表的操作過程。

透過這樣的手段,翊佳公司便不須將雲端硬碟透過設定權限來控制瀏覽的族群種類,也不必擔心會有不肖人士透過擷取封包或電腦監聽等方式,偷取傳輸至網路上的機密訊息,圖21說明了情境演練的流程。

圖21  情境演練流程圖。

<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)中央警察大學資訊密碼暨建構實驗室(ICCL),1998年12月成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學, 資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障(https://sites.google.com/site/iccltogether/)>


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!