一种支持云端数据去重的数字水印方法和系统与流程

文档序号:18464501发布日期:2019-08-17 02:20阅读:399来源:国知局
一种支持云端数据去重的数字水印方法和系统与流程

本发明涉及密码领域和图像处理领域,特别涉及一种支持云存储环境的数据去重的数字水印方法和系统。



背景技术:

高效低价的云存储服务作为云计算的重要组成部分已经得到了广泛运用,尤其随着近年来社交媒体的迅速发展,爆炸式增长的数据量驱动着数据存储由传统繁杂昂贵的本地存储管理向云存储转移。大量资源文件,包括多媒体文件,可以通过云存储和云计算服务便捷地进行公开传播和分发。如何持续维护文件的所有权以防止其在资源共享过程中被盗用及滥用已逐步成为许多云存储用户关心的问题。大部分云存储厂商已向用户提供加密服务,用户通过管理密钥自主控制数据流向,但这并不能从根本上杜绝所有权的流失。特别地,多媒体文件有着另一种数字版权保护方法,即在文件中添加数字水印(watermarking)。全球最大的云计算服务提供商亚马逊向用户提供了数字水印接口以保证用户对其上传文件的所有权。

现存的数字水印多基于用户指定的特定秘密信息对文件进行一定的变换处理,该变换几乎不影响原文件的可用性和正常传播。根据不同的性质和特征数字水印有着众多分类方式。根据叠加位置可以将数字水印分为空域数字水印和频域数字水印。直接叠加在文件上的数字水印称为空域数字水印;使用各种变换(如离散傅里叶变换)对文件进行预处理再叠加水印的方案则称为频域数字水印。频域数字水印较之空域数字水印有着更强的鲁棒性。

在云存储中广泛存在不同用户可能持有并上传内容相同或重复度较高的文件的情况。对此,云服务提供商采取了一定的数据去重(deduplication)技术缓解云端存储冗余。根据操作发生位置,数据去重可以分为服务器端去重(server-sidededuplication)和客户端去重(client-sidededuplication)。服务器去重方案中云存储用户均需上传文件,由云存储服务器判断数据重复并删除冗余;客户端去重方案则是在用户上传文件之前先预判冗余是否存在。若存在则由云端验证用户是否为真实文件拥有者。由于客户端去重方案简省了用户数据上传的步骤,极大减少了带宽浪费,提升用户体验,在生产实际中得到了广泛运用。主流的云存储提供商皆默认部署了数据去重。

但当内容相同的文件或文件块经过加密或增添数字水印后变为内容迥然不同的文件时,传统数据去重方案将不再适用。对数据的处理明显增加了数据去重的难度,所造成的存储空间和资源浪费将会在一定程度上会降低了云存储的服务质量。这一冲突目前未得到足够的关注和良好的解决。



技术实现要素:

为了能够在保护用户所有权的前提下兼顾云存储服务的质量,本发明提供一种支持数据去重的数字水印方法和系统。

本发明的原理是:拥有相同内容文件或文件块的用户可以仅基于文件本身和一个随机值对相同内容的文件生成相同的数字水印,其中水印的分布使用文件内容直接导出,借鉴convergeencryption(ce)方案的思想(storermw,greenank,longdde,etal.securedatadeduplication[c]//proceedingsofthe4thacminternationalworkshoponstoragesecurityandsurvivability.acm,2008:1-10.),相同内容的文件将会得到相同的水印分布。水印内容则由一串随机比特串指定,该串由第一个上传该文件的用户产生,后续拥有者通过对比水印文件与本地原文件获取该比特串。只有真正拥有文件的用户才可以提取或移除相应的数字水印,提取出的水印信息可以作为向云端和公众证明其所有权的证据。同时,将原文件处理为带有相同数字水印的文件使得云存储服务器可以执行数据去重,大大提升了云存储空间的利用率。不具有原始文件的其他用户,如该资源文件的使用者,以及云服务提供商只能通过暴力破解的方式猜测水印内容及其分布,完全猜中方可记为攻击成功,其理论概率几乎可以忽略不计。

本发明的一种支持云端数据去重的数字水印方法,包括以下步骤:

用户端向云服务器端提出上传某原文件的请求;

若所述原文件为第一次上传,所述用户端对所述原文件使用数字水印生成水印文件,根据所述数字水印的水印嵌入位置和水印内容生成所述原文件的所有权证明,将所述所有权证明和所述水印文件一同上传至所述云服务器端;

若所述原文件为非第一次上传,所述用户端利用水印信息证明对所述原文件的所有权,如果具有所有权则所述云服务器端将所述用户端纳入所有者列表,否则拒绝将所述用户端加入所有者列表。

进一步地,采用以下方式判断所述原文件是否为第一次上传:

用户端使用hash函数计算原文件的hash值并发送至云服务器端;或者云服务器端公开hash函数,用户端通过公开渠道获取该hash函数;

云服务器端通过检索hash值间接检索原文件是否为第一次上传。

进一步地,所述数字水印优选使用频域数字水印(可以提高鲁棒性和应用范围),也可以使用空域数字水印以及其他使用叠加方式实现水印嵌入的数字水印方案。

在上面步骤实现了文件初传、文件去重的基础上,进一步可以实现文件分发和文件还原。具体来说,优选地,本发明可分为五个操作阶段,分别为系统初始化、文件初传、文件去重、文件分发和文件还原,技术方案实现如下:

1系统初始化

云存储服务器根据安全等级随机生成一个大素数乘法群的生成元g和公开hash函数,云存储用户通过公开渠道获取该生成元和公开hash函数,并根据需求选定数字水印模式。本发明优选使用频域数字水印,相应的变换算法也需要在初始化阶段被选定并公开。

2文件初传

初次上传该文件时,系统进入文件初传阶段:

步骤2.1用户使用公开hash函数计算原文件的hash值并发送至云端;

步骤2.2云端通过检索hash值间接检索原文件是否第一次上传,若是,继续该阶段其他步骤,否则跳转到阶段3继续执行;

步骤2.3用户使用离散傅里叶变换(或其他初始化时选定的变换)将原文件从空域映射到频域;

步骤2.4用户使用ce算法从原文件导出嵌入数字水印的矩阵坐标,随机生成一串满足安全要求长度的比特串并将该比特串依次叠加到选定的坐标上,生成水印文件;

步骤2.5用户使用逆离散傅里叶变换(或其他逆变换)将处理后的矩阵映射回空域以还原文件的可用性;

步骤2.6用户使用ce算法导出的矩阵坐标和随机比特串产生文件所有权证明,连同水印文件一同上传至云端;

步骤2.7用户本地保存ce算法导出的矩阵坐标和随机比特串,删除本地原文件(即将本地文件存放至云端,客户端无需存储,以节省存储空间)。

3文件去重

本阶段接续阶段2的步骤2.2执行,即当文件已存在时,后续用户无需上传文件,但需要在该阶段获取相应秘密信息并自证对文件的所有权。

步骤3.1云端给当前用户返回水印文件和本轮所有权验证的挑战值c,该挑战值是大素数乘法交换群上的一个元素;

步骤3.2用户使用离散傅里叶变换(或其他初始化时选定的变换)分别将水印文件和原文件从空域映射到频域;

步骤3.3用户使用ce算法从原文件导出嵌入数字水印的矩阵坐标,通过对比水印文件和原文件中这些坐标的数值提取一串比特串,该比特串即为第一个上传者指定的随机比特串;

步骤3.4用户使用ce算法获取的坐标导出一个大整数并计算一个新的生成元gm,用得到的比特串导出另一个大整数nwm,并计算本轮挑战的响应发回给云端;

步骤3.5云端使用c、当前用户返回的响应和第一个上传者上传的所有权证明,判断当前用户对文件是否具有所有权,若是则将用户纳入所有者列表,否则拒绝该用户;

步骤3.6合法用户完成身份自证后将ce算法导出的矩阵坐标和与第一个上传者保持一致的比特串存储在本地并删除本地原文件。

4文件分发

该阶段是一个长期持续的阶段,即网络中的普通用户可以下载或浏览由其他用户上传的资源文件。特别地,该阶段用户获取到的文件都是经过数字水印处理的文件而非原始文件。

步骤4.1普通用户通过各种公开渠道获取文件检索的hash值,连同读取等操作请求发送给云端;

步骤4.2云端接收到读取数据的请求后,给用户返回水印文件。

5文件还原

该阶段设计满足了持有文件所有权的用户可能有还原文件的需求。

步骤5.1用户向云端发送带有文件hash值的还原文件请求;

步骤5.2云端收到请求后给用户返回完整的水印文件;

步骤5.3用户使用离散傅里叶变换(或其他初始化时选定的变换)将文件从空域映射到频域,根据存储的ce比特串确定数字水印叠加坐标并将对应叠加的比特串移除;

步骤5.4用户使用逆离散傅里叶变换(或其他逆变换)将处理后的矩阵映射回空域以还原文件的可用性,用户可以对还原后的原始文件执行后续操作。

为了保证实用性,本发明还针对通信开销做出了相应优化,即在文件去重阶段,云服务器在向用户回传水印文件前先按照一定规则压缩该文件,文件所有者可以基于接收到的压缩文件和本地存储的原文件完成数字水印的提取和所有权证明。其他操作保持不变。

基于同一发明构思,本发明还提供一种实现上面所述方法的用户端,其包括以下模块中的至少一个:

数字水印嵌入模块,负责在向云服务器端第一次上传某个原文件时,对所述原文件使用数字水印生成水印文件,根据所述数字水印的水印嵌入位置和水印内容生成所述原文件的所有权证明,将所述所有权证明和所述水印文件一同上传至所述云服务器端;

所有权证明模块,负责在向云服务器端非第一次上传所述原文件时,利用水印信息证明对所述原文件的所有权。

基于同一发明构思,本发明还提供一种实现上面所述方法的云服务器端,其包括:

接收模块,负责接收第一次上传某个原文件的用户端发来的所有权证明和水印文件;

所有权判定模块,负责对非第一次上传所述原文件的用户端对所述原文件的所有权,如果具有所有权则将所述用户端纳入所有者列表,否则拒绝将所述用户端纳入所有者列表。

基于同一发明构思,本发明还提供一种支持云端数据去重的数字水印系统,其包括上面所述的用户端和云服务器端。

本发明的优点和有益效果是:

本发明的支持数据去重的数字水印方法,拥有相同内容文件或文件块的用户可以仅基于文件本身和一个随机值对相同内容的文件生成相同的数字水印,只有真正拥有文件的用户才可以提取或移除相应的数字水印,提取出的水印信息可以作为向云端和公众证明其所有权的证据。本发明能够在保护用户所有权的前提下兼顾云存储服务的质量,大大提升了云存储空间的利用率;不具有原始文件的其他用户只能通过暴力破解的方式猜测水印内容及其分布,完全猜中方可记为攻击成功,其理论概率几乎可以忽略不计。

附图说明

图1.本发明嵌入数字水印流程图。

图2.本发明文件初传阶段的流程图。

图3.本发明文件去重阶段的流程图。

图4.本发明优化算法的设计图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清晰,以下参照附图并举实施例,对本发明作进一步详细说明。

参数说明:

g1是系统初始化时需要生成一个大素数乘法交换群,g和gm都表示该群的生成元;

kce是ce算法导出的一串比特串(密钥),用于指定数字水印嵌入位置;

iwm是第一个文件上传者生成的一串随机比特串,即为数字水印的内容;

·表示普通数乘;

+和⊕表示按位加操作;

||表示信息拼接;

e(·,·)表示一个双线性映射上的配对计算;

h(·)表示系统选定的密码杂凑函数。

图1为本实施例中嵌入数字水印的流程,依据图示执行步骤具体如下(各步骤的标号如2.3、2.4等与前文发明内容中一致):

步骤2.3用户使用离散傅里叶变换(或其他初始化时选定的变换)将文件从空域映射到频域,如图1中①所示,此时文件是一个维度与原文件一致的复数矩阵,每个矩阵元素具有唯一的矩阵下标。图1中“频域”处的1、2、3、4表示原文件关于中心两两共轭对称的四个部分。

步骤2.4用户使用ce算法由原文件内容直接导出kce,按照矩阵维度对比特串进行切分,对应为矩阵的元素下标,这些下标即为数字水印嵌入的位置,用户另外随机生成一串满足安全要求长度(如1024比特)的比特串iwm,按照顺序分别将比特0或者比特1按位加到对应位置的元素上(图1中②~④示意了更新坐标为6的元素内容),生成水印文件ft。特别地,由于傅里叶变换的对称性,所有发生变化的元素对应的共轭对称元素也要叠加相应的变化。

步骤2.5用户使用逆离散傅里叶变换(或其他逆变换)将处理后的矩阵映射回空域以还原文件的可用性,如图1中⑤所示。

图2为本实施例中文件初传的流程图,依据图示执行步骤具体如下:

步骤2.6用户使用ce算法导出的比特串新生成一个g1的生成元gm,同时使用随机比特串导出一个大整数nwm以及一个随机大整数r1,计算作为文件所有权证明,连同水印文件一同上传至云服务器端。可以通过切分或者模运算的方式将字符串映射为数值。在工程实现中开发者可以直接调用pbc或者jpbc库封装的函数来完成映射。

图3为本实施例中文件去重流程图,依据图示执行步骤具体如下:

步骤3.1云服务器给当前用户返回文件已存在的通知消息(图3中用“√”表示)、水印文件和本轮所有权验证的挑战值c,该挑战值是由云服务器随机生成的一个g1上的存在逆元c-1的元素;

步骤3.2与步骤2.3类似,用户使用离散傅里叶变换(或其他初始化时选定的变换)分别将水印文件和原文件从空域映射到频域;

步骤3.3用户使用kce确定嵌入数字水印的矩阵坐标,通过对比水印文件和原文件中这些坐标的数值提取一串比特串,该比特串若正确提取则与第一个上传者指定的随机串iwm一致;

步骤3.4用户再次使用kce指定一个大整数并计算一个新的生成元用得到的比特串导出另一个大整数nwm,并随机生成一个大整数ri。用户使用gm、nwm、ri和挑战值c计算本轮挑战的响应发回给云服务器;

步骤3.5云服务器使用c的逆元c-1和当前用户返回的响应提取出并计算是否相等,其中提取自第一个上传者上传的所有权证明。若结果相等,则云服务器将当前用户纳入所有者列表,否则拒绝该用户请求;

步骤3.6合法用户完成身份自证后本地存储kce以及iwm,并删除本地原文件。

针对回传水印文件而造成的带宽消耗,本发明提出了一个技术优化,可以在保证不影响数字水印正常提取的情况下压缩数据,有效改善方案的通信开销。图4为本发明方案优化的展示,依据图示具体操作步骤如下:

步骤1云服务器在系统初始化阶段指定压缩后的行列矩阵的维度m,如图示分别指定压缩后的矩阵维度为8×n和n×8,其中n为原文件矩阵的维度;

步骤2云服务器对文件频域矩阵沿着行顺序方向按照每m列(图例为8)将对应位置元素相加,得到一个n×8的压缩列矩阵。类似地,云服务器对文件频域矩阵沿着列顺序方向按照每m行(图例为8)将对应位置元素相加,生成一个8×n的压缩行矩阵。云服务器将这两个压缩矩阵发回给请求用户;

步骤3用户在本地对原文件做同样的压缩操作,生成一个n×8的压缩列矩阵和一个8×n的压缩行矩阵;

步骤4用户对比原文件和压缩的水印文件的压缩行矩阵和压缩列矩阵的元素,提取出发生变化(即至少发生一次比特1嵌入)的位置;

步骤5用户由kce确定数字水印嵌入位置,对被选中元素(被kce指定矩阵坐标对应的元素)的列坐标做模m(图例为8)运算,确定被选中元素在压缩行列矩阵对应行中的相对位置。若计算的相对位置上只发生一次比特1嵌入(如图例中黑色小块所示),则对应的原文件矩阵中的该位置被嵌入比特1的水印信息;若计算的相对位置上发生多次比特1嵌入(如图例中浅灰色小块所示),则继续对选中元素的行坐标做模m(图例为8)运算,通过比对该元素在压缩行矩阵中被嵌入比特的情况判断压缩列矩阵比特1的嵌入分布,仍存在不确定情况的,用户向云服务器直接请求追回对应元素的值以确定该元素是否存在比特1嵌入;其余未检测到比特嵌入的位置(如图例中深灰色表明0的小块所示)则记为嵌入比特0;

步骤6用户反复执行步骤5直到所有数字水印比特位确定,按照下标从小到大的顺序将所有比特连接起来,还原iwm。

该优化理论上将通信开销由o(n2)降为o(n),提升了该方法的实用性。

以上实施例中使用了频域水印,本发明可以推广应用至空域水印以及其他使用叠加方式实现水印嵌入的水印方案。

本发明另一实施例提供一种实现上面所述方法的用户端,其包括以下模块中的至少一个:

数字水印嵌入模块,负责在向云服务器端第一次上传某个原文件时,对所述原文件使用数字水印生成水印文件,根据所述数字水印的水印嵌入位置和水印内容生成所述原文件的所有权证明,将所述所有权证明和所述水印文件一同上传至所述云服务器端;

所有权证明模块,负责在向云服务器端非第一次上传所述原文件时,利用水印信息证明对所述原文件的所有权。

本发明另一实施例提供一种实现上面所述方法的云服务器端,其包括:

接收模块,负责接收第一次上传某个原文件的用户端发来的所有权证明和水印文件;

所有权判定模块,负责对非第一次上传所述原文件的用户端对所述原文件的所有权,如果具有所有权则将所述用户端纳入所有者列表,否则拒绝将所述用户端纳入所有者列表(或拒绝将所述用户端纳入所有者列表的请求)。

本发明另一实施例提供一种支持云端数据去重的数字水印系统,其包括上面所述的用户端和云服务器端。

以上实施仅用以说明本发明的技术方案而非对其进行限制,例如本发明也适用于在空域上嵌入数字水印以及文件块级别的数据去重,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换而不脱离本发明的精神和范围,本发明的保护范围以权利要求书所述为准。

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