基于工业云上图像数据的可恢复性方法与流程

文档序号:20922143发布日期:2020-05-29 14:17阅读:206来源:国知局
基于工业云上图像数据的可恢复性方法与流程

技术领域:

本发明是一个可以使用户检验从云上下载的图像数据的完整性,随后还可以在云上数据发生损坏时,使其恢复的方法。属于数据恢复领域。



背景技术:

近年来,随着信息技术和网络技术的飞速发展,全球的数据呈现了爆发式的增长。在工业的系统中,统计表明,工业图像数据的增长相对整个工业领域的数据而言,占了很大的一部分比例。面对快速增长的海量数据,传统的本地存储技术已经无法满足存储的要求。因此,云存储技术应运而生。作为新兴的存储技术,云存储具有存储容量大,存储方式灵活,访问便捷等特点,正在逐步取代本地存储技术,收到越来越多客户的青睐。

云存储的云服务提供商(cloudserviceprovider,csp)是一个基于云计算技术构建的统一存储资源的平台,可以为客户端提供海量的存储空间。相对于本地存储,云存储具有如下的优势:(1).节约成本:客户端通过将数据上传到云上,用户无需购买本地存储设施,也无需搭建和维护本地存储系统,减少了在硬件,软件和运维上的投入。(2).稳定:相对于一般用户和中小型企业,csp具有专业的技术和强大的实力,可以提供稳定的存储服务。(3).弹性扩容:用户可以按需购买所需要的存储空间,等等。由于云平台有很多优点,因此,越来越多的个人和企业级用户都将本地数据存储到云上。

然而,虽然云存储有众多的优势,但是它也面临着很多安全性的问题。(1).来自黑客等攻击装的恶意攻击会导致存储在服务器中的数据发生篡改和损坏。(2).由于自然灾害,软硬件故障等因素,可能导致云上的数据发生丢失等现象。(3).由于csp的管理员无意的操作失误,或者csp管理员有意的删除云上的数据信息,而使云存储服务器上的数据不完整。

本发明针对少量的图片(这里面假定一张图片)存储到工业云上,首先,提出了一个系统模型,引入了第三方仲裁可信机制。该机制主要的作用是让客户端和csp都遵循规则:在csp损坏数据,或者客户端为了向csp索要赔偿,在上传数据的时候就使数据缺失的时候,第三方仲裁机制可以代替客户端和csp向对方索要赔偿。其次,通过使用可逆水印算法等技术实现了用户在从云上下载数据时,检验其数据的完整性。再次,当客户端从csp上下载的数据发生了损坏,我们向第三方仲裁控诉csp之外,并且由第三方tpar再次检查服务器以查明m个运行良好的服务器,并且将运行良好的数据返回给用户,最终可以使用户通过健康的数据来恢复被损坏的数据。



技术实现要素:

本发明概括为如下几步:

步骤(1).建立一个系统模型,引入第三方仲裁机制。

系统模型,包含三个实体:客户端,云服务提供商(cloudserviceprovider,csp)和tpar。其中客户端是一个有大量图像可以外包的实体。csp是管理多个云存储服务器的实体,可以为客户端提供大量的存储资源。客户端和csp的数据都提供给外包进行加密。tpar是客户端和csp指定的争端仲裁专家。

客户端将待保存的图像数据上传给csp,当csp接收到图像数据之后,就将接收成功的结果反馈给客户端,客户端收到结果之后,删除本地文件。

当客户端从csp上下载图像的时候,检验其图像数据的完整性,并且当客户端从csp上下载的图像数据不完整的时候,由第三方再次检查csp上的m个运行良好的服务器,并且将这些服务器返回给用户,用户通过这些健康的服务器来恢复被损坏的数据。

步骤(2)数据完整性和恢复性的初始化

g1,g2,gt是素数阶为p的乘法循环群,选取g1,g2来构成双线性映射e:g1×g2->gt(g1×g2映射到gt)。其中g是g2的生成元。

h(.)是一个安全的图映射到点的哈希函数:{0,1}*->g1,即({0,1}*映射到g1),这个哈希函数将图中的字符串映射到g1的每一个元素中。

h1:t->g和h2:z->g是安全散列函数,分别表示为t映射到g,z映射到g,其中t∈{(i,k)|1≤i≤n,1≤k≤n/m},z代表一个整数集合。

密钥生成,用于验证完整性。

tpar选择一个较大的素数p传给系统模型中的客户端和csp,然后客户端将安全参数k作为输入,选择一个元素α属于zp,一个随机数x属于zp,并且计算v属于gx。该计算输出了一个私钥sk=x和一个公钥pk=(α,p,g,v),客户端再在本地存储sk,将pk发送到csp和tpar。

整体图像和分块图像的初始化

待上传图像为图像i,下述方法中将这副图像生成整体图像的水印,以及分块编码之后的水印,因此将整体水印定义为:

其中id为用于区分图像i的唯一标识码,ir=imodp,iq=i/p(mod代表除余)

图像i分块编码之后进行水印,将图像i划分成了大小相同且不重叠的块b1,b2,...,bn。其中bi属于zp,对于每个块bi(i∈1,2,...,n),水印生成形式为:

wi=h(id,i,bi)x

其中id是用于区分图像i的唯一标识码,i是每个块的索引,bi表示当前块。

步骤(3).审计证据的生成

步骤(3.1).生成整体图像的水印

根据算法(1)中的可逆水印算法,客户端将整体的图片i生成一个水印w’id。

步骤(3.2).根据算法(2)中的算法,将图像i进行分块。

步骤(3.3).将分块的图像进行编码

根据算法(2),将分块的各个图像进行编码bi。因此再上述步骤结束之后,将获得两种数据,一个是整体的水印图像w’id,一个是对原始图像i分块编码后的分块图像编码。

步骤(3.4).将原始图像i进行分块后的分块编码图像进行水印

通过算法(1)中的可逆水印算法,将分块编码的图像编码块通过水印算法生成水印w’i,并且将整体的水印图像w’id保存在第一个块中,最终水印图像的输出为i’。

步骤(3.5).将水印后的编码块上传到csp

客户端将水印后的编码块上传到csp,csp成功接收到了客户端上传的数据,并且已经成功反馈给客户端,此时客户端已经删除本地数据。此时,得到最终的水印图像。

步骤(4).审计完整性验证

步骤(4.1).客户端从csp下载数据

客户端从csp上下载数据的时候,先下载所有水印的图像编码块,并且开始进行检查。

步骤(4.2).通过算法(2)中的水印提取算法,将所有水印的图像编码块提取水印

当客户端下载完所有的块,分别提取整体图像的水印w’id和图像分块编码的水印w’i,这时得到两种数据,恢复后的图像i”和分块编码的编码块。

步骤(4.3).验证整体图像的完整性

当客户端从csp上下载下来之后,通过提取水印,如果整体的图像i”与原始的图像i一致,那么说明从csp上下载的图像是完整的,否则说明图像数据受到了损坏,这时需要进行数据恢复。

其中,验证是否完整的公式如下:

其中i”r=i”modp,i”q=i”/p(mod是代表除余的符号),e为前面初始化中的双线性映射。

当该等式成立的时候,说明图像是完整的,当该等式不成立的时候,说明图像数据被损坏,这时执行下面步骤对图像数据进行恢复。

步骤(5).数据恢复

当检验到整体图像不完整的时候,接下来需要检验哪些编码块的数据损坏,当检测到损坏的编码块的时候,使用算法(2)中的算法进行恢复。

其中,检验哪些编码块的数据损坏公式:

e(w'i,g)=e(h(id,i,bi),v)

如果相等,说明该数据块没有损坏,否则,该数据块损坏。

通过上述步骤,实现了数据的恢复操作。

算法(1).水印的初始化,嵌入和提取算法介绍

算法(1.1).可逆水印算法的初始化,包括初始化dct系数以及重排序矩阵h,dct系数用于图像压缩;

进一步得,dtc系数(图像压缩使用):对于一般的图像分块,dct系数变换采用8*8分块,将灰度图像转换为dct系数矩阵之后,该矩阵的左上角代表的低频分量,右下角代表的是高频分量,下述算法中的高频dct系数是人为选择的。

具体选择过程为:

将图像i分成大小为8×8的块,并将每个块转换为dct系数。其中,一个随机选择的8×8的块,对其按照z字形状进行标号,最终所选择的高频dct系数从第36位到第63位,其总数为28。然后重新排序成4×7块(该矩阵不需要z字形,从左到右,从上到下,由小到大依次排列即可)。

设h为大小为上述生成的4×7的矩阵。h中的每个元素记为h(i,j),i∈{1,2,3,4},j∈{1,2,…7}。首先,分别求出最大值和最小值a和b:a=max{h(i,j)}i∈{1,2,3,4},j∈{1,2,…,7},b=min{h(i,j)}i∈{1,2,3,4},j∈{1,2,…,并分别记录各自的位置。

将最大值和最小值之间的差k定义为:

k=a-b

中位数mp为:

在水印嵌入之前,通过k来扩充最大值和最小值,生成a'和b':

a'=a+k

b'=b-k

如果矩阵h中存在不止一个极大值或极小值,按照从左到右、从上到下的顺序选择遇到的第一个最大值或最小值,其他的不变。

算法(1.2).可逆水印算法的嵌入操作

虽然在设置过程中,最大值和最小值都被扩展了,但它们的位置仍然保持不变。具体的,对于一个8×8的块,首先将其转换成dct域,然后将其嵌入过程如下:

1)提取其高频dct系数,得到大小为4×7的重排序矩阵h。

2)在矩阵h中,求出最大值a’和最小值b’,因为他们是用来表示k的,因此不嵌入水印。

3)扫描矩阵h的行和列,对于每一个既不是最大值也不是最小值的元素h(i,j),检查将要嵌入的像素位,像素位只能是0或者1。

如果像素位为‘1’且h(i,j)>=mp,则更新值的方式为:

如果位是‘1’且h(i,j)<mp,则更新值的方式为:

α介于1~2之间,用来确保a<h‘(i,j)<a',或者b'<h‘(i,j)<b,这取决于h(i,j)与mp的关系。

如果被嵌入的位为‘0’,则:

h'(i,j)=h(i,j)

上述做法,块的嵌入总容量为高频dct系数-2,其中-2是因为最大值和最小值用来做标记。

对所有分块后的图像都进行这种操作。

算法(1.3).可逆水印算法的提取操作

提取算法如下:

1)先将8×8有水印的块转成dct域,提取其高频dct系数,得到大小为4×7的重排序矩阵h。

2)在矩阵h中,找到最大值a’和最小值b’。根据a’和b’计算k:

3)扫描h’(i,j)中的行和列

如果是最大值:

h(i,j)=h'(i,j)-k

如果是最小值:

h(i,j)=h'(i,j)+k

否则,当h'(i,j)≥a+△或者h’(i,j)≤b-△,并且像素位为‘1’时:

△是一个很小的值,用来消除α引入的误差。

为了实现提取水印,需要满足应该让

因此:

所以设置:

当b<h'(i,j)<a,并且像素位为‘0’时:

h(i,j)=h'(i,j)

最终,通过对恢复后的dct系数进行反变换,提取水印位元,对原始图像块进行无失真恢复。

算法(2).数据的分块编码及数据恢复方法

算法(2.1).初始化操作

2.1.1.信息分散算法(ida):是一种用于重建分割数据块的算法。它随机选择一个n*m系数矩阵用于编码原始数据。任何m编码块都可以使用以下矩阵属性检索原始数据。

在矩阵乘法操作中,如果有一个方程a×b=c;其中a、b、c表示矩阵(矩阵a是可逆的),矩阵b可得:

在ida中,a为系数矩阵,b为原始数据块矩阵,c为编码后的数据块矩阵。

2.1.2.系数矩阵的求解

用户选择n个系数向量ai=(ai1,ai2,...,aim)∈z(1≤i≤n)然后把这些向量组合成系数矩阵m=[ai,j](1≤i≤n,1≤j≤m),

算法(2.2).对图像进行存储操作用户将文件f={b1,b2,…,bn}分为n/m个块,每个块中有m个扇区。然后划分文件f={(b1,…,bm),(bm+1,…,b2m)…(…,bn)},第k个块用sk进行表示,表示成:sk=(b(k-1)m+1,b(k-1)m+2,…,bkm)(1<=k<=n/m)。

在对文件进行分区之后,用户使用blockgen算法来计算编码数据块,即对每一个块中的各个扇区进行编码数据的计算。然后用户通过enc算法将系数向量加密为密文,之后将他们组合成标签。

到此,完成了分块编码,以及编码块的存储。

算法(2.3).当数据块丢失时,通过编码实现其恢复操作

当收到损坏警告时,用户要求tpar在csp上寻找m个运行良好的服务器进行检索。然后tpar将m个健康服务器中存储的编码数据块和相应的系数向量返回给用户。用户使用dec算法对系数向量进行解密,得到系数矩阵a,然后使用inverse算法计算a的逆矩阵。之后使用retrieval算法对原始数据块进行重建,自此完成了整个数据恢复。

blockgen算法:让数据块和系数矩阵按如下方式进行矩阵乘法运算。

cik=ai*sk=ai1*b(k-1)m+1+…+aim*bkm

其中1≤i≤n,1≤k≤n/m,这样操作之后将获得文件fi*={ci1,ci2,...,cin/m},编码数据块矩阵中的第i行数据块将存储在第i个存储服务器中;

enc算法:用户使用密钥对系数向量进行加密,加密方式如下:

其中1≤i≤n。

dec算法:客户端从tpar接收到系数矢量后,使用系统密钥kenc对矢量解密如下:

其中1≤i≤m.随后将这些向量组成一个系数矩阵,这样一个m×m的矩阵a=(aij)1≤i,j≤m就得到了;

inverse算法:客户端通过a计算a的可逆矩阵a-1=(aij)1≤i,j≤m,这里面a-1的第i行是(ai1,ai2,...,aim);

retrieval算法:客户端将编码的数据块放入矩阵中,通过使用矩阵的属性,计算如下:

bj=αi1·c1k+…+aim·cmk

其中1≤j≤n,1≤k≤n/m,1≤i≤m。通过上述,可知i=(jmodm),

附图说明:

图1a.上传流程图

图1b.下载流程图

图2:系统模型

图3:可逆水印算法原始图

图4:可逆水印算法压缩之后的图

具体实施方式

该发明目前的使用背景是建立在工业云上的图像数据的恢复方法,目前我们假设仅上传少量的图片,不考虑一次上传大量图片。具体工作的流程图如图1所示,该发明的方法如下:

步骤(1).建立一个系统模型,引入第三方仲裁机制。

系统模型,包含三个实体:客户端,云服务提供商(cloudserviceprovider,csp)和tpar。其中客户端是一个有大量图像可以外包的实体。csp是管理多个云存储服务器的实体,可以为客户端提供大量的存储资源。客户端和csp的数据都提供给外包进行加密。tpar是客户端和csp指定的争端仲裁专家。

客户端将待保存的图像数据上传给csp,当csp接收到图像数据之后,就将接收成功的结果反馈给客户端,客户端收到结果之后,删除本地文件。

当客户端从csp上下载图像的时候,检验其图像数据的完整性,并且当客户端从csp上下载的图像数据不完整的时候,由第三方再次检查csp上的m个运行良好的服务器,并且将这些服务器返回给用户,用户通过这些健康的服务器来恢复被损坏的数据。

系统模型的显示效果如图2所示。

步骤(2)数据完整性和恢复性的初始化

g1,g2,gt是素数阶为p的乘法循环群,选取g1,g2来构成双线性映射e:g1×g2->gt(g1×g2映射到gt)。其中g是g2的生成元。

h(.)是一个安全的图映射到点的哈希函数:{0,1}*->g1,即({0,1}*映射到g1),这个哈希函数将图中的字符串映射到g1的每一个元素中。

h1:t->g和h2:z->g是安全散列函数,分别表示为t映射到g,z映射到g,其中t∈{(i,k)|1≤i≤n,1≤k≤n/m},z代表一个整数集合。

密钥生成,用于验证完整性。

tpar选择一个较大的素数p传给系统模型中的客户端和csp,然后客户端将安全参数k作为输入,选择一个元素α属于zp,一个随机数x属于zp,并且计算v属于gx。该计算输出了一个私钥sk=x和一个公钥pk=(α,p,g,v),客户端再在本地存储sk,将pk发送到csp和tpar。

整体图像和分块图像的初始化

待上传图像为图像i,下述方法中将这副图像生成整体图像的水印,以及分块编码之后的水印,因此将整体水印定义为:

其中id为用于区分图像i的唯一标识码,ir=imodp,iq=i/p(mod代表除余)

图像i分块编码之后进行水印,将图像i划分成了大小相同且不重叠的块b1,b2,...,bn。其中bi属于zp,对于每个块bi(i∈1,2,...,n),水印生成形式为:

wi=h(id,i,bi)x

其中id是用于区分图像i的唯一标识码,i是每个块的索引,bi表示当前块。

步骤(3).审计证据的生成

步骤(3.1).生成整体图像的水印

根据算法(1)中的可逆水印算法,客户端将整体的图片i生成一个水印w’id。

步骤(3.2).根据算法(2)中的算法,将图像i进行分块。

步骤(3.3).将分块的图像进行编码

根据算法(2),将分块的各个图像进行编码bi。因此再上述步骤结束之后,将获得两种数据,一个是整体的水印图像w’id,一个是对原始图像i分块编码后的分块图像编码。

步骤(3.4).将原始图像i进行分块后的分块编码图像进行水印

通过算法(1)中的可逆水印算法,将分块编码的图像编码块通过水印算法生成水印w’i,并且将整体的水印图像w’id保存在第一个块中,最终水印图像的输出为i’。

步骤(3.5).将水印后的编码块上传到csp

客户端将水印后的编码块上传到csp,csp成功接收到了客户端上传的数据,并且已经成功反馈给客户端,此时客户端已经删除本地数据。此时,得到最终的水印图像。

步骤(4).审计完整性验证

步骤(4.1).客户端从csp下载数据

客户端从csp上下载数据的时候,先下载所有水印的图像编码块,并且开始进行检查。

步骤(4.2).通过算法(2)中的水印提取算法,将所有水印的图像编码块提取水印

当客户端下载完所有的块,分别提取整体图像的水印w’id和图像分块编码的水印w’i,这时得到两种数据,恢复后的图像i”和分块编码的编码块。

步骤(4.3).验证整体图像的完整性

当客户端从csp上下载下来之后,通过提取水印,如果整体的图像i”与原始的图像i一致,那么说明从csp上下载的图像是完整的,否则说明图像数据受到了损坏,这时需要进行数据恢复。

其中,验证是否完整的公式如下:

其中i”r=i”modp,i”q=i”/p(mod是代表除余的符号),e为前面初始化中的双线性映射。

当该等式成立的时候,说明图像是完整的,当该等式不成立的时候,说明图像数据被损坏,这时执行下面步骤对图像数据进行恢复。

步骤(5).数据恢复

当检验到整体图像不完整的时候,接下来需要检验哪些编码块的数据损坏,当检测到损坏的编码块的时候,使用算法(2)中的算法进行恢复。

其中,检验哪些编码块的数据损坏公式:

e(w'i,g)=e(h(id,i,bi),v)

如果相等,说明该数据块没有损坏,否则,该数据块损坏。

通过上述步骤,实现了数据的恢复操作。

算法(1).水印的初始化,嵌入和提取算法介绍

算法(1.1).可逆水印算法的初始化,包括初始化dct系数以及重排序矩阵h,dct系数用于图像压缩;

进一步得,dtc系数(图像压缩使用):对于一般的图像分块,dct系数变换采用8*8分块,将灰度图像转换为dct系数矩阵之后,该矩阵的左上角代表的低频分量,右下角代表的是高频分量,下述算法中的高频dct系数是人为选择的。

具体选择过程为:

将图像i分成大小为8×8的块,并将每个块转换为dct系数。其中,一个随机选择的8×8的块如图3所示,对其按照z字形状进行标号,最终所选择的高频dct系数从第36位到第63位,其总数为28。然后,如图4所示,重新排序成4×7块(该矩阵不需要z字形,从左到右,从上到下,由小到大依次排列即可)。

设h为大小为上述生成的4×7的矩阵。h中的每个元素记为h(i,j),i∈{1,2,3,4},j∈{1,2,…7}。首先,分别求出最大值和最小值a和b:a=max{h(i,j)}i∈{1,2,3,4},j∈{1,2,…,7},b=min{h(i,j)}i∈{1,2,3,4},j∈{1,2,…,并分别记录各自的位置。

将最大值和最小值之间的差k定义为:

k=a-b

中位数mp为:

在水印嵌入之前,通过k来扩充最大值和最小值,生成a'和b':

a'=a+k

b'=b-k

如果矩阵h中存在不止一个极大值或极小值,按照从左到右、从上到下的顺序选择遇到的第一个最大值或最小值,其他的不变。

算法(1.2).可逆水印算法的嵌入操作

虽然在设置过程中,最大值和最小值都被扩展了,但它们的位置仍然保持不变。具体的,对于一个8×8的块,首先将其转换成dct域,然后将其嵌入过程如下:

1)提取其高频dct系数,得到大小为4×7的重排序矩阵h。

2)在矩阵h中,求出最大值a’和最小值b’,因为他们是用来表示k的,因此不嵌入水印。

3)扫描矩阵h的行和列,对于每一个既不是最大值也不是最小值的元素h(i,j),检查将要嵌入的像素位,像素位只能是0或者1。

如果像素位为‘1’且h(i,j)>=mp,则更新值的方式为:

如果位是‘1’且h(i,j)<mp,则更新值的方式为:

α介于1~2之间,用来确保a<h‘(i,j)<a',或者b'<h‘(i,j)<b,这取决于h(i,j)与mp的关系。

如果被嵌入的位为‘0’,则:

h'(i,j)=h(i,j)

上述做法,块的嵌入总容量为高频dct系数-2,其中-2是因为最大值和最小值用来做标记。

对所有分块后的图像都进行这种操作。

算法(1.3).可逆水印算法的提取操作

提取算法如下:

1)先将8×8有水印的块转成dct域,提取其高频dct系数,得到大小为4×7的重排序矩阵h。

2)在矩阵h中,找到最大值a’和最小值b’。根据a’和b’计算k:

3)扫描h’(i,j)中的行和列

如果是最大值:

h(i,j)=h'(i,j)-k

如果是最小值:

h(i,j)=h'(i,j)+k

否则,当h'(i,j)≥a+△或者h’(i,j)≤b-△,并且像素位为‘1’时:

△是一个很小的值,用来消除α引入的误差。

为了实现提取水印,需要满足应该让

因此:

所以设置:

当b<h'(i,j)<a,并且像素位为‘0’时:

h(i,j)=h'(i,j)

最终,通过对恢复后的dct系数进行反变换,提取水印位元,对原始图像块进行无失真恢复。

算法(2).数据的分块编码及数据恢复方法

算法(2.1).初始化操作

2.1.1.信息分散算法(ida):是一种用于重建分割数据块的算法。它随机选择一个n*m系数矩阵用于编码原始数据。任何m编码块都可以使用以下矩阵属性检索原始数据。

在矩阵乘法操作中,如果有一个方程a×b=c;其中a、b、c表示矩阵(矩阵a是可逆的),矩阵b可得:

在ida中,a为系数矩阵,b为原始数据块矩阵,c为编码后的数据块矩阵。

2.1.2.系数矩阵的求解

用户选择n个系数向量ai=(ai1,ai2,...,aim)∈z(1≤i≤n)然后把这些向量组合成系数矩阵m=[ai,j](1≤i≤n,1≤j≤m),

算法(2.2).对图像进行存储操作用户将文件f={b1,b2,…,bn}分为n/m个块,每个块中有m个扇区。然后划分文件f={(b1,…,bm),(bm+1,…,b2m)…(…,bn)},第k个块用sk进行表示,表示成:sk=(b(k-1)m+1,b(k-1)m+2,…,bkm)(1<=k<=n/m)。

在对文件进行分区之后,用户使用blockgen算法来计算编码数据块,即对每一个块中的各个扇区进行编码数据的计算。然后用户通过enc算法将系数向量加密为密文,之后将他们组合成标签。

到此,完成了分块编码,以及编码块的存储。

算法(2.3).当数据块丢失时,通过编码实现其恢复操作

当收到损坏警告时,用户要求tpar在csp上寻找m个运行良好的服务器进行检索。然后tpar将m个健康服务器中存储的编码数据块和相应的系数向量返回给用户。用户使用dec算法对系数向量进行解密,得到系数矩阵a,然后使用inverse算法计算a的逆矩阵。之后使用retrieval算法对原始数据块进行重建,自此完成了整个数据恢复。

blockgen算法:让数据块和系数矩阵按如下方式进行矩阵乘法运算。

cik=ai*sk=ai1*b(k-1)m+1+…+aim*bkm

其中1≤i≤n,1≤k≤n/m,这样操作之后将获得文件fi*={ci1,ci2,...,cin/m},编码数据块矩阵中的第i行数据块将存储在第i个存储服务器中;

enc算法:用户使用密钥对系数向量进行加密,加密方式如下:

其中1≤i≤n。

dec算法:客户端从tpar接收到系数矢量后,使用系统密钥kenc对矢量解密如下:

其中1≤i≤m.随后将这些向量组成一个系数矩阵,这样一个m×m的矩阵a=(aij)1≤i,j≤m就得到了;

inverse算法:客户端通过a计算a的可逆矩阵a-1=(aij)1≤i,j≤m,这里面a-1的第i行是(ai1,ai2,...,aim);

retrieval算法:客户端将编码的数据块放入矩阵中,通过使用矩阵的属性,计算如下:

bj=αi1·c1k+…+aim·cmk

其中1≤j≤n,1≤k≤n/m,1≤i≤m。通过上述,可知i=(jmodm),

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