文獻(xiàn)標(biāo)識(shí)碼: A
DOI: 10.19358/j.issn.2096-5133.2019.04.010
引用格式:?jiǎn)堂髑?趙振洲.兼顧可用性和可靠性的可視密碼最佳方案[J].信息技術(shù)與網(wǎng)絡(luò)安全,,2019,38(4):46-49.
0 引言
SHAMIR A[1]和BLAKELY于1979年分別提出了秘密共享的概念,,其主要思想是在n個(gè)參與者之間分享一個(gè)秘密,k個(gè)(或k個(gè)以上)參與者可以恢復(fù)秘密,,而少于k個(gè)參與者則無(wú)法恢復(fù)秘密,,所以,秘密共享也稱(chēng)為(k,n)門(mén)限方案,。可視密碼[2-3]是一種依靠人眼解密的秘密共享方法,,它是將一個(gè)秘密圖像加密成n張分存圖像,n張分存圖像可以打印到膠片上,、存入電腦或移動(dòng)存儲(chǔ)器中,,且分別由n個(gè)人保存。解密時(shí)只需k個(gè)人(或k個(gè)以上)將各自的分存圖像疊加,,秘密圖像就會(huì)呈現(xiàn)出來(lái),,而少于k個(gè)人無(wú)法獲得秘密圖像的一點(diǎn)信息。
傳統(tǒng)可視密碼方法都是使用像素?cái)U(kuò)展的方法來(lái)進(jìn)行加密,,因此使得分存圖像被擴(kuò)展為秘密圖像的好多倍,,這樣不但造成存儲(chǔ)空間的浪費(fèi),也使得攜帶更為不方便,。
在傳統(tǒng)(k,n)可視密碼中,,秘密圖像中的每個(gè)像素都單獨(dú)處理,由n個(gè)人共享,,每個(gè)共享由m個(gè)黑白子像素組成,。構(gòu)建一個(gè)n×m布爾矩陣B=[Bij],當(dāng)且僅當(dāng)Bij=1時(shí)第i個(gè)共享者的第j個(gè)子像素為黑,;當(dāng)且僅當(dāng)Bij=0時(shí)第i個(gè)共享者的第j個(gè)子像素為白,。當(dāng)把投影片疊放在一起時(shí),就相當(dāng)于對(duì)于每一行都做了或運(yùn)算,。疊放后圖像的灰度值與進(jìn)行或運(yùn)算之后的向量V的漢明重量H(V )成正比,。使用者利用視覺(jué)系統(tǒng)解釋灰度值如下,如果H(V )≥d該點(diǎn)像素為黑,,如果H(V )≤d-αm該點(diǎn)像素為白,。
1 像素不擴(kuò)展的方案
ITO R[5]等人針對(duì)黑白可視密碼提出了一種不擴(kuò)展的(k,n)-threshold可視密碼方案,,當(dāng)要分享一個(gè)黑(白)點(diǎn)時(shí),便從對(duì)應(yīng)于黑(白)點(diǎn)的基礎(chǔ)矩陣中隨機(jī)選擇列,,并且將這個(gè)列向量的第i行分配給第i個(gè)分存圖像,。由于不論是黑點(diǎn)或白點(diǎn)的基礎(chǔ)矩陣,,其每一行0與1分布的比例都相同,,因此分存圖像上每一個(gè)像素,會(huì)填上黑點(diǎn)或白點(diǎn)的幾率也都一樣,,依次無(wú)法從分存圖像上猜測(cè)到有關(guān)秘密圖像的信息,。而還原圖像則靠式(1)來(lái)產(chǎn)生對(duì)比。在式(1)中,,p0和p1分別代表白點(diǎn)和黑點(diǎn)在疊加圖像上產(chǎn)生黑點(diǎn)的概率,。只要這兩個(gè)概率值差別夠大,人眼便可自動(dòng)區(qū)分疊加圖像上黑色與白色的區(qū)域,。
(1)
ITO R[5]等所提出的不擴(kuò)展模型,,在分享一個(gè)像素時(shí),是完全隨機(jī)地從基礎(chǔ)矩陣中選擇行,,雖然在整張疊加圖像上,,能夠達(dá)到式(1)的對(duì)比,但是在小區(qū)域上,,黑點(diǎn)與白點(diǎn)的分布就可能無(wú)法達(dá)到式(1)的對(duì)比,。侯永昌等人提出了像素不擴(kuò)展之灰階密碼方案[6]及像素不擴(kuò)展之彩色視覺(jué)密碼技術(shù)[7],其提出m點(diǎn)同時(shí)加密的概念,,即用m點(diǎn)同時(shí)加密來(lái)保證分存圖像的像素不擴(kuò)展,。
2 舉例說(shuō)明m點(diǎn)加密
因?yàn)榛A(chǔ)矩陣Bm×n的列數(shù)m=2,所以選擇秘密圖像上的連續(xù)兩個(gè)點(diǎn)為加密對(duì)象,,稱(chēng)這兩點(diǎn)為加密序列,,加密方法如下:
(1)當(dāng)加密序列為兩個(gè)白點(diǎn)時(shí)用矩陣M0加密,保證兩個(gè)分存圖像疊加后,,此兩點(diǎn)為一黑一白,;
(2)當(dāng)加密序列為兩個(gè)黑點(diǎn)時(shí)用矩陣M1加密,保證兩個(gè)分存圖像疊加后,,此兩點(diǎn)全黑,;
(3)當(dāng)加密序列為一黑點(diǎn)一白點(diǎn)時(shí),一半用矩陣M0加密,,一半用矩陣M1加密,。保證兩個(gè)分存圖像疊加后,此兩點(diǎn)或者是一黑一白,,或者是全黑,,且這兩種情況各占一半,。
通過(guò)總結(jié),得到(2,2)可視密碼加密規(guī)則,,其中,,e代表秘密圖像上已經(jīng)加密過(guò)的黑白各半的加密序列的個(gè)數(shù),加密規(guī)則如下:
if e mod 2<1
用M1進(jìn)行加密
else用M0進(jìn)行加密
3 兼顧可用性和可靠性的可視密碼最佳方案
侯永昌等人的多點(diǎn)加密可以較好地實(shí)現(xiàn)像素的不擴(kuò)展,,但是在解密過(guò)程中仍然存在秘密圖像的對(duì)比度不高的問(wèn)題,。結(jié)合侯永昌等人的多點(diǎn)加密,在解密的時(shí)候使用算法進(jìn)行重構(gòu),,方法是在秘密圖像的連續(xù)m個(gè)點(diǎn)中,,如果黑色像素H(V )≥d,則對(duì)應(yīng)m個(gè)點(diǎn)像素為黑點(diǎn),,否則m個(gè)點(diǎn)為白點(diǎn),。
令B0與B1分別代表對(duì)應(yīng)于白點(diǎn)與黑點(diǎn)的n×m基礎(chǔ)矩陣,加密序列的長(zhǎng)度為m,,即一次取秘密圖像上的m點(diǎn)來(lái)加密,,b代表加密序列中的黑點(diǎn)個(gè)數(shù)(0≤b≤m),eb則代表具有b個(gè)黑點(diǎn)的加密序列已加密過(guò)的個(gè)數(shù),,加密程序如下:
(1)令eb=0 for b=1,2,…,m;
(2)由秘密圖像中取出尚未加密的加密序列,,并計(jì)算其黑點(diǎn)個(gè)數(shù)b;
(3)將基礎(chǔ)矩陣B 做列向量隨機(jī)重排,其中矩陣B 根據(jù)下列規(guī)則決定:
if eb mod m<b
B=B1
else B=B0
(4)eb=eb+1;
(5)重復(fù)步驟(2)~(4)直到秘密圖像上的所有像素都加密完畢,。
解密重構(gòu)過(guò)程如下:
①令C為k個(gè)分享者的分存圖像疊加后的圖像,,D為C重構(gòu)后的圖像;
②存在整數(shù)p、q,,使m=p×q,,且|p-q|最小;
③對(duì)于B中的m像素,計(jì)算黑點(diǎn)個(gè)數(shù):
for x=p:-1:0
for y=q:-1:0
計(jì)算解密圖像C中m=p×q個(gè)點(diǎn)C((p×i-x),(q×j-y))的黑點(diǎn)個(gè)數(shù)b
end
end
(4)如果黑點(diǎn)個(gè)數(shù)大于閾值d,重構(gòu)圖像D對(duì)應(yīng)的m個(gè)點(diǎn)為黑點(diǎn),,否則為白點(diǎn):
for x=p:-1:0
for y=q:-1:0
ifb≥d
D((p×i-x),(q×j-y))=1;
else
D((p×i-x),(q×j-y))=0;
endif
end
end
(5)重復(fù)步驟(3)~(4)直到秘密圖像上的所有像素都重構(gòu)完畢,。
4 兼顧可用性和可靠性的可視密碼最佳方案的實(shí)例
以(2,3)可視密碼來(lái)具體說(shuō)明本文的方法,,(2,,3)可視密碼的基礎(chǔ)矩陣如下:
在傳統(tǒng)的可視密碼中,對(duì)于加密圖像逐點(diǎn)加密,,如果該點(diǎn)為白點(diǎn),,則將B0進(jìn)行隨機(jī)列置換后得到C0,將C0的第一行分給第一個(gè)分享者,,將C0的第二行分給第二個(gè)分享者,,將C0的第三行分給第三個(gè)分享者;如果該點(diǎn)為黑點(diǎn),,則將B1進(jìn)行隨機(jī)列置換后得到C1,,將C1的第一行分給第一個(gè)分享者,,將C1的第二行分給第二個(gè)分享者,將C1的第三行分給第三個(gè)分享者,。這樣分享圖像和解密圖像都將擴(kuò)大三倍,,產(chǎn)生像素?cái)U(kuò)展。
對(duì)于(2,,3)可視密碼,,加密算法為:
(1)令eb=0 for b=1,2
(2)由秘密圖像中取出尚未加密的加密序列,并計(jì)算其黑點(diǎn)個(gè)數(shù)b.
(3)將基礎(chǔ)矩陣B做列向量隨機(jī)重排,,其中矩陣B根據(jù)下列規(guī)則決定:
if eb mod 3<b;
B=B1;
else B=B0;
(4)eb=eb+1;
(5)重復(fù)步驟(2)~(4)直到秘密圖像上的所有像素都加密完畢,。
圖1為加密圖像,在加密圖像上選取連續(xù)3個(gè)點(diǎn),,如果3個(gè)點(diǎn)中有0個(gè)黑點(diǎn),一直使用B0加密,;如果3個(gè)點(diǎn)中有1個(gè)黑點(diǎn),,則第1次使用B1加密,后2次這種情況使用B0加密,;如果3個(gè)點(diǎn)中有2個(gè)黑點(diǎn),,則第2次使用B1加密,后1次這種情況使用B0加密,;如果3個(gè)點(diǎn)都為黑點(diǎn),,一直使用B1加密。使用上面的方法得到分存圖像,,如圖2所示,,分存圖像沒(méi)有像素?cái)U(kuò)展。將任意兩個(gè)分存圖像進(jìn)行疊加,,得到解密圖像C,,如圖3所示,解密圖像沒(méi)有像素?cái)U(kuò)展,。(本文中所有圖像都縮小為原圖像的50%,。)
將解密圖像利用算法進(jìn)行重構(gòu),重構(gòu)過(guò)程如下:
(1)令C為k個(gè)分享者的分存圖像疊加后的圖像,,D為將C重構(gòu)后的圖像,;
(2)存在整數(shù)p、q,,使3=p×q,,且|p-q|最小,則p=1,q=3,;
(3)對(duì)于B中的3像素,,計(jì)算黑點(diǎn)個(gè)數(shù):
for y=3:-1:0
計(jì)算解密圖像C中3個(gè)點(diǎn)C(i,(3×j-y))的黑點(diǎn)個(gè)數(shù)b
end
(4)如果黑點(diǎn)個(gè)數(shù)大于閾值2,,重構(gòu)圖像D對(duì)應(yīng)的m個(gè)點(diǎn)為黑點(diǎn),否則為白點(diǎn):
for y=3:-1:0
ifb≥2
D(i,(3×j-y))=1;
else
D(i,(3×j-y))=0;
endif
end
(5)重復(fù)步驟(3)~(4)直到解密圖像上的所有像素都重構(gòu)完畢,。
C為解密圖像,,計(jì)算C中連續(xù)3個(gè)點(diǎn)的黑點(diǎn)個(gè)數(shù),如果黑點(diǎn)個(gè)數(shù)大于等于2,,則該點(diǎn)為黑點(diǎn),;否則為白點(diǎn)。得到的重構(gòu)圖像如圖4所示,,重構(gòu)圖像中沒(méi)有像素?cái)U(kuò)展,,且有更好的視覺(jué)對(duì)比度。對(duì)于(2,3)可視密碼,,本方案和其他方案的對(duì)比如表1所示,。從表1中可以看到,本方案像素?zé)o擴(kuò)展,,所以圖像也不會(huì)有變形,,且達(dá)到最好的黑白像素對(duì)比度。
5 結(jié)論
本文在兼顧可用性和可靠性的前提下,,提出了實(shí)現(xiàn)可視密碼的最佳方案,,在加密時(shí)利用m點(diǎn)加密實(shí)現(xiàn)了分存圖像的像素不擴(kuò)展,在解密時(shí)利用重構(gòu)得到更優(yōu)對(duì)比度的重構(gòu)圖像,,并以(2,,3)可視密碼為例說(shuō)明了該方法的優(yōu)點(diǎn)。該方法雖然避免了像素?cái)U(kuò)展且對(duì)比度很好,,但是解密圖像黑色像素邊緣會(huì)稍有模糊,,如何設(shè)計(jì)更優(yōu)的像素不擴(kuò)展算法,是今后需要努力的方向,。
參考文獻(xiàn)
[1] SHAMIR A.How to share a secret[J].Communications.ACM,1979,22(11):612-613
[2] NAOR M,SHAMIR A.Visual cryptography[J]. Advance in cryptology Euro crypt′94.Lecture Notes in Computer Science,Berlin:Springer,Berlin, 1995,950:1-12.
[3] DROSTE S.New results on visual cryptography[J]. Lecture Notes in Computer Science, Berlin:Springer-Verlag, 1996,1109:401-415.
[4] ATENIESE G,BLUNDO C,DE SANTIS A,et al.Visual cryptography for general access structures[J]. Information and Computation,1996,129(2):86-106.
[5] ITO R, KUWAKADO H,TANAKA H.Image size invariant visual cryptography.IEICE Transactions on Fundamentals of Electronics Communications and Computer Science, 1999, E82-A(10): 2172-2177.
[6] 侯永昌,許慶升. 像素不擴(kuò)展之灰階視覺(jué)密碼方法,,資管評(píng)論,2004,,12(13):107-1240
[7] 侯永昌.像素不擴(kuò)展之彩色視覺(jué)密碼技術(shù)[J].Journal of Information,Technology and Society,2004(1):95-110.
[8] 喬明秋,,朱悅冬,劉煥平.多秘密共享可視密碼及在防止欺騙上的應(yīng)用[J].哈爾濱師范大學(xué)自然科學(xué)學(xué)報(bào),,2007(2):61-65.
[9] 張舒,艾小川.一種具有理想對(duì)比度的可視密碼方案[J]. 計(jì)算機(jī)與數(shù)字工程,,2015(8):1462-1464.
[10] 李春艷,基于像素不擴(kuò)展視覺(jué)密碼的水印算法[J]. 大理大學(xué)學(xué)報(bào),2017(6):19-21.
[11] 王洪君,馬冬鶴,張恩綺,等.一種無(wú)像素膨脹的(3,3)視覺(jué)密碼方案[J]. 武漢大學(xué)學(xué)報(bào)(工學(xué)版),2018(12):1123-1128.
[12] 沈剛,付正欣,郁濱.基于XOR的(2,2,,n) 多秘密視覺(jué)密碼[J]. 計(jì)算機(jī)應(yīng)用研究,,2012(10):3797-3799.
(收稿日期:2019-01-20)
作者簡(jiǎn)介:
喬明秋(1982-),通信作用,女,,碩士研究生,,講師,主要研究方向:密碼學(xué),、信息安全,。E-mail: [email protected]。
趙振洲(1978-),,男,,碩士研究生,副教授,,主要研究方向:數(shù)據(jù)恢復(fù),、信息安全。