IP Library › Granted Patent US 12,608,500
Granted Patent B1
US 12,608,500 · App. 19/188,734 · Granted Apr 21, 2026

Method and computer program product for detecting and preventing successful attacks at endpoints in a validation architecture system using comparison of indicia of a request to be performed at multiple nodes

Inventors: Kenneth J. Scudder (Bradenton, FL); Bruce D. Holenstein (Media, PA); Dylan R. Holenstein (Newtown Square, PA); Paul J. Holenstein (Downingtown, PA)
Assignee: GRAVIC, INC.
G06F21/6218G06F16/27H04L63/1441
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,608,500
App. No.
19/188,734
Granted
Apr 21, 2026
Kind
B1
Abstract

Databases of a multi-node system each have a first subset of data that match each other and which are intended to be kept in synchronization with each other. At least one of the databases has a second subset of data that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases. Each node receives a plurality of matching request requests to perform an action on data in the database associated with each node. Indicia of the request to be performed on data in the database associated with each node is computed and is sent to a comparator which outputs a comparison result for each of the matching requests. First or second follow-up actions are performed respectively when the result of the comparison shows a match or mismatch.

Claims (38)

1 . A method for performing an action on data in databases of a multi-node system, each node including an indicia engine, each node having access to a respectively associated database, each of the databases having a first subset of data that match each other and which is kept in synchronization with each other, at least one of the databases having a second subset of data that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases, the method comprising:

(a) receiving at each node a plurality of matching requests to perform an action on data in the database associated with each node,

wherein at least one of the matching requests is a request to perform an action on at least a part of the first subset of data that match each other and which is kept in synchronization with each other, and

wherein at least one of the matching requests is a request to perform an action on at least a part of the second subset of data that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases;

(b) computing, in the indicia engine at each node, for each of the matching requests, indicia of the request to be performed on data in the database associated with each node;

(c) sending the indicia computed at each node for each of the matching requests to a comparator;

(d) outputting, by the comparator, for each of the matching requests a result of a comparison of the indicia;

(e) performing either a first follow-up action or a second follow-up action depending upon the result of the comparison for each of the matching requests,

wherein the first follow-up action is performed when the result of the comparison shows a match, the match indicating that the request to be performed is performed only on the first subset of data in the database associated with each node that match each other and which are kept in synchronization with each other, and

wherein the second follow-up action is performed when the result of the comparison shows a mismatch, the mismatch indicating that the request to be performed is performed at least in part on the second subset of data in the database associated with one of the nodes that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases.

2 . The method of claim 1 wherein at least one of the matching requests to perform an action on data in the database associated with each node is an update request, and wherein the first follow-up action completes the results of the update request on data in the database associated with each node, and the second follow-up action reverts the results of the update request on data in the database associated with each node.

3 . The method of claim 1 wherein at least one of the matching requests to perform an action on data in the database associated with each node is a read request, and wherein the first follow-up action returns the results of the read request performed on data in the database associated with each node, and the second follow-up action does not return the results of the read request performed on data in the database associated with each node.

4 . The method of claim 1 wherein the database associated with each node has metadata associated with the data in the database, the metadata includes permissions which are enforced by the database, the metadata for the first subset of data is included in the first subset of data, and the metadata for the second subset of data is included in the second subset of data.

5 . The method of claim 1 wherein the databases each have rows, and wherein at least one of the matching requests is to perform an action on data in an identified row of the databases associated with each node.

6 . The method of claim 1 wherein at least one of the matching requests is electronically submitted by a user of the multi-node system who has credentials to submit requests to the multi-node system, and the second follow-up action is revoking or altering the user's credentials to restrict submission of subsequent requests to the multi-node system.

7 . The method of claim 1 wherein the comparator is located at one of the nodes and each of the other nodes sends their respective indicia of the results of the action performed on data in the database to the comparator at the one node.

8 . The method of claim 1 wherein the comparator is located in a comparison engine external to all of the nodes and each of the nodes sends their respective indicia of the results of the action performed on data in the database to the comparison engine.

9 . The method of claim 1 wherein at least one of the databases includes a third subset of data which intentionally does not match either the first subset of data or the second subset of data, and which is not kept in synchronization with at least one of the other databases,

wherein the second follow-up action is performed when the result of the comparison shows a mismatch, the mismatch indicating that the request to be performed is performed at least in part on the third subset of data in the database associated with one of the nodes that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with at least one of the other databases.

10 . A computer program product for performing an action on data in databases of a multi-node system, each node including an indicia engine, each node having access to a respectively associated database, each of the databases having a first subset of data that match each other and which are kept in synchronization with each other, at least one of the databases having a second subset of data that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases, the computer program product comprising a non-transitory computer readable storage medium tangibly embodying non-transitory computer executable program instructions thereon, that, when executed by one or more processors, cause one or more computing devices to:

(a) receive at each node a plurality of matching requests to perform an action on data in the database associated with each node,

wherein at least one of the matching requests is a request to perform an action on at least a part of the first subset of data that match each other and which is kept in synchronization with each other, and

wherein at least one of the matching requests is a request to perform an action on at least a part of the second subset of data that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases;

(b) compute, in the indicia engine at each node, for each of the matching requests, indicia of the request to be performed on data in the database associated with each node;

(c) send the indicia computed at each node for each of the matching requests to a comparator;

(d) output, by the comparator, for each of the matching requests a result of a comparison of the indicia;

(e) perform either a first follow-up action or a second follow-up action depending upon the result of the comparison for each of the matching requests,

wherein the first follow-up action is performed when the result of the comparison shows a match, the match indicating that the request to be performed is performed only on the first subset of data in the database associated with each node that match each other and which are kept in synchronization with each other, and

wherein the second follow-up action is performed when the result of the comparison shows a mismatch, the mismatch indicating that the request to be performed is performed at least in part on the second subset of data in the database associated with one of the nodes that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with the at least one of the other databases.

11 . The computer program product of claim 10 wherein at least one of the matching requests to perform an action on data in the database associated with each node is an update request, and wherein the first follow-up action completes the results of the update request on data in the database associated with each node, and the second follow-up action reverts the results of the update request on data in the database associated with each node.

12 . The computer program product of claim 10 wherein at least one of the matching requests to perform an action on data in the database associated with each node is a read request, and wherein the first follow-up action returns the results of the read request performed on data in the database associated with each node, and the second follow-up action does not return the results of the read request performed on data in the database associated with each node.

13 . The computer program product of claim 10 wherein the database associated with each node has metadata associated with the data in the database, the metadata includes permissions which are enforced by the database, the metadata for the first subset of data is included in the first subset of data, and the metadata for the second subset of data is included in the second subset of data.

14 . The computer program product of claim 10 wherein the databases each have rows, and wherein at least one of the matching requests is to perform an action on data in an identified row of the databases associated with each node.

15 . The computer program product of claim 10 wherein at least one of the matching requests is electronically submitted by a user of the multi-node system who has credentials to submit requests to the multi-node system, and the second follow-up action is revoking or altering the user's credentials to restrict submission of subsequent requests to the multi-node system.

16 . The computer program product of claim 10 wherein the comparator is located at one of the nodes and each of the other nodes sends their respective indicia of the results of the action performed on data in the database to the comparator at the one node.

17 . The computer program product of claim 10 wherein the comparator is located in a comparison engine external to any of the nodes and each of the nodes sends their respective indicia of the results of the action performed on data in the database to the comparison engine.

18 . The computer program product of claim 10 wherein at least one of the databases includes a third subset of data which intentionally does not match either the first subset of data or the second subset of data, and which is not kept in synchronization with at least one of the other databases,

wherein the second follow-up action is performed when the result of the comparison shows a mismatch, the mismatch indicating that the request to be performed is performed at least in part on the third subset of data in the database associated with one of the nodes that intentionally does not match a subset of data in at least one of the other databases and which is not kept in synchronization with at least one of the other databases.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2025
From: SCUDDER, KENNETH J.; HOLENSTEIN, BRUCE D.; HOLENSTEIN, DYLAN R.; HOLENSTEIN, PAUL J.
To: GRAVIC, INC.
Reel/Frame 070940/0034 →
Continuity (1)
Continuation 18961285 · Nov 26, 2024
References Cited (35)
US 4845715A · Francisco · 1989 [cited by applicant]
US 8370911B1 · Mallard · 2013 [cited by applicant]
US 9509720B2 · Shenefiel et al. · 2016 [cited by applicant]
US 9734190B1 · Holenstein et al. · 2017 [cited by applicant]
US 9922074B1 · Hoffmann et al. · 2018 [cited by applicant]
US 10452648B1 · Holenstein · 2019 [cited by examiner]
US 10467223B1 · Holenstein · 2019 [cited by examiner]
US 10642826B1 · Holenstein · 2020 [cited by examiner]
US 10706040B1 · Holenstein · 2020 [cited by examiner]
US 10740300B1 · Lakshman · 2020 [cited by examiner]
US 11599528B1 · Holenstein et al. · 2023 [cited by applicant]
US 11768822B1 · Holenstein · 2023 [cited by examiner]
US 11782907B1 · Holenstein et al. · 2023 [cited by applicant]
US 12118116B1 · Holenstein et al. · 2024 [cited by applicant]
US 20020194189A1 · Anderson · 2002 [cited by applicant]
US 20050079859A1 · Eakin · 2005 [cited by applicant]
US 20090248915A1 · Sato · 2009 [cited by applicant]
US 20130060738A1 · Koponen · 2013 [cited by applicant]
US 20140380402A1 · Roth · 2014 [cited by applicant]
US 20180307859A1 · LaFever et al. · 2018 [cited by applicant]
US 20180343258A1 · Spies et al. · 2018 [cited by applicant]
US 20190286490A1 · Wang · 2019 [cited by applicant]
US 20200066072A1 · Galvez et al. · 2020 [cited by applicant]
US 20200175168A1 · Völp et al. · 2020 [cited by applicant]
US 20200344070A1 · Li · 2020 [cited by applicant]
US 20210182423A1 · Padmanabhan · 2021 [cited by applicant]
US 20210226774A1 · Padmanabhan · 2021 [cited by applicant]
US 20210241241A1 · Lokanath · 2021 [cited by applicant]
US 20210243193A1 · Padmanabhan · 2021 [cited by applicant]
US 20210281417A1 · Xu · 2021 [cited by applicant]
US 20220066891A1 · Pochuev · 2022 [cited by applicant]
US 20220329595A1 · Wynter et al. · 2022 [cited by applicant]
US 20230199236A1 · McGill · 2023 [cited by applicant]
US 20230269195A1 · Arumugam et al. · 2023 [cited by applicant]
“New Data Integrity Architectures for Mission Critical Systems.” “The Connection” journal, Nov. 2021, Accessed from web page: https://connect2nonstop.com/new-data-integrity-architectures-for-mission-critical-systems/ (a… [cited by applicant]