一种通过保留格式加密加水印的方法与流程

文档序号:23979564发布日期:2021-02-20 07:44阅读:280来源:国知局
一种通过保留格式加密加水印的方法与流程
一种通过保留格式加密加水印的方法


背景技术:

[0001]
本发明涉及使用格式保留加密的数据加水印技术。
[0002]
加水印涉及隐蔽数据内的嵌入信息。数字水印是可隐蔽地嵌入误差或容忍噪声信号或数据(例如,音频、视频或图像数据)的信息。例如,数字水印可用于识别信号或数据的版权的所有权。因为数字加水印涉及修改信号或数据集,所以误差或噪声容限减轻此修改对信号或数据的使用的负面影响。
[0003]
具有很少(如果有的话)容错字段的数据集合由于减少的信道容量而对加水印系统提出了挑战。在这种情况下,水印嵌入的空间很小。现有数据加水印技术依赖于用于将水印嵌入到数据中的容错字段的存在。这意味着在一些情况下,水印容量将太小而不能包含大量信息,或替代地,将减少量或错误校正且因此降低水印的鲁棒性。
[0004]
需要一种技术,其可在不依赖于容错字段的情况下提供数据加水印,从而提供在将不被视为适合于加水印的数据中进行水印并入。


技术实现要素:

[0005]
本系统和方法的实施例可在不依赖于容错字段的情况下提供数据加水印,由此提供在将不被认为适合于加水印的数据中进行水印并入。
[0006]
例如,在一实施例中,一种用于给数据加水印的计算机实施的方法可包括将水印数据插入到需要格式保留加密的字段中。
[0007]
在实施例中,插入可包括对需要格式保留加密的字段进行加密,以便保留对数据格式的约束,以及通过将水印数据映射到加密数据集的至少一个子集来将水印数据插入到需要格式保留加密的字段中。该至少一个子集可被识别为未被该数据集使用。当发现已被所述数据集识别为未使用的至少一个子集实际上由所述数据集使用时,将所述水印数据映射到已被所述数据集识别为未使用的不同子集。该至少一个子集可通过找到该数据集的允许附加信息插入的属性来识别,以便将该数据集的数据域从稀疏表示转换成更密集表示。所述插入可包括在所述至少一个子集中或在所述至少一个子集的值中编码水印数据的每一值。插入水印不会产生错误,且插入可以是可逆的。可通过使用映射规则、映射表或两者将来自输入数据集的多个值映射到经编码的值,使用机器学习或专家知识识别正在使用的经编码的数据的组,并找到未包括在所识别的经编码的数据的组中的可用子集,来找到可用子集。
[0008]
在一实施例中,一种用于对数据加水印的系统可包括处理器、可由所述处理器存取的存储器,以及存储在所述存储器中且可由所述处理器执行以执行将水印数据插入到格式保留经加密字段中的计算机程序指令。
[0009]
在实施例中,一种用于对数据加水印的计算机程序产品可以包括非瞬态计算机可读存储装置,该非瞬态计算机可读存储装置具有在其上实现的程序指令,这些程序指令可由计算机执行以使该计算机执行一种方法,该方法包括:将水印数据插入到格式保留加密字段中。
附图说明
[0010]
通过参考附图,可以最好地理解本发明的细节(关于其结构和操作两者),在附图中相同的参考标号和标识指代相同的元件。
[0011]
图1示出其中可实现所描述的实施例的系统。
[0012]
图2是本实施例中涉及的加水印处理的示例性数据流程图。
[0013]
图3是本实施例中涉及的预处理的示例性流程图。
[0014]
图4是本实施例中涉及的加水印和加密流程的示例性流程图。
[0015]
图5是本实施例中涉及的动态改变的数据库中的加水印和加密流程的示例性流程图。
[0016]
图6是其中可以实现本文所述实施例中涉及的流程的计算机系统的示例性框图。
具体实施方式
[0017]
本系统和方法的实施例可在不依赖于容错字段的情况下提供数据加水印,由此提供将不被认为适合于加水印的水印并入数据中。
[0018]
本系统和方法的实施例可以使用格式保留加密(fpe),该fpe是用于当出于诸如验证的原因有必要维持数据格式时对数据进行加密的方法。与标准加密相比,格式保留加密具有加密的数据与原始数据不可区分的附加益处。本系统和方法的实施例可通过以无损方式将加水印流程与格式保留加密集成来为当前具有fpe字段的数据集中的加水印增加容量。
[0019]
整合加水印与格式保留加密方法可提供将水印并入当前被认为不适合加水印的数据中,且可整体增加加水印容量。在实施例中,该集成可以被提供用于可逆加水印方法。此类可逆加水印方法可具有关于数据集中通常满足的按位/元素间属性的某些先决条件,所述数据集诸如自然图像、信号、电子邮件地址、护照号列表等。否则,在一些情况下,取决于纯数据特性,这些先决条件可通过预加水印流程来满足。可使用专家知识或机器学习技术完成的预处理转换数据属性,并使得先前不适用的某些加水印技术适用于原始数据。
[0020]
图1示出系统100的示例性框图,其中可实现本系统和方法的实施例。在该示例中,系统100包括数据源102a-n和计算机系统104。数据源102a-n可包括数据源(诸如互联网、计算机系统、其他计算设备(诸如智能电话、平板计算机等))或数据源(诸如存在于计算机系统104上或传送至计算机系统104的文件)。计算机系统104可以使用一个或多个编程的通用计算机系统(如嵌入式处理器、片上系统、个人计算机、工作站、服务器系统、以及小型计算机或大型计算机)或在分布式联网计算环境中实现。计算机系统104可包括加水印处理106和加密处理108。加水印处理106可根据本文所揭示的技术来执行数据的加水印。同样,加密处理108可以根据本文公开的技术执行数据的加密。作为在计算机系统104中执行的处理的结果,可生成输出数据集110。
[0021]
本系统和方法的实施例可将水印并入使用fpe加密的字段中。这种处理的实例在图2中示出。在这个实例中,输入数据202可以包括多个数据记录204a-z,每个数据记录可以包括多个数据字段206a-n。例如,实施例可利用数据的逐位属性,诸如数据内的局部性。例如,在数据集内按位置的关闭记录(诸如204a和204b(未示出))可具有关闭值、值/数字的出现之间的相关性、记录间/记录内次序等。这些属性可在自然采样数据中找到,诸如图像和
声音数据、电子邮件地址、有序标识号列表等。对于高熵数据,诸如已经加密的数据、随机数据、压缩数据等,这样的相关属性可能不存在。当这样的相关属性确实存在时,可应用加水印处理208a-n。如图2所示,在实施例中,取决于数据字段的内容,不同的加水印处理208a-n可以应用于每个数据字段206a-n。加水印处理208a-n可以开始于例如单个记录或一组记录上的文本到整数映射。然后可以应用利用上述属性的可逆加水印方法。在210a-n,可以应用整数格式保留加密(ifpe)和整数到文本映射。所得到的输出数据212可以包括格式化和加密的记录214a-z,其也包含水印。在实施例中,由于加密流程,所得到的输出数据212可能与未加水印的加密记录不可区分。
[0022]
例如,在fpe的情况下,输入数据域的大小可与输出数据域的大小相同。例如,在使用fpe加密的十六位信用卡号码的情况下,根据信用卡号码格式,加密的输出也可以是十六位号码。由于此一对一映射(十六进位、十六出位),为了插入额外信息(加水印信息),当前技术的实施例可识别十六位内未使用的子集(值、区、子集等)。这些未使用的子集可随后用于插入加水印信息。例如,对于待插入的加水印信息的每一数据值,经编码的每一数据值可能需要未使用的至少一个数据值。
[0023]
在实施例中,预处理可以用于获得相关属性。在图3中示出了这种预处理300的示例。这样的预处理可例如被应用于具有可被学习或配置的一些模式的稀疏数据集。例如,可以分析数据集和数据集的格式,并且可以识别未使用的子集(值、区域、子集等)。这样的未使用的子集可以通过例如使用专家知识或机器学习来识别。这样的子集可以例如作为数据集的稀疏性或格式的约束等的结果而发生。例如,考虑十六位信用卡号的集合。可能的是,没有有效的信用卡号可以从四个数字“0000”开始,但是根据格式限制是有效的。然后,开始于“0000”的信用卡号码子集可以被识别为可用于对水印信息进行编码。在一些实例中,可以发现已经被识别为未使用的子集实际上在使用中。即,可在处理期间遇到子集中的一个或一个以上值。在这些情况下,可使用另一子集来代替被发现实际上在使用中的子集。
[0024]
例如,考虑遵守语言格式l的n个标记(token)的输入数据集302,在304,解决方案(假设n远小于l中的字的数量)可以将所有标记映射到l的2个或更多个不相交子集。在306处,可通过选择子集以表示(或编码)每一数据值来产生带水印数据。例如,所述子集中的每一个可表示位的不同组合的水印编码。在加水印流程期间,可根据水印位选择适当子集,且可根据数据从每一子集选择适当字。然后可生成加水印的数据集308。例如,给定信用卡号,其中,以“0000”开始的信用卡号被识别为可用,可以利用未修改的信用卡号表示“0”的水印位,而水印位“1”可以用16位数字表示,否则符合信用卡号格式,但是以“0000”开始。作为另一示例,假设数据集包括十个十六位信用卡号码。第一信用卡号可映射到例如

1000000000000001’,以便编码
‘0’
的水印位,并且可映射到例如

1100000000000001’,以便编码
‘1’
的水印位。第二信用卡号可被映射到例如“1000000000000002”,以对水印位“0”进行编码,并且可被映射到例如“1100000000000002”,以对水印位“1”进行编码,等等。这样的编码可能需要作为数据集的大小的映射表。使用专家知识或机器学习,映射表的大小可被减小并用可利用数据内的冗余的紧凑函数替换。这种紧凑的编码器可能不以一对一的方式表示每个值。对于这些情况,可以使用映射表。
[0025]
在实施例中,加水印和加密流程400的示例在图4中示出。流程400处理输入数据集输入数据集402,以便在数据集中找到数据值/区域,可用于存储加水印数据,并生成编码规
则和/或映射表来将数据编码到这些可用数据值/区域。在404处,在加水印之前,可执行离线学习和/或手动规则配置流程以在编码器的当前状态中使用数据集402来构造编码器。在406处,来自输入数据集402的值可被映射到经编码的值。这样的映射可以被存储在例如一组映射规则和/或一个或多个映射表中。在408处,可使用所产生的映射使用来自输入数据集404的值来产生带水印数据。可使用机器学习以便发现数据内的底层模式且找到数据中的不可用且可用于存储加水印数据的数据值/区。对于真正的随机数据,这样不可能找到这样的可用值/区域。然而,对于许多情况,数据不是真正随机的。可紧凑地描述记录群组的机器学习技术(例如聚类)可用于此流程。通过聚类,可以学习原本将是未知的或仅专家知道的规则。然后,基于数据集的特征,通过找到可用的数据值/区域,可以使用这些学习的规则来将数据域从稀疏表示转换成密集表示。例如,查看信用卡号码,可能存在非常常见的号码前缀,而其他前缀从未被使用。因此,检测到的前缀聚类可以被映射到从未使用的值。另外,一些加水印方法可确定数据是否是“可加水印的”,即,如果它满足某些特性,并且进一步能够确定数据的水印容量。此确定可用作机器学习流程404的成本函数,且可在机器学习流程404期间使用,直到经变换的数据保持所期望的性质为止。在这样做时,可以增加或最大化容量,同时可以不超过任何存储器使用阈值。
[0026]
在410处,在产生带水印数据408之后,可测试加水印流程408以查看每一值的变换是可逆的。在412处,对于加水印流程408不能以一对一方式变换的字,可建构映射表以映射此未转换的数据。在414,使用在数据集和格式语言大小的限制下构建的转换函数,可定义数据集中的每个字的位编码。例如,给定水印位和来自数据集的字,转换函数可指示表示两者的字(以语言l的格式)。在实施例中,转换函数可以表示每个字中的多个带水印位。此外,在一些实施例中,学习阶段可以是迭代的,并且因此将不需要任何先前数据。
[0027]
在早期映射阶段之后,在416处,已定义新的带水印数据集416,其遵循与l相同的格式但现在可隐蔽地对信息进行编码。在实施例中,生成水印的函数本身可以选自任何已知的或新开发的加水印方法。同样,可使用用于关系数据库的任何已知或新开发的加水印方法将记录插入到数据库中。此类方法可将水印插入到动态改变的数据库中,同时仍允许水印检索。在一实施例中,图5中展示动态改变的数据库中的加水印和加密流程500的实例。在502处,当新的记录被添加到数据库时,可以使用已经构造的加水印流程408测试新的字。在504处,在新字未被正确处理的情况下,这些字可被添加到映射表。在506处,可在带水印字上执行格式保留加密。在510处,当获得水印的需要上升时,可通过在字出现在映射中时使用表映射对带水印字进行解码或通过以其他方式使用编码器来执行格式保留解密。在512处,水印可与原始标记分离且使用加水印函数提取水印。
[0028]
图6中示出了计算机系统602的示例性框图,其中可以实现本文所述实施例中涉及的流程。计算机系统602可以使用一个或多个编程的通用计算机系统(诸如嵌入式处理器、片上系统、个人计算机、工作站、服务器系统、以及小型计算机或大型计算机)或在分布式联网计算环境中实现。计算机系统602可以包括一个或多个处理器(cpu)602a-602n、输入/输出电路604、网络适配器606和存储器608。cpu602a-602n执行程序指令以便执行本通信系统和方法的功能。通常,cpu602a-602n是一个或多个微处理器,诸如处理器。图6示出了计算机系统602被实现为单个多处理器计算机系统的实施例,其中多个处理器602a-602n共享系统资源,诸如存储器608、输入/输出电路604和网络适配器606。然而,本通信系
统和方法还包括其中计算机系统602被实现为多个联网的计算机系统的实施例,所述多个联网的计算机系统可以是单处理器计算机系统、多处理器计算机系统或者它们的混合。
[0029]
输入/输出电路604提供向计算机系统602输入数据或从计算机系统602输出数据的能力。例如,输入/输出电路可包括输入设备(诸如键盘、鼠标、触摸板、跟踪球、扫描仪、模数转换器等)、输出设备(诸如视频适配器、监视器、打印机等)和输入/输出设备(诸如调制解调器等)。网络适配器606将设备600与网络610对接。网络610可以是任何公共或专有lan或wan,包括但不限于互联网。
[0030]
存储器608存储由cpu602执行以执行计算机系统602的功能的程序指令和由cpu602使用和处理以执行计算机系统602的功能的数据。存储器608可包括例如电子存储器装置,诸如随机存取存储器(ram),只读存储器(rom)、可编程只读存储器(prom)、电可擦除可编程只读存储器(eeprom),闪存等,以及诸如磁盘驱动器、磁带驱动器、光盘驱动器的机电存储器,可使用集成驱动电子装置(ide)接口或其变型或增强接口的ide接口等,诸如增强型ide(eide)或超直接存储器访问(udma)或基于小型计算机系统接口(622scsi)的接口,或其变形或增强,诸如快速scsi、宽scsi、快速和宽scsi,串行高级技术附件(sata)或其变形或增强,或光纤通道仲裁环路(fc-al)接口。
[0031]
存储器608的内容可以根据计算机系统602被编程为执行的功能而变化。在图6所示的示例中,示出了表示用于上述流程的实施例的例程和数据的示例性存储器内容。然而,本领域技术人员将认识到,基于公知的工程考虑,这些例程以及与这些例程相关的存储器内容可以不包括在一个系统或设备上,而是可以分布在多个系统或设备中。本通信系统和方法可以包括任何和所有这样的布置。
[0032]
在实施例中,图6中所示的软件的至少一部分可在当前领导服务器上实现。同样,在实施例中,图6中所示的软件的至少一部分可在除当前领导者服务器之外的计算机系统上实现。
[0033]
在图6所示的示例中,存储器608可包括学习例程612、加水印例程614、加密例程616、输入数据集618、经编码的数据集620、变换/映射数据622和操作系统620。学习例程612可包括用于执行预计算处理任务的软件例程,诸如实现规则生成器206、条款提取222、编译224和评估226,如图2所示。运行时例程614可包括软件例程以执行运行时处理任务,诸如图2中所示的目标标识246、请求重写248、运行时子句评估250、请求减少252和请求执行254。数据616可包括诸如可存储在数据湖228中的数据,诸如目标数据230、上下文数据232、同意数据234、经编译的uber规则236和经评估的条款238,如图2所示。数据618可包括诸如访问属性210、策略212、数据模式214、数据目标216、查询240、规则引擎规则242、访问规则244和兼容数据256的数据,如图2所示。操作系统620可以提供总体系统功能。
[0034]
如图6所示,本通信系统和方法可包括在提供多处理器、多任务、多进程和/或多线程计算的一个或多个系统上的实现方式,以及在仅提供单处理器、单线程计算的系统上的实现方式。多处理器计算涉及使用多于一个处理器来执行计算。多任务计算涉及使用多于一个操作系统任务来执行计算。任务是指正在执行的程序和操作系统使用的簿记信息的组合的操作系统概念。每当执行程序时,操作系统为其创建新任务。任务类似于程序的信封,因为其用任务号识别程序且将其他簿记信息附加到程序。许多操作系统(包括linux、和)能够同时运行许多任务并且被称为多任务操作系统。多
任务是操作系统同时执行多于一个可执行文件的能力。每个可执行文件在其自己的地址空间中运行,这意味着可执行文件无法共享它们的存储器中的任何存储器。这具有优势,因为任何程序都不可能损坏在系统上运行的任何其他程序的执行。然而,程序除了通过操作系统(或通过读取存储在文件系统上的文件)以外没有办法交换任何信息。多进程计算类似于多任务计算,因为术语任务和进程常常可互换地使用,尽管一些操作系统在这两者之间进行区分。
[0035]
本发明可以是任何可能的集成技术细节水平的系统、方法和/或计算机程序产品。所述计算机程序产品可包含上面具有计算机可读程序指令的计算机可读存储介质(或介质),所述计算机可读程序指令用于致使处理器执行本发明的方面。计算机可读存储媒质可以是可以保留和存储指令以供指令执行设备使用的有形设备。
[0036]
计算机可读存储媒质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储媒质的更具体例子的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存),静态随机存取存储器(sram)、便携式致密盘只读存储器(cd-rom),数字通用盘(dvd)、记忆棒、软盘、机械编码设备(诸如穿孔卡片)或具有记录在其上的指令的凹槽中的凸起结构),以及上述的任意合适的组合。如本文中所使用的计算机可读存储媒质不应被解释为瞬态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输媒质传播的电磁波(例如,通过光纤电缆的光脉冲)、或通过导线传输的电信号。
[0037]
本文所述的计算机可读程序指令可从计算机可读存储介质下载到相应的计算/处理设备,或经由网络(例如,互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机、和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储媒质中。
[0038]
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,集成电路的配置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,包括面向对象的smalltalk、c++等编程语言,以及流程式编程语言,如“c”编程语言或类似的编程语言。计算机可读程序指令可完全在用户”的计算机上执行、部分在用户”的计算机上执行、作为独立软件包执行、部分在用户”的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何类型的网络(包括局域网(lan)或广域网(wan))连接到用户的计算机,或者可以连接到外部计算机(例如,通过使用互联网服务提供商的互联网)。在一些实施例中,电子电路(包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla))可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的方面。
[0039]
本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令来实现。
[0040]
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或其他可编程数据处理装置,以产生机器,其通过计算机或其他可编程数据处理装置的处理器执行,创建用于实现在流程图和/或方框图的一个或多个方框中指定的功能/动作的装置。这些计算机可读程序指令还可存储在可指导计算机的计算机可读存储媒质中,可编程数据处理装置,和/或以特定方式起作用的其他设备,使得具有存储在其中的指令的计算机可读存储媒质包括制品,该制品包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各方面的指令。
[0041]
计算机可读程序指令还可以加载到计算机、其他可编程数据处理装置上,或使得在计算机上执行一系列操作步骤的其他装置,其他可编程装置或其他设备,以产生计算机实现的流程,使得在计算机上执行的指令,其他可编程装置或其他设备实现流程图和/或框图中的一个或多个方框中规定的功能/动作。附图中的流程图和框图图示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个方框可以代表模块、段或指令的一部分,其包括用于实现规定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中所标注的功能可以不以图中所标注的次序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意的是,框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合可以由基于专用硬件的系统来实现,所述基于专用硬件的系统执行指定的功能或动作或执行专用硬件与计算机指令的组合。
[0042]
尽管已经描述了本发明的特定实施例,但是本领域的技术人员将理解,存在与所描述的实施例等同的其他实施例。因此,应当理解,本发明不受具体说明的实施例的限制,而仅受所附权利要求书的范围的限制。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1