System and method for efficient and secure private similarity detection for large private document repositories

11775479 · 2023-10-03

Assignee

Inventors

Cpc classification

International classification

Abstract

A system and method for efficient and secure private similarity detection for large private document repositories reduces the amount of trust that the participants need to give to a third party and detects malicious participants. One use of this system and method is the efficient and secure detection of similar documents across large private document repositories.

Claims

1. A system for detecting duplicate documents, comprising: a distributed ledger node having a smart contract that determines if two private documents are duplicates; an environment, coupled to the distributed ledger node, having a processor and a plurality of lines of instructions that configure the processor to: generate one or more encoded signatures that correspond to a first document, each encoded signature being a hash of a field pair in the first document generated based on the field pair in the first document and being computationally infeasible to construct the first document from the one or more encoded signatures; and store the one or more encoded signatures in the distributed ledger node; wherein the distributed ledger node stores one or more encoded signatures for each document in a set of documents; wherein the smart contract on the distributed ledger is further configured to compare the one or more encoded signatures of the first document to one or more encoded signatures corresponding to each document in the set of stored documents stored in the distributed ledger node to determine when the first document is a duplicate of one of the set of stored documents while maintaining the privacy of the first document and the set of stored documents; and wherein the processor is further configured to notify a user if the first document is a duplicate of the one or more documents in the set of stored documents.

2. The system of claim 1, wherein the first document and each document in the set of documents has at least one immutable data field having a value and a plurality of mutable data fields each having a value, wherein the value of the immutable data field in the first document exactly matches the value of the immutable data field in a particular document in the set of documents to determine that the first document and the particular document are duplicates.

3. The system of claim 2, wherein the smart contract on the distributed ledger is further configured to determine when the first document and a particular document in the set of documents are duplicates if a majority of the values in each of the mutable fields in the first document are the same as the values in each of the mutable fields in the particular document.

4. The system of claim 1, wherein the first document and each document in the set of documents has at least one immutable data field having a value.

5. The system of claim 1, wherein the first document and each document in the set of documents has at least one mutable data field having a value.

6. The system of claim 1, wherein the distributed ledger is further configured to construct a distributed ledger transaction to store the one or more signatures for each document.

7. The system of claim 6, wherein the distributed ledger transaction stores the one or more signatures in a payload of the distributed ledger transaction.

8. The system of claim 1, wherein the first document is a medical claim document having an immutable field that contains a social security number and a plurality of mutable fields.

9. The system of claim 8, wherein the smart contract in the distributed ledger node is further configured to detect that the first document and a particular document in the set of documents are duplicate when the value of the immutable data field in the first document exactly matches the value of the immutable data field in the particular document in the set of documents.

10. The system of claim 9, wherein the smart contract in the distributed ledger is further configured to determine that the first document and the particular document are duplicates when a majority of the values in each of the mutable fields in the first document are the same as the values in each of the mutable fields in the particular document.

11. The system of claim 1, wherein each signature is a hash of a document and each hash uses a different hash function.

12. The system of claim 1 further comprising a second environment, coupled to the distributed ledger node, having at least a processor and a plurality of lines of instructions, wherein the first document is stored in the environment and the set of documents are stored in the second environment.

13. The system of claim 1, wherein the environment has a metadata database having a plurality of records and the environment is further configured to periodically purge each record whose age exceeds a maximum age from the metadata database.

14. The system of claim 6, wherein the distributed ledger is further configured to remove stale document signatures that are stored in the distributed ledger.

15. A method for detecting duplicate documents, comprising: retrieving a document having a field pair wherein each field contains data having a value; generating, by an encoding engine in a computer based environment, one or more encoded signatures that correspond to the retrieved document, each encoded signature being a hash of the field pair in the retrieved document generated based on the field pair in the retrieved document and being computationally infeasible to construct the first document from the one or more encoded signatures; storing the one or more encoded signatures in the distributed ledger node, wherein the distributed ledger node stores one or more encoded signatures for each document in a set of documents; determining, by a computer having a smart contract on a distributed ledger, whether the retrieved document is a duplicate of a document of the set of stored documents that each have the one or more encoded signatures, wherein determining whether the retrieved document is a duplicate further comprises comparing the one or more encoded signatures of the retrieved document to the one or more encoded signatures in each document in the set of stored documents while maintaining the privacy of the first document and the set of stored documents; and notifying a user when the retrieved document is a duplicate of at least one of the one or more documents in the set of stored documents.

16. The method of claim 15, wherein the first document and each document in the set of documents has at least one immutable data field having a value and a plurality of mutable data fields each having a value and wherein determining if the retrieved document is a duplicate further comprises determining that the retrieved document is a duplicate when the value of the immutable data field in the retrieved document exactly matches the value of the immutable data field in a particular document in the set of documents.

17. The method of claim 16, wherein determining if the retrieved document is a duplicate further comprises determining that the retrieved document is a duplicate when a majority of the values in each of the mutable fields in the retrieved document is the same as the values in each of the mutable fields in the particular document.

18. The method of claim 15, wherein the retrieved document and each document in the set of documents has at least one immutable data field having a value.

19. The method of claim 15, wherein the retrieved document and each document in the set of documents has at least one mutable data field having a value.

20. The method of claim 15, wherein storing the one or more signatures further comprises constructing a distributed ledger transaction to store the one or more signatures.

21. The method of claim 20, wherein storing the one or more signatures further comprises storing the one or more signatures in a payload of the distributed ledger transaction for each document.

22. The method of claim 15, wherein generating the one or more signatures further comprising hashing each document to generate the signature.

23. The method of claim 15, wherein the retrieved document is a medical claim document having an immutable field that contains a social security number and a plurality of mutable fields.

24. The method of claim 23, wherein detecting if the retrieved document is a duplicate further comprises determining that the retrieved document is a duplicate when the value of the immutable data field in the retrieved document exactly matches the value of the immutable data field in a particular document in the set of documents.

25. The method of claim 24, wherein determining if the retrieved document is a duplicate further comprises determining that the retrieved document is a duplicate when a majority of the values in each of the mutable fields in the retrieved document is the same as the values in each of the mutable fields in the particular document.

26. The method of claim 15, wherein each signature is a hash of document and each hash uses a different hash function.

27. The method of claim 15 further comprising periodically purging each record whose age exceeds a maximum age from a metadata database in the computer based environment.

28. The method of claim 20 further comprising removing stale document signatures that are stored in the distributed ledger.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) For a more complete understanding of the invention, reference is made to the following description and accompanying drawings, in which:

(2) FIG. 1A illustrates an example secure private document repository environment;

(3) FIG. 1B illustrates an embodiment with two secure private document repository environments;

(4) FIG. 2 illustrates an example private document repository server and its components;

(5) FIG. 3 illustrates an example flowchart for facilitating private document similarity detection;

(6) FIG. 4 illustrates an example private document repository storage arrangement;

(7) FIG. 5 illustrates an example similarity detection smart contract workflow that is executed when a new documented is added to the private repository network;

(8) FIG. 6 illustrates an example similarity detection smart contract workflow that is executed periodically to expire old documents from the private repository network;

(9) FIG. 7 illustrates pseudocode for a process that runs on a private document repository server to construct the signatures (hashes) from a normalized claim private document;

(10) FIG. 8 illustrates pseudocode for a process that is executed by a Smart Contract to store the signatures (hashes) on the Blockchain and perform duplicate signature detection; and

(11) FIG. 9 Illustrates pseudocode for a process that is executed by a Smart Contract to remove expired signatures (hashes).

DETAILED DESCRIPTION OF ONE OR MORE EMBODIMENTS

(12) The disclosure is particularly applicable to detecting similarly in medically related documents using the disclosed embodiments of the system and method and it is in this context that the disclosure will be described. It will be appreciated, however, that the system and method has greater utility since it can be used to detect similarities securely for any document repository and any kind of document in any area of focus in addition to the illustrative medically related documents described below.

(13) The disclosure provides a system and method to detect similar documents across multiple participants' private repositories. The system and method may use a similarity metric to detect similar documents. The system and method may only allow participants to search for documents similar to those that they already have. In one embodiment, the system and method enables a first participant to determine if a particular document in their private repository is contained within, or is similar to, a document that is within a private repository belonging to a second participant; i) without the first participant learning anything about the contents of the second participant's private repository; and ii) without the second participant learning anything about the first participant's document or their private repository; and iii) without the requirement of a trusted third party. The system and method may prevent a first participant from viewing a document similarity query issued by a second participant and prevent a third participant from viewing document queries issued by a first participant against a second participant's private repository. The system and method may also detect malicious or misbehaving participants on the document repository network. In one embodiment, the system and method may disallow documents older than a specific age from being eligible for similarity detection. The system and method may also be able to quickly detect if a private document is similar to another private document across several large document repositories. The system and method accordingly comprises the several steps and the relation of one or more of such steps with respect to each of the others, and the apparatus embodying features of construction, combinations of elements and arrangement of parts that are adapted to affect such steps, all is exemplified in the following detailed disclosure.

(14) FIG. 1A illustrates an example secure private document repository environment 100 and

(15) FIG. 1B illustrates an embodiment with two secure private document repository environments. As shown in FIG. 1A, the environment 100 conducts private document similarity matching functions and allows users to submit documents and view the duplicate statuses of their documents. A user 101 interacts with a GUI 103 using a device 102 that includes at least a processor 104 and memory 105. For example, an employee at an insurance company uses a browser on his laptop to access a web portal that displays insurance claims. The device 102 connects to a network 106 over an interface 110a to access and manage private document repository server, or server, 109 that is connected to the network 106 using an interface 110d. The server 109 communicates with a private document repository 107 that is connected to the network 106 over an interface 110b, and communicates with a distributed ledger node 108 that is connected to the network 106 over an interface 110c. Within an environment 100 there are possibly multiple users 101, devices 102, servers 109, repositories 107, and distributed ledger nodes 108, connected over a single network 106. In some embodiments, users belong to one or more organizations, for example insurance companies, and operate and manage the components in the environment 100 on behalf of their respective organizations.

(16) In a preferred embodiment, there are multiple environments 100 connected over a single network 106. For example insurance company A manages a first environment, insurance company B manages a second environment, and the first environment and second environment are interconnected to a common network 106. In some embodiments, the device 102, private document repository 107, and private document repository server 109, are physically located on the premises of an organization; and the distributed ledger node 108 is physically located on the premises of a Cloud infrastructure provider. In some embodiments, the device 102, private document repository 107, private document repository server 109, and distributed ledger node 108, are physically located on the premises of an organization. In some embodiments, the device 102, private document repository 107, private document repository server 109, and distributed ledger node 108, are physically located on the premises of a Cloud infrastructure provider.

(17) The distributed ledger node, or node, 108 communicates with possibly multiple other distributed ledger nodes via an interface 110c and network 106. The node is responsible for providing an execution environment for Smart Contracts, and establishing a Blockchain network that coordinates this execution. In a preferred embodiment, the nodes coordinate the execution of Smart Contracts that run workflows illustrated in FIG. 5, and FIG. 6.

(18) As shown in FIG. 1B, in an embodiment with two environments 100A, 100B, the first environment 100A and the second environment 100B may be connected to each other by the network 106. Each of the environments has all of the same elements as shown in FIG. 1A as well as the separate document repositories and document repository servers as shown in FIG. 1B. The first environment 100A may have a first private document repository 107A that stores private documents 414a, 414b (shown in FIG. 4) belonging to a user 101. These documents are loaded and processed by a first Private Document Server 109A to determine whether the document is similar to, or a duplicate of, another document that exists within a second private document server 107B that is part of the second environment 100B. Each private document repository 107A, 107B communicates with its respective private document repository server 109A, 109B by connecting to network 106 via an interface 110b as shown in FIG. 1A.

(19) Returning to FIG. 1A, in a preferred embodiment, this processing of the private document 414a, 414b by the document server 109 is executed using the series of steps illustrated in FIG. 3. In some embodiments, the private document server 107 is implemented as a Relational Database Management System (RDMS), and private documents 414a, 414b are records stored in that RDMS.

(20) FIG. 2. illustrates an example private document repository server, or server, and its components. The private document repository server 109 consists of at least a processor 201, memory 202, and private keys stored in a wallet 203. In one embodiment, each of the elements 210-217 shown in FIG. 2 may be implemented on one or more computer systems wherein each engine shown in FIG. 2 is a plurality of lines of instructions/computer code that that are hosted by a computer system and executed by a processor 201 of the computer system to perform the operations and processes as described below. Furthermore, the distributed ledger node 108 may be implemented on a computer system in which the distributed ledger node 108 is a plurality of lines of instructions/computer code that that are hosted by a computer system and executed by a processor of the computer system to perform the operations and processes as described below. The server communicates with the distributed ledger node 108, private document repository 107, and device 102, to submit a user's 101 documents contained in a private document repository 107 for duplication detection, and store the duplication status of submitted documents. In some embodiments, the private document repository server 109 consists of a number of services that intercommunicate over a network.

(21) The API (Application Programming Interface) Engine 210 receives request messages issued by the device 102 and private document repository 107. The message either requests the similarity detection status of one or more documents, or requests that a document is to undergo similarity detection 301, for example by triggering the server 109 to initiate the steps illustrated in FIG. 3. The API engine 210 verifies that the received messages conform to a predetermined message format, and returns an error to the message issuer if this validation fails. If the API engine 210 receives a request for the similarity detection status of previously submitted documents, then the API engine 210 will make a request to the private metadata database 217 to lookup this status. The metadata database 217 stores results of prior similarity detection comparisons of documents submitted by that organization (process 311 shown in FIG. 3). In some embodiments, the API Engine is implemented using an HTTP server that exposes both a REST/JSON interface and a SOAP/XML interface.

(22) The Authorization Engine 211 receives requests from the API Engine 210 and determines whether or not the request is authorized and can subsequently be processed 302. As part of this determination, the Authorization Engine 211 examines both data about the authenticated issuer of the request, and the type of request. In some embodiments, the Authorization Engine 211 inspects a role included in a JSON Web Token (JWT) generated by the device 102 on behalf of the user 101, to determine whether the user 101 has the necessary permissions to issue the request.

(23) The Document Loader Engine 212 loads (process 303 shown in FIG. 3) private documents 414a, 414b provided by a first private document repository 107A so that they can subsequently be processed to determine if they are similar to documents stored in the second private document repository 107B. The Document Loader Engine 212 validates the document by checking if the document conforms to a predetermined document format. In some embodiments, the document loader engine 212 uses an RDBMS connection to directly access a private document repository 107 implemented an RDBMS. The document is a record in the RDBMS, and the Document Loader Engine 212 validates that the record conforms to a predetermined schema.

(24) In some embodiments, the document loader engine 212 receives the document via the API Engine 210. The API engine 210 receives a message sent from the private document repository 107 that includes the private document. In some embodiments, the document loader engine 212 notifies the user 101 via the API Engine 210 if the document fails validation.

(25) The Normalization Engine 213 processes 304 private documents 414a, 414b provided by the Document Loader Engine 212 to construct a new document that is subsequently encoded by the Encoding Engine 214. The Normalization Engine 213 extracts values from fields contained within the private documents 414a, 414b and translates those values into new values. In a preferred embodiment, a normalization engine 213 performs text normalization that is specific to the field. For example, date fields are translated into the RFC3339 date format standard, non-ascii characters are removed, all characters are converted to their uppercase equivalents. In a preferred embodiment, the normalization engine 213 performs text matching of certain fields to a predetermined list of known field values. For example, a private document 414a, 414b represents a motor insurance claim that includes a “vehicle body part name” field. In this case, the normalization engine 414b matches the vehicle body part name to a name stored in a predetermined list of known vehicle body part names, known to the server 109. This matching may use phrase matching, fuzzy matching, spell checking, and phonetic matching, technology to match to the closest name in a list, corpus, or dictionary, for example using the Levenshtein distance algorithm to find the nearest neighbor. In some embodiments, the normalization engine translates a private document into several private documents, for subsequent processing. For example, a phonetic matching algorithm may translate a person's name into 2 canonical representations using the Double Metaphone algorithm. The normalization engine then creates two private documents for subsequent encoding, one for each canonical phonetic representation which is included in the new document. In some embodiments, the normalization engine adds fields and values to the translated private document, where these fields and values did not exist in the original private document. For example, the engine may receive private documents with a “name” field that includes both a person's first name and last name. The engine may subsequently remove the “name” field and add new fields “first name” and “last name”. The new fields are then populated by extracting the first name and last name from the single “name” field. In some embodiments, the normalization engine learns to normalize fields by observing past entries and their associated corrected fields. For example, a machine learning approach may use a name classifier with supervised learning to determine how to split a name field into a first name field and last name field.

(26) The Encoding Engine 214 processes 305 documents that have been normalized by the normalization engine 213, to construct a set of encoded signatures for each private document. The input to the encoding engine is a document, and the output is a set of encoded signatures. Meaning there are 1 or more encoded signatures for each document. The exact number of signatures is dependent on the configured application, for example in the below insurance medical claim application there are 36 signatures. Each signature is computed using the algorithm described below. To summarize that algorithm, to calculate an individual signature, the algorithm applies a hash function (SHA1) over each <field name, field value> (field) pair, selects a fixed-sized subset from these pairs, and then applies a different hash function (scrypt) over the combination of this subset, to output that specific signature. Immutable field-pairs are included in every subset, while mutable field-pairs are omitted in some combinations. In the case where there are only immutable fields, then a single signature is generated. The encoding engine 214 passes these signatures to the transaction engine 215, to store them 406a, 406b on the distributed ledger 401. The encoding engine 214 uses an encoding process to generate the signatures such that given a signature it is computationally infeasible or prohibitively expensive to construct the original private document, using current hardware. In a preferred embodiment, the encoding engine generates multiple signatures for a normalized document, where the signatures are computed by applying multiple hash functions, including slow hash functions, over combinations of fields from the normalized document. In a preferred embodiment, an environment used to detect duplicate insurance medical claims has claims which contains ten fields: 1) “Social Security Number”, 2) “Patient First Name”, 3) “Patient Last Name”, 4) “Consultation Date”, 5) “Admission Date”, 6) “Discharge Date”, 7) “Doctor First Name”, 8) “Doctor Last Name”, 9) “Hospital Name”, 10) “Insurance Code”. Some fields are modifiable and others are not (immutable) when detecting duplicate claims. Specifically, “Social Security Number” is immutable in that if two claims do not share a Social Security Number then they are not considered as duplicates. All other fields are mutable. The claim duplication application defines two claims as duplicates if and only if they share a common Social Security number value, and at least c=7 of the n=9 mutable field values in common. As depicted in the pseudocode illustrated in FIG. 7, for each field in a claim “f{circumflex over ( )}i” with name “f{circumflex over ( )}i_k” with value “f{circumflex over ( )}i_v”, the encoding engine 214 generates an initial hash “f{circumflex over ( )}i_h” which is the SHA1 hash of the field name concatenated with the field value for that claim, or “f{circumflex over ( )}i_h=SHA1(f{circumflex over ( )}i_k+f{circumflex over ( )}i_v)”.

(27) The encoding engine then constructs “Choose(n, c)=36” signatures “s_1, . . . , s_36” by concatenating combinations of the Social Security number (immutable fields) hash “f{circumflex over ( )}i_h” with every set of the mutable field hashes of size c=7, and applying a slow hash Scrypt over each of these concatenations. Specifically, “s{circumflex over ( )}j=Scrypt(f{circumflex over ( )}i_h+S_k)” where “S_k” is the concatenation of c=7 mutable initial hashes “f{circumflex over ( )}m)_h+f{circumflex over ( )}i_h+ . . . ” for the “k”-th set from the set of all mutable fields of size c=7. The encoding engine 214 then passes this set of hashes (signatures) to the transaction engine 215 for placement on the distributed ledger as signatures 406a, 406b. In another preferred embodiment, the pseudocode illustrated in FIG. 7. is utilized to construct the signatures (hashes) from the normalized document, where there are no immutable fields. In another preferred embodiment, the pseudocode illustrated in FIG. 7. is utilized to construct the signatures (hashes) from the normalized document, where there are no mutable fields. In the case where there are no immutable fields, then the same algorithm as described above is applied, but the immutable field hash “f{circumflex over ( )}i_h” is excluded from Scrypt hash over the field hashes, i.e. “s{circumflex over ( )}j=Scrypt(S_k)”. In the case where there are no mutable field, then the same algorithm is applied, but the mutable field hashes are excluded from the Scrypt hash, i.e. “s{circumflex over ( )}j=Scrypt(f{circumflex over ( )}i_h)”, which results in a single signature for the document.

(28) The Transaction Engine 215 constructs distributed ledger transactions 405a, 405b, submits them to one or more distributed ledger nodes 108, and processes the results of the network executing this transaction. Specifically, it receives a set of signatures from the encoding engine 214 and the private document, and inserts a first record into 306 the Private Metadata Database 217 that contains the private document fields, along with transaction status that is set to “pending”. The transaction engine 215 uses a distributed ledger client to construct a distributed ledger transaction 405a, 405b that includes these signatures 406a, 406b within the transaction 405a, 405b payload. The transaction engine then submits the transaction to one or more distributed ledger nodes 108 that run a Smart Contract that receives this transaction 501 and execute the workflow illustrated in FIG. 5. to detect similar documents 307 and store the signatures on the ledger (process 308 in FIG. 3). The transaction is validated and confirmed by the network of distributed ledger nodes 108 and is placed in a block 402a, 402b on the distributed ledger 401.

(29) The block 402a contains metadata 403a, 403b associated with the transactions, along with a timestamp 404a which denotes when the block 402a was created. Note that each of the signatures 406a, 406b on the distributed ledger 401 refer to 415a, 415b private documents 414a, 414b. The transaction engine 215 receives a corresponding first response generated by the Smart Contract 511 which includes a similarity detection status that indicates whether the network determined that the original private document 414a was similar to another private document 414b. The transaction engine 215 updates (process 311 shown in FIG. 3) the first record in the private metadata database 217 to include the similarity detection status from the first response. If an error occurred as part of the transaction processing by the smart contract, then the first record in the private metadata database 217 is updated to include this error. The transaction engine 215 updates the first record to include the transaction ID which is a reference 416a, 416b to the corresponding transaction for that record 407a, 407b on the distributed ledger 401. FIG. 4. illustrates the records and their relations to each other, after the above steps are complete. In response to the timer engine 216, the transaction engine 215 periodically constructs a transaction that is sent to a Smart Contract that executes the workflow illustrated in FIG. 6. This workflow removes old signature records from the distributed ledger 401, so that they are no longer used for similarity detection.

(30) In some embodiments, the transaction engine 215 uses a permissioned blockchain, for example Hyperledger fabric, to construct transactions 405a, 405b and submit them to a distributed ledger node 108. In some embodiments, the transaction engine 215 notifies the participant 310 that first added the document, that was later determined to have been duplicated, when the duplication is detected.

(31) In a preferred embodiment, the pseudocode illustrated in FIG. 8. is a process that is executed by a Smart Contract to store the signatures (hashes) on the Blockchain and perform duplicate signature detection.

(32) The Timer Engine 216 executes a timer that periodically removes records that are older than a specified maximum age from the system. Specifically, the timer engine 216 periodically (e.g., once an hour) removes records older than a maximum age (e.g., 90 days) from the private metadata database 217. The records removed from the private metadata database 217 include the originally submitted document data and metadata, and the similarity detection status. The timer engine 216 also instructs the transaction engine 215 to create a transaction that results in a smart contract executing the workflow illustrated in FIG. 6. This workflow removes old signature records from the distributed ledger 401, so that they are no longer used for similarity detection. In some embodiments, the maximum age is an adjustable parameter that is retrieved and set by a Smart Contract, where the Timer Engine 216 creates transactions to get and set this parameter via the transaction engine 215. In a preferred embodiment, the pseudocode illustrated in FIG. 9. is a process that is executed by a Smart Contract to remove expired signatures (hashes).

(33) FIG. 3. illustrates an example workflow executed by a process running on the Private Document Repository Server 109 to detect a duplicate document. The API engine 210 receives a request to perform document similarity detection 301. The authorization engine 211 examines the request and determines if the request issuer is authorized to perform the request 302. If the request is authorized, then the private document is loaded 303 by the document loader engine 212. This private document is then passed to the normalization engine 213 to normalize the document 304, this process extracts and transforms one or more private document field values to be in a standardized format. The normalized document is then passed to the encoding engine 214 to encode the document 305. The encoding engine 214 generates a several document signatures (first signatures) which are later stored and compared against signatures stored on the distributed ledger 401. The transaction engine 215 constructs a record containing metadata and data related to the private document that it inserts 306 into the private metadata database 217. This record includes a similarity detection status field whose value is initially set to “PENDING” to indicate that the private document is pending similarity detection. The transaction engine 215 then constructs a transaction which includes the first signatures within its payload, and the transaction engine 215 submits this transaction to one or more distributed ledger nodes 108. The distributed ledger nodes 108 run smart contracts implemented as chaincode that execute process illustrated in FIG. 5. As a result of this execution, the transaction engine 215 receives a similarity detection status which determines whether the document was detected as a duplicate.

(34) In some embodiments, the workflow illustrated in FIG. 3. is triggered in response to a user 101 action using a GUI 103. In some embodiments, the workflow illustrated in FIG. 3. is triggered in response to an update in the private document repository 107. In some embodiments, the notification step 310 does not occur, and only the participant that submitted the duplicate is notified of the similarity detection status.

(35) FIG. 4. illustrates records, and their arrangement after private documents have been processed by the system. Within an environment 100 there exists one or more distributed ledger nodes 108 that store and maintain a distributed ledger 401. The nodes 108 communicate using distributed ledger protocols to replicate, verify, and maintain the distributed ledger 401. The ledger 401 is a data structure that includes a list of blocks 402a, and 402b that are ordered in time. Blocks 402a, 402b include metadata, with at least a timestamp 404a, 404b that denotes when the block was generated. Blocks 402a, 402b include transactions 405a, 405b that were previously generated by the transaction engine 215. Transactions 405a, 405b include signatures 406a, 406b which are generated by the encoding engine 214, where each signature is associated 415a, 415b with the private document 414a, 414b that the encoding engine 214 used to generate the signature. The private document repository 109 contains records 407a, 407b which include a similarity detection status field, a reference 417a, 417b to the corresponding first private document 414a, 414b being matched, and one or more references 416a, 416b to transactions 405a, 405b containing the signatures 406a, 406b associated with the first private document. In some embodiments the distributed ledger is stored in a NoSQL database. In some embodiments the entire private document 414a, 414b is contained within the record 407a, 407b.

(36) FIG. 5. Illustrates an example workflow executed by a Smart Contract running on a distributed ledger node 108 to 1) add a set of signatures to the ledger for the purpose of future detection of similar private documents, and 2) determine the similarity detection status of a private document, using the corresponding signatures of that document, as well as the signatures placed on the ledger. The smart contract receives 501 a transaction generated by the transaction engine 215. The smart contract generates a tentative response 502 that indicates that the signatures correspond to a document that is not a duplicate. The smart contract extracts the signatures 503 from the transaction payload. For each signature the smart contract checks if there exists that same signature already on the ledger 504.

(37) In some embodiments the signature check uses a Counting Bloom Filter data structure as a performance optimization. Specifically, a Counting Bloom Filter is stored on the blockchain and is updated and checked directly by the Smart Contract, using a fast and slow processing path. This performance optimization avoids the Smart Contract from scanning the list of stored signatures by instead first performing an efficient check against the Bloomfilter. In the fast path, the Bloomfilter determines that a claim's signatures are not in the total set and the Smart Contract immediately replies to the Oracle that the claim is not a duplicate. The Oracle immediately relays this status to construct a response to the original request, and in parallel adds the claim signatures to the Bloomfilter as a separate transaction. In many applications non-duplicates are the common case, which uses this fast path to reduce the average processing time. In the slow path, the Bloomfilter determines with high probability that a signature is in the set, and the Smart Contract checks the existing list to determine whether the match was a false positive.

(38) If the signature is not already on the ledger, then the smart contract creates a signature timestamp record 507 stored on the ledger which is used to later efficiently lookup signatures older than a certain age. The smart contract includes the signature within the timestamp record 508. The smart contract creates a signature record 509 that is used to efficiently lookup a particular signature that is stored on the ledger. If the signature is already on the ledger, then the tentative response is updated to include a similarity detection status that denotes the document as a duplicate 505. The signature record is then updated to include a timestamp that represents the current time 506. In some embodiments the current time is included within the transaction payload and set by the transaction engine 215.

(39) The steps starting at step 503 are repeated until there are no remaining signatures within the payload that have not yet been processed 510. The smart contract then sends the response back to the transaction engine 215. In some embodiments, the smart contract executes the workflow illustrated in FIG. 5, as a process written in the Go programming language, running in a Docker container.

(40) FIG. 6. Illustrates an example workflow executed by a Smart Contract running on a distributed ledger node 108 to remove stale documents signatures from the ledger. The timer engine 216 periodically generates a transaction that triggers the execution of this workflow. The smart contract receives the transaction 601 issued by the timer engine 216. The smart contract extracts the deadline timestamp 602 to determine which document signatures must be expired, along with their corresponding records. The smart contract then looks up the earliest timestamp for a signature on the ledger using the “signature timestamp record” 507 as an index. If the earliest timestamp is before the deadline timestamp, then the smart contract looks up the corresponding first signature record 604 using data included in the timestamp record. The smart contract then removes the earliest timestamp record 605. If the timestamp within the first signature record timestamp is before the deadline timestamp 605, then the signature record is removed 607. This process is repeated until the earliest timestamp record on the ledger is after the deadline timestamp 603. An example deadline timestamp value that is calculated by the time engine 216 is a unix epoch timestamp that represents exactly 90 days ago from the system's current time. This example deadline timestamp triggers the removal of records that are older than 90 days.

(41) FIG. 7. illustrates pseudocode for a ReceiveClaim process that runs on a private document repository server 107 to construct the signatures (hashes) 406a, 406b from a normalized claim private document with mutable and immutable fields. The text in bold are names for helper functions that are used to help construct the signatures. SubsetIndices constructs a list of all subsets of size “k” from an original set of size “N”. KeyValues returns a list of <key, value> tuples for each field name and field value in a claim “C”. Shuffle randomly shuffles a list of signatures to avoid leaking information about the contents of the original private documents. Len returns the length of a list. SubmitHashesToSmartContract constructs a transaction that includes the hashes as signatures to be sent to the Smart Contract which executes the PutHashesInRepository function illustrated in FIG. 8.

(42) FIG. 8. illustrates pseudocode for a PutHashesInRepository process that is executed by a Smart Contract to store the signatures (hashes) on the Blockchain and perform duplicate signature detection of a claim with 36 signatures. This pseudo code assumes a Blockchain infrastructure that provides a key-value store to the Smart Contract, where the Smart Contract can query a range of keys in the underlying store, using a common prefix. The text in bold are names for helper functions that are used to help put the signatures in the repository. The GetNowTimestamp routine retrieves a timestamp for the current time. LoadTimestamp loads a SIGNATURE RECORD 509 given a hash and returns the included signature timestamp if it exists. StoreTimestamp constructs and stores a SIGNATURE RECORD that is indexed by the hash and includes the signature timestamp. StoreKey constructs and stores a SIGNATURE-TIMESTAMP 507 record with a key that is generated from the signature timestamp and signature. MakeKey generates a key from the signature timestamp and signature, for example by concatenating a RFC3339 timestamp with a SHA1 hash.

(43) FIG. 9. illustrates pseudocode for a RemoveExpiredHashes process that is executed by a Smart Contract to remove expired signatures (hashes). This pseudo code assumes a Blockchain infrastructure that provides a key-value store to the Smart Contract, where the Smart Contract can query a range of keys in the underlying store, using a common prefix. The text in bold are names for helper functions that are used to help remove expired SIGNATURE 509 and SIGNATURE-TIMESTAMP 507 records. GetPastTimestamp constructs a timestamp for a date that is exactly a number of days in the past. GetKeysInRange performs a range query to retrieve all keys from the key-value store that have a prefix within a lexicographic range (an inclusive lower and upper bound). HashFromKey extracts a signature from a key for a SIGNATURE-TIMESTAMP 507 record, where the key was generated using the MakeKey function from FIG. 8. TimestampFromKey extracts a signature timestamp from a key for a SIGNATURE-TIMESTAMP 507 record, where the key was generated using the MakeKey function from FIG. 8. DeleteKey removes a record with the passed key. Ceil performs the mathematical ceiling operation which rounds a floating point number to the smallest integer greater than or equal to the passed number.

(44) It will thus be seen that the objects set forth above, among those made apparent from the preceding description, are efficiently attained and, because certain changes may be made in carrying out the above method and in the construction(s) set forth without departing from the spirit and scope of the disclosure, it is intended that all matter contained in the above description and shown in the accompanying drawings shall be interpreted illustrative and not in a limiting sense.

(45) The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the disclosure to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the disclosure and its practical applications, to thereby enable others skilled in the art to best utilize the disclosure and various embodiments with various modifications as are suited to the particular use contemplated.

(46) The system and method disclosed herein may be implemented via one or more components, systems, servers, appliances, other subcomponents, or distributed between such elements. When implemented as a system, such systems may include an/or involve, inter alia, components such as software modules, general-purpose CPU, RAM, etc. found in general-purpose computers. In implementations where the innovations reside on a server, such a server may include or involve components such as CPU, RAM, etc., such as those found in general-purpose computers.

(47) Additionally, the system and method herein may be achieved via implementations with disparate or entirely different software, hardware and/or firmware components, beyond that set forth above. With regard to such other components (e.g., software, processing components, etc.) and/or computer-readable media associated with or embodying the present inventions, for example, aspects of the innovations herein may be implemented consistent with numerous general purpose or special purpose computing systems or configurations. Various exemplary computing systems, environments, and/or configurations that may be suitable for use with the innovations herein may include, but are not limited to: software or other components within or embodied on personal computers, servers or server computing devices such as routing/connectivity components, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, consumer electronic devices, network PCs, other existing computer platforms, distributed computing environments that include one or more of the above systems or devices, etc.

(48) In some instances, aspects of the system and method may be achieved via or performed by logic and/or logic instructions including program modules, executed in association with such components or circuitry, for example. In general, program modules may include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular instructions herein. The inventions may also be practiced in the context of distributed software, computer, or circuit settings where circuitry is connected via communication buses, circuitry or links. In distributed settings, control/instructions may occur from both local and remote computer storage media including memory storage devices.

(49) The software, circuitry and components herein may also include and/or utilize one or more type of computer readable media. Computer readable media can be any available media that is resident on, associable with, or can be accessed by such circuits and/or computing components. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and can accessed by computing component. Communication media may comprise computer readable instructions, data structures, program modules and/or other components. Further, communication media may include wired media such as a wired network or direct-wired connection, however no media of any such type herein includes transitory media. Combinations of the any of the above are also included within the scope of computer readable media.

(50) In the present description, the terms component, module, device, etc. may refer to any type of logical or functional software elements, circuits, blocks and/or processes that may be implemented in a variety of ways. For example, the functions of various circuits and/or blocks can be combined with one another into any other number of modules. Each module may even be implemented as a software program stored on a tangible memory (e.g., random access memory, read only memory, CD-ROM memory, hard disk drive, etc.) to be read by a central processing unit to implement the functions of the innovations herein. Or, the modules can comprise programming instructions transmitted to a general purpose computer or to processing/graphics hardware via a transmission carrier wave. Also, the modules can be implemented as hardware logic circuitry implementing the functions encompassed by the innovations herein. Finally, the modules can be implemented using special purpose instructions (SIMD instructions), field programmable logic arrays or any mix thereof which provides the desired level performance and cost.

(51) As disclosed herein, features consistent with the disclosure may be implemented via computer-hardware, software and/or firmware. For example, the systems and methods disclosed herein may be embodied in various forms including, for example, a data processor, such as a computer that also includes a database, digital electronic circuitry, firmware, software, or in combinations of them. Further, while some of the disclosed implementations describe specific hardware components, systems and methods consistent with the innovations herein may be implemented with any combination of hardware, software and/or firmware. Moreover, the above-noted features and other aspects and principles of the innovations herein may be implemented in various environments. Such environments and related applications may be specially constructed for performing the various routines, processes and/or operations according to the invention or they may include a general-purpose computer or computing platform selectively activated or reconfigured by code to provide the necessary functionality. The processes disclosed herein are not inherently related to any particular computer, network, architecture, environment, or other apparatus, and may be implemented by a suitable combination of hardware, software, and/or firmware. For example, various general-purpose machines may be used with programs written in accordance with teachings of the invention, or it may be more convenient to construct a specialized apparatus or system to perform the required methods and techniques.

(52) Aspects of the method and system described herein, such as the logic, may also be implemented as functionality programmed into any of a variety of circuitry, including programmable logic devices (“PLDs”), such as field programmable gate arrays (“FPGAs”), programmable array logic (“PAL”) devices, electrically programmable logic and memory devices and standard cell-based devices, as well as application specific integrated circuits. Some other possibilities for implementing aspects include: memory devices, microcontrollers with memory (such as EEPROM), embedded microprocessors, firmware, software, etc. Furthermore, aspects may be embodied in microprocessors having software-based circuit emulation, discrete logic (sequential and combinatorial), custom devices, fuzzy (neural) logic, quantum devices, and hybrids of any of the above device types. The underlying device technologies may be provided in a variety of component types, e.g., metal-oxide semiconductor field-effect transistor (“MOSFET”) technologies like complementary metal-oxide semiconductor (“CMOS”), bipolar technologies like emitter-coupled logic (“ECL”), polymer technologies (e.g., silicon-conjugated polymer and metal-conjugated polymer-metal structures), mixed analog and digital, and so on.

(53) It should also be noted that the various logic and/or functions disclosed herein may be enabled using any number of combinations of hardware, firmware, and/or as data and/or instructions embodied in various machine-readable or computer-readable media, in terms of their behavioral, register transfer, logic component, and/or other characteristics. Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, non-volatile storage media in various forms (e.g., optical, magnetic or semiconductor storage media) though again does not include transitory media. Unless the context clearly requires otherwise, throughout the description, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.

(54) Although certain presently preferred implementations of the invention have been specifically described herein, it will be apparent to those skilled in the art to which the invention pertains that variations and modifications of the various implementations shown and described herein may be made without departing from the spirit and scope of the invention. Accordingly, it is intended that the invention be limited only to the extent required by the applicable rules of law.

(55) While the foregoing has been with reference to a particular embodiment of the disclosure, it will be appreciated by those skilled in the art that changes in this embodiment may be made without departing from the principles and spirit of the disclosure, the scope of which is defined by the appended claims.