1.一种基于区块链的秘密图像共享和恢复方法,其特征在于,具体包括秘密图像共享和秘密图像恢复;
所述秘密图像共享包括如下步骤:
步骤1:对用户进行编号;由秘密图像生成一组影子图像;第i个用户拥有第i张影子图像Sharei,i=1,2,…,n1;n1表示秘密图像共享者的总个数;所述用户为秘密图像的共享者;
步骤2:用户设置BFV加密方案中多项式环Rq的次数N和明文的模q;并基于N和q随机生成BFV加密方案的公钥Pk和私钥Sk;将公钥Pk,用户编号集合和BFV恢复方案存储到智能合约中;
步骤3:采用BFV加密方案对第i张影子图像进行加密处理,得到Sharei对应的影子图像密文Fi;
步骤4:第i个用户将Fi上传到IPFS系统和区块链中,IPFS系统返还Fi的存储地址Ci,第i个用户将Ci上传到智能合约中;当所有用户上传完毕后,秘密图像的共享完成;
秘密图像恢复
步骤A:当某用户作为申请者向智能合约发送秘密图像恢复的申请时,智能合约向其他用户广播恢复申请事件;所述其他用户为所有秘密图像的共享者中除申请者以外的用户;
步骤B:其他用户监听到申请事件后,选择性地将影子图像的访问权授权给智能合约;
步骤C:如果授权数量大于等于授权阈值t,则智能合约按照授权时间顺序选择前t个授权的用户,并向整个区块链广播恢复任务,转步骤D;否则恢复申请失败,停止恢复;
步骤D:智能合约在区块链中选择z台计算机作为代理计算机,智能合约将前t个授权的用户的影子图像的存储地址、前t个授权的用户的编号集合、公钥Pk和BFV恢复方案发送给代理计算机;
步骤E:代理计算机通过收到的影子图像的文件地址,从IPFS下载对应影子图像的密文;在密文域执行BFV恢复方案,恢复秘密图像;获得密文域的秘密图像E(SI);然后z台代理计算机均将E(SI)发送给智能合约;
步骤F:智能合约校验z台代理计算机的恢复结果,如果全都相同,则智能合约将E(SI)发送给申请者,申请者进行解密,并重构秘密图像SI;否则返回步骤D重新选择计算机。
2.根据权利要求1所述的一种基于区块链的秘密图像分享方法,其特征在于,所述步骤
1中由秘密图像生成一组影子图像具体为:将秘密图像的像素均匀的划分成R’组像素,每组像素组中包含t个像素,并构造如下多项式:t‑1
fR(x’)=p1+p2x’+...+ptx’ (mod P)其中,fR(x’)表示与第R组像素组对应的多项式,mod P表示模数P;pt表示第R组像素组中的第t个像素;x’为变量;R=1,2,...,R’;
将第i个用户的用户编号xi作为变量依次代入R’个多项式中,得到每个多项式的输出,将每个多项式的输出组合后作为第i个用户对应的第i张影子图像Sharei。
3.根据权利要求1所述的一种基于区块链的秘密图像共享和恢复方法,其特征在于,所述职能合约中设有授权缓存表,用户能够通过授权表预审先设置授权权限。
4.根据权利要求1所述的一种基于区块链的秘密图像共享和恢复方法,其特征在于,所述步骤3具体为:将第i张影子图像Sharei的像素均匀的拆分成若干个长度为 的子向量;采用公钥Pk对每个子向量进行加密,获得该字向量对应的子向量密文;对第i张影子图像下的所有子向量密文进行打包,得到第i张影子图像对应的密文Fi。
5.根据权利要求4所述的一种基于区块链的秘密图像共享和恢复方法,其特征在于,所述步骤E中的恢复秘密图像具体为:采用公钥Pk将第r个授权的用户编号xr加密成密文Xr;其中r=1,2,...,t;构造如下拉格朗日多项式:其中,Vrj表示第r个授权的用户对应的影子图像Sharer中的第j个子向量密文;j=1,
2,...,len;len表示影子图像Sharer中子向量的总个数; 其中P_siz为Sharer的尺寸, 为向上取整;x为变量;Xk表示第k个授权的用户编号xk对应的密文Xk;
在多项式环Rq上引入费马小定理,因此Rq上存在逆元invK使得P‑2
invK=K ,其中 在上述拉格朗日多项式的等式两边同invK*K,得到如下表达式:
其中,Ln′(x)=Ln(x)*invK*K,Crj=Vrj*Kr*invK, Drk’为公式1中第r个k’
连乘多项式 展开后的x 的系数;对公式2进行求解,得到公式2系数Ak′j,Ak′j表示k’
对公式2进行第j次求解后得到的公式2中x 的系数; 将所有的Ak′j进行组合,组合后的结果为E(SI)。
6.根据权利要求5所述的一种基于区块链的秘密图像共享和恢复方法,其特征在于,当对公式2进行求解,求解Drk′时,如果t小于等于预设的阈值Q时,对Drk′直接求解;否则采用前缀和算法求解Drk′,具体为:令 为连乘多项式,y为变量,ae为常数项,n为该连乘多项式中常数项的总个数;对g(y)进行展开,表达式如下所示:其中, 为第i1个常数项, 为第i2个常数项, 为第io个常数项;o=0,1,2,...,n;
n‑o
采用Dn‑o表示展开后的多项式中的y 系数:引入前缀和变量 动态地记录Dn‑o的前mn‑o项的和,前缀和 各项之间关系为: 其中 为公式3中Dn‑o的第mn‑o项,引入变量之后,将公式3转化为如下方程:
方程中Dn‑o为通项公式,在求解Dn‑o的过程中记录 便能够求解系数Dn‑o‑1。
7.根据权利要求5所述的一种基于区块链的秘密图像共享和恢复方法,其特征在于,所述步骤F中申请者进行解密,并重构秘密图像SI具体为:申请者对密文E(SI)解密获得与Ak’j对应的密文向量ak’j,每个密文向量中包括N/2个像素,将k’作为行,j作为列,构建t*len的矩阵,针对该矩阵中编号为j的j列,从上往下取该列中行编号为k’的行的密文向量ak’j的第j’个像素ak’j,j’,j’=1,2,...,N/2;将取得的所有像素依次组成像素向量vSI=[a01,1,a11,1,...,at‑11,1,...,a0len,N/2,a1len,N/2,...,at‑1len,N/2];a01,1表示密文向量a01中第一个像素,a11,1表示密文向量a11中第一个像素,at‑11,1表示密文向量at‑11中第一个像素,a0len,N/2表示密文向量a0len中第N/2个像素,a1len,N/2表示密文向量a1len中第N/2个像素,at‑1len,N/2表示密文向量at‑1len中第N/2个像素。