IP Library › Granted Patent US 12,353,525
Granted Patent B1
US 12,353,525 · App. 18/644,379 · Granted Jul 8, 2025

Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment

Inventors: Francois Jacques Malassenet (Raleigh, NC); Glenn Daniel Sidle (Raleigh, NC)
Assignee: GSFM LLC
G06F21/14G06F9/30036G06F21/52G06F21/75H04L9/002H04L2209/16
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,353,525
App. No.
18/644,379
Granted
Jul 8, 2025
Kind
B1
Abstract

A computer implemented method is disclosed for obfuscating an algorithm. The computer-implemented method includes (1) receiving ciphertext input data, and (2) executing obfuscated program instructions using the ciphertext input data and an obfuscation key. The ciphertext input data is based on plaintext input data encrypted using an input encryption key. The obfuscated program instructions are configured for concealing initial program instructions. The initial program instructions are configured for (1) receiving the plaintext input data, (2) providing plaintext output data based on an algorithm, and (3) providing ciphertext output data. The ciphertext output data is configured for decryption to provide the plaintext output data.

Claims (95)

1. A computer implemented method comprising:

receiving one or more obfuscated and encrypted program instructions that implement an obfuscated and encrypted algorithm having fixed obfuscated and encrypted coefficients, wherein:

the one or more obfuscated and encrypted program instructions are configured for:

receiving one or more ciphertext input data;

providing one or more ciphertext output data; and

implementing obfuscated and encrypted versions of one or more plaintext program instructions that implement a plaintext algorithm having fixed plaintext coefficients; wherein:

the one or more plaintext program instructions are configured for:

 receiving one or more plaintext input data; and

 providing one or more plaintext output data;

the one or more ciphertext input data is an encrypted version of the one or more plaintext input data; and

the one or more ciphertext output data is an encrypted version of the one or more plaintext output data;

and

the one or more obfuscated and encrypted program instructions are an encrypted version of the one or more plaintext program instructions using one or more program instruction encryption keys;

receiving one or more program instruction encryption update keys, wherein:

the one or more program instruction encryption update keys are configured for updating the one or more obfuscated and encrypted program instructions into one or more updated obfuscated and encrypted program instructions for updating and securing the plaintext algorithm, or obfuscated and encrypted algorithm;

the one or more updated obfuscated and encrypted program instructions are configured for:

receiving one or more updated ciphertext input data; and

producing one or more updated ciphertext output data, wherein the one or more updated ciphertext input data is an encrypted version of the one or more plaintext input data;

and

the one or more updated ciphertext output data is an encrypted version of the one or more plaintext input data;

executing an update operation on the obfuscated and encrypted instructions using the one or more program instruction encryption update keys to create one or more updated obfuscated and encrypted instructions, wherein:

the one or more updated obfuscated and encrypted instructions comprise fixed updated obfuscated and encrypted coefficients; and

the fixed updated obfuscated and encrypted coefficients are configured for implementing an updated obfuscated and encrypted version of the plaintext algorithm;

and

storing the fixed updated obfuscated and encrypted coefficients.

2. The computer implemented method of claim 1 , wherein the one or more program instruction encryption update keys are transmitted from a server using an authentication and encryption protocol.

3. The computer implemented method of claim 1 , further comprising receiving one or more input data encryption keys, wherein the input data encryption keys are configured to secure the one or more plaintext input data and create the one or more ciphertext input data from the one or more plaintext input data.

4. The computer implemented method of claim 3 , further comprising receiving one or more input data encryption update keys, wherein:

the one or more input data encryption update keys are configured to create one or more new input data encryption keys from the one or more input data encryption keys; and

the new input data encryption keys are configured to create the one or more updated ciphertext input data from the one or more plaintext input data.

5. The computer implemented method of claim 1 , further comprising receiving one or more input data update encryption keys, wherein the input data update encryption keys are configured to create the one or more updated ciphertext input data from the one or more ciphertext input data.

6. The computer implemented method of claim 1 , further comprising receiving one or more output data decryption keys, wherein the output data decryption keys are configured to create the one or more plaintext output data from the one or more ciphertext output data.

7. The computer implemented method of claim 6 , further comprising receiving one or more output data decryption update keys, wherein:

the one or more output data decryption update keys are configured to create one or more new output data decryption keys from the one or more output data decryption keys; and

the new output data decryption keys are configured to create the one or more plaintext output data from the one or more updated ciphertext output data.

8. The computer implemented method of claim 1 , further comprising receiving one or more output data update decryption keys, wherein the output data update decryption keys are configured to create the one or more cipher output data from the one or more updated ciphertext output data.

9. The computer implemented method of claim 1 , wherein the obfuscated and encrypted computed implemented method is performed on at least one of a linear space, a cyclic group, a polynomial ring, and a polynomial ring over a finite field.

10. The computer implemented method of claim 1 , wherein the computer implemented method is performed by a plurality of processing units.

11. The computer implemented method of claim 1 , wherein the computer implemented method is performed in a multiparty computation configuration.

12. The computer implemented method of claim 1 , wherein at least one of the one or more program instruction encryption update keys expires based on at least one of number of uses, a time of use, and an erroneous authentication.

13. The computer implemented method of claim 1 , wherein at least one of the one or more obfuscated and encrypted program instructions integrate at least one of a preprocess step or a postprocess step.

14. The computer implemented method of claim 1 , wherein the computer implemented method is implemented on a client device.

15. The computer implemented method of claim 14 , wherein the client device is at least one of a personal computer, a workstation, a laptop, a tablet, a smartphone, a smart watch, and an Internet-of-Things device.

16. A computing device comprising:

a memory; and

at least one processor configured to perform a method, the method comprising:

receiving one or more obfuscated and encrypted program instructions that implement an obfuscated and encrypted algorithm having fixed obfuscated and encrypted coefficients, wherein:

the one or more obfuscated and encrypted program instructions are configured for:

receiving one or more ciphertext input data;

providing one or more ciphertext output data; and

implementing obfuscated and encrypted versions of one or more plaintext program instructions that implement a plaintext algorithm having fixed plaintext coefficients; wherein:

the one or more plaintext program instructions are configured for:

 receiving one or more plaintext input data; and

 providing one or more plaintext output data;

the one or more ciphertext input data is an encrypted version of the one or more plaintext input data; and

the one or more ciphertext output data is an encrypted version of the one or more plaintext output data;

and

the one or more obfuscated and encrypted program instructions are an encrypted version of the one or more plaintext program instructions using one or more program instruction encryption keys;

receiving one or more program instruction encryption update keys, wherein:

the one or more program instruction encryption update keys are configured for updating the one or more obfuscated and encrypted program instructions into one or more updated obfuscated and encrypted program instructions for updating and securing the plaintext algorithm, or obfuscated and encrypted algorithm;

the one or more updated obfuscated and encrypted program instructions are configured for:

receiving one or more updated ciphertext input data; and

producing one or more updated ciphertext output data, wherein the one or more updated ciphertext input data is an encrypted version of the one or more plaintext input data;

and

the one or more updated ciphertext output data is an encrypted version of the one or more plaintext input data;

executing an update operation on the obfuscated and encrypted instructions using the one or more program instruction encryption update keys to create one or more updated obfuscated and encrypted instructions, wherein:

the one or more updated obfuscated and encrypted instructions comprise fixed updated obfuscated and encrypted coefficients; and

the fixed updated obfuscated and encrypted coefficients are configured for implementing an updated obfuscated and encrypted version of the plaintext algorithm;

and

storing the fixed updated obfuscated and encrypted coefficients.

17. A non-transitory computer-readable storage medium, the non-transitory computer-readable storage medium storing computer instructions to be implemented on at least one computing device including at least one processor, the computer instructions when executed by the at least one processor cause the at least one computing device to perform a method, the method comprising:

receiving one or more obfuscated and encrypted program instructions that implement an obfuscated and encrypted algorithm having fixed obfuscated and encrypted coefficients, wherein:

the one or more obfuscated and encrypted program instructions are configured for:

receiving one or more ciphertext input data;

providing one or more ciphertext output data; and

implementing obfuscated and encrypted versions of one or more plaintext program instructions that implement a plaintext algorithm having fixed plaintext coefficients; wherein:

the one or more plaintext program instructions are configured for:

 receiving one or more plaintext input data; and

 providing one or more plaintext output data;

the one or more ciphertext input data is an encrypted version of the one or more plaintext input data; and

the one or more ciphertext output data is an encrypted version of the one or more plaintext output data;

and

the one or more obfuscated and encrypted program instructions are an encrypted version of the one or more plaintext program instructions using one or more program instruction encryption keys;

receiving one or more program instruction encryption update keys, wherein:

the one or more program instruction encryption update keys are configured for updating the one or more obfuscated and encrypted program instructions into one or more updated obfuscated and encrypted program instructions for updating and securing the plaintext algorithm, or obfuscated and encrypted algorithm;

the one or more updated obfuscated and encrypted program instructions are configured for:

receiving one or more updated ciphertext input data; and

producing one or more updated ciphertext output data, wherein the one or more updated ciphertext input data is an encrypted version of the one or more plaintext input data;

and

the one or more updated ciphertext output data is an encrypted version of the one or more plaintext input data;

executing an update operation on the obfuscated and encrypted instructions using the one or more program instruction encryption update keys to create one or more updated obfuscated and encrypted instructions, wherein:

the one or more updated obfuscated and encrypted instructions comprise fixed updated obfuscated and encrypted coefficients; and

the fixed updated obfuscated and encrypted coefficients are configured for implementing an updated obfuscated and encrypted version of the plaintext algorithm;

and

storing the fixed updated obfuscated and encrypted coefficients.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2024
From: MALASSENET, FRANCOIS JACQUES; SIDLE, GLENN DANIEL
To: GSFM LLC
Reel/Frame 067211/0465 →
Continuity (3)
Continuation 17706661 · Mar 29, 2022
Continuation 16400147 · May 1, 2019
Continuation 16003152 · Jun 8, 2018
References Cited (72)
US 6480959B1 · Granger · 2002 [cited by examiner]
US 7054444B1 · Paillier · 2006 [cited by applicant]
US 7263722B1 · Luo · 2007 [cited by examiner]
US 7841009B1 · Smith · 2010 [cited by examiner]
US 7856100B2 · Wang et al. · 2010 [cited by applicant]
US 7869598B2 · Kerschbaum · 2011 [cited by applicant]
US 7877410B2 · Staddon et al. · 2011 [cited by applicant]
US 7996671B2 · Chheda · 2011 [cited by examiner]
US 8019705B2 · Fiske · 2011 [cited by examiner]
US 8565435B2 · Gentry et al. · 2013 [cited by applicant]
US 8630422B2 · Gentry et al. · 2014 [cited by applicant]
US 8681973B2 · Weinman · 2014 [cited by applicant]
US 8806187B1 · Vemula · 2014 [cited by examiner]
US 8909957B2 · Kolvick et al. · 2014 [cited by applicant]
US 8909967B1 · van Dijk · 2014 [cited by examiner]
US 9055038B1 · Lu et al. · 2015 [cited by applicant]
US 9900147B2 · Laine et al. · 2018 [cited by applicant]
US 9906360B2 · Johnson · 2018 [cited by examiner]
US 9921978B1 · Chan · 2018 [cited by examiner]
US 10289816B1 · Malassenet · 2019 [cited by examiner]
US 10310896B1 · Kichak · 2019 [cited by examiner]
US 10621365B1 · Powers · 2020 [cited by examiner]
US 20050071664A1 · de Jong · 2005 [cited by examiner]
US 20080126766A1 · Chheda · 2008 [cited by examiner]
US 20080162949A1 · Sato · 2008 [cited by examiner]
US 20080229115A1 · Wollnik · 2008 [cited by examiner]
US 20090077388A1 · Suzuki · 2009 [cited by examiner]
US 20090228717A1 · Futa · 2009 [cited by examiner]
US 20100115260A1 · Venkatesan · 2010 [cited by examiner]
US 20100257103A1 · Muller · 2010 [cited by examiner]
US 20100322411A1 · Lubberhuizen · 2010 [cited by examiner]
US 20120331283A1 · Chandran · 2012 [cited by examiner]
US 20140143172A1 · Richter · 2014 [cited by examiner]
US 20140181115A1 · Chen · 2014 [cited by examiner]
US 20140245012A1 · Arya · 2014 [cited by examiner]
US 20150124962A1 · Gentry et al. · 2015 [cited by applicant]
US 20150172320A1 · Colombo · 2015 [cited by examiner]
US 20150372814A1 · Ali · 2015 [cited by examiner]
US 20160028698A1 · Antipa · 2016 [cited by examiner]
US 20160218872A1 · Anderson · 2016 [cited by examiner]
US 20170054554A1 · Park · 2017 [cited by examiner]
US 20170091485A1 · Yuen · 2017 [cited by examiner]
US 20170124271A1 · Aase · 2017 [cited by examiner]
US 20170134157A1 · Laine et al. · 2017 [cited by applicant]
US 20170177504A1 · Desai · 2017 [cited by examiner]
US 20170310483A1 · Nagao · 2017 [cited by examiner]
US 20170344757A1 · Clarke · 2017 [cited by applicant]
US 20170359321A1 · Rindal et al. · 2017 [cited by applicant]
US 20170366514A1 · Malka · 2017 [cited by examiner]
US 20180062843A1 · Gopal · 2018 [cited by examiner]
US 20180173589A1 · Chang · 2018 [cited by examiner]
Barak, Boaz, et al., On the (Im)possibility of Obfuscating Programs, Journal of the ACM, Jan. 2012, pp. A:1-A-49, vol. 59, No. 2. [cited by applicant]
Barrington, D A., Bounded-Width Polynomial-Size Branching Programs Recognize Exactly Those Languages in NC1, In Proceedings of the Eighteenth Annual ACM Symposium on Theory of Computing, 1986, pp. 1-5, New York, NY, USA. [cited by applicant]
Boneh, Dan, et al., Public Key Encryption That Allows PIR Queries, Advances in Cryptology—Crypto 2007, 2007, pp. 50-67, LNCS 4622. [cited by applicant]
Brakerski, Zvikaz, et al., (Leveled) Fully Homomorphic Encryption Without Bootstrapping, ITCS '12 Proceedings of the 3rd Innovations in Theoretical Computer Science Conference, Jan. 8-10, 2012, pp. 309-325, ACM, New Yor… [cited by applicant]
Cheon, Jung Hee, et al, Cryptanalysis on the HHSS Obfuscation Arising from Absence of Safeguards, Cryptology ePrint Archive, 2018, 8 Pgs., Report 2018/397. [cited by applicant]
Chillotti, Ilaria, et al., Improving TFHE: Faster Packed Homomorphic Operations and Efficient Circuit Bootstrapping, Cryptology ePrint Archive, 39 Pgs., Report 2017/430. [cited by applicant]
Colberg, Christian, et al., A Taxonomy of Obfuscating Transformations, Technical Report #148, 1997, 36 Pgs., Department of Computer Science, The University of Auckland, New Zealand. [cited by applicant]
Crawford, Jack L. H., et al., Doing Real Work with FHE: The Case of Logistic Regression, Cryptology EPrint Archive, 2018, 29 Pgs., Report 2018/202. [cited by applicant]
Delerablee, Cecile, et al., White-Box Security Notions for Symmetric Encryption Schemes, Selected Areas in Cryptography—SAC 2013, pp. 247-264, vol. 8282. [cited by applicant]
Dowlin, Nathan, et al., CryptoNets: Applying Neural Networks to Encrypted Data with High Throughput and Accuracy, In Proceedings of the 33rd International Conference on Machine Learning, 2016, vol. 48, New York, USA. [cited by applicant]
Dwork, Cynthia, Differential Privacy, 33rd International Colloquium—ICALP 2006, Jul. 10-14, 2006, pp. 1-12, Part II—4052, Venice, Italy. [cited by applicant]
Garg, Sanjam, et al., Candidate Indistinguishability Obfuscation and Functional Encryption for All Circuits, SIAM Journal on Computing, 2013, pp. 882-929, v. 45 (3). [cited by applicant]
Garg, Sanjam, et al., Candidate Multilinear Maps from Ideal Lattices, Advances in Cryptology—Eurocrypt 2013, 2013, pp. 1-17, Lecture Notes in Computer Science vol. 7881. [cited by applicant]
Kocher, Paul, Spectre Attacks: Exploiting Speculative Execution, presented at the RSA Conference, Apr. 16-18, 2018, San Francisco, CA. [cited by applicant]
Lipp, Moritz, et al., Meltdown, arXiv:1801.01207 [cs.CR], Jan. 3, 2018, 16 Pgs., v1. [cited by applicant]
Peikert, Chris, A Decade of Lattice Cryptography, Foundations and Trends in Theoretical Computer Science, Mar. 24, 2016, pp. 283-424, vol. 10, No. 4. [cited by applicant]
Regev, Oded, The Learning with Errors Problem, 2010 IEEE 25th Annual Conference on Computational Complexity, Jun. 9-12, 2010, pp. 191-204. [cited by applicant]
USPTO, Non-Final Rejection in U.S. Appl. No. 16/003,152 dated Sep. 5, 2018, pp. 1-19. [cited by applicant]
USPTO, Final Rejection in U.S. Appl. No. 16/003,152 dated Jan. 15, 2019, pp. 1-21. [cited by applicant]
USPTO, Non-Final Rejection in U.S. Appl. No. 16/400,147 dated Nov. 23, 2020, pp. 1-21. [cited by applicant]
USPTO, Non-Final Rejection in U.S. Appl. No. 17/706,661 dated Sep. 28, 2023, pp. 1-11. [cited by applicant]