一种素数域多门限渐进秘密图像分存及重构方法与流程

文档序号:12126566阅读:397来源:国知局
一种素数域多门限渐进秘密图像分存及重构方法与流程

本发明属于图像信息安全和数字图像信号处理交叉领域,涉及一种信息分存方法,特别涉及一种素数域多门限渐进秘密图像分存及重构方法。



背景技术:

现有图像信息分存技术主要源自密码学中的秘密共享,结合秘密共享方案,基于(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)涉及到域上多项式环的加减乘除运算,涉及较大的运算代价。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的多个系数来分存秘密图像像素和它的配对像素,使得方案具备一定攻击后的修复能力,但所提方案的认证信息位较少,秘密像素的分存信息最多存储两份且用最小覆盖矩形来确定被攻击的区域,导致所提策略的恢复能力偏低。为提高攻击后的修复能力,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个编号连续的分存单元才能恢复出秘密图像的2个秘密像素和备份图像的2个备份像素;2×4分块中的任意一个像素被攻击,即导致2个秘密像素及其备份图像的2个像素共24位信息不可用,从而该方法无法抵制任意微小噪声攻击。

同时以上所给出的图像分存方案分存方案单一,不能充分有效地利用回收到的分发信息和根据重要程度的不同对秘密图像进行充分有效的重建,对秘密图像的渐进恢复质量十分有限,在很多场合,往往需根据参与者数量的不同以及待分存信息的重要程度来渐进地恢复出不同视觉质量的秘密图像。

针对渐进分存,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份影子图像,并通过分发影子图像中可恢复的划分单位数量来对秘密图像进行(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.)结合特征图给出了基于感兴趣区域带认证的渐进分存方法,随着影子图像数量的增多,对图像感兴趣区域进行渐进恢复,但其本质出发点同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系数所在位平面的重要程度来分配不同的分存门限来实现渐进分存,但相对于空域像素,频域系数的重要程度通常和系数频率,即位置息息相关,单纯地依赖频域系数划分的位平面重要程度对图像的视觉调控作用依然十分有限。



技术实现要素:

本发明的目的在于克服现有技术缺陷,提供一种素数域多门限渐进秘密图像分存及重构方法,充分利用分发影子图像对秘密图像进行渐进分存并提升视觉重建质量。

为实现上述目的,本发明采用以下技术方案:

一种素数域多门限渐进秘密图像分存方法,包括以下步骤:

第1步:由秘密持有者配置分存默认的参数,包括:320位2进制码长分配表M=(mi,j)8×8,系统模数大素数p,分发份额数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个分发影子图像对应的置乱前矩阵,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分发给对应的保管者进行保管,利用系统的默认参数配置重构系统并销毁中间参数。

进一步,在第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()为比特位串之字形扫描函数,执行的功能是将输入矩阵的元素按其2进制存储形式以之字形扫描顺序进行连接;

第4步中将IBx,y转换为1维序列Ix,y的具体方法为式(12):

Ix,y=BCut(IBx,y,5) (12)

式(12)中,函数BCut()是比特位串分割函数,其中第1个参数对应为比特位串,第2个参数为比特位串的分割单位,式(12)执行的功能是通过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,分发份额数为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()为序列之字形扫描函数,执行的功能是将矩阵扫描为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,若经频域变换后,像素值发生溢出,则当像素大于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)。

本发明同现有技术优点分析:

①传统图像分存方案单一,不能充分有效地利用分发信息对秘密图像进行充分有效的重建,对秘密图像恢复质量十分有限。传统基于图像分块、像素比特位分组以及分块分组混合类渐进分存方法都是将秘密图像划分的小块作为恢复单位进行恢复,对于基于图像分块和分块分组混合模式将无法对图像进行整体意义的从模糊到清晰的渐进恢复,而对于像素比特位分组模式下也仅能提供有限数量的渐进恢复;而结合空域像素位平面重要程度整体渐进分存方法对图像视觉调控作用十分有限,而单纯地依赖频域系数简单位平面划分对图像视觉调控作用依然十分有限。同以上方法不同,本发明首先对秘密图像进行分块频域变换,对每个分块频域系数进行随机量化,按之字形扫描顺序和频带重组形成多个划分频带,对不同频带使用不同门限的分存从而避免了单纯依赖频域系数简单位平面划分所带来的图像视觉调控的低效率,不仅可有效地对图像进行整体渐进分存,而且通过分存时引入频带备份,恢复时通过多门限确定可重建频带,结合1次和2次频带备份表还可有效地提高影子图像的渐进恢复质量。

②传统的分存方案中,秘密持有者设定的参与值通常默认为1,2,…,N,存在较大安全风险,在本发明中,引入随机参与值,从而使得即使密钥key在较低门限下重建,由于分发给每个参与者的随机参与值无法预知而不存在分存密钥subkey1,subkey2,…,subkeyN泄露的风险,同时也无法推知其他用户分发影子份额。为提供足够的安全性,本发明中所有处理环节中的随机数生成都增强了安全性,例如秘密图像分块频域变换对应的随机量化阵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绑定,从而每个用户无法推知自己的分发份额,同时结合第3方存储的子密钥MD5值也无法对自己掌管的子密钥进行作弊。

③所提方法可充分有效地利用素数域Lagrange多项式的多个系数来对当前秘密信息、当前备份信息、上一频带的备份信息(如果上一频带存在)和相应认证信息进行分存,在提高认证准度的同时也增强了图像修复能力。

④本发明有多重机制来保证恢复的准确性: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为案例实施环境,结合附图对本发明实施方式进行详细说明,但不局限于本实施案例,其中图1是分存流程图,图2是重构流程图。以下以具体实例对分存过程进行说明:

第1步:由秘密持有者配置分存系统默认的320位码长分配表M,选取大素数p=1000000007作为系统默认模数,设置子密钥分发份额数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个分发影子图像对应的置乱前矩阵,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分发给对应的保管者进行保管,利用系统的默认参数配置重构系统并销毁中间参数。

以下以具体实例对重构过程进行说明:

第1步:选取重构系统配置的码长分配表模数p=1000000007,分发份额数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,若经频域变换后,像素值发生溢出,则当像素大于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。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1