方 艷 林耀海
(福建農林大學計算機與信息學院,福建 福州 350002)
隨著計算機技術和多媒體技術的迅猛發展,各種高清的圖像獲取設備在日常生活中得以廣泛應用。特別是智能手機的普及,使得每天數以億計的數字圖像數據產生,并充斥在互聯網各個角落。其中,具有高壓縮比和較好重構質量的JPEG圖像是最常用的一種圖像壓縮文件。此外,在海量的圖像數據中,存在大量復制或近似復制的圖像,去重工作需耗費大量的人力和時間,這給資源受限的用戶帶來極大的挑戰。近年來,隨著云計算技術的快速發展和大數據時代的到來,數據云端外包存儲和處理成為一種流行的解決方案。但在數據云外包的環境下,用戶失去了對數據的物理控制權,導致其對外包數據的存儲和處理一無所知,由此易引發數據安全問題。最近,關于云外包存儲和處理的安全問題報道也層出不窮。在2019年云安全報告中,Cyber security指出,28%被調查的組織表示遭遇了云安全事件,而且還有大量的安全問題并未被發現和報道。當前,用戶的隱私保護和數據安全問題已經引起了各國政府的高度重視,并制定了一系列相應的法律。例如,2018年5月25日,歐盟出臺了“史上最嚴”的數據保護法《通用數據保護條例》(GDPR)。根據該條例,用戶有權刪除或撤回與之相關的數據;同時嚴懲違反條例的公司,罰款金額高達年收入的4%。2017年,我國頒布的《網絡安全法》要求互聯網企業有義務確保用戶數據在使用過程中的安全。2020年1月1日正式實施的《中華人民共和國密碼法》為數據信息安全提供了強有力的法律支撐。在這種強安全意識背景下,如何兼顧圖像數據安全和去重功能成為當下云計算技術推廣需要解決的問題之一。對此,本文設計了一種面向JPEG圖像的隱私保護圖像查重方案。在該方案下,用戶首先在明文域提取圖像的相似哈希,并利用密文可逆信息隱藏技術,將之嵌入其宿主密文JPEG圖像,隨后上傳含密的密文圖像到云端服務。當收到去重請求時,服務器利用所提取的相似哈希進行復制或近似復制圖像的辨別,對滿足閾值要求的多余密文圖像予以刪除,最后將去重后的密文圖像集返回給用戶,由用戶解密生成明文去重圖像集。
本文研究了一種隱私保護的JPEG圖像查重方案。該方案主要牽涉三方:圖像提供方、授權用戶、云端服務器,他們之間的關系如圖1所示。其中,圖像提供方需事先執行相似哈希提取和圖像加密,并將嵌入哈希的密文圖像存儲在云端服務器;云端服務器提取每幅圖像的哈希值,并計算哈希間的相似度,根據用戶所設置的閾值刪除相應多余的復制圖像或近似復制圖像,最后返回去重后圖像集;授權用戶利用指定的密鑰,解密出去重后的明文圖像集。以下分別就本文中所涉及的關鍵步驟——相似哈希、圖像加密、哈希嵌入、圖像去重作詳細介紹。

圖1 所提方案的框架圖
早期相似哈希算法(Simhash Algorithm)用于表征網頁的信息指紋,據此可刪除重復的網頁,在Google的頁爬蟲中得以應用。本文的圖像相似哈希采用其中較為簡單、易用的aHash算法,具體算法步驟如下[1]:
①縮小化:將圖像縮放到n×n尺寸,設縮小后圖為I;
②灰度化:將圖像I轉化為灰度圖I1,其像素值范圍為[0,255];
③均值化:計算圖像I1所有像素的平均值,記為v;
④哈希化:遍歷圖像I1,比較每一個像素與v的大小,若大于或等于v,記1,否則記0,從而得到n2位的二進制串,即圖像的aHash值。
本文的加密算法是在JPEG圖像加密算法的基礎上融合了符號加密算法。以下分別就JPEG格式和加密過程進行簡要介紹。
2.2.1 JPEG格式
JPEG(Joint Photographic Experts Group,聯合圖像專家小組)是國際標準組織和國際電話電報咨詢委員會為靜態圖像所設計的一種國際圖像壓縮標準,已被廣泛應用于互聯網和人們日常生活。下面將介紹一幅彩色圖像的JPEG壓縮步驟:
①顏色空間轉換:將RGB顏色空間轉化為YUV彩色空間,轉化過程見式(1):

(1)
②離散余弦變換(DCT):首先將彩色圖像的每個分量(即Y、U、V)劃分成8×8不重疊的塊,然后對每塊進行二維DCT變換,如公式(2)所示。
(2)
其中I(i,j),T(i,j)(0≤i≤7,0≤j≤7)分別表示為變換前后當前塊中第i,j位置上像素值和頻率系數,8×8塊變換總共生成64個頻率系數:1個直流(DC)系數和63個交流(AC)系數;
③量化:分別采用不同量化步長,對64個系數進行量化操作,將之轉換為整數;
④編碼:DC和AC系數分別先進行差分脈沖編碼調制和游程編碼(其中,游程編碼后生成一系列(r,v)對,r表示連續零值的個數,v為非零值AC系數值),然后進行熵編碼,生成一串二進制序列(包含兩部分:Huffman碼和VLI碼);
⑤JPEG圖像生成:按照規定標準組合文件頭和以上編碼后碼流生成JPEG壓縮文件。
2.2.2 加密過程
JPEG圖像加密步驟如下:
①符號加密:將AC系數進行隨機符號加密,即當前系數絕對值保持不變,其符號正負隨機選擇;
②塊間置亂:以塊熵編碼后的二進制序列為單位置亂JPEG位流數據;
③塊內置亂:以(r,v)對為單位置亂塊內AC系數;
④偽隨機異或加密:利用公式(3)對文件頭中量化表位流和DC系數的VLI碼進行偽隨機異或加密。
(3)

本文采用文獻[3]中基于直方圖可逆信息隱藏方法,將圖像哈希嵌入加密后的JPEG圖像中非零的AC系數,具體如下:
①構建直方圖:統計加密后JPEG圖像的非零AC系數直方圖;
②嵌入過程:根據以下公式嵌入圖像哈希。
(4)

當接收到授權用戶查重請求時,云端服務器通過比較圖像相似哈希判別是否出現復制圖像或近似復制圖像,并根據設定閾值執行相應的去重操作,最后返回去重密文圖像集給用戶。具體算法過程如下:
①哈希提取:統計嵌入哈希的密文圖像中非零AC系數,并按公式(5)提取嵌入位s,并按序串聯成原始嵌入的圖像相似哈希序列;
(5)
②密文恢復:按以下公式恢復嵌入前的密文圖像;
(6)
③相似度量:通過計算圖像相似哈希間的漢明距離,根據用戶設定的閾值確認并刪除重復的圖像;
④返回結果:將去重后的密文圖像集返回給用戶,由用戶進行解密和恢復去重的明文圖像。
本文提出了一種隱私保護的JPEG圖像查重方案,可適合于云計算外包環境。基于該方案,用戶無需本地逐一通過視覺查看方式,從大量圖像集中剔除重復或近似重復的圖像,而是由存儲和計算資源豐富的云端服務器來執行去重操作,并且圖像數據安全也能得以確保。但本文也存在些不足之處,還有待于今后進一步改進,比如只是提了一種可行的理論方案,欠缺實際的實驗數據驗證。