Digital watermarking of text data

CN116235169BActive Publication Date: 2026-08-11HUAWEI CLOUD COMPUTING TECHNOLOGIES CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-10-17
Publication Date
2026-08-11

AI Technical Summary

Technical Problem

这些对数据作出的重大改变是不可取的,因为大量的改变可能会对用于统计分析或基于机器学习的分析的数据的有用性产生负面影响

Benefits of technology

[0029]在至少一些应用中,所公开的水印系统和方法提供了以下一个或多个特征:通过仅修改可忽略量的原始数据和/或仅将噪声嵌入所述原始数据中的一个或两个来保留含水印数据用于高级数据分析的可用性;启用大量唯一水印;消除对任何主键的依赖,从而提供对主键删除攻击的抵抗;并启用数字水印的盲提取,使得提取不需要原始数据。

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN116235169B_ABST
    Figure CN116235169B_ABST
Patent Text Reader

Abstract

A method and system are provided for embedding digital watermark information into text data arranged in a cell table. A first subset of cells is selected, and a master cell key and cell partition number are determined for each cell. A portion of the digital watermark ID code is embedded at an embedding location determined based on the cell partition number. A method and system are also provided for extracting digital watermark information from the text data. Cells are extracted, and the presence of a portion of the digital watermark ID code is determined. The master cell key and cell partition number are determined. A portion of the digital watermark ID code is extracted at the embedding location within the cell, wherein the embedding location is determined based on the cell partition number. According to the digital watermarking system and method, unauthorized data copying can be tracked while only a subset of the data is modified.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Related applications

[0002] This application claims priority to U.S. Patent Application No. 17 / 025,684, filed September 18, 2020, entitled “Digital Watermarking for Textual Data,” the contents of which are incorporated herein by reference in their entirety. Technical Field

[0003] This application relates to a system and method for digital watermarking of text data. Background Technology

[0004] With the rapid growth of data and its sharing among various parties, interest in watermarking systems is increasing. These systems can be used to provide copyright protection for data, prove data ownership, and trace the source of data leaks. Digital watermarking typically involves altering existing data or adding additional data to digital content in a covert manner that allows copies of digital content to be traced back to their source and / or authenticated. However, data analysis, such as traditional statistical methods or the latest machine learning-based approaches, requires a high degree of data integrity, as modifications to the data can lead to significantly different analytical results. Therefore, any digital watermarking applied should be done in a way that preserves data integrity for analytical purposes.

[0005] Existing research on digital watermarking of text data has primarily focused on file-level watermarking. File-level watermarking involves watermarking the entire file (e.g., a document file or worksheet file) before it is transmitted to another party. File-level watermarking is vulnerable to subset attacks, where a subset of the original dataset can be copied or leaked without compromising the file-level watermark.

[0006] In the case of unstructured text data, syntactic and semantic digital watermarking can be applied by leveraging the syntactic structure of sentences. However, both syntactic and semantic watermarking techniques are more suitable for unstructured text (e.g., sentence-based text) because they rely on context to analyze the syntactic or semantic structure of the text. For structured text data, syntactic and semantic techniques are impractical because database tables may contain multiple sets of alphanumeric values ​​that are not related to each other.

[0007] Digital watermarking has been proposed for structured text data arranged in units such as tabular cells. In cell-level watermarking, the watermark is embedded within the structured data cells. Therefore, it is difficult to copy and leak subsets of the data in an untraceable manner. Database watermarking for structured text data has been proposed, relying on techniques such as the Least Significant Bit (LSB), content analysis, and partitioning to embed and extract the watermark. This watermark is adaptable to typical watermarking attacks such as modification, subset attacks, and retyping. However, known solutions depend on the primary key attribute of the database table in the partitioning algorithm. The primary key attribute is typically used to calculate the partition number, which represents the partition assigned to a given cell. This reliance is vulnerable to deletion or alteration attacks because identifying and deleting primary key columns is not difficult. Deletion attacks involve an attacker deleting parts of the data. Alteration attacks involve modifying records containing some data to destroy or delete the watermark.

[0008] Furthermore, existing watermarking solutions for structured text data can substantially alter the overall content of the subject matter. Figure 1A depicts a portion of structured text data 10 in comma-separated value (CSV) format, where cells or fields of a database table are separated by commas. Figure 1B depicts the structured text data of Figure 1A after a typical digital watermarking method has been applied. Referring to fields 1, 3, 5, and 7, it can be seen that the data has been altered when comparing the values ​​in Figure 1B with the corresponding field values ​​in Figure 1A. These significant changes to the data are undesirable because substantial alterations can negatively impact the usefulness of the data for statistical analysis or machine learning-based analytics.

[0009] Therefore, it is desirable to provide an improved system and method for digital watermarking of structured text data. Summary of the Invention

[0010] According to one aspect of this disclosure, a method is provided for embedding a digital watermark in structured text data arranged in a cell table, each cell containing a corresponding set of text data characters. The method includes: selecting a first subset of cells for watermarking. For each cell in the first subset of cells, the method includes: determining a primary cell key for the cell based on one or more of the text data characters contained in the cell; determining a cell partition number for the cell based on the primary cell key; and embedding a portion of a first digital watermark ID code at an embedding location within the cell, the portion being determined based on the cell partition number.

[0011] According to the former, the primary cell key is based on a combination of at least one text data character contained in the cell and the number of text data characters contained in the cell.

[0012] According to any of the foregoing aspects, the cell partition number of the cell is also determined based on a key that is common to all cells in the first cell subset.

[0013] According to any of the foregoing aspects, the embedding position within the cell is determined based on the key and the length of the text data in each cell.

[0014] According to any of the foregoing aspects, the cells are arranged in an array of columns and rows, wherein selecting a first subset of cells for watermarking includes: selecting a first subset of cell rows of the array, wherein each cell in the rows of the selected subset is included in the first subset of cells.

[0015] According to any of the foregoing aspects, the first digital watermark ID code includes a plurality of visible characters, the portion of the first digital watermark ID code includes at least one of the plurality of visible characters, and embedding the portion of the first digital watermark ID code includes: replacing a portion of the text data characters contained in the cell with the portion of the first digital watermark ID code.

[0016] According to the foregoing aspect, for each of the cells in the first subset of cells, the method further includes: replacing the last character of the text data characters in the cell with a noise key character selected from a noise key index based on the cell partition number, wherein the noise key index is applicable to all the cells in the first subset of cells.

[0017] According to some of the foregoing aspects, the first digital watermark ID code includes a plurality of invisible characters, the portion of the first digital watermark ID code includes at least one of the plurality of invisible characters, and embedding the portion of the first digital watermark ID code includes: inserting the portion of the first digital watermark ID code into the text data characters contained in the cell.

[0018] According to any of the foregoing aspects, the method further includes: selecting a second subset of cells for watermarking. For each cell in the second subset of cells, the method further includes: determining a primary cell key for the cell based on one or more text data characters contained in the cell; determining a cell partition number for the cell based on the primary cell key; and embedding a portion of a second digital watermark ID code at an embedding location within the cell, the portion being determined based on the cell partition number. Both the first digital watermark ID code and the second digital watermark ID code are mapped to the same authorized recipient identifier.

[0019] According to any of the foregoing aspects, the method further includes: inserting a noise column into the table, the noise column comprising a plurality of cells, each cell containing a first digital watermark ID code in encrypted form.

[0020] According to another aspect of this disclosure, a method is provided for extracting digital watermark information from text data arranged in cells, each cell containing a corresponding set of text data characters. The method includes extracting cells from the text data; determining that the cell contains a portion of a digital watermark ID code embedded therein; determining a primary cell key of the cell based on one or more of the text data characters contained in the cell; determining a cell partition number of the cell based on the primary cell key; extracting a portion of a first digital watermark ID code at an embedding location within the cell, the portion being determined based on the cell partition number; and repeating these steps for other cells until the digital watermark ID code is completely extracted.

[0021] According to the foregoing aspect, the first digital watermark ID code includes a plurality of visible characters. In this example, determining that the cell contains the portion of the digital watermark embedded therein includes: positioning the noise key character at a predetermined position, and selecting the noise key character from a noise key index based on the cell partition number, wherein the noise key index is common to all the cells.

[0022] According to some of the foregoing aspects, the first digital watermark ID code includes a plurality of invisible characters, and the step of determining that the cell contains the portion of the digital watermark embedded therein includes: locating the portion of the first digital watermark ID code corresponding to the cell partition number at the embedding location.

[0023] According to any of the foregoing aspects, the primary cell key is determined based on a combination of at least one text data character contained in the cell and the number of text characters contained in the cell.

[0024] According to any of the foregoing aspects, the cell partition number is also determined based on a key that is common to all the cells.

[0025] According to any of the foregoing aspects, the embedding position within the cell is determined based on the key and the length of the text data in the cell.

[0026] According to any of the foregoing aspects, the method for extracting digital watermark information from text data further includes: locating a noise column in a table, the noise column comprising a plurality of cells, each cell containing a first digital watermark ID code in encrypted form; and decrypting the first digital watermark ID code to extract the first digital watermark ID code.

[0027] In another aspect of this disclosure, a computer system is provided, comprising a processor and a non-transitory memory coupled to the processor, the memory storing instructions that, when executed by the processor, cause the computer system to perform the method according to any of the foregoing aspects.

[0028] In another aspect of this disclosure, a computer program product is provided, comprising a non-transitory computer medium storing instructions for causing a computer system to execute the method according to any of the foregoing aspects.

[0029] In at least some applications, the disclosed watermarking systems and methods provide one or more of the following features: preserving the usability of watermarked data for advanced data analysis by modifying only a negligible amount of the original data and / or embedding only one or two noises into the original data; enabling a large number of unique watermarks; eliminating dependence on any primary key, thereby providing resistance to primary key deletion attacks; and enabling blind extraction of digital watermarks, so that extraction does not require the original data. Attached Figure Description

[0030] The accompanying drawings, which now illustrate exemplary embodiments of this application, will be shown by way of example, in which:

[0031] Figure 1A illustrates structured text data in comma-separated value (CSV) tabular data format;

[0032] Figure 1B illustrates the digital watermark characters embedded in the structured text data of Figure 1A;

[0033] Figure 2 This is a block diagram of a digital watermarking embedding system for structured text data according to an example embodiment;

[0034] Figure 3 An example of tabular data showing the partition numbers assigned to its cells is depicted;

[0035] Figure 4 This is a flowchart illustrating the steps of embedding line noise watermark characters into structured text data, according to an example embodiment.

[0036] Figure 5 This is a flowchart illustrating the steps of embedding line noise watermark characters into a single cell of structured text data, according to an example embodiment.

[0037] Figure 6 This is an example of text data included in table data cells before and after the noise character embedding;

[0038] Figure 7 This is a flowchart illustrating the steps of embedding invisible watermark characters into structured text data, according to an example embodiment.

[0039] Figure 8 This is a flowchart illustrating the steps of embedding invisible watermark characters into a single cell of structured text data, according to an example embodiment.

[0040] Figure 9 This is an example of text data included in table data cells before and after invisible character embedding;

[0041] Figure 10 This is a flowchart depicting the steps of embedding a column noise watermark into structured text data, according to an example embodiment.

[0042] Figure 11 This is a flowchart depicting the steps of preparing column noise for embedding into cells of a noise column, according to an example embodiment.

[0043] Figure 12 This is a block diagram illustrating a digital watermark extraction system according to an example embodiment;

[0044] Figure 13 This is a flowchart depicting the extraction of a digital watermark from a noise column, based on an example embodiment.

[0045] Figure 14 This is a flowchart depicting the steps of extracting a digital watermark from column noise embedded in a single cell of a noise column, according to an example embodiment.

[0046] Figure 15 This is a flowchart depicting the steps of extracting a digital watermark from invisible characters embedded in structured text data, according to an example embodiment.

[0047] Figure 16 This is a flowchart depicting the steps of extracting a digital watermark from line noise characters embedded in structured text data, according to an example embodiment of the present disclosure;

[0048] Figure 17 This is a block diagram illustrating a processing system that can be used to perform the methods described herein;

[0049] Figure 18 This is a flowchart depicting, according to an example embodiment of the present disclosure, the steps of embedding digital watermark information into text data arranged in a cell table, each cell containing a corresponding set of text data structures; and

[0050] Figure 19 This is a flowchart depicting the steps of extracting digital watermark information from text data arranged in cells according to an example embodiment of the present disclosure, where each cell contains a corresponding set of text data characters.

[0051] Similar reference numerals are used throughout the accompanying drawings to denote similar elements and features. While aspects of the invention will be described in conjunction with the illustrated embodiments, it should be understood that the invention is not intended to be limited to such embodiments. Detailed Implementation

[0052] This disclosure teaches methods and systems for digital watermarking of structured text data.

[0053] This document discloses example embodiments that provide methods and systems for watermarking structured text data to achieve one or more of the following throughout the data's lifecycle: data leakage traceability, copyright protection, and source authentication. As will be described in detail below, in at least some applications, the disclosed watermarking systems and methods are designed to provide one or more of the following features: preserving the usability of watermarked data for advanced data analysis by modifying only a negligible amount of the original data and / or embedding only one or two noises into the original data; enabling a large number of unique watermarks; eliminating dependence on any primary key, thereby providing resistance to primary key deletion attacks; and enabling blind extraction of digital watermarks, such that extraction does not require the original data.

[0054] Embedded systems and processes

[0055] Through examples, Figure 2An example of a digital watermark embedding system 90, which can be implemented by a digital processing system 3000 (described below), is depicted. The watermark embedding system 90 receives structured text data 1000 (which may be, for example, a digital file) as input and embeds unique digital watermark information (DWI) 108-1 to 108-M into M corresponding copies of the structured text data 1000, thereby generating M corresponding watermarked data versions 2000-1 to 2000-M (each version may be, for example, a corresponding digital file intended for use by a corresponding authorized recipient). The digital watermark embedding system 90 may include multiple engines for performing corresponding watermark embedding sub-processes on the structured text data 1000, including: a row noise character embedding engine 102 for performing a row noise character embedding sub-process 300; an invisible character embedding engine 104 for performing an invisible character embedding sub-process 400; and a column noise embedding engine 106 for performing a column noise embedding process 500. In some examples, some of engines 102, 104, and 106 may be omitted or placed in a different order than shown. The individual engines 102, 104, and 106, and their corresponding subprocesses 300, 400, and 500, will be described in detail below.

[0056] As used herein, "engine" can refer to hardware processing circuitry and machine-readable instructions (software and / or firmware) executable on that hardware processing circuitry. Hardware processing circuitry can include any one or a combination of a microprocessor, the core of a multi-core microprocessor, a microcontroller, a programmable integrated circuit, a programmable gate array, a digital signal processor, or another hardware processing circuitry. Alternatively, "engine" can refer to a combination of hardware processing circuitry. In the example embodiments, each of engines 102, 104, and 106 can be implemented by corresponding machine-readable instructions executable on general-purpose hardware processing circuitry.

[0057] In at least some example embodiments, the digital watermark information 108-1 to 108-M embedded in each watermarked data version 2000-1 to 2000-M can be mapped to a unique recipient of watermarked data version 2000-z, such as an expected or authorized recipient (where z represents a common version among watermarked data versions 2000-1 to 2000-M). For example, in Figure 2In this system, the watermark embedding system 90 stores or accesses a watermark database 92, which includes a list of authorized recipient identifiers 98-1 to 98-M and a corresponding pair of unique watermark ID codes for each of the authorized recipient identifiers 98-1 to 98-M. Specifically, each recipient identifier 98-1 to 98-M is associated with a corresponding unique noise character (NC) watermark ID code 100-1 to 100-M, and each recipient identifier 98-1 to 98-M is also associated with a corresponding unique invisible character (IC) watermark ID code 120-1 to 120-M. As will be explained in more detail below, the digital watermark information 108-1 to 108-M stored in each watermarked data version 2000-1 to 2000-M embeds both the corresponding unique NC watermark ID codes 100-1 to 100-M and the corresponding unique IC watermark ID codes 120-1 to 120-M, thus providing two distinct watermark ID codes, both of which map back to the corresponding authorized recipient identifiers 98-1 to 98-M. As will be explained in more detail below, each of the NC watermark ID codes 100-1 to 100-M and the IC watermark ID codes 120-1 to 120-M comprises multiple characters, which are 120-M characters divided into partitions or subsets.

[0058] NC watermark ID codes 100-1 to 100-M consist of multiple characters (e.g., "m" characters) that can be visible on display or print output (e.g., non-zero width characters occupying display space). In an example embodiment, each NC watermark ID code 100-1 to 100-M is 8 characters long (e.g., m = 8), and each character is selected from the lowercase English alphabet visible character set {a, ..., z}. Therefore, each character has 26 possible values, thus providing 26 8 Each of the possible unique NC watermark ID codes can be mapped to a corresponding authorized recipient. In various example configurations, the character length used for the NC watermark ID code can alternatively be less than or greater than 8 characters, and the noise character set selected from the NC watermark ID code can include other visible characters besides the lowercase English alphabet visible character set {a,…,z}, or other visible characters in addition. In some examples, the character type used for the NC watermark ID code can be selected based on the data type embedded in the NC watermark ID code. For example, in the case of numeric data, numeric codes can be used to better blend with the remaining data.

[0059] Each IC watermark ID code 120-1 to 120-M consists of multiple hidden or invisible characters that are not visible in the display or print output. For example, such characters may include zero-width control characters, which are typically used by word processing applications to handle line breaks, paragraph breaks, and spaces in a specific way, but have no meaning in the context of database table 180. Invisible characters occupy storage space within the text data, but when the text data is presented, invisible characters are invisible "zero-width" characters. In the illustrated example, each IC watermark ID code 120-1 to 120-M includes the same number of characters as each NC watermark ID code (e.g., "m" characters); however, in an alternative configuration, the NC watermark ID code may include a different number of characters than the IC watermark ID code. In the depicted example, each character of the IC digital watermark code 120-1 to 120-M is selected from a set of invisible characters that includes a group of invisible characters. In an illustrative embodiment, the set of invisible characters may, for example, include five possible characters, represented as {c1, c2, c3, ..., c4, c5}. Therefore, each invisible character of the IC watermark ID code can take five possible values. Thus, in the illustrative example where m = 8, the IC watermark ID codes 120-1 to 120-m have five... 8 (Approximately 309,000) possible unique values.

[0060] In various example configurations, the number of possibilities can be increased by increasing the character length of the IC watermark ID code and / or increasing the number of invisible characters in the set of selected characters. Similarly, the number of possibilities can be decreased by decreasing the character length of the IC watermark ID code and / or decreasing the number of invisible characters in the set of selected characters.

[0061] The recipient is identified in the watermark database 92 by mapping corresponding pairs of NC and IC watermark ID codes 100-1, 120-1 to 100-M, 120-M to corresponding email addresses used as authorized recipient identifiers 98-1 to 98-M. For example, in Figure 2 In the watermark database 92, the NC watermark ID code 100-1 (“jnoxerbd”) and the IC watermark ID code 120-1 (“c2c4c3c4c5c1c5c5”) are each mapped to the corresponding authorized recipient identifier 98-1 (“Bob@companyA.com”). In the example embodiment, the NC and IC watermark ID codes assigned to the corresponding authorized recipient identifiers can be randomly assigned, or in an alternative example embodiment, they can be assigned in a deterministic manner. Although email addresses are in Figure 2 The example shown is a unique authorized recipient identifier, but additional or alternative identifiers such as company name, username, contractor ID, etc. can also be used.

[0062] like Figure 2 As shown, the watermark database 92 also stores a key 160 (K) associated with the structured text data 1000. s The key 160 (K) associated with the structured text data 1000 is used when embedding digital watermark information 108-1 to 108-M into and extracting digital watermark information from the corresponding watermarked data versions 2000-1 to 2000-M, as will be explained in more detail below. s ) and noise key index 140 (NKI). In the illustrated embodiment, key 160 (K s The length of the NKI 140 is 6 alphanumeric text characters, however, its length may vary in different embodiments. In the illustrated embodiment, the length of the NKI 140 is the same as the length of the NC watermark ID code (e.g., m characters). In the example embodiment, the watermark database 92 also stores a pre-filled column noise (CN) mapping table 548, which will be described in more detail below.

[0063] In the example embodiment, the structured text data 1000 can be arranged as follows: Figure 3 The table data 180 shown is two-dimensional, comprising multiple rows 182 and columns 184. Each row includes multiple data fields, which are separated into corresponding cells 186. Each column 184 includes multiple cells 186 of the same data field. In this disclosure, row 182 is represented by the letter "i", and column 184 is represented by the letter "j", and cell 186 in database table 180 is represented by the symbol C. ij The database table 180 may include a header cell that includes field labels, shown as “A0” to “An” in the illustrated embodiment. In an example embodiment, the structured text data 1000 may include multiple sets of 2D table data 180 (e.g., multiple worksheets or pages in the case of a spreadsheet file), and each set of corresponding 2D table data 180 may be watermarked in a manner described below. As is known in the art, structured table data organized in rows and columns may be stored in different file formats, such as CSV (as described above), as well as proprietary formats associated with specific vendors of spreadsheet and database solutions.

[0064] The generation of a single watermarked data version 2000-1 will now be described, the version including a database table 190 embedded with watermark information 108-1 corresponding to a single authorized recipient (e.g., Bob@companyA.com indicated by authorized recipient identifier 98-1). In this regard, the row noise character embedding engine 102, the invisible character embedding engine 104, and the column noise embedding engine 106 perform the following actions on the structured text data 1000 to generate the watermarked digital data version 2000-1.

[0065] Line noise character embedding

[0066] refer to Figure 2 and 4 The line noise character embedding engine 102 is used to embed characters from NC watermark ID code 100-1 into selected rows of data table 180 of structured text data 1000-1 through the following application sub-process 300.

[0067] like Figure 4 As shown in box 310, the row noise character embedding engine 102 is used to select a subset of rows 182 located throughout table 180 for NC watermarking. In example embodiments, the relative number of rows 182 included in the NC watermark subset is predefined and can be a configurable parameter. For example, the number of rows 182 to be included in the NC watermark subset can be set to a specified percentage of all rows in database table 180 (e.g., 5% in some examples, up to 20% in others). In some example embodiments, the specified percentage of rows 182 can be selected deterministically (e.g., once every 20 rows if the specified percentage is 5%) or randomly (e.g., randomly selecting rows until 5% has been selected if the specified percentage is 5%). Distributing the rows 182 containing the embedded watermark characters throughout database table 180 makes it difficult for an attacker to copy any portion of database table 180, nor the portion containing the NC watermark 100-1. At the same time, since only a small portion of the rows in database table 180 contain the embedded watermark characters, the data within database table 180 will not be significantly altered, thus diminishing its usefulness for statistical and / or machine learning-based analyses.

[0068] like Figure 4 As shown, once a subset of NC watermarked rows is selected (box 310), each row of the subset undergoes the NC embedding process 320. Referring to boxes 330, 350, and 370, during the NC embedding process 320, each of the cells 186 in the row is embedded with a corresponding noise character selected from the NC watermark ID code 100-1.

[0069] Figure 5The diagram below shows in more detail the method for embedding noise characters into specific cells 186 (e.g., C). ij An illustrative example of subprocess 350 in ). For illustrative purposes, Figure 6 This shows cell C of table data 180 from structured text data 1000 before embedding subprocess 350. ij The text data contained in 192 and the same cell C after the embedded subroutine 350. ij The example contains the corresponding text data 194. For example... Figure 6 As shown, in the resulting text data 194 with embedded noise, a portion of the original text data 192 has been replaced by a portion of the text from the NC watermark ID code 100-1. Specifically, the character "s" at the 4th character position (e.g., position 3) of the original text data 192 has been replaced by the noise character "j" from the NC watermark ID code 100-1, and the character "e" at the last character position (e.g., position "L-1") of the original text data 192 has been replaced by the noise key (NK) character "r" from the NKI 140. In the example embodiment, subprocess 350 generates the text data 194 with embedded noise as follows.

[0070] In the example embodiment, to facilitate the selection of a portion of the NC watermark ID 100-1 (e.g., a noise character (e.g., the character "j" in the illustrated example) for embedding in a specific cell 186), the NC watermark ID 100-1 is divided into partitions. Specifically, the character positions of the NC watermark ID 100-1 are divided into portions or subsets, each portion or subset comprising a defined number of character positions, each subset being assigned a consecutive partition number 353. In the illustrated embodiment, the character positions of the NC watermark ID 100-1 are divided into subsets, where the defined number of character positions for each subset is one. In the illustrated example, each partition includes only a single character from the NC watermark ID 100-1, thus each partition number 353 is indexed for the corresponding noise character to be embedded in cell 186. In other example configurations, where more than one character from the NC watermark ID 100-1 is embedded in each cell, other subset sizes may be used.

[0071] Each partition subset of the NC watermark ID 100-1 (e.g., each character position with a subset size of 1 in the illustrated example) is assigned a corresponding partition number 353. Therefore, in the illustrated example, the first character position in the NC watermark ID 100-1 (e.g., the position of the text character "j") is assigned a partition number equal to 0 (Partition0), the second character position (e.g., the position of the text character "n") is assigned a partition number equal to 1 (Partition1), and so on, with the m-th character position (e.g., the position of the text character "d") assigned a partition number equal to m-1 (e.g., Partition7 in the illustrated case, where m = 8).

[0072] As shown in box 354, the line noise character embedding engine 102 selects content from NC watermark ID code 100-1 to embed into the subject cell 180(C). ij In the example embodiment, this is achieved by assigning the cell partition number to the subject cell 180 (C). ij Then, the text character is selected from the position of NC watermark ID code 100-1, which has been assigned the same partition number, to perform this selection. In the example embodiment, the text character assigned to subject cell 180 (C ij The cell partition number is based on topic cell 180 (C). ij The content of ) is determined. In the illustrated example (i.e., a single character from NC watermark ID code 100-1 is embedded in subject cell 180 (C ij In the case of ( ), the following equation provides how to assign the cell partition number to the subject cell 180 (C ) ij An example:

[0073] Partition(C ij )=H(K s ||H(P ij ||k s )mod m (I)

[0074] Where: m is the number of partitions; H(x) is the hash function; P ij It is cell C ij Primary key; k s is the key 160 of the structured data 1000; and m is the number of partitions into which the NC watermark ID code 100-1 has been divided (e.g., the number of characters in the NC watermark ID code 100-1 in the illustrated example).

[0075] In the example embodiment, based on cell C ij The content of cell C is determined ij Primary key P ij In the example described, the cell primary key Pij Based on cell C ij The first character of the data included in cell C ij The length of the cell primary key P. In a specific example, the cell primary key P ij It could be cell C ij The first character of the data and cell C ij The concatenation of text data length "L" (e.g., number of characters). For example, if the first character of the data is "T" and cell C... ij If the length of the text data contained is L = 14, then the primary key P ij It can be the string "T14". In some examples, the cell primary key is P. ij It can be based on other attributes of the data included in the cell and / or character position, as long as the cell primary key P ij This can be determined at the future watermark extraction time.

[0076] Then, set the cell primary key P ij and key k s The concatenation is provided to the hash function H(x). Hash function H(P) ij ||k s H(P) returns the first numeric hash value. ij ||k s The first hash value returned is the key 160k. s Cascade and provide to another instance of the hash function H(x) that returns the second hash number. Perform a modulo operation to return cell C. ij The cell partition number (represented as "Partition(C")) ij The cell partition number is the remainder of the second hash value divided by the number of partitions (m) (e.g., a value between 0 and m-1). For example, if m = 8, then the partition number is either Partition(C) or Partition(m) = 0. ij The value is between 0 and 7. As mentioned above, the partition number m is the number of characters in the digital watermark (W).

[0077] The line noise character embedding engine 102 selects the noise character at the partition position of NC watermark ID code 100-1, the partition position corresponding to the cell C used for embedding. ij The cell partition number in the content (Partition(C ij )).For example, Figure 3 This example illustrates a cell partition number determined for 180 rows of table data. Representative cell C ij The label "Partition0" indicates cell C ijCell partition number 0 has been assigned. Therefore, the first character of NC watermark ID code 100-1 (e.g., the character "j" at partition position 0) will be selected for embedding in cell C. ij middle.

[0078] Refer again Figure 5 As shown in box 356, the row noise character embedding engine 102 determines cell C for the selected noise character (e.g., the noise character "j" in the example described here). ij The embedded location within the included data. (See reference) Figure 6 In the example embodiment, cell C is retained. ij The first and last characters of the original text data 192 (e.g., character positions 0 and L) are not used to embed noise characters. Specifically, as mentioned above, the first character at character position 0 (e.g., the character "T" in the illustrated example) is used to determine the primary cell key P. ij Therefore, it needs to be reserved for future watermark extraction processing (as described below). The last Lth character is reserved for embedding a character noise key selected from NKI 140, as described below.

[0079] The selected noise character is embedded in cell C. ij The position in is determined based on the following equation:

[0080] Embedding position = k s Model (C) ij (length) (II)

[0081] Where k s It is the aforementioned key 160. The key k is determined by applying a modulo operation. s Divide by cell C ij The embedding position is determined by the remainder of the length of the data contained (e.g., the number of text characters "L"). The resulting remainder value is the character position between 0 and (L-1).

[0082] As mentioned above, cell C ij The first and last characters of the original text data 192 (e.g., character positions 0 and L) are preserved and cannot be used to embed noise characters. Therefore, if equation (II) returns embedding position 0, then the embedding position used is position 1 (e.g., cell C). ij The position of the second character of the data contained therein), and if equation (II) returns the embedding position L-1, then the embedding position used is position L-2 (e.g., cell C). ij (The position of the second to last character in the middle).

[0083] For illustrative purposes, in Figure 6In the example illustrated, equation (II) returns the embedding position as "3" (e.g., the 4th character position in text data 192). At box 362, the noise character selected at box 354 (e.g., the character "j" corresponding to Partition0 of NC watermark ID code 100-1) is used to replace the character located in cell C. ij The character (e.g., the character "s") at the embedding position of the original data 192 contained therein.

[0084] At box 364, replace cell C with the noise key character selected from NKI 140. ij The last character of the data contained within. Similar to the NC watermark ID code, the m-character positions of NKI 140 are also divided into partitions 0 to m-1. Equation (I) is used in box 354 for cell C. ij The determined cell partition number is again used in box 364 to select the noise key character located at the partition position in NKI 140, which corresponds to the partition position for cell C. ij A defined cell partition number. In the illustrated embodiment, when the cell partition number is Partition0, the first noise key character "r" is selected from NKI 140, such that... Figure 6 As shown, the last character “e” in the original text data 192 is replaced by the noise key character “r” from NKI 140 in the watermarked data 194.

[0085] Although in the example described in the present description, cell C ij The first and last character positions are reserved as non-embedded positions, but in other embodiments, different positions may be reserved to replace or supplement such positions.

[0086] Refer again Figure 4 The noise character embedding process 350 is repeated for all cells 186 of each row in row 182 that have been selected for NC watermarking. Figure 3 As can be seen from the illustrative cell partition numbers shown, different characters from NC watermark ID code 100-1 will be embedded in different cells in each of the watermark embedding rows in order as a function of the actual content of the corresponding cell 186 and key 160 (Ks).

[0087] Invisible character embedding

[0088] refer to Figure 2 and 7 The invisible character embedding engine 104 is used to embed invisible characters from IC watermark ID code 120-1 into selected rows of data table 180 of structured text data 1000-1 through the following application sub-process 400.

[0089] Similar to the embedding process 300 performed by the row noise embedding engine 102, the invisible character embedding engine 104 is also used to select a subset of rows 182 located in the entire table 180 for IC watermarking. Figure 7 (See box 410 in the original text). The subset of rows used for IC watermarking can be selected in a similar manner to the subset used for row noise watermarking described above with respect to box 310. In at least some example embodiments that perform both row noise embedding and invisible character embedding, the watermark embedding system 90 is used to select rows 182 of the tabular data 180 that are different from the rows used for row noise embedding. In example embodiments, the relative number of rows 182 included in the IC watermark subset is predefined and can be a configurable parameter (e.g., 5% in some examples, up to 20% in others). In some examples, the sum of the number of rows subjected to invisible character embedding and row noise embedding may be 5% (e.g., 2.5% of the rows embedded using invisible character embedding and 2.5% of the rows embedded using row noise embedding).

[0090] like Figure 7 As shown, once a subset of IC watermarked rows is selected, each row of that subset undergoes IC embedding process 420. Referring to reference boxes 430, 450, and 470, during IC embedding process 420, all cells 186 in the subject row are each embedded with an invisible character selected from IC watermark ID code 120-1.

[0091] Figure 8 The diagram below shows a more detailed illustrative example of subprocedure 450 for embedding invisible characters into a specific cell 186. Representative cell C i'j' Used to explain IC watermarks. For illustrative purposes. Figure 9 Cell C of table data 180 is shown. i'j' The text data 192 contained therein, and the same cell C after the invisible character embedding subroutine 450. i'j' It contains 196 possible samples of the corresponding text data. For example... Figure 9 As explained, in the resulting invisible character text data 196, the invisible character "c4" has been inserted into an embedding position (e.g., embedding position 3, which corresponds to the 4th character position) corresponding to the position of the character "s" in the original text data 192. Furthermore, unlike the noise character embedding process 350 described above, the character "s" is not covered; instead, in at least some example embodiments, the selected invisible character is inserted into the determined embedding position, and all remaining characters of the original text data starting from the embedding position are pushed to the next character position, and cell C... ijThe length of the resulting text data 196 includes additional characters (e.g., L' = L + 1 characters, where L' is the length of the embedded data 196). In an example embodiment, subprocess 450 generates text data 196 with embedded invisible characters as follows.

[0092] In the example embodiment, the character positions of IC watermark ID code 120-1 are divided and assigned corresponding partition numbers in the same manner as described above with respect to NC watermark ID code 100-1. In particular, each character position of IC watermark ID code 120-1 is assigned a corresponding partition number 453. The first invisible character position in IC watermark ID code 120 (e.g., the position of the invisible text character "c2") is assigned a partition number equal to 0 (Partition0), the second invisible character position (e.g., the position of the first occurrence of the invisible character "c4") is assigned a partition number equal to 1 (Partition1), and so on, with the m-th invisible character position (e.g., the position of the last invisible character "c5") being assigned a partition number equal to m-1 (e.g., Partition7 in the illustrated case, where m = 8).

[0093] As shown in box 454, the invisible character embedding engine 104 selects the content to be embedded from the IC watermark ID code 120-1. In the example embodiment, this selection is performed in the same manner as described above regarding row noise embedding. That is, using the above equation (I), the cell partition number is assigned to the subject cell 180 (C) based on the cell's data content. i'j' The invisible character embedding engine 104 selects an invisible character at a partition position of IC watermark ID code 120-1, the partition position corresponding to the character to be embedded into unit C. i'j' The cell partition number in the content (Partition(C i'j' For this illustrative example, assign cell C to... i'j' The partition number is "partition3". Therefore, the fourth character of the IC watermark ID code 1200-1 (e.g., the character "c4" at partition1) will be selected for embedding in cell C. i'j' middle.

[0094] As shown in box 456, the invisible character embedding engine 104 determines cell C for the selected invisible character (e.g., the invisible character "c4" in the example described here). i'j' The embedded location is included within the data. In the example embodiment, the embedded location can be in the same manner as described above ( Figure 5The box 356) is used to determine the embedding of noisy characters, but the following differences exist. Since invisible characters are generally easily identifiable electronically from the rest of the text data, it is not necessary to define them in cell C. i'j' An equivalent of embedding a noisy character key is used to mark the cell as containing an invisible character. Therefore, although the first character position (position 0) of text data 195 is preserved to allow recovery of the cell's primary key, the final character position (position L-1) does not need to be preserved. Therefore, the selected invisible character embedding cell C is determined based on equation (II) mentioned above. i'j' The position in the equation is such that the character position is between 0 and (L-1). If equation (II) returns an embedding position of 0, then the embedding position will be incremented by one to position 1; otherwise, the embedding position will be applied as is.

[0095] For illustrative purposes, in Figure 9 In the example illustrated, equation (II) returns an embedding position of "3" (e.g., the 4th character position in text data 195). At box 464, the invisible character selected at box 454 (e.g., the invisible character "c4" corresponding to Partition 1 of IC watermark ID code 120-1) is inserted into cell C. i'j' The embedding position of the original data 192 (e.g., the character "s" at embedding position 3). As mentioned above, none of the characters in the original data 195 are overwritten; instead, all the original characters are shifted one character space in the embedded data 196. Embedded cell C i'j' The length of the embedded data 196 displayed on the screen or printed will remain the same as the length of data 195, because the invisible character "c4" has zero width when displayed.

[0096] Refer again Figure 7 The invisible noise character embedding process 450 is repeated for all cells 186 of each row in row 182 that has been selected for IC watermarking.

[0097] Column noise embedding

[0098] refer to Figure 2 and 10 The column noise embedding engine 106 is used to embed columns into data table 180 of structured text data 1000-1 through the following application sub-procedure 500.

[0099] Column noise character embedding involves inserting an additional column into table data 180. The additional column comprises a column of cells, each storing watermark information that can be displayed as noise to an observer. In an example embodiment, the "noise column" is assigned a header name (e.g., field label) selected from a set of predefined header names 501. In another example embodiment, the set of predefined header names 501 is stored as part of a watermark database 92. In yet another embodiment, the noise column is assigned a header name based on existing column header names in the table or a header name modeled based on existing column header names in the table, making it difficult for an attacker to identify and remove the noise column. Figure 10 A process 500 for embedding column noise characters is depicted. The process begins at box 510. In the illustrated embodiment, a column header is selected from a set of predefined header names 501 (box 520). At 530, the noise column is inserted into table 180. In the example embodiment, the position of the noise column is randomly selected, and the original column 184 at the insertion point and all columns 184 to the right of the insertion point are shifted one column to the right. The noise column is then filled (box 540) such that each cell of the noise column is filled with an encoded noise column data string.

[0100] Figure 11 A sub-procedure of 540 is described, through which cell C of the noise column is processed. N (where C) NA representative cell within the noise column is filled with a noise column data string 562, which includes a concatenated encoding of a start signal 542, an obfuscated version 552 of the noise character watermark ID code 100-1, and a check signal 546. Initially, at step 545, the start signal 542 is randomly selected. In the depicted example, the start signal 542 includes two alphanumeric characters 542A and 542B. In the illustrated example, each of characters 542A and 542B is randomly selected from the English language set of uppercase letters, lowercase letters, and numbers. Therefore, each of characters 542A and 542B can have 62 possible values ​​because there are 26 uppercase letters, 26 lowercase letters, and 10 numbers (0-9). After the start signal 542, the watermark field 544 is initially filled with the numeric noise character watermark ID code 100-1. The check signal 546 follows the watermark field 544. The check signal 546 is selected from a pre-filled CN mapping table 548. The CN mapping table 548 is a 2D array, indexed in the illustrated embodiment by the alphanumeric characters 542A and 542B of the start signal 542. In the depicted embodiment, the mapping is a 62×62 2D array. The first character 542A of the start signal 542 maps to a row in the mapping table. The second character 542B of the start signal 542 maps to a column in the mapping table. The check signal 546 is filled with the values ​​at the intersections of the rows and columns of the mapping table 548, mapped by the values ​​of characters 542A and 542B, respectively. In the depicted embodiment, the row specified by the first character 'b' and the column specified by the second character '4' both intersect at the value 549 in the mapping table 548, thus mapping to the value "3F" of the check signal 546.

[0101] At step 550, the NC watermark ID code 100-1 contained in watermark field 544 is passed to the encryption function, while start signal 542 and check signal 546 remain unchanged. The encryption function generates an encrypted watermark value 552 from the NC watermark ID code 100-1. At step 555, start signal 542, encrypted watermark value 552, and check signal 546 are concatenated, and the resulting string is encoded using a Base64 encoder. The resulting obfuscated value 558 is stored in cell C. N Finally, at step 560, in some examples, decorative characters can be added to the obfuscation value 558 based on predetermined modification rules. For example, the obfuscated watermark can be segmented by inserting dashes every few characters to produce a decorative obfuscation value 562. In an example embodiment, a set of decorative characters and associated modification rules are also stored in the watermark database 92.

[0102] Watermarked data version

[0103] The corresponding subprocesses described above regarding the row noise character embedding engine 102, the invisible character embedding engine 104, and the column noise embedding engine 106 on the structured text data 1000 generate a watermarked digital data version 2000-1 including embedded digital watermark information 108-1. In the described embodiments, the digital watermark information 108-1 includes three types of digital watermarks: row noise watermarks applied to the first set of scattered rows 182 of the table data 180; invisible character watermarks applied to the second set of scattered rows 182 of the table data 180; and column noise watermarks applied to the columns of the table data. In the example embodiments, all three types of digital watermarks are independently embedded with information mapped to the authorized recipient identifier 98-1. In some examples, the order in which these three different types of digital watermarks are applied may differ from that described above. Furthermore, in some example applications, one or two of the digital watermark types may be omitted.

[0104] Extraction System and Process

[0105] If the watermarked data version is illegally copied (in whole or in part) or leaked, an extraction process can be performed on the copied or leaked data to extract one or both of the NC watermark ID code and / or IC watermark ID code, which will be mapped to a specific authorized recipient of the watermarked data version 2000-z (where 1 <= z <= M).

[0106] As an example, Figure 12 An example of a digital watermark extraction system 200 is depicted, which may be implemented by the same digital processing system 3000 that implements the watermark embedding system 90, or by different digital processing systems 3000. The digital watermark extraction system 200 receives a watermarked data version 2000-z with embedded digital watermark information 108-z as input and outputs a corresponding authorized recipient identifier 98-z. The digital watermark extraction system 200 includes: a column noise extraction engine 202 for performing a column noise extraction process 650; an invisible character extraction engine 204 for performing an invisible character extraction sub-process 700; a row noise character extraction engine 102 for performing a row noise character extraction sub-process 800; and an arbitration engine 208 for arbitrating the outputs generated by the respective extraction engines 202, 204, 206. In some examples, some of the engines 202, 204, 206, and 208 may be omitted or placed in a different order than shown. The digital watermark extraction system 200 also includes or has access to the watermark database 92; however, the digital watermark extraction system 200 does not need to access the original structured text data 1000.

[0107] Noise extraction

[0108] like Figure 13As shown, the watermarked data version 2000 first undergoes a column noise extraction sub-process 600 applied by the column noise extraction engine 202 to recover the digital CN watermark code ID 100-z from the noisy column. The inputs to the column noise sub-process 600 include table data 180 included in the watermarked data version 2000-z, a set 501 of noise column header names from which noise column header names are selected, and a CN mapping table 548 used by the sub-process 500 to derive the stop signal 546 from the start signal 545.

[0109] As shown in box 630, noise columns are identified. In the illustrated example, the column header names of each column 184 of the table data 180 included in the watermarked data version 2000 are compared with the column header names in a set of noise column header names 501 to identify matches, thereby identifying the noise column. Next, the cells C of the noise column are... N Execute subroutine 650 to extract data from cell C of the identified noise column. N Deobfuscate and extract the digital CN watermark ID code 100-z. (Reference) Figure 14 Describe the steps of subprocess 650 in detail.

[0110] Figure 14Sub-procedure 650 for extracting the CN watermark ID code is described. Step 655 removes decorative characters, such as dashes, from the content 562 of the noise column cell. At step 660, the content is decoded using the same Base64 method used in embedding sub-procedure 500 to encrypt the undecorated content 558 of the noise column cell. The decoded content of the cell now includes three components: a start signal 542, an encrypted watermark value 552, and a check signal 546. At step 665, the encrypted watermark value 552 is decrypted to return the value in the watermark field 544, which should be equal to the numeric NC watermark ID code 100-z used by the watermark embedding system 90 at the column noise embedding sub-procedure 500. To verify that the content in the noise column has not been tampered with by an attacker, step 670 verifies the data by verifying the relationship between the start signal 542 and the check signal 546. This is achieved by indexing the row of the mapping table 548 with the first start byte 542A and the column of the mapping table 548 with the second byte 542B. The value 549 at the intersection of the row and column is compared with the check signal 546. If the value 549 returned from the mapping table matches the value of the check signal 546, then the value in the watermark field 544 is very likely the NC watermark ID code 100-z used in the column noise embedding sub-procedure 500. Another way to verify that the digital watermark 544 has not been altered is to repeat the extraction process 600 with other cells in the noise column. Because the same NC watermark ID code 100-z is encoded and decorated multiple times in the noise column by different start and check signals, it is difficult for an attacker to consistently forge multiple obfuscated versions of the watermark ID code 100-z across all cells in the noise column.

[0111] like Figure 13 As shown in box 660, in the example embodiment, once the watermark ID code 100-z is extracted, the noise column is removed from the table data 180, and all original columns 184 that were shifted right to accommodate the insertion of the noise column are shifted left back to their respective original positions. In at least some example embodiments, this is done so that the noise column does not appear in the table data 180 during IC character extraction and row noise extraction.

[0112] Invisible character extraction

[0113] Character extraction sub-process 700 (e.g.) Figure 15 The process (shown in the diagram) is executed by the invisible character extraction engine 204 to recover the digital IC watermark code ID 120-z. The inputs to subprocess 700 include the watermarked data version 2000-z (if applicable, after column noise extraction) and the key k. s 160, the key is necessary to determine the partition allocation of cell 186 in table 180 of watermarked data version 2000-z.

[0114] In the illustrated embodiment, in the invisible character embedding subprocess 400, invisible characters are embedded in table 180 row by row. Therefore, if a particular row 182 of table 180 has any invisible characters embedded therein, then all cells in that row will also have the embedded invisible characters. Thus, in the illustrated example, subprocess 700 begins with the first row 182 and the first column 184 of table 180. If the cell has an invisible character at the expected embedding location, then the invisible watermark character corresponding to the cell's partition number is extracted. Furthermore, other cells in the same row 182 are checked for invisible watermark characters at their corresponding embedding locations. In some examples, the subprocess terminates once enough cells have been processed to extract the IC watermark ID code.

[0115] At step 710, the row and column index values ​​i and j are initialized to point to the first cell in the first row (0,0). At step 710, cell 186(C) is extracted. ij At step 730, the embedding location of the extracted cell 186 is determined. Based on equation (II), and using key 160(k)... s ) and cell C ij The length of cell C determines the embedding position. When calculating the embedding position, cell C... ij The length is reduced by 1 to obtain the original length before inserting the invisible watermark characters. At step 740, the extracted cell 186(C) is checked against the invisible character set {c1,c2,c3,c4,c5}. ij The character at the embedding position. If the character at the embedding position does not match any invisible character in the invisible character set {c1,c2,c3,c4,c5}, then the row index (i) is incremented at 745, and a new cell is extracted from the next row at 720. If an invisible character is detected at the embedding position at step 740, then cell C is calculated at step 750. ij The partition number. The partition number depends on the key k. s Cell C ij The first character and C ij The length. Similarly, the length needs to be subtracted by 1 to obtain the original length used to calculate the partition number in the invisible character embedding subprocess 400. Once the partition number is calculated, at step 760, cell C at the embedding location... ijThe invisible characters found represent a portion of the IC watermark ID code 120-z corresponding to the partition number. At step 770, the system checks if enough cells have been processed to determine the entire invisible IC watermark ID code 120-z at a threshold level of certainty (e.g., each partition number has been recovered twice with the same character value). If yes, then subprocess 700 terminates at step 780. If not, then at 775, the column index is incremented, and steps 720 through 770 are repeated. In one embodiment, subprocess 700 stops when each partition of the IC watermark ID code 120-z has been extracted multiple times with a consistent value. In another embodiment, the subprocess continues until a predetermined percentage of the data has been processed. For example, if 5% of the rows in the table have embedded invisible characters, then subprocess 700 can continue until all 5% of the rows containing the embedded cells have been processed.

[0116] Linear noise extraction

[0117] refer to Figure 16 The watermarked data version 2000-z is then processed by the row noise character extraction engine 206 through a row noise character extraction sub-process 800 to extract the partitions of the NC watermark ID code 100-z embedded as portions of individual cells. The inputs to sub-process 800 include: watermarked data version 2000-z (following column noise extraction 600 and invisible character extraction 700, whichever is applicable), and a key 160k. s And the noise key index (NKI) 140 used in the corresponding embedded sub-procedure 300.

[0118] At step 810, the row index (i) and column index (j) are initialized to point to the first cell in the first row of the table data 180 containing structured text data. At step 820, cell C is extracted. ij At step 830, based on the key 160(k) provided as input to subprocess 800... s ), cell C ij The first character and cell C ij The length of cell C is determined using equation (I) as described above. ij The partition number. To determine cell C ij Does it contain a portion of the digital watermark 100(W)? At 840, check cell C based on the noise key 140(F) character corresponding to the partition number. ij The last character. If C ij The last character corresponds to the corresponding noise key character in NKI 140 (determined by the partition number), so cell C ijContains a portion (or characters) of the numeric NC watermark ID code 100-z. If there is no correspondence, then the entire row specified by row index (i) does not contain the embedded row noise characters. In this case, at step 845, row index (i) is incremented, and control returns to step 820 to extract the cell from the next row 182 in table 180. At step 850, based on equation (II), based on C... ij The length and key 160 (K) provided as input to subprocess 800 s The embedding location is determined. At 860, the character at the embedding location is extracted as a match for cell C. ij The subprocess retrieves the digital watermark character corresponding to partition number 190. At step 870, it is determined whether enough cells have been processed to determine the NC watermark ID code 100-z with sufficient determinism. For example, while it might be sufficient to extract the watermark character from cells with enough unique partition numbers 190 to cover all parts of the digital watermark 100(W), the subprocess can continue processing more cells until each partition of the NC watermark ID code 100-z has been verified multiple times to ensure that the structured text data 2000 has not been tampered with. Therefore, at step 870, if more cells need to be processed, the column indicator is incremented to process the next cell C in the current row. ij Once a particular row has been processed, subprocess 800 increments the row index (j) to process the next row. The decision about whether to process more cells can also depend on the percentage of cells processed compared to the percentage of cells expected to contain the embedded watermark characters.

[0119] Arbitration Engine

[0120] The recovered DWI 108-Z includes: an IC watermark ID code 120-z provided by the character extraction subprocess 700; a first NC watermark ID code 100-z provided by the column noise extraction subprocess 600; and a second NC watermark ID code 100-z provided by the row noise extraction subprocess 800. Although the first and second NC watermark ID codes 100-z should be identical, and all recovered watermark ID codes 100-z and 120-z should be mapped back to the same authorized recipient identifier 98-z, data corruption (unintentional or through an attack) may have occurred, providing a mismatch. Therefore, in the example embodiment, the arbitration engine 208 is used to match each of the three recovered ID codes back to the authorized recipient identifier 98-z. If the watermarked data version 2000 is not corrupted, then all three recovered ID codes should be mapped to the same authorized recipient identifier 98-z, and the corresponding identifier serves as the source output of the analyzed watermarked data version 2000-z. In the example embodiment, if the three recovered ID codes cannot all be mapped back to the same authorized recipient identifier 98-z, then a majority vote (e.g., two-thirds) is used to determine the authorized recipient identifier.

[0121] Figure 16 Example processing system 3000 is described, which can be used to implement the methods and systems described herein, such as the digital watermark embedding system 100 process or the watermark extraction system 200. Other processing systems suitable for implementing the methods and systems described in this disclosure may be used, which may include components different from those discussed below. Although Figure 16 A single instance of each component is shown, but multiple instances of each component may exist in the processing system 3000.

[0122] The processing system 3000 may include one or more processing devices 3002, such as a processor, microprocessor, application-specific integrated circuit (ASIC), field-programmable gate array (FPGA), special-purpose logic circuit, or a combination thereof. The processing system 3000 may also include one or more input / output (I / O) interfaces 3004, which enable interfacing with one or more suitable input and / or output devices (not shown).

[0123] The processing system 3000 may also include one or more storage units 3013, which may include high-capacity storage units such as solid-state drives, hard disk drives, disk drives, and / or optical disk drives. The processing system 3000 may include one or more storage units or memory units 3010, which may include volatile memory (e.g., random access memory (RAM)) or non-volatile memory or storage (e.g., flash memory, read-only memory (ROM), high-capacity storage units such as solid-state drives, hard disk drives, disk drives, and / or optical disk drives). Non-transitory memory may store instructions executed by the processing device 3002, for example, to perform the methods and systems of this disclosure. Such instructions may include instructions 101 configuring the processing device 3002 and the processing system 3000 to implement the watermark embedding system 100, and instructions 201 configuring the processing device 3002 and the processing system 3000 to implement the watermark extraction system 201. Non-transitory memory may store a watermark database 92. The memory may include other software instructions, such as those for implementing the operating system and other applications / functions. In some examples, one or more datasets and / or modules may be provided by external memory (e.g., an external driver that communicates with the processing system 3000 via wired or wireless communication) or by transient or non-transient computer-readable media.

[0124] A bus 3014 may exist to provide communication between components of the processing system 3000, which includes a processing device 3002, an I / O interface 3004, a network interface 3008, and a memory 3010. The bus 3014 may be any suitable bus architecture, including, for example, a memory bus, a peripheral bus, or a video bus.

[0125] Figure 18A method 1800 for embedding a digital watermark in structured text data arranged in cells of a table, according to an example aspect of this disclosure, is described. The method begins at 1810, where a first subset of cells is selected for watermarking. For each cell in the selected subset, steps 1820 through 1850 are performed until all cells are processed. At step 1820, a cell is selected. At 1830, a primary cell key is determined for the selected cell. The primary cell key is based on one or more text data characters contained in the cell. At 1840, a cell partition number is determined for the selected cell. The cell partition number is based on the primary cell key. At step 1850, a portion of a first digital watermark code is embedded at an embedding location within the cell. The portion of the first digital watermark code is determined based on the cell partition number. At step 1860, it is checked whether all cells in the first subset have been processed. If some cells have not yet been processed, control returns to step 1820, where new cells are selected. If all cells have been processed, the method ends.

[0126] Figure 19 A flowchart of a method 1900 for extracting a digital watermark ID code from a cell table of structured text data, according to an example aspect of this disclosure, is depicted. For each cell in the cell table, steps 1910 to 1950 are performed. The method ends when the digital watermark ID code is determined. At step 1910, cells containing text data are extracted from the table. At step 1920, it is determined whether the cell contains a portion of a digital watermark ID code embedded therein. At step 1930, the cell primary key of the cell is determined. The cell primary key is based on one or more text characters contained in the cell. At step 1940, the cell partition number of the extracted cell is determined based on the primary cell key. At step 1950, a portion of a first digital watermark ID code is extracted at the embedding location within the cell. The portion of the first digital watermark ID code is determined based on the cell partition number. At step 1960, it is checked whether the digital watermark ID code has been determined. If the first digital watermark ID code has been determined, then the method ends. If the first digital watermark ID code has not yet been determined, extract another cell at 1910 and repeat steps 1910 to 1950.

[0127] This disclosure provides some example algorithms and computations for implementing the disclosed methods and systems. However, this disclosure is not bound by any particular algorithm or computation. Although this disclosure describes methods and processes by steps performed in a certain order, one or more steps of the methods and processes may be omitted or modified as appropriate. Where appropriate, one or more steps may be performed in an order other than that described.

[0128] Based on the description of the above embodiments, the present invention can be implemented solely using hardware, or by using software and necessary general-purpose hardware platforms, or by a combination of hardware and software. Based on this understanding, the technical solution of the present invention can be embodied in the form of a software product. The software product can be stored in a non-volatile or non-transitory storage medium, such as a compact disk read-only memory (CD-ROM), a USB flash drive, or a hard disk. The software product includes numerous instructions that enable a computer device (personal computer, server, or network device) to execute the methods provided in the embodiments of the present invention.

[0129] While the invention and its advantages have been described in detail, it should be understood that various changes, substitutions and modifications may be made without departing from the invention as defined in the appended claims.

[0130] Furthermore, the scope of this application is not limited to the specific embodiments of the processes, machines, articles of manufacture, material compositions, components, methods, and steps described in the specification. Those skilled in the art will readily understand from the disclosure of this invention that existing or soon-to-be-developed processes, machines, articles of manufacture, material compositions, components, methods, or steps that have substantially the same functionality as the corresponding embodiments described herein, or that can achieve substantially the same results as the embodiments described, can be used according to this invention. Therefore, the appended claims are intended to include such processes, machines, articles of manufacture, material compositions, components, methods, or steps within their scope.

Claims

1. A method for embedding digital watermark information into text data arranged in a cell table, each cell containing a corresponding set of text data characters, characterized in that, The method includes: Select the first subset of cells for watermarking; For each cell in the first subset of cells: The primary cell key of the cell is determined based on one or more of the text data characters contained in the cell, wherein the primary cell key is determined based on a combination of at least one of the text data characters contained in the cell and the number of text data characters contained in the cell; The cell partition number of the cell is determined based on the primary cell key; A portion of a first digital watermark ID code is embedded at the embedding location within the cell, the portion being determined based on the cell partition number; Insert a noise column into the cell table, the noise column comprising multiple cells, each containing the first digital watermark ID code in encrypted form.

2. The method according to claim 1, characterized in that, For each cell in the first subset of cells, the cell partition number is also determined based on a key that is common to all cells in the first subset of cells.

3. The method according to claim 1, characterized in that, For each cell in the first subset of cells, the method includes: determining the embedding position within the cell based on a key and the length of the text data in each cell.

4. The method according to claim 1, characterized in that, The cells are arranged in an array of columns and rows, wherein selecting a first subset of cells for watermarking includes selecting a first subset of cell rows of the array, wherein each cell in the row of the selected subset is included in the first subset of cells.

5. The method according to claim 1, characterized in that, The first digital watermark ID code includes a plurality of visible characters, and the portion of the first digital watermark ID code includes at least one of the plurality of visible characters. Embedding the portion of the first digital watermark ID code includes: replacing a portion of the text data characters contained in the cell with the portion of the first digital watermark ID code.

6. The method according to claim 5, characterized in that, For each cell in the first subset of cells, the method includes: replacing the last character of the text data characters in the cell with a noise key character selected from a noise key index based on the cell partition number, wherein the noise key index is applicable to all cells in the first subset of cells.

7. The method according to claim 1, characterized in that, The first digital watermark ID code includes a plurality of invisible characters, and the portion of the first digital watermark ID code includes at least one of the plurality of invisible characters. Embedding the portion of the first digital watermark ID code includes: inserting the portion of the first digital watermark ID code into the text data characters contained in the cell.

8. The method according to claim 1, characterized in that, The method includes: Select the second subset of cells for watermarking; For each of the cells in the second subset of cells: The primary cell key of the cell is determined based on one or more of the text data characters contained in the cell; The cell partition number of the cell is determined based on the primary cell key; A portion of a second digital watermark ID code is embedded at the embedding location within the cell, the portion being determined based on the cell's partition number. Both the first digital watermark ID code and the second digital watermark ID code are mapped to the same authorized recipient identifier.

9. A computer system, characterized in that, The computer system includes a processor and a non-transitory memory coupled to the processor, the memory storing instructions that, when executed by the processor, cause the computer system to perform the method according to any one of claims 1 to 8.

10. A computer program product, characterized in that, The computer program product includes a non-transitory computer medium storing instructions for causing a computer system to perform the method according to any one of claims 1 to 8.

11. A method for extracting digital watermark information from text data arranged in cells, each cell containing a corresponding set of text data characters, characterized in that, The method includes: Extract cells from the cells in the text data; It is determined that the cell contains a portion of the embedded digital watermark ID code; The primary cell key of the cell is determined based on one or more of the text data characters contained in the cell, wherein the primary cell key is determined based on a combination of at least one of the text data characters contained in the cell and the number of text data characters contained in the cell; The cell partition number of the cell is determined based on the primary cell key; A portion of a first digital watermark ID code is embedded at the embedding location within the cell, the portion being determined based on the cell partition number; Repeat the above steps for the other cells until the digital watermark ID code is completely extracted. Insert a noise column into the cell table, the noise column comprising multiple cells, each containing the first digital watermark ID code in encrypted form.

12. The method according to claim 11, characterized in that, The first digital watermark ID code includes multiple visible characters; Determining that the cell contains the portion of the digital watermark embedded therein includes: positioning the noise key character at a predetermined position, and selecting the noise key character from a noise key index based on the cell partition number, wherein the noise key index is common to all the cells.

13. The method according to claim 11, characterized in that, The first digital watermark ID code includes multiple invisible characters; Determining that the cell contains the portion of the digital watermark embedded therein includes: locating the portion of the first digital watermark ID code corresponding to the cell partition number at the embedding location.

14. The method according to claim 11, characterized in that, The cell partition number is also determined based on a key that is common to all the cells.

15. The method according to claim 11, characterized in that, The method further includes: determining the embedding position within the cell based on the key and the length of the text data in the cell.

16. A computer system, characterized in that, The computer system includes a processor and a non-transitory memory coupled to the processor, the memory storing instructions that, when executed by the processor, cause the computer system to perform the method according to any one of claims 11 to 15.

17. A computer program product, characterized in that, The computer program product includes a non-transitory computer medium storing instructions for causing a computer system to execute the method according to any one of claims 11 to 15.