IP Library › Granted Patent US 12,689,617
Granted Patent B2
US 12,689,617 · App. 19/204,280 · Granted Jul 21, 2026

Cryptographic method for verifying data

Inventor: Bruno Sangle-Ferriere (Paris, FR)
H04L63/0428
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,689,617
App. No.
19/204,280
Filed
May 9, 2025
Granted
Jul 21, 2026
Kind
B2
Art Unit
2497
USPC
713/180
Abstract

A method, implemented by at least one apparatus, for comparing a first dataset and a second dataset, in particular with a view to determining whether these two datasets are identical. This method not requiring the presence of these two datasets in the apparatus, and including the following steps a) mixing a number, called the mixer number, with the first dataset, using a mixing function, in order to obtain mixed data, b) hashing the mixed data using a hash function, and c) comparing the hash thus obtained in step b) with a third dataset assumed to be the hash of the second dataset mixed with the same mixer number as that used in step a) and with the same mixing function.

Claims (84)

1 . A method for verifying with an apparatus an integrity of a first dataset originating from a sender, the method comprising:

receiving, using one or more computing device processors, from a sender, a first dataset;

determining, using the one or more computing device processors, a mixer number, wherein the mixer number is randomly generated, wherein the mixer number is shared with the sender and the apparatus, wherein the mixer number is generated based on at least one input value, wherein the at least one input value comprises a physical quantity varying from a first verification attempt to a second verification attempt;

obtaining, using the one or more computing device processors, and based on a mixing function, mixed data, wherein the mixing function comprises mixing the mixer number with the first dataset, wherein the mixing function comprises adding the mixer number to the first dataset, or the mixing function comprises an encryption function, wherein the encryption function uses the mixer number to encrypt the first dataset;

generating, using the one or more computing device processors, and based on a hash function, a first hash, wherein the generating the first hash comprises applying the hash function to the mixed data;

renewing or retrieving, using the one or more computing device processors, a single-use key, wherein the mixer number or the single-use key is at least 10 bits long;

receiving, using the one or more computing device processors, from the sender, a second dataset, wherein the second dataset is encrypted, and wherein the second dataset is generated by the sender, wherein generation of the second dataset comprises the sender:

obtaining, using the mixing function, based on the mixer number and the first dataset, a result,

applying the hash function to the result, thereby generating a second hash, and

encrypting, using the single-use key, the second hash, thereby generating an encrypted second hash;

decrypting, using the one or more computing device processors, using the single-use key, the second dataset, thereby generating a decrypted second dataset, wherein the decrypted second dataset comprises the second hash;

comparing, using the one or more computing device processors, the first hash with the decrypted second dataset; and

in response to determining the first hash and the decrypted second dataset are associated:

verifying, using the one or more computing device processors, an integrity of the first dataset, wherein the verifying the integrity of the first dataset comprises determining the first dataset is not altered during the receiving the first dataset,

counting, using the one or more computing device processors, at least one failed verification attempt, and

ceasing, using the one or more computing device processors, the comparing the first hash with the decrypted second dataset when the at least one failed verification attempt reaches a preset number, wherein the mixer number is at least partially renewed for a verification attempt.

2 . The method according to claim 1 , wherein the single-use key is a constant.

3 . The method according to claim 1 , further comprising:

generating, using the one or more computing device processors, the at least one failed verification attempt; and

sending, using the one or more computing device processors, a verification result to the sender.

4 . The method according to claim 1 , wherein the determining the mixer number comprises receiving the mixer number, wherein the mixer number is encrypted.

5 . The method according to claim 1 , wherein the hash function comprises: SHA1, SHA2, SHA256, MD5, or the Jenkins function.

6 . The method according to claim 1 , wherein the mixer number is encrypted using the single-use key, and wherein the mixer number is decrypted by the sender.

7 . The method according to claim 1 , further comprising sending, using the one or more computing device processors, an identifier associated with the mixer number to the sender, wherein the sender, using the identifier associated with the mixer number, retrieves the mixer number from a file or a memory.

8 . The method according to claim 1 , further comprising receiving, using the one or more computing device processors, an identifier associated with the mixer number, wherein the verifying the integrity of the first dataset is based on the identifier associated with the mixer number.

9 . The method according to claim 8 , wherein a number associated with the identifier associated with the mixer number is retrieved from a memory, a file, or a data server, and wherein the number associated with the identifier associated with the mixer number comprises the mixer number.

10 . The method according to claim 1 , further comprising:

receiving, using the one or more computing device processors, from the sender, an identifier associated with the first dataset; and

identifying, using the one or more computing device processors, based on the identifier associated with the first dataset, the first dataset.

11 . The method according to claim 10 , wherein the identifier associated with the first dataset is associated with the sender.

12 . The method according to claim 1 , further comprising receiving, using the one or more computing device processors, from the sender, an identifier associated with the sender.

13 . A computer program product comprising a non-transitory computer useable medium including computer readable code, wherein the computer readable code, when executed using one or more computing device processors, causes the one or more computing device processors to:

receive, from a sender, a first dataset;

determine a mixer number, wherein the mixer number is randomly generated, wherein the mixer number is known to the sender and to an apparatus, wherein the mixer number is generated based on at least one input value, wherein the at least one input value comprises a physical quantity varying from a first verification attempt to a second verification attempt;

obtain, based on a mixing function, mixed data, wherein the mixing function comprises mixing the mixer number with the first dataset, wherein the mixing function comprises adding the mixer number to the first dataset, or the mixing function comprises an encryption function, wherein the encryption function uses the mixer number to encrypt the first dataset;

generate, based on a hash function, a first hash, wherein the generating the first hash comprises applying the hash function to the mixed data;

renew or retrieve a single-use key, wherein the mixer number or the single-use key is at least 10 bits long;

receive, from the sender, a second dataset, wherein the second dataset is encrypted, and wherein the second dataset is generated by the sender, wherein generation of the second dataset comprises the sender:

obtaining, using the mixing function, based on the mixer number and the first dataset, a result,

applying the hash function to the result, thereby generating a second hash, and

encrypting, using the single-use key, the second hash, thereby generating an encrypted second hash;

decrypt the second dataset using the single-use key, thereby generating a decrypted second dataset, wherein the decrypted second dataset comprises the second hash;

compare the first hash with the decrypted second dataset; and

in response to determining the first hash and the decrypted second dataset are associated:

verify an integrity of the first dataset, wherein the verify the integrity comprises determining the first dataset is not altered during the receiving the first dataset,

count at least one failed verification attempt, and

cease the compare the first hash with the decrypted second dataset when the at least one failed verification attempt reaches a preset number, wherein the mixer number is at least partially renewed for a verification attempt.

14 . An apparatus for verifying an integrity of a first dataset originating from a sender, the apparatus comprising:

at least one memory comprising a set of instructions; and

at least one processing device configured for executing the set of instructions, wherein the set of instructions cause the at least one processing device to perform operations of:

receiving, from a sender, a first dataset;

determining a mixer number, wherein the mixer number is randomly generated, wherein the mixer number is shared with the sender and the apparatus, wherein the mixer number is generated based on at least one input value, wherein the at least one input value comprises a physical quantity varying from a first verification attempt to a second verification attempt;

obtaining, based on a mixing function, mixed data, wherein the mixing function comprises mixing the mixer number with the first dataset, wherein the mixing function comprises adding the mixer number to the first dataset, or the mixing function comprises an encryption function, wherein the encryption function uses the mixer number to encrypt the first dataset;

generating, based on a hash function, a first hash, wherein the generating the first hash comprises applying the hash function to the mixed data;

renewing or retrieving a single-use key, wherein the mixer number or the single-use key is at least 10 bits long;

receiving, from the sender, a second dataset, wherein the second dataset is encrypted, and wherein the second dataset is generated by the sender, wherein generation of the second dataset comprises the sender:

obtaining, using the mixing function, based on the mixer number and the first dataset, a result,

applying the hash function to the result, thereby generating a second hash, and

encrypting, using the single-use key, the second hash, thereby generating an encrypted second hash;

decrypting, using the single-use key, the second dataset, thereby generating a decrypted second dataset, wherein the decrypted second dataset comprises the second hash;

comparing the first hash with the decrypted second dataset;

in response to determining the first hash and the decrypted second dataset are associated, verifying an integrity of the first dataset, wherein the verifying the integrity of the first dataset comprises determining the first dataset is not altered during the receiving the first dataset;

counting at least one failed verification attempt; and

ceasing the comparing the first hash with the decrypted second dataset when the at least one failed verification attempt reaches a preset number, wherein the mixer number is at least partially renewed for a verification attempt.

15 . A method for verifying with an apparatus an integrity of a first dataset originating from a sender, the method comprising:

receiving, using one or more computing device processors, from a sender, a first dataset;

determining, using the one or more computing device processors, a mixer number, wherein the mixer number is randomly generated, wherein the mixer number is shared with the sender and the apparatus, wherein the mixer number is associated with at least one physical quantity wherein the mixer number is generated based on at least one input value, wherein the at least one input value comprises a physical quantity varying from a first verification attempt to a second verification attempt;

obtaining, using the one or more computing device processors, and based on a mixing function, mixed data, wherein the mixing function comprises mixing the mixer number with the first dataset, wherein the mixing function comprises adding the mixer number to the first dataset, the mixing function comprises an encryption function, wherein the encryption function uses the mixer number to encrypt the first dataset, or the mixing function comprises an XOR logic function;

generating, using the one or more computing device processors, and based on a hash function, a first hash, wherein the generating the first hash comprises applying the hash function to the mixed data, and wherein the hash function comprises: SHA1, SHA2, SHA256, MD5, or the Jenkins function;

renewing or retrieving, using the one or more computing device processors, a single-use key, wherein the mixer number or the single-use key is at least 10 bits long;

receiving, using the one or more computing device processors, from the sender, a second dataset, wherein the second dataset is encrypted, and wherein the second dataset is generated by the sender, wherein generation of the second dataset comprises the sender:

obtaining, using the mixing function, based on the mixer number and the first dataset, a result,

applying the hash function to the result, thereby generating a second hash, and

encrypting, using the single-use key, the second hash, thereby generating an encrypted second hash;

decrypting, using the one or more computing device processors, using the single-use key, the second dataset, thereby generating a decrypted second dataset, wherein the decrypted second dataset comprises the second hash;

comparing, using the one or more computing device processors, the first hash with the decrypted second dataset; and

in response to determining the first hash and the decrypted second dataset are associated:

verifying, using the one or more computing device processors, an integrity of the first dataset, wherein the verifying the integrity of the first dataset comprises determining the first dataset is not altered during the receiving the first dataset,

counting, using the one or more computing device processors, at least one failed verification attempt, and

ceasing, using the one or more computing device processors, the comparing the first hash with the decrypted second dataset when the at least one failed verification attempt reaches a preset number, wherein the mixer number is at least partially renewed for a verification attempt.

16 . The method according to claim 15 , wherein the determining the mixer number comprises receiving the mixer number, wherein the mixer number is encrypted.

17 . The method according to claim 15 , further comprising sending, using the one or more computing device processors, an identifier associated with the mixer number to the sender, wherein the sender, using the identifier associated with the mixer number, retrieves the mixer number from a file or a memory.

18 . The method according to claim 15 , further comprising receiving an identifier associated with the mixer number, wherein the verifying the integrity of the first dataset is based on the identifier associated with the mixer number.

19 . The method according to claim 18 , wherein a number associated with the identifier associated with the mixer number is retrieved from a memory, a file, or a data server, and wherein the number associated with the identifier associated with the mixer number comprises the mixer number.

Priority Claims (1)
FR 1901648 · Feb 19, 2019 · national
Continuity (4)
Continuation 18072962 · Dec 1, 2022
Continuation In Part 16934376 · Jul 21, 2020
Continuation In Part 16793123 · Feb 18, 2020
Related Publication 20250279986A1 · Sep 4, 2025
References Cited (63)
US 6104811A · Aiello · 2000 [cited by examiner]
US 9565022B1 · Robshaw · 2017 [cited by examiner]
US 10193695B1 · Endress · 2019 [cited by examiner]
US 10362169B1 · Sanderlin · 2019 [cited by examiner]
US 10891366B1 · Wu · 2021 [cited by examiner]
US 11893115B2 · Jarvinen et al. · 2024 [cited by applicant]
US 20060204007A1 · Doetzkies · 2006 [cited by examiner]
US 20110116096A1 · Welch · 2011 [cited by examiner]
US 20110246433A1 · Sun · 2011 [cited by examiner]
US 20120057702A1 · Minematsu · 2012 [cited by examiner]
US 20120143765A1 · Yamaguchi · 2012 [cited by examiner]
US 20140298038A1 · Gauravaram · 2014 [cited by examiner]
US 20140351593A1 · Anson · 2014 [cited by examiner]
US 20140364098A1 · Ueno · 2014 [cited by examiner]
US 20150261502A1 · Sartor · 2015 [cited by examiner]
US 20150295720A1 · Buldas · 2015 [cited by examiner]
US 20160087791A1 · Campbell · 2016 [cited by examiner]
US 20160191965A1 · Choi · 2016 [cited by examiner]
US 20170091485A1 · Yuen et al. · 2017 [cited by applicant]
US 20180060560A1 · Waltermann et al. · 2018 [cited by applicant]
US 20180068127A1 · Hamano · 2018 [cited by examiner]
US 20180145957A1 · Kasibhatla · 2018 [cited by examiner]
US 20180176011A1 · Hars · 2018 [cited by examiner]
US 20180241548A1 · Dolev et al. · 2018 [cited by applicant]
US 20180248686A1 · Alakuijala · 2018 [cited by examiner]
US 20180248687A1 · Wassenberg · 2018 [cited by examiner]
US 20180324152A1 · Jarchafjian · 2018 [cited by examiner]
US 20180367540A1 · Miranda · 2018 [cited by examiner]
US 20190080189A1 · Van Os · 2019 [cited by examiner]
US 20190102782A1 · Diehl · 2019 [cited by examiner]
US 20190104121A1 · Khandani · 2019 [cited by applicant]
US 20190109715A1 · Hars · 2019 [cited by examiner]
US 20190204403A1 · Booij et al. · 2019 [cited by applicant]
US 20190296911A1 · Maki · 2019 [cited by examiner]
US 20200034050A1 · Brasfield · 2020 [cited by examiner]
US 20200068244A1 · Hunacek · 2020 [cited by examiner]
US 20200110905A1 · O'Cleirigh · 2020 [cited by examiner]
US 20200226952A1 · Lightowler · 2020 [cited by examiner]
US 20200236092A1 · von Vistauxx · 2020 [cited by examiner]
US 20200351100A1 · Sangle-Ferriere · 2020 [cited by examiner]
US 20210165914A1 · Sangle-Ferriere · 2021 [cited by applicant]
US 20210382817A1 · Tajima · 2021 [cited by examiner]
US 20220012338A1 · Jarvinen et al. · 2022 [cited by applicant]
US 20220085984A1 · Khandani · 2022 [cited by examiner]
US 20230094612A1 · Chen · 2023 [cited by examiner]
US 20230217210A1 · Russell et al. · 2023 [cited by applicant]
US 20240160792A1 · Sangle-Ferriere · 2024 [cited by examiner]
US 20250342519A1 · Cheng · 2025 [cited by examiner]
CN 101547184A · 2009 [cited by applicant]
EP 1421548A1 · 2004 [cited by applicant]
WO 2003007228A1 · 2003 [cited by applicant]
WO 2020099718A1 · 2020 [cited by applicant]
International Search Report and Written Opinion dated Apr. 21, 2020 in connection with International Application No. PCT/EP2020/054126, 10 pages. [cited by applicant]
Foreign Examination Report dated Mar. 8, 2023 in connection with Indian Application No. 202127035375, 7 pages. [cited by applicant]
Preliminary Search Report for FR 1901648 mailed Nov. 14, 2019 (2 pages). [cited by applicant]
Final Rejection for U.S. Appl. No. 16/934,376 mailed Dec. 9, 2022 (69 pages). [cited by applicant]
USPTO Patent Center Documents for U.S. Appl. No. 16/934,376, filed Mar. 1, 2023. [cited by applicant]
USPTO Patent Center Documents for U.S. Appl. No. 16/793,123, filed Mar. 1, 2023. [cited by applicant]
Office Action issued in U.S. Appl. No. 16/793,123, Jan. 1, 2023. [cited by applicant]
Office Action issued in U.S. Appl. No. 16/793,123 on Jul. 26, 2022. [cited by applicant]
Office Action issued in U.S. Appl. No. 16/793,123 on Mar. 31, 2022. [cited by applicant]
Office Action issued in U.S. Appl. No. 16/793,123 on Oct. 19, 2021. [cited by applicant]
Office Action issued in U.S. Appl. No. 16/7934,376 on May 25, 2022. [cited by applicant]