本發(fā)明屬于圖像信息安全和數字圖像信號處理交叉領域,涉及一種信息分存方法,特別涉及一種素數域多門限漸進秘密圖像分存及重構方法。
背景技術:
現有圖像信息分存技術主要源自密碼學中的秘密共享,結合秘密共享方案,基于(K,N)門限的圖像信息分存方案被廣泛提出,早期的基于(K,N)門限的圖像信息分存方案中沒有認證措施,導致最終重構的秘密圖像真實性無法鑒別。針對無認證措施圖像分存方案在使用過程中存在的安全隱患,一些文獻也探討了帶認證的圖像分存。例如Lin C C,2004(Lin C C,Tsai W H.Secret image sharing with steganography and authentication[J].The Journal of Systems and Software,2004,73(3):405–414.)預先將秘密圖像的每個像素調整到[0,251)之間,然后對其進行Shamir-(K,N)分存,調整2×2分塊右上角位置的奇偶校驗位作為認證位,但認證信息只有1位奇偶校驗位,起不到一定的認證作用。為避免Lin C C,2004所提策略對秘密圖像進行預先處理導致秘密圖像失真,Yang C N,2007(Yang C N,Chen T S,Yu K H,et al.Improvements of image sharing with steganography and authentication[J].The Journal of Systems and Software,2007,80(7):1070-1076.)等將Shamir-(K,N)拓展到GF(28)有限域,并通過HMAC(Hash-based Message Authentication Code)對分存信息進行認證,但所提出的認證方法依然只有1位認證位,惡意參與者依然有很大概率逃脫檢驗,且GF(28)涉及到域上多項式環(huán)的加減乘除運算,涉及較大的運算代價。Chang C C,2008(Chang C C,Hsieh Y P,Lin C H.Sharing secrets in stego images with authentication[J].Pattern Recognition,2008,41(10):3130–3137.)等利用中國剩余定理生成分存信息的4bit認證位來進一步提升認證能力,然而所提方法不能充分利用認證能力對認證失敗的像素進行修復,為添加修復能力,Chang C C,2011(Chang C C,Chen Y H,Wang H C.Meaningful secret sharing technique with authentication and remedy abilities[J].Information Sciences,2011,181(14):3073–3084.)等使用Lagrange的多個系數來分存秘密圖像像素和它的配對像素,使得方案具備一定攻擊后的修復能力,但所提方案的認證信息位較少,秘密像素的分存信息最多存儲兩份且用最小覆蓋矩形來確定被攻擊的區(qū)域,導致所提策略的恢復能力偏低。為提高攻擊后的修復能力,Wu X T,2013(Wu XT,Sun W.Secret image sharing scheme with authentication and remedy abilities based on cellular automata and discrete wavelet transform[J].The Journal of Systems and Software,2013,86(4):1068-1088.)等將秘密圖像做一級離散小波變換,取其LL子帶備份2份,從而構造出與原秘密圖像等大但每個像素比特只有4位的備份圖像,采用可逆元胞自動機來分存秘密圖像和備份圖像,若原秘密像素被攻擊,則可通過恢復出的備份圖像對應位置像素進行修復,從而獲得了更好的修復能力。但所提方法是將2個8位秘密像素和2個4位備份圖像像素總計24位作為初始3時刻的8元胞來構造可逆元胞自動機進行分存,這樣導致的問題是:它不是真正意義的(3,N)門限方案,需至少3個編號連續(xù)的分存單元才能恢復出秘密圖像的2個秘密像素和備份圖像的2個備份像素;2×4分塊中的任意一個像素被攻擊,即導致2個秘密像素及其備份圖像的2個像素共24位信息不可用,從而該方法無法抵制任意微小噪聲攻擊。
同時以上所給出的圖像分存方案分存方案單一,不能充分有效地利用回收到的分發(fā)信息和根據重要程度的不同對秘密圖像進行充分有效的重建,對秘密圖像的漸進恢復質量十分有限,在很多場合,往往需根據參與者數量的不同以及待分存信息的重要程度來漸進地恢復出不同視覺質量的秘密圖像。
針對漸進分存,Wang R Z,2007(Wang R Z,Shyu S J.Scalable secret image sharing[J].Signal Processing Image Communication,2007,22(4):363-373.)給出了基于圖像分塊、像素比特位分組以及分塊分組混合的3種漸進分存模型,將劃分單位作為整體進行(2,2)分存和形成N份影子圖像,并通過分發(fā)影子圖像中可恢復的劃分單位數量來對秘密圖像進行(2,N)恢復。Lin Y Y,2010(Lin Y Y,Wang R Z.Scalable Secret Image Sharing With Smaller Shadow Images[J].IEEE Signal Processing Letters,2010,17(3):316-319.)進一步將(2,2)分存拓展為(N,2N-K),從而可對秘密圖像進行(K,N)恢復。Yang C N,2010(Yang C N,Huang S M.Constructions and properties of k,out of n,scalable secret image sharing[J].Optics Communications,2010,283(9):1750-1762.)結合視覺密碼技術給出了另外兩種將(2,N)分存拓展為(K,N)分存的分存方法。結合Yang C N,2010的工作,Yang C N,2011(Yang C N,Chu Y Y.A general(k,n)scalable secret image sharing scheme with the smooth scalability[J].Journal of Systems&Software,2011,84(10):1726-1733.)和Liu Y X,2014(Liu Y X,Yang C N,Yeh P H.Reducing shadow size in smooth scalable secret image sharing[J].Security&Communication Networks,2014,7(12):2237-2244.)進一步添加了平滑約束限制,使得秘密圖像的恢復質量隨參與者數量成比例的增加。
以上文獻Wang R Z,2007,Lin Y Y,2010,Yang C N,2010,Yang C N,2011和Liu Y X,2014都是將秘密圖像劃分的小塊作為恢復單位進行恢復,對于基于圖像分塊和分塊分組混合模式將無法對圖像進行整體意義的從模糊到清晰的漸進恢復,而對于像素比特位分組模式也僅能提供有限數量的漸進恢復。Lee J S,2015(Lee J S,Chen Y R.Selective scalable secret image sharing with verification[J].Multimedia Tools&Applications,2015:1-11.)結合特征圖給出了基于感興趣區(qū)域帶認證的漸進分存方法,隨著影子圖像數量的增多,對圖像感興趣區(qū)域進行漸進恢復,但其本質出發(fā)點同Wang R Z,2007,Lin Y Y,2010,Yang C N,2010,Yang C N,2011和Liu Y X,2014方法相類似,無法對圖像進行整體意義上的從模糊到清晰的漸進恢復。
針對圖像整體漸進恢復,Chen S K,2005(Chen S K,Lin J C.Fault-tolerant and progressive transmission of images[J].Pattern Recognition,2005,38(12):2466-2471.)給出了一種結合位平面掃描的多門限漸進分存方法,將圖像像素劃分為不重疊小塊,將小塊內的像素按位平面分解并按所在位平面進行重組,根據重組像素所在位平面重要程度不同分配不同的分存門限,Liu W,2015(Liu W,Wang A,Chang C C,et al.A grouped-scalable secret image sharing scheme[J].Multimedia Tools&Applications,2015,74(17):7095-7109.)給出了一種基于位平面分解和拉格朗日差值的漸進圖像分存方法。但以上文獻Chen S K,2005和Liu W,2015都是依據空域像素的位平面重要程度進行分存,對圖像視覺的調控作用十分有限。
Kong J,2007(Kong J,Zhang Y,Meng X,et al.A Scalable Secret Image Sharing Method Based on Discrete Wavelet Transform[C]//Bio-Inspired Computational Intelligence and Applications,International Conference on Life System Modeling and Simulation,LSMS 2007,Shanghai,China,September 14-17,2007,Proceedings.2007:736-745.)結合Chen S K,2005的工作,對待分存圖像進行分塊DWT變換,對變換后的系數進行整數量化和位平面重組,按重組DWT系數所在位平面的重要程度來分配不同的分存門限來實現漸進分存,但相對于空域像素,頻域系數的重要程度通常和系數頻率,即位置息息相關,單純地依賴頻域系數劃分的位平面重要程度對圖像的視覺調控作用依然十分有限。
技術實現要素:
本發(fā)明的目的在于克服現有技術缺陷,提供一種素數域多門限漸進秘密圖像分存及重構方法,充分利用分發(fā)影子圖像對秘密圖像進行漸進分存并提升視覺重建質量。
為實現上述目的,本發(fā)明采用以下技術方案:
一種素數域多門限漸進秘密圖像分存方法,包括以下步驟:
第1步:由秘密持有者配置分存默認的參數,包括:320位2進制碼長分配表M=(mi,j)8×8,系統模數大素數p,分發(fā)份額數N,N∈{1,2,…,p-1},整數隨機量化門限rq>0以及r>0個頻帶分存門限ki∈{2,3,…,N},i=0,1,…,r-1滿足頻帶遞增且頻帶累計值為64的因子,將秘密圖像S=(si,j)h×w劃分為不重疊的8×8小塊Bx,y,x=0,1,…,m-1,y=0,1,…,n-1,其中m=h/8,n=w/8且mmod8=0,nmod8=0;
第2步:由秘密持有者生成N個隨機數P1,P2,…,PN∈{0,1,…,p-1}作為每個影子圖像對應的隨機參與值且P1mod127,P2mod127,…,PNmod127兩兩不等,將密鑰key∈{0,1,…,p-1}分存成N個分存密鑰subkey1,subkey2,…,subkeyN,并將子密鑰(subkeyk,Pk),k=1,2,…,N對應的MD5值公布到第3方公信方以防止參與者作弊,由密鑰key生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq},將其重新排列作為Bx,y對應的隨機量化矩陣Qx,y,其中x=0,1,…,m-1,y=0,1,…,n-1;
第3步:將每個不重疊分塊Bx,y=(bi,j)8×8變換為頻域塊FBx,y=(fbi,j)8×8,通過Qx,y=(qi,j)8×8將FBx,y量化為FB′x,y=(fb′i,j)8×8并對FB′x,y中矩陣元素進行整數化表示和2進制存儲轉換作為FB″x,y;
第4步:將所有的FB″x,y轉換為2進制比特位串IBx,y,將IBx,y轉換為1維序列Ix,y,將Ix,y以k0:k1:…:kr-1為分割比例劃分為r個頻帶,記對應的頻帶為則所包含的元素數記為Ni,i=0,1,…,r-1;
第5步:將所有分塊相同頻帶合并,得到合并后的頻帶BIi,對BIi中的元素進行索引位置置亂,作為頻帶BIi的備份CIi,其中i=0,1,…,r-1;
第6步:記由密鑰key生成bii,u,cii,u,cii-1,u的認證信息
第7步:將bii,u,cii,u或bii,u,cii,u,cii-1,u和組合作為整數a,b,c,然后對在素數域上拉格朗日插值分存得到分存信息fi,u(Sk),k=1,2,...,N,Sk=Pkmod127;
第8步:由密鑰key產生1比特隨機數vi,u,k∈{0,1}作為fi,u(Sk)的認證位,將fi,u(Sk)和vi,u,k映射為fi,′u(Sk)∈{0,1,…,255},其中:i∈{0,1,…,r-1},k∈{1,2,…,N},u∈{0,1,…,mn·Ni-1};
第9步:記Ek為第k個分發(fā)影子圖像對應的置亂前矩陣,Ez,k為Ek的第z個重構矩陣塊,Ez,i,k為Ez,k的第i個劃分頻帶,首先重建Ez,i,k,然后重建Ez,k,最后重建Ek,然后以密鑰key和subkeyk將Ek置亂為E′k;
第10步:將所有的E′k,k=1,2,…,N作為影子圖像和N個子密鑰(subkeyk,Pk),k=1,2,…,N分發(fā)給對應的保管者進行保管,利用系統的默認參數配置重構系統并銷毀中間參數。
進一步,在第1步中r>0個頻帶分存門限ki∈{2,3,…,N},i=0,1,…,r-1滿足頻帶遞增且頻帶累計值為64的因子的具體約束方法為式(1)和式(2):
在第2步中將key∈{0,1,…,p-1}分存成N個分存密鑰subkey1,subkey2,…,subkeyN的具體方法為將key作為秘密值s,將P1,P2,…,PN分別代入式(3)可得到N個分存密鑰subkey1,subkey2,…,subkeyN:
式(3)中,隨機數由key為隨機數種子映射得到;
在第2步中key生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq}的具體方法為按式(4)將key映射為keyx,y,將keyx,y作為隨機數種子,生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq}
第2步中將其重新排列作為Bx,y對應的隨機量化矩陣Qx,y的具體方法為式(5)
Qx,y=MScanzigzag(Inc(RQx,y),8,8) (5);
式(5)中,Inc()是序列增函數,MScanzigzag()為矩陣之字形掃描函數,將序列掃描為矩陣,函數第1個參數為待掃描序列,第2和第3個參數為矩陣維數。
進一步,在第3步中將每個劃分的不重疊分塊Bx,y=(bi,j)8×8變換為頻域塊FBx,y=(fbi,j)8×8的具體方法為式(6):
FBx,y=D2DCT(Bx,y) (6)
式(6)中,函數D2DCT()為2維離散余弦變換,其計算式如式(7)所示:
在第3步中將FBx,y隨機量化為FB′x,y=(fb′i,j)8×8的具體方法為式(8):
fb′i,j=fbi,j/qi,j,i,j=0,1,…,7 (8)
在第3步中對FB′x,y中元素進行整數化表示和2進制存儲轉換為FB″x,y的具體方法為式(9):
式(9)中,和對應為碼長分配表M=(mi,j)8×8元素mi,j所能表示的最大值和最小值,其對應的分配原則按式(10)確定:
在第4步中將所有的FB′x′,y轉換為2進制比特位串IBx,y的具體方法為式(11):
IBx,y=BScanzigzag(FB″x,y) (11)
式(11)中,函數BScanzigzag()為比特位串之字形掃描函數,執(zhí)行的功能是將輸入矩陣的元素按其2進制存儲形式以之字形掃描順序進行連接;
第4步中將IBx,y轉換為1維序列Ix,y的具體方法為式(12):
Ix,y=BCut(IBx,y,5) (12)
式(12)中,函數BCut()是比特位串分割函數,其中第1個參數對應為比特位串,第2個參數為比特位串的分割單位,式(12)執(zhí)行的功能是通過BCut(IBx,y,5)將比特位串IBx,y以5位比特位串為分隔單位轉換為1維序列Ix,y;
在第4步中每個劃分頻帶所包含的元素數Ni,i=0,1,…,r-1可按式(13)確定:
進一步,在第5步中將所有分塊相同頻帶合并的具體方法為式(14):
式(14)中,“||”為序列連接符,即將所有分塊的頻帶連接在一起構成序列作為合并后的頻帶BIi,BIi序列中總共包含mn·Ni個元素;
第5步中對BIi中的元素進行索引位置置亂的具體方法為將key按式(15)映射為keyi,將keyi作為隨機數種子,用于對BIi中元素進行索引位置置亂:
第6步中由key生成bii,u,cii,u,cii-1,u認證信息的具體方法為按式(16)結合bii,u,cii,u,cii-1,u將密鑰key映射為keyi,u,將keyi,u作為隨機數種子產生ki個隨機數按式(17)進行映射作為對bii,u,cii,u,cii-1,u的認證信息
式(16)中,當i=0時,此時不存在上一個頻帶CIi-1;當u≥size(CIi-1)時,表示CIi-1中元素已存儲完畢,不存在備份元素cii-1,u,size(CIi-1)表示CIi-1元素數量;
進一步,在第7步中將bii,u,cii,u或bii,u,cii,u,cii-1,u和組合作為整數a,b,c的具體方法為式(18):
在第7步中對在素數域上拉格朗日插值分存的具體方法為式(19):
式(19)中,gp=127,若k0=2時,此時僅需存儲bi0,u,ci0,u,同時也僅能產生2位認證信息因此直接對a和b進行分存;
在第8步中由密鑰key產生1比特隨機數vi,u,k∈{0,1}作為fi,u(Sk)的認證位的具體方法為由式(20)生成隨機數種子keyi,u,k,由keyi,u,k產生1比特認證信息vi,u,k:
keyi,u,k=(fi,u(Sk)×key+fi,u(Sk)+key+i+u+i×u)modp (20)
第8步將fi,u(Sk)和vi,u,k映射為fi,′u(Sk)∈{0,1,…,255}的具體方法為式(21):
f′i,u(Sk)=27×vi,u,k+fi,u(Sk) (21);
第9步中重建Ez,i,k的具體方法為先按式(22)重建Ez,i,k,然后按式(23)重建Ez,k,最后按式(24)重建Ek:
Ez,k=MScanzigzag(Ez,0,k||Ez,1,k||...||Ez,r-1,k,8,8) (23)
Ek=MSet(Ek,z/n,zmodn,Ez,k),z=0,1,…,mn-1 (24)
式(24)中,函數MSet()為矩陣塊設置函數,第1個參數為放置矩陣小塊的矩陣,第2、3個參數對應為矩陣塊坐標,第4個參數對應為要放置的矩陣小塊;
以密鑰key和subkeyk將Ek置亂為E′k的具體方法為式(25)
一種素數域多門限漸進秘密圖像重構方法,包括以下步驟:
第1步:記配置的重構默認參數,包括:320位2進制碼長分配表為M=(mi,j)8×8,分存模數p,分發(fā)份額數為N,N∈{1,2,…,p-1},整數隨機量化門限rq>0以及r>0個頻帶分存門限為ki∈{2,3,…,N},i=0,1,…,r-1,假設有vinit(vinit≥k0)個參與者參與恢復,記第k個參與者提供的子密鑰和影子圖像分別為和計算對應的MD5值,將其與第3方公信方存儲的MD5值進行對比來驗證子密鑰合法性,統計子密鑰認證通過的參與者數量vsubkey;
第2步:若vsubkey≥k0,則重構主密鑰key,由key生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq},將其重新排列作為Bx,y對應的隨機量化矩陣Qx,y,其中x=0,1,…,m-1,y=0,1,…,n-1,反之若vsubkey<k0,則重構失敗;
第3步:由vsubkey確定可最大重構的第t,t∈{0,1,…,r-1}個頻帶,將恢復的key和映射為將第k個子密鑰認證通過的參與者含密影子圖像逆置亂為重建上第z個重建子塊由重建第z個分塊中所有頻帶劃分集合將第k個子密鑰認證通過的參與者所有分塊相同頻帶進行合并得到其中i=0,1,…,r-1,k=1,2,…,vsubkey,Ni為每個劃分頻帶所包含的元素數;
第4步:由重構1次和2次備份表重建秘密圖像頻帶以及對1次和2次備份表和重建秘密圖像頻帶認證的
第5步:根據將和融合為最終備份
第6步:對中的每個bii,u,若aci,u=1則不修改它的值,否則使用最終備份中的cii,u替換bii,u,其中i=0,1,…,t,u=0,1,…,mn·Ni-1;
第7步:由秘密圖像頻帶重建秘密圖像S=(si,j)h×w。
進一步,在第2步中重構主密鑰key的具體方法為式(26):
式(26)中,為子密鑰認證通過的第i,i=1,2,…,vsubkey個參與者提供的子密鑰,為的模p乘法逆元;
在第2步中由密鑰key生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq}的具體方法為按式(4)將key映射為keyx,y,將keyx,y作為隨機數種子,生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq};
在第2步中將其重新排列作為Bx,y的隨機量化矩陣Qx,y的具體方法為式(5):
Qx,y=MScanzigzag(Inc(RQx,y),8,8) (5);
在第3步中由vsubkey確定可最大重構的第t,t∈{0,1,…,r-1}個頻帶的方法為式(31):
在第3步中將key和映射為的方法為式(27):
在第3步中重建上第z個子塊的方法為式(28):
式(28)中,函數MGet()為矩陣小塊獲取函數,函數第1個參數為矩陣小塊所在的矩陣,第2和第3個參數對應為矩陣塊的坐標,第4個和第5個參數對應為矩陣塊維數,其中x=0,1,…,m-1,y=0,1,…,n-1;
在第3步中由重建的具體方法為式(29):
式(29)中,函數SScanzigzag()為序列之字形掃描函數,執(zhí)行的功能是將矩陣掃描為1維序列;
第3步中合并得到的具體方法為式(30):
第3步中每個劃分頻帶所包含的元素數Ni按式(13)確定:
進一步,在第4步中由重構1次和2次備份表重建秘密圖像頻帶以及對1次、2次備份表和重建秘密圖像頻帶進行認證的的具體方法為:
第4.1步:初始化以及對中每個分存單元按式(32)和式(33)得到分存信息和1比特認證信息按式(34)將key和映射為隨機數種子由重新生成1比特認證信息若則通過第1重認證,反之則認證失??;
第4.2步:記當前通過第1重認證的分存信息為其中vfirst為通過第1重認證的當前分存信息數量,若vfirst<ki,則置aci,u=0表示認證失敗,反之若vfirst≥ki個則按下面步驟還原得到
第4.2.1步:初始化嘗試次數try=0;
第4.2.2步:從vfirst中枚舉出ki個分存信息作為其中表示當前參與恢復的ki個分存信息中的第k個,置try=try+1;
第4.2.2步:由按式(35)計算
式(35)中,表示參與恢復的ki個分存信息中的第j個含密影子圖像對應的隨機參與值,對應為模gp下的乘法逆元,其中gp等于127;
第4.2.3步:當i=0或時,按式(36)還原得到否則按式(36)和式(37)還原得到
第4.2.4步:按式(38)將key映射為隨機數種子keyi,u產生ki個隨機數并按式(39)進行映射得到第2重認證信息將其與對比,若則通過第2重認證并設置aci,u=1,反之若則轉4.2.2步,若則未通過第2重認證并設置aci,u=0,其中為從vfirst中枚舉ki個分存信息的組合數;
第4.3步:輸出以及
進一步,在第5步中根據將和融合為最終備份的具體方法為:
第5.1步:初始化當i=0,1,…,t-1時,按式(40)進行融合,當i=t時,此時不存在因此直接令
第5.2步:按式(15)將key映射為keyi,以keyi為隨機數種子,按分存系統中keyi對應的置亂方法將逆置亂,從而得到最終備份
進一步,在第7步中由秘密圖像頻帶重建秘密圖像S=(si,j)h×w的具體方法為:
第7.1步:將以Ni個元素為單位按式(41)劃分為小段序列BIz,i,i=0,1,…,r-1,然后按式(42)重建IBz,其中z=0,1,…,mn-1;
IBz=BIz,0||BIz,1||...||BIz,r-1 (42)
第7.2步:將所有的IBz,z=0,1,…,mn-1按式(43)轉換為FB″x,y=(fb″i,j)8×8,按式(45)得到FB′x,y=(fb′i,j)8×8,按式(46)得到FBx,y=(fbi,j)8×8;
式(43)中,函數SBin()是序列2進制位串轉換函數,SBin()第1個參數為待轉化的一維序列,第2個參數是序列元素轉換的2進制位數,函數BMScanzigzag()是將比特位串按之字形掃描順序和碼長分配表轉換為與碼長分配表等大的矩陣小塊,BMScanzigzag()第1個參數為比特位串,第2個參數對應的是碼長分配表,第3個參數對應為標記位,用于標記重建小塊中未重建頻帶的坐標位置,式(43)中重建小塊FB″x,y中的mark位置及之后的元素fb″i,j都被置為
fbi,j=fbi′,j×qi,j,i,j=0,1,…,7 (46)
式(45)和式(46)中,對應為碼長分配表為M=(mi,j)8×8對應位置元素所能表示的最小值;qi,j對應為量化表Qx,y中的元素;
第7.3步:按式(47)對FBx,y進行逆DCT變換得到Bx,y=(bi,j)8×8,若經頻域變換后,像素值發(fā)生溢出,則當像素大于255時取255,像素小于0時取0;
第7.4步:由所有分塊Bx,y,x=0,1,…,m-1,y=0,1,…,n-1,按式(48)重建秘密圖像S=(si,j)h×w;
S=MSet(S,z/n,zmodn,Bx,y),z=0,1,…,mn-1 (48)。
本發(fā)明同現有技術優(yōu)點分析:
①傳統圖像分存方案單一,不能充分有效地利用分發(fā)信息對秘密圖像進行充分有效的重建,對秘密圖像恢復質量十分有限。傳統基于圖像分塊、像素比特位分組以及分塊分組混合類漸進分存方法都是將秘密圖像劃分的小塊作為恢復單位進行恢復,對于基于圖像分塊和分塊分組混合模式將無法對圖像進行整體意義的從模糊到清晰的漸進恢復,而對于像素比特位分組模式下也僅能提供有限數量的漸進恢復;而結合空域像素位平面重要程度整體漸進分存方法對圖像視覺調控作用十分有限,而單純地依賴頻域系數簡單位平面劃分對圖像視覺調控作用依然十分有限。同以上方法不同,本發(fā)明首先對秘密圖像進行分塊頻域變換,對每個分塊頻域系數進行隨機量化,按之字形掃描順序和頻帶重組形成多個劃分頻帶,對不同頻帶使用不同門限的分存從而避免了單純依賴頻域系數簡單位平面劃分所帶來的圖像視覺調控的低效率,不僅可有效地對圖像進行整體漸進分存,而且通過分存時引入頻帶備份,恢復時通過多門限確定可重建頻帶,結合1次和2次頻帶備份表還可有效地提高影子圖像的漸進恢復質量。
②傳統的分存方案中,秘密持有者設定的參與值通常默認為1,2,…,N,存在較大安全風險,在本發(fā)明中,引入隨機參與值,從而使得即使密鑰key在較低門限下重建,由于分發(fā)給每個參與者的隨機參與值無法預知而不存在分存密鑰subkey1,subkey2,…,subkeyN泄露的風險,同時也無法推知其他用戶分發(fā)影子份額。為提供足夠的安全性,本發(fā)明中所有處理環(huán)節(jié)中的隨機數生成都增強了安全性,例如秘密圖像分塊頻域變換對應的隨機量化陣Qx,y與塊位置(x,y)和密鑰key綁定;bii,u,cii,u,cii-1,u的認證信息生成密鑰與bii,u,cii,u,cii-1,u和key綁定;fi,u(Sk)的認證位與fi,u(Sk)和key綁定;每個用戶的影子圖像置亂份額的置亂密鑰不僅與用戶分存密鑰有關,還與密鑰key綁定,從而每個用戶無法推知自己的分發(fā)份額,同時結合第3方存儲的子密鑰MD5值也無法對自己掌管的子密鑰進行作弊。
③所提方法可充分有效地利用素數域Lagrange多項式的多個系數來對當前秘密信息、當前備份信息、上一頻帶的備份信息(如果上一頻帶存在)和相應認證信息進行分存,在提高認證準度的同時也增強了圖像修復能力。
④本發(fā)明有多重機制來保證恢復的準確性:1)通過第3方公信方存儲的MD5值來驗證子密鑰合法性;2)由參與者數量確定可最大重構的頻帶;3)由雙重認證重構1次和2次頻帶備份表然后重建最終備份,從而可提高恢復的準度。
附圖說明
圖1是分存流程圖;
圖2是重構流程圖;
圖3是秘密圖像,分辨率為512×512的24位灰度圖像Lena;
圖4是實施例,分辨率為512×512的24位含密影子圖像;
圖5是實施例,分辨率為512×512的24位含密影子圖像;
圖6是實施例,分辨率為512×512的24位含密影子圖像;
圖7是實施例,分辨率為512×512的24位含密影子圖像;
圖8是實施例,分辨率為512×512的24位含密影子圖像;
圖9是實施例,分辨率為512×512的24位含密影子圖像;
圖10是實施例,分辨率為512×512的24位含密影子圖像;
圖11是實施例,由圖4~圖6恢復出的秘密圖像,PSNR為27.31dB;
圖12是實施例,由圖4~圖7恢復出的秘密圖像,PSNR為29.98dB;
圖13是實施例,由圖4~圖8恢復出的秘密圖像,PSNR為34.05dB;
圖14是實施例,由圖4~圖9恢復出的秘密圖像,PSNR為37.02dB;
圖15是實施例,由圖4~圖10恢復出的秘密圖像,PSNR為43.36dB;
圖16是攻擊圖樣1;
圖17是攻擊圖樣2;
圖18是圖9遭到圖16攻擊的結果圖像;
圖19是圖10遭到圖17攻擊的結果圖像;
圖20是由圖4~圖8、圖18和圖19恢復出的秘密圖像,PSNR為36.03dB。
具體實施方式
以下以JAVA jdk1.8.0_65為案例實施環(huán)境,結合附圖對本發(fā)明實施方式進行詳細說明,但不局限于本實施案例,其中圖1是分存流程圖,圖2是重構流程圖。以下以具體實例對分存過程進行說明:
第1步:由秘密持有者配置分存系統默認的320位碼長分配表M,選取大素數p=1000000007作為系統默認模數,設置子密鑰分發(fā)份額數N=7,整數隨機量化門限rq=12,r=6個分存門限為k0=3≤k1=4≤k2=5≤k3=6≤k4=7≤k5=7且k0+k1+…+k5=32,滿足式(1)和式(2)的約束條件,讀取秘密圖像S=(si,j)8×8,將其劃分為不重疊的8×8小塊Bx,y,x=0,y=0,則B0,0=S,此時只有一個塊,其中:
第2步:由秘密持有者生成N個隨機數P1,P2,…,PN∈{0,1,…,p-1}作為每個影子圖像隨機參與值且P1mod127,P2mod127,…,PNmod127兩兩不等,將密鑰key作為秘密值s,將P1,P2,…,PN分別代入式(3)可得到N個分存密鑰subkey1,subkey2,…,subkeyN,并將子密鑰(subkeyk,Pk),k=1,2,…,N對應的MD5值公布到第3方公信方以防止參與者作弊,按式(4)將key映射為keyx,y,將keyx,y作為隨機數種子,生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq},將其按式(5)排列作為Bx,y對應的隨機量化矩陣Qx,y,其中x=0,1,…,m-1,y=0,1,…,n-1;
例如:生成N=7個隨機數P1=14,P2=50,P3=53,P4=15,P5=22,P6=1,P7=26作為隨機參與值,可以驗證P1mod127,P2mod127,…,PNmod127兩兩不等,將密鑰key=131819作為秘密值s,將P1=14,P2=50,P3=53,P4=15,P5=22,P6=1,P7=26分別代入式(3)可得到:subkey1=42367649,subkey2=504447269,subkey3=565929662,subkey4=48330104,subkey5=101064233,subkey6=595802,subkey7=139838477,將子密鑰(subkeyk,Pk),k=1,2,…,N對應的MD5值公布到第3方公信方,例如(subkey1,P1)對應的MD5值為0xef8afaa75b6eafc24ab0ea73288988de;取x=0,y=0,按式(4)將key=131819映射為key0,0=363,將key0,0=363作為隨機數種子,生成長度為64的隨機序列RQ0,0={3,12,2,2,2,12,3,12,10,5,1,8,1,6,8,4,12,1,6,…,8,2,5,10,2,1,4,2,6,10},將其按式(5)排列作為B0,0的隨機量化矩陣
第3步:將每個不重疊分塊Bx,y=(bi,j)8×8按式(6)變換為頻域塊FBx,y=(fbi,j)8×8,將FBx,y按式(8)量化為FB′x,y=(fbi′,j)8×8,按式(9)對FB′x,y中元素進行整數化表示并依據M=(mi,j)8×8進行相應位數的2進制存儲;以b0,0=160,b0,1=162為例,按式(6)可得到fb0,0=1279.625和fb0,1=9.035376,對fb0,0,fb0,1按式(8)可得到fb′0,0=fb0,0/q0,0=1279.625和fb′0,1=fb0,1/q0,1=9.035376,按式(9)對fb′0,0=1279.625,fb′0,1=9.035376進行整數化表示并依據m0,0=11和m0,1=10可得到和
第4步:記整數化表示和2進制存儲的FB′x,y為FB′x′,y,將所有的FB′x′,y按式(11)轉換為2進制比特位串IBx,y,將IBx,y按式(12)轉換為1維序列Ix,y,將Ix,y按k0:k1:…:kr-1劃分為r個頻帶,將對應的頻帶記為每個劃分頻帶所包含的元素數Ni可按式(13)確定,其中i=0,1,…,r-1;
以x=0,y=0為例,
按式(11)可得:IB0,0=101000000001000001000100000010…10101010101010101010101010101,將IB0,0按式(12)轉換為1維序列I0,0=BCut(IB0,0,5)={(10100)2(00000)2(01000)2(00100)2
(01000)2(00010)2(11000)2(00000)2(01111)2…(10101)2(01010)2(10101)2(01010)2(10101)2},將I0,0以3:4:5:6:7:7為比例劃分為6個頻帶,為便于描述,這里用10進制數進行示意,例如按式(13)確定N0=6,N1=8,…,N5=14;
第5步:將所有分塊的相同頻帶按式(14)合并,可得到合并后的頻帶BIi,將主密鑰key按式(15)映射為keyi,將keyi作為隨機數種子,用于對BIi中元素進行索引位置置亂,將置亂后的BIi作為BIi的備份CIi,其中i=0,1,…,r-1;
以i=0為例,由于圖像S只有一個分塊,所以按式(15)可將key=131819映射為key0=363,將key0=363作為隨機數種子,用于對BI0中元素位置置亂,可得BI0的備份CI0={8,0,20,8,4,2};
第6步:記按式(16)結合bii,u,cii,u,cii-1,u將密鑰key映射為keyi,u,將keyi,u作為隨機數種子產生ki個隨機數按式(17)進行映射作為對bii,u,cii,u,cii-1,u的認證信息
以i=0,u=0為例,由于當i=0時不存在上一個頻帶信息,所以按式(16)結合
bi0,0=20,ci0,0=8可將密鑰key=131819映射為key0,0=3822911,將key0,0=3822911作為隨機數種子可產生k0=3個隨機數按式(17)可得到bi0,0=20,ci0,0=8的認證信息
第7步:將bii,u,cii,u或bii,u,cii,u,cii-1,u和按式(18)進行組合作為a,b,c并利用式(19)對在模數為127的素數域上拉格朗日插值分存得到分存信息fi,u(Sk),k=1,2,...,N,Sk=Pkmod127;
以i=0,u=0為例,將bi0,0=20,ci0,0=8和按式(18)進行組合作為a=20,b=8,c=9并利用式(19)對在模數為127的素數域分存可得:f0,0(14)=118,f0,0(50)=60,f0,0(53)=71,f0,0(15)=6,f0,0(22)=107,f0,0(1)=37,f0,0(26)=89;
第8步:結合fi,u(Sk)按式(20)將密鑰key映射為keyi,u,k并產生1比特隨機數vi,u,k∈{0,1}作為對fi,u(Sk)的認證位,將fi,u(Sk)和vi,u,k按式(21)映射為fi,′u(Sk)∈{0,1,…,255},其中:i∈{0,1,…,r-1},k∈{1,2,…,N},u∈{0,1,…,mn·Ni-1};
以i=0,u=0,k=1為例,結合f0,0(S1)=118按式(20)將密鑰key=131819映射為key0,0,1=15686579并產生1比特隨機數v0,0,1=(1)2作為f0,0(S1)=118的認證位,將f0,0(S1)=118和v0,0,1=(1)2按式(21)可映射為f0′,0(S1)=246,其中i∈{0,1,…,5},u∈{0,1,…,64·64·Ni-1},k∈{1,2,…,7};
第9步:記Ek為第k個分發(fā)影子圖像對應的置亂前矩陣,Ez,k為Ek的第z個重構矩陣塊,Ez,i,k為Ez,k的第i個劃分頻帶,則可按式(22)重建Ez,i,k,按式(23)重建Ez,k,按式(24)重建Ek,將key和subkeyk按式(25)映射為然后以為隨機數種子將Ek置亂為E′k;例如:以z=0,i=0,k=1為例,按式(22)重建E0,0,1=f′0,0,1||f′0,1,1||...||f′0,5,1={246,239,47,145,246,61},按式(23)得E0,1,按式(24)得E1=MSet(E1,z/64,zmod64,Ez,1)=E0,1,將key=131819和subkey1=42367649按式(25)映射為然后通過將E1置亂為E1′,其中:
第10步:將所有的E′k,k=1,2,…,7作為影子圖像和N=7個子密鑰(subkeyk,Pk),k=1,2,…,7分發(fā)給對應的保管者進行保管,利用系統的默認參數配置重構系統并銷毀中間參數。
以下以具體實例對重構過程進行說明:
第1步:選取重構系統配置的碼長分配表模數p=1000000007,分發(fā)份額數N=7,隨機量化門限rq=12,r=6個頻帶分存門限k0=3,k1=4,k2=5,k3=6,k4=7,k5=7,假設有vinit=7(vinit≥k0)個參與者參與恢復,記第k個參與者提供的子密鑰和含密影子圖像為和計算對應的MD5值,將其與第3方公信方存儲的MD5值進行對比來驗證子密鑰合法性,統計子密鑰認證通過的參與者數量,這里假設所有參與者的MD5值都正確,即vsubkey=7;
第2步:若vsubkey≥k0,則按式(26)重構主密鑰key,按式(4)將key映射為keyx,y,將keyx,y作為隨機數種子,生成長度為64的隨機序列RQx,y=(rqi)64,rqi∈{1,2,…,rq},將其按式(5)排列作為秘密圖像小塊Bx,y對應的量化矩陣Qx,y,其中x=0,1,…,m-1,y=0,1,…,n-1,反之若vsubkey<k0,則重構失??;
以x=0,y=0,vsubkey=7為例,vsubkey=7≥k0,按式(26)可得:key=131819,按式(4)將key=131819映射為key0,0=363,由此可生成長度為64的隨機序列RQ0,0={3,12,2,2,2,12,3,12,10,5,1,8,1,6,8,4,12,1,6,9,5,10,8,6,3,2,11,6,8,12,2,11,7,3,5,7,2,6,4,2,6,10,6,3,2,10,7,4,7,7,1,6,7,10,8,2,5,10,2,1,4,2,6,10},按式(5)排列作為秘密圖像小塊的量化矩陣反之若vsubkey<k0,則重構失敗;
第3步:將恢復的key和按式(27)映射為然后以為隨機數種子,將第k個子密鑰認證通過的參與者提供的含密影子圖像逆置亂為按式(28)重建上第z個重建子塊按式(29)重建將第k個子密鑰認證通過的參與者所有分塊相同頻帶按(30)合并得到其中i=0,1,…,r-1,k=1,2,…,vsubkey,Ni是每個劃分頻帶所包含的元素數,按式(13)確定,由vsubkey按式(31)確定最大重構的第t,t∈{0,1,…,r-1}個頻帶;
以i=0,k=1,z=0為例,將key=131819和按式(27)映射為然后以為隨機數種子,將第k=1個子密鑰認證通過的參與者提供的含密影子圖像:
恢復為由于只有一個分塊,所以重建上第z=0個重建子塊按式(29)可重建:由于只有一個分塊,所以其中i=0,1,…,5,k=1,2,…,7,按式(13)可確定N0=6,N1=8,…,N5=14,由vsubkey=7按式(31)確定可最大重構的第t=5個頻帶,即所有頻帶都重建;
第4步:由重構1次備份表2次備份表重建秘密圖像頻帶以及對1次和2次備份表和重建秘密圖像頻帶進行認證的其具體方法為:
第4.1步:初始化以及對中每個分存單元按式(32)和式(33)得到分存信息和1比特認證信息按式(34)將密鑰key和映射為隨機數種子由重新生成1比特認證信息若則通過第1重認證,反之則認證失??;
例如:初始化以及以i=0,u=0,k=1為例,對中的分存單元按式(32)和式(33)得到和按式(34)將key=131819和映射為由重新生成1比特認證信息由于則通過第1重認證;
第4.2步:記當前通過第1重認證的分存信息為其中vfirst為通過第1重認證的當前分存信息數量,若vfirst<ki,則置aci,u=0表示認證失敗,反之若vfirst≥ki個則按下面步驟還原得到
以i=0,u=0為例,記當前通過第1重認證的分存信息為其中vfirst為通過第1重認證的當前分存信息數量,假設存在vfirst=7≥k0個按下面步驟還原得到a,b,c:
第4.2.1步:初始化嘗試次數try=0;
第4.2.2步:從vfirst中枚舉出ki個分存信息作為其中表示當前參與恢復的ki個分存信息中的第k個,置try=try+1;
例如:從vfirst=7中枚舉出k0=3個分存信息作為其中表示當前參與恢復的k0個分存信息中的第k個,置try=try+1;
第4.2.2步:由按式(35)計算
例如:由按式(35)計算a=20,b=8,c=9;
第4.2.3步:當i=0或時,按式(36)還原得到否則按式(36)和式(37)還原得到例如:由于i=0,按式(36)可還原得到:
第4.2.4步:按式(38)將key映射為隨機數種子keyi,u產生ki個隨機數并按式(39)進行映射得到第2重認證信息將其與對比,若則通過第2重認證并設置aci,u=1,反之若則轉4.2.2步,若則未通過第2重認證并設置aci,u=0,為從vfirst中枚舉ki個分存信息的組合數;
例如:按式(38)將key=131819映射為隨機數種子key0,0=3822911產生k0=3個隨機數并按式(39)進行映射得到第2重認證信息將其與對比,由于則通過第2重認證并設置ac0,0=1,反之若則轉4.2.2步,若則未通過第2重認證并設置ac0,0=0;
第4.3步:輸出以及
以i=0為例,輸出以及
第5步:根據將和融合為最終備份其具體方法為:
第5.1步:初始化當i=0,1,…,t-1時,按式(40)進行融合,當i=t時,此時不存在因此直接令
以i=0,u=0為例,初始化由于ac0,0=1,ac1,0=1按式(40)融合可得到當i=5時,此時不存在因此直接令
第5.2步:按式(15)將key映射為keyi,以keyi為隨機數種子,按分存系統中keyi對應的置亂方法將逆置亂,從而得到最終備份
以i=0為例,按式(15)將key=131819映射為key0=363,以key0=363為隨機數種子,按分存系統中key0=363對應的置亂方法將逆置亂,從而得到最終備份
第6步:對中的每個bii,u,若aci,u=1則不修改它的值,否則使用最終備份中的cii,u替換bii,u,其中i=0,1,…,t,u=0,1,…,mn·Ni-1;
以i=0,u=0為例,對中的bi0,0,由于ac0,0=1則不修改它的值,否則使用ci0,0替換bi0,0;
第7步:由秘密圖像頻帶重建秘密圖像S=(si,j)h×w,具體方法為:
第7.1步:將以Ni個元素為單位按式(41)劃分為小段序列BIz,i,i=0,1,…,r-1,然后按式(42)重建IBz,其中z=0,1,…,mn-1;
以i=0,z=0為例,將以N0=6個元素為單位按式(41)劃分為小段序列BI0,0={20,0,8,4,8,2},然后按式(42)重建:
IB0={20,0,8,4,8,2,24,0,15,22,31,25,31,23,28,31,20,0,15,19,27,0,23,29,30,16,7,20,1,31,0,16,3,25,30,31,15,7,27,29,28,30,30,30,30,30,30,31,0,29,27,23,14,29,27,13,22,27,10,21,10,21,10,21};
第7.2步:將所有的IBz,z=0,1,…,mn-1按式(43)轉換為FB′x′,y=(fbi′,′j)8×8,按式(45)得到FB′x,y=(fbi′,j)8×8,按式(46)得到FBx,y=(fbi,j)8×8;例如:由于z=0,所以IB0按式(43)轉換為FB′0′,0,按式(45)轉換為FB′0,0,按式(46)轉換為FB0,0,其中:
第7.3步:按式(47)對FBx,y進行逆DCT變換得到Bx,y=(bi,j)8×8,若經頻域變換后,像素值發(fā)生溢出,則當像素大于255時取255,像素小于0時取0;
第7.4步:由所有分塊Bx,y,x=0,1,…,m-1,y=0,1,…,n-1,按式(48)重建秘密圖像S=(si,j)h×w此時由于只有一個分塊,所以按式(48)重建秘密圖像S=(si,j)8×8=B0,0。
圖4~圖10是實施例,以圖3為秘密圖像,按圖1分存流程得到的含密影子圖像;圖11是實施例,按圖2重構流程由圖4~圖6恢復出秘密圖像,相對于圖3的PSNR為27.31dB;圖12是實施例,按圖2重構流程從圖4~圖7中恢復出秘密圖像,相對于圖3的PSNR為29.98dB;圖13是實施例,按圖2重構流程,從圖4~圖8中恢復出的秘密圖像,相對于圖3的PSNR為34.05dB;圖14是實施例,按圖2重構流程,從圖4~圖9恢復出的秘密圖像,相對于圖3的PSNR為37.02dB;圖15是實施例,按圖2重構流程,從圖4~圖10恢復出的秘密圖像,相對于圖3的PSNR為43.36dB;圖18是圖9遭到圖16攻擊后的圖像,圖19是圖10遭到圖17攻擊后的圖像,圖20是按圖2重構流程,從圖4~圖8,圖18和圖19恢復出的秘密圖像,相對于圖3的PSNR為36.03dB。