Systems and methods for META-programming in cryptography
A meta-programming approach with randomization techniques generates unpredictable encryption functions, addressing vulnerabilities of traditional encryption methods to quantum computing, ensuring secure data protection against both classical and quantum attacks.
Patent Information
- Application Number
- PCT/IB2025/056702
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2024-07-05
- Filing Date
- 2025-07-01
- Publication Date
- 2026-01-08
AI Technical Summary
Traditional encryption methods, such as AES and RSA, are vulnerable to quantum computing attacks, necessitating the development of post-quantum cryptography that can withstand both classical and quantum computer threats.
Implementing a meta-programming approach with randomization techniques and mathematical transformations to generate unpredictable encryption functions using a series of algorithms and operations, ensuring each encryption operation is unique and resistant to brute-force attacks.
The method provides secure encryption resistant to both traditional and quantum computing attacks by generating complex, unpredictable encryption functions for each dataset, enhancing data confidentiality and integrity.
Smart Images

Figure IB2025056702_08012026_PF_FP_ABST
Abstract
Description
Atty. Dkt. No.: 138777-0103 SYSTEMS AND METHODS FOR META-PROGRAMMING IN CRYPTOGRAPHY CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 668,124, filed July 5, 2024, the entirety of which is incorporated by reference herein. BACKGROUND OF THE DISCLOSURE
[0002] Encryption is a crucial aspect of data security because encryption ensures the confidentiality and integrity of sensitive information. Traditional encryption methods, such as those based on fixed (e.g., predetermined) algorithms and key generation techniques, have provided effective protection for many years. However, as computing power and sophisticated attack methods continue to evolve and the predefined encryption algorithms become more susceptible to decryption using brute-force techniques, there is an ongoing need for more advanced and resilient encryption approaches. BRIEF DESCRIPTION OF THE DRAWINGS
[0003] Various objects, aspects, features, and advantages of the disclosure will become more apparent and better understood by referring to the detailed description taken in conjunction with the accompanying drawings, in which like reference characters identify corresponding parts throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and / or structurally similar parts.
[0004] FIG. 1 is a block diagram of a system for implementing a meta-programmed encryption, according to some implementations;
[0005] FIG.2 is a flow chart of a method for implementing a meta-programmed encryption, according to some implementations;
[0006] FIGs. 3A-3D are flow charts of a method for implementing a meta-programmed encryption, according to some implementations;
[0007] FIG.4A is a flow chart of a method for implementing randomized parameter selection, according to some implementations;
[0008] FIG.4B is a flow chart of a method for generating equation encryption keys, according to some embodiments;
[0009] FIG.5 is a flow chart of a method for implementing a meta-programmed encryption, 1 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 according to some implementations; and
[0010] FIGs.6A and 6B are block diagrams depicting embodiments of computing devices useful in connection with the methods and systems described herein.
[0011] The details of various embodiments of the methods and systems are set forth in the accompanying drawings and the description below. DETAILED DESCRIPTION
[0012] For purposes of reading the description of the various embodiments below, the following descriptions of the sections of the specification and their respective contents may be helpful: - Section A describes embodiments of systems and methods for implementing a meta- programmed encryption; and - Section B describes a computing environment which may be useful for practicing embodiments described herein. A. Systems and Methods for Implementing a Meta-Programmed Encryption
[0013] As mentioned above, encryption is a crucial aspect of data security because encryption can ensure the confidentiality and integrity of sensitive information. Existing encryption methods often rely on well-known algorithms such as advanced encryption standard (AES) and Rivest-Shamir-Adleman (RSA), which have been extensively studied and tested. While these algorithms have proven to be secure against classical computing attacks, the emergence of quantum computing poses a significant threat. Quantum computers have the potential to break traditional encryption algorithms by leveraging their quantum properties, such as superposition and entanglement, to perform computations at an unprecedented speed. There is a need for development of post-quantum cryptography that can withstand attacks from both classical and quantum computers.
[0014] Implementations of the systems and methods described herein overcome the aforementioned technical deficiencies by implementing a cryptographic method that utilizes a metaprogramming approach to employ a series of randomization techniques and mathematical transformations to encrypt a dataset in a highly secure manner. The technique involves generating (e.g., by a computer program configured for implementing methods described herein or by a generative AI model trained for the same result) an unpredictable and secure encryption function that includes different encryption and / or other algorithms and 2 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 mathematical operations executable as a set of arithmetic or bitwise operations. For example, a computer implementing the systems and methods described herein may run a computer program (or a generative AI model) that encrypts a dataset by first converting the dataset into a byte array. The computer program (or a generative AI model) may then split the byte array into a number of parts. The computer program (or a generative AI model) may generate an equation out of the plurality of parts by inserting predefined or random mathematical operations between the predefined or random parts. The computer program (or a generative AI model) can apply one or more different predefined or random encoding functions separately to the two or more parts of the equation to generate an encryption equation. The computer program (or a generative AI model) can execute the encryption equation on the dataset to generate an encrypted dataset. The computer program (or a generative AI model) can transmit the encrypted dataset over a network and / or store the encrypted dataset in memory. In this way, for each of the to be encrypted objects the computer program (or a generative AI model) can produce a complex and / or unpredictable encryption function, thus increasing resistance of the encryption to brute-force attacks compared to conventional encryption algorithms.
[0015] The systems and methods described herein can involve a meta-programming aspect, random parameters, multiple encryption algorithms, and / or other algorithms or operations. The meta-programming aspect can involve generating encryption functions on the fly by the dedicated computer program or a generative AI model. Using randomization techniques for determining the parameters of the encryption function can ensure that each encryption operation is unpredictable and cannot be deciphered or reverse-engineered without knowing all the necessary details. The non-predefined character of not only the key(s) but also the resulting encryption function for each of the encrypted objects differentiate the subject matter technique from the traditional encryption algorithms whose predefined logic is usually publicly known. Also, the ability to create an encryption function as the mixture of different encoding and other algorithms and / or arithmetic operations makes the resulting encryption function more complex and difficult to decipher. The combination of the above ensures resistance to brute-force attacks from the traditional or quantum computers. Also, the techniques presented in the present application can be implemented to produce both the symmetric encryption where the same key is used to encrypt and decrypt data and the asymmetric encryption using two different keys for the same purpose.
[0016] The systems and methods described herein can be utilized in various areas that require 3 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 secure encryption of files or datasets, such as data protection in storage and transmission, secure communication channels, secure cloud storage, secure financial transactions, and any application where confidentiality and data integrity are crucial.
[0017] In addition to the encryption process, the method can include decryption functionality that reverses the operations performed during the encryption process to retrieve the original dataset. The decryption process can use the same algorithms, mathematical transformations, and / or key(s) to ensure accurate and secure decryption.
[0018] For example, referring now to FIG. 1, a block diagram of a system 100 for implementing a meta-programmed encryption is shown, according to some implementations. The system 100 may include a data encryption device 102, a network 104, a computing device 106 and / or a data source 126. The data encryption device 102 may be similar to or the same as the computing device 600, shown and described with reference to FIGs.6A and 6B. The data encryption device 102 can encrypt datasets using the meta-programmed encryption method described herein. The data encryption device 102 can transmit the encrypted datasets to another computing device 106 over the network 104 and / or store the encrypted datasets in memory. In doing so, the data encryption device 102 can encrypt data in transit and / or at rest in a secure manner resistant to brute force methods by quantum computing or conventional computing techniques.
[0019] The computing device 106 may comprise any type and form of media device or computing device, including a desktop computer, laptop computer, portable computer, tablet computer, wearable computer, embedded computer, smart television, set top box, console, Internet of Things (IoT) device or smart appliance, or any other type and form of computing device. Computing device(s) may be referred to variously as a client, device, client device, computing device, anonymized computing device or any other such term. Computing devices and intermediary modulators may receive media streams via any appropriate network, including local area networks (LANs), wide area networks (WANs) such as the Internet, satellite networks, cable networks, broadband networks, fiber optic networks, microwave networks, cellular networks, wireless networks, or any combination of these or other such networks (e.g., the network 104). In many implementations, the networks may include a plurality of subnetworks which may be of the same or different types, and may include a plurality of additional devices (not illustrated), including gateways, modems, firewalls, routers, switches, etc. 4 4906-9755-9889.1Atty. Dkt. No.: 138777-0103
[0020] The data encryption device 102 may comprise one or more processors 108 (including co-processors such as graphics processing units (GPUs) or tensor processing units (TPUs)), and / or may communicate with other devices providing co-processing power (e.g., cloud- based processing units such as virtual computing devices, desktop computing devices connected via a network, etc., for performing object recognition). The data encryption device 102 may also comprise one or more network interfaces 110, such as a wireless network interface (e.g., 802.11 or Wi-Fi, cellular, or satellite network interface) and / or a wired network interface (e.g., Ethernet) for communicating with each other and / or with other computing devices via the network 104, such as a Wide Area Network (WAN) such as the Internet, Local Area Network (LAN), cellular network, broadband network, peer-to-peer network, or any other type or form of network. Although not illustrated, the data encryption device 102 may communicate via one or more additional devices, such as gateways, switches, routers, firewalls, accelerators, load balancers, security appliances, or other such devices. The data encryption device 102 may further comprise a memory 112 (e.g., flash memory, hard drives, etc.) for storing applications (e.g., operating systems, media players, web browsers, social media applications, etc.).
[0021] Memory 112 may include a communicator 114, encryption program(s) 116 (e.g., a computer program configured for implementing methods described herein or by a specifically trained generative AI model), a random number generator 118, a database updater 120, a dataset database 122, and / or an encryption database 124. The data encryption device 102 can receive or retrieve a dataset, such as via the communicator 114 or from the dataset database 122. The encryption program(s) 116 can execute the methods described herein to encrypt the dataset, such as by using the random number generator 118 to determine various parameters to generate an encryption function and then encrypting the dataset using the encryption function. The encryption program(s) 116 can generate encryption function and encryption key(s) for the encryption and store a record of the operations that were performed and / or encryption keys that were used to encrypt the dataset in the encryption database 124. The communicator 114 can transmit the encrypted dataset to the computing device 106, and / or the database updater 120 can store the encrypted dataset in the dataset database 122.
[0022] The communicator 114 may comprise programmable instructions that, upon execution, cause the processor 108 to communicate with the computing device 106 and / or any other computing device. The communicator 114 may be or include an application programming interface (API) that facilitates communication between the computing device 5 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 106 (e.g., via the network interface 110) and other computing devices. The communicator 114 may communicate with the computing device 106 and / or any other computing device across the network 104.
[0023] The communicator 114 can establish a connection with the computing device 106. The communicator 114 can establish the connection with the computing device 106 over the network 104. To do so, the communicator 114 can communicate with the computing device 106 across the network 104. In one example, the communicator 114 can transmit a syn packet to the computing device 106 and establish the connection using a TLS handshaking protocol. The communicator 114 can use any handshaking protocol to establish a connection with the computing device 106.
[0024] The communicator 114 can receive data from different data sources. For example, the communicator 114 can receive data from the data source 126 (e.g., any remote computing device that provides data to the data encryption device 102) across the network 104. The communicator 114 can receive the data and store the data in the dataset database 122. The communicator 114 can receive data from any number and / or type of data sources.
[0025] The communicator 114 can receive different types of data. The data can include text, images, video, audio, etc. The communicator 114 can receive the data in data files in formats such as JSON, XML, HTML, YAML, Protobuf, binary (e.g., JPEG, PNG, GIF, MP4, AVI, etc.), PDF, markdown, etc. The communicator 114 can receive the data and store the data as separate datasets in the dataset database 122, and / or the encryption program(s) 116 can encrypt the data.
[0026] The dataset database 122 can be a graphical or a relational database configured to store data received by the communicator 114. The dataset database 122 can store the data in unencrypted form after the communicator 114 receives the data. In some embodiments, the dataset database 122 can store the data in an encrypted form after the encryption program(s) 116 encrypts the data.
[0027] The encryption program(s) 116 can be or include instructions that, when executed by the processor 108, cause the processor 108 generate encryption functions to encrypt datasets received by the communicator 114 and / or retrieved from the dataset database 122. The encryption program(s) 116 can include one program that performs each step described herein or multiple programs that cooperate to perform the different steps described herein. In brief overview, the encryption program(s) 116 can convert the dataset into a byte array. The 6 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 encryption program(s) 116 can split the byte array into parts (e.g., two or more parts of the byte array). The encryption program(s) 116 can generate an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation, arithmetic operation, and / or bitwise operation and represent two or more parts of the equation. The encryption program(s) 116 can apply encoding functions to at least two of the two or more parts of the equation to generate an encryption equation. The encryption program(s) 116 can encrypt the dataset using (e.g., by executing) the encryption equation. The encryption program(s) 116 can store the encrypted dataset in memory and / or transmit the encrypted dataset to a computing device (e.g., the computing device 106) over a communication channel (e.g., via the network 104).
[0028] For example, the encryption program(s) 116 can receive (e.g., retrieve) a dataset (e.g., an image, video, audio, etc.) from the communicator 114 or the dataset database 122. The encryption program(s) 116 can convert the dataset into a byte record. To do so, the encryption program(s) 116 can identify the type of data that is present in the dataset. In doing so, the encryption program(s) 116 can determine whether the data is or includes numerical data, multimedia (images, audio, video), and / or structured data (e.g., JSON, XML, CSV) by analyzing the contents of the dataset (e.g., using natural language processing techniques and / or object detection techniques).
[0029] The encryption program(s) 116 can perform pre-processing techniques on the dataset to standardize and / or clean the dataset. In some embodiments, the encryption program(s) 116 can do so based on the types of data that are included in the dataset. For instance, for textual data, the encryption program(s) 116 can remove whitespace (e.g., unnecessary or extra whitespace) or convert the text to a uniform character case. For numerical data, the encryption program(s) 116 can normalize or scale the data. For multimedia data, the encryption program(s) 116 can adjust the resolution adjustment or standardize the format of the data.
[0030] The encryption program(s) 116 can encode the dataset. The encryption program(s) 116 can encode the dataset based on the types of data that are included in the dataset. For example, the encryption program(s) 116 can use UTF-8 to encode the data for all types of data. The encryption program(s) 116 can use IEEE floating-point representation to encode numerical data. The encryption program(s) 116 can use specific codecs to encode different types of multimedia data (e.g., JPEG for images, MP3 for audio, etc.). The encryption program(s) 116 can use serialization formats, like protocol buffers, to encode structured data. 7 4906-9755-9889.1Atty. Dkt. No.: 138777-0103
[0031] In some embodiments, the encryption program(s) 116 can compress the dataset. The encryption program(s) 116 can compress the dataset based on the types of data that are included in the dataset. For example, the encryption program(s) 116 can use lossless compression for textual, numerical, and structured data to preserve information integrity. The encryption program(s) 116 can use lossless or lossy compression for multimedia data depending on the use case requirements.
[0032] The encryption program(s) 116 can convert the dataset into a byte array, or a sequence of bytes that represents the dataset. The encryption program(s) 116 can do so, for example, by transforming the dataset into a binary format or into a numerical format. For example, the encryption program(s) 116 can convert a dataset into a byte array such as the following: [1, 22, 34, 12, 45, 243, 255, 11, 2, 34]
[0033] The encryption program(s) 116 can determine a splitting value for splitting the byte array. The splitting value can indicate a number of parts in which to split the byte array converted from the dataset. The encryption program(s) 116 can determine the splitting value in one of multiple ways. In some embodiments, the splitting value can be stored in the memory 112 of the data encryption device 102. The encryption program(s) 116 can determine the splitting value by retrieving the splitting value from the memory 112.
[0034] In some embodiments, the encryption program(s) 116 can determine the splitting value using the random number generator 118. The random number generator 118 may comprise programmable instructions that, upon execution, cause the processor 108 to generate a random number or a pseudo-random number. The random number generator 118 may be configured to do so using any suitable algorithm (e.g., a linear congruential generator, Mersenne Twister, an Xor shift generator, etc.) or by generating the number based on randomness from physical processes, such as based on atmospheric noise, quantum random number generator, thermal noise generator, photonic emission, etc. The encryption program(s) 116 can execute the random number generator 118 to cause the random number to generate a random or pseudo-random value as the splitting value.
[0035] In some cases, the encryption program(s) 116 can configure the random number generator 118 with parameters (e.g., RNG parameters). In one example, the parameters may include a minimum and a maximum. The maximum may be the number of bytes in the byte array and the minimum may be any number of zero, one, two, or higher. The encryption program(s) 116 can execute the random number generator 118 and the random number 8 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 generator 118 can generate a splitting value within the minimum and the maximum. In one example, the encryption program(s) 116 can execute the following code: n = rd.randint(8,100). Based on the execution, the random number generator 118 can generate a splitting value between 8 and 100 (e.g., 8).
[0036] The encryption program(s) 116 can split the byte array. The encryption program(s) 116 can split the byte array based on the splitting value determined by the encryption program(s) 116. For example, the encryption program(s) 116 can divide the byte array into ^n^ uniform or non-uniform parts, where n is the splitting value. The encryption program(s) 116 can split the byte array using any method. In one example, the encryption program(s) 116 can split the byte array [1,22,34,12,45,243,255,11,2,34] into [[1],
[0022] ,
[0034] ,
[0012] ,
[0045] ,
[0243] , [255,11], [2,34]].
[0037] The encryption program(s) 116 can transform the split byte array into an equation comprised of parts the byte array. To do so, the encryption program(s) 116 can position (e.g., randomly position or reposition) the bytes (e.g., numerical values) of the byte array within the equation. The encryption program(s) 116 can insert or apply mathematical operations (e.g., arithmetic operations or bitwise operations) or signs between the parts. The encryption program(s) 116 can randomly or pseudo-randomly determine the mathematical operations to insert between each part. Examples of mathematical operations signs can be addition, subtraction, multiplication, and / or division.
[0038] In some embodiments, the encryption program(s) 116 can determine a predetermined or a random or pseudo-random number of values to include in the equation (e.g., in addition to the initial numerical values or parts of the byte array). The encryption program(s) 116 can use the random number generator 118 to determine the number of values and / or the values themselves. The encryption program(s) 116 can place the values at random or pseudo-random positions within the equation and / or at the end of the equation. The encryption program(s) 116 can insert mathematical operations between the values and the parts.
[0039] In one example, the encryption program(s) 116 can transform the following byte array: 9 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 [[1],
[0022] ,
[0034] ,
[0012] ,
[0045] ,
[0243] , [255,11], [2,34]] into the following equation: f(x) =
[0034] +
[0243] -[1]+[255,11]*
[0045] +
[0022] :
[0012] +[2,34]-[5].
[0040] The encryption program(s) 116 can encode the individual parts of the transformed equation to generate an encryption equation. For example, the encryption program(s) 116 can apply a separate encryption function (e.g., cryptographic algorithm) each with an unpredictable encryption key to each individual part of the equation. Examples of such encryption functions can include advanced encryption standard (AES), Rivest-Shamir- Adleman (RSA), Ceaser, Elipse, one-time pad (OTP), etc. In some cases, the encryption program(s) 116 may be configured, as a default or as a setting, to only use symmetric encryption functions, to only use asymmetric encryption functions, or to use a combination of symmetric and asymmetric encryption functions, instead of or in addition to any non- encryption-based encoding functions. In some embodiments, the encryption program(s) 116 can apply any other functions to the individual parts of the equation, e.g., ^replace^ or mathematical operations, etc. The different types of functions that the encryption program(s) 116 can apply to the individual parts of the equation may be referred to herein as encoding functions. The encryption program(s) 116 can randomly or pseudo-randomly select the encoding functions to apply to the individual parts of the equation, such as by using the random number generator 118 to select the encoding functions. The encryption program(s) 116 can apply the encryption functions to the individual parts of the equation to generate the encryption equation. The keys that were used to encrypt the parts of the encryption equation can be represented in the form a single or multiple encryption key(s) to the encryption equation and be stored in the memory 112, such as in the encryption database 124.
[0041] The encryption database 124 can be a relational or graphical database that is configured to store data that indicates a record of the operations or steps that were performed to encrypt different datasets. For example, as the encryption program(s) 116 determines values, numbers, operations to add, etc., to a dataset, the encryption program(s) 116 can generate a record describing or indicating each of the operations and / or the order in which the operations were performed. The encryption program(s) 116 can also generate a record of the individual encryption keys for decrypting the parts of the encryption function or the record of the encryption key(s) for decrypting the dataset that are based on or derive from the individual encryption keys for decrypting the parts of the encryption function. The encryption 10 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 program(s) 116 can store the record(s) in the encryption database 124. By storing the record in the encryption database 124, the encryption program(s) 116 can store an encryption key(s) to the encryption function that represent the corresponding individual encryption keys to the respective parts of the encryption function and an encryption function itself including the list of operations that can be performed backwards to decrypt the dataset.
[0042] In addition to applying the encoding functions to the individual parts of the equation, the encryption program(s) 116 can insert one or more variables (e.g., values) into the equation when generating the encryption equation. The encryption program(s) 116 can randomly or pseudo-randomly determine the values and / or the number of values to insert into the equation (e.g., using the random number generator 118). The encryption program(s) 116 can insert mathematical operations (e.g., randomly or pseudo-randomly determined mathematical operations) between the inserted values and the encoded parts of the equation. Accordingly, the encryption program(s) 116 can further diversify the encryption process.
[0043] In one example, the encryption program(s) 116 can transform the following equation: f(x) =
[0034] +
[0243] -[1]+[255,11]*
[0045] +
[0022] :
[0012] +[2,34]-[5]. into the following encryption equation: f(x) = aes(
[0034] ,x1)+rsa(
[0243] ,x2)-... algorithm and can be predetermined or randomly generated, such as by the encryption program(s) 116.
[0044] The encryption program(s) 116 can determine a dividing value for splitting the encryption equation and generating a twice encoded (e.g., double encrypted, twice encrypted, twice encoded, etc.) equation. The twice encoded equation can be an enhanced encryption equation. The dividing value can indicate a number of parts in which to split the encryption equation. The encryption program(s) 116 can determine the dividing value in one of multiple ways. In some embodiments, the dividing value can be stored in the memory 112 of the data encryption device 102. The encryption program(s) 116 can determine the dividing value by retrieving the dividing value from the memory 112. In some embodiments, the encryption program(s) 116 can determine the dividing value by executing the random number generator 118, in some cases by configuring the random number generator with parameters such as a 11 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 minimum and a maximum for the dividing value.
[0045] In some embodiments, the encryption program(s) 116 can determine the dividing value using the random number generator 118. The encryption program(s) 116 can execute the random number generator 118 to cause the random number generator 118 to generate a random or pseudo-random value as the dividing value. In one example, the encryption program(s) 116 can execute the following code: n2 = rd.randint(2,8). Based on the execution, the random number generator 118 can generate a dividing value between 2 and 8 (e.g., 2).
[0046] The encryption program(s) 116 can split the encryption equation. The encryption program(s) 116 can split the byte array based on the dividing value determined by the encryption program(s) 116. For example, the encryption program(s) 116 can divide the encryption equation into ^n2^ parts, where n2 is the dividing value. The encryption program(s) 116 can split the encryption equation using any method. In one example, the encryption program(s) 116 can split the encryption equation f(x) = aes(
[0034] , x1)+rsa(
[0243] ,x2)- otp([1],x3)+aes([255,11],x4)*replace(
[0045] ,x5)+aes(
[0022] ,x6) :ceaser(
[0012] , x7)+elipse([2,34],x8)-otp([5],x9)*87 into f(x) = (aes(
[0034] ,x1)+rsa(
[0243] ,x2)- * ,
[0047] encryption equation to generate an enhanced encryption equation. For example, the encryption program(s) 116 can apply a separate encoding function to each individual part of the encryption equation. The encryption program(s) 116 can apply the encoding functions to the parts of the encryption equation as described above. The encryption program(s) 116 can also insert a predetermined or random or pseudo-random number of random or pseudo-random values to the encryption function. The encryption program(s) 116 can insert predetermined or random or pseudo-random mathematical operations between the inserted values and encrypted parts of the encryption equation. In doing so, the encryption equation can add a new layer of security. In one example, the encryption program(s) 116 can transform the 12 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 following equation: f(x) = (aes(
[0034] ,x1)+rsa(
[0243] ,x2)- otp([1],x3)+aes([255,11],x4))*(replace(
[0045] ,x5)+aes(
[0022] , x6):ceaser(
[0012] , intoenhanced f(x) = 100*otp((aes(
[0034] , x1)+rsa(
[0243] ,x2)- ([1],x3)+aes([255,11],x4),x10))*aes( (
[0045] ,x5)+aes(
[0022] ,x6):ceaser(
[0012] ,can be or program
[0048] The encryption program(s) 116 can repeat the operations of dividing the encryption equation, applying encoding functions to the individual parts of the divided encryption equation, and / or inserting numerical values into the divided encryption equation any number of times to continuously update the encryption the encryption equation or update the enhanced encryption equation. In some cases, the encryption program(s) 116 can determine the number of iterations or times (e.g., a number between 0 and a determined number) to repeat the process using the random number generator 118, thus further increasing the complexity of the encryption equation. The final encryption equation after repeating the process the number of times can be an encryption equation, an enhanced encryption equation, or an updated enhanced encryption equation for encrypting the dataset.
[0049] In some embodiments, the encryption program(s) 116 can generate one or more equation encryption keys. Equation encryption keys can be encryption keys for encrypting and / or decrypting datasets encrypted by an encryption equation, an enhanced encryption equation, or an updated enhanced encryption equation, as described herein. The encryption program(s) 116 can generate the equation encryption keys based on encryption keys of the encoding functions of the encryption equation, the enhanced encryption equation, or the updated enhanced encryption equation, each referred to as an encryption equation for brevity. The encryption program(s) 116 can generate the equation encryption keys based on the types of encryption functions (e.g., asymmetric or symmetric) that are included in the encryption equation and / or the type of encryption algorithm for which the encryption program(s) 116 is generating the equation encryption key. The encryption program(s) may determine the type 13 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 of encryption algorithm for which the encryption program(s) 116 is generating the equation encryption key based on a request, a stored configuration, and / or a user input.
[0050] For example, the encryption equation may include at least one symmetric encryption function and at least one asymmetric encryption function. An example of such an encryption equation is below: f(x) = RSA (
[0034] (x, y)) + AES ([5], z) where x is a public asymmetric key for the RSA encryption function, y is a private asymmetric key for the RSA encryption function, and z is a symmetric key for the AES encryption function. The encryption program(s) 116 can generate an equation asymmetric keys for such encryption equations by inserting mathematical operations (e.g., arithmetic operations or sixth arithmetic operations) between the keys of the respective encryption functions of the encryption equation using the following functions: Kx = x+z Ky = y+z where Kx is an equation public key and Ky is an equation private key. The encryption program(s) 116 can generate an asymmetric encryption key pair by generating an equation public key, Kx, by identifying each public key and symmetric key of the encryption equation or the enhanced encryption equation and positioning (e.g., randomly positioning) the identified keys within a function for Kx each separated by a (e.g., randomly defined) mathematical operation. In some embodiments or in some cases, the encryption program(s) 116 can add one or more (e.g. randomly defined) variables to the function with mathematical operations between the one or more variables and the keys. The encryption program(s) 116 can generate an equation private key, Ky, using a similar method but using the private keys in the function instead of the public keys.
[0051] The encryption program(s) 116 can generate an equation symmetric key by inserting mathematical operations between the keys of the respective encryption functions of the encryption equation using the following function: Kz = (x+y)+z where Kz is an equation symmetric key. The encryption program(s) 116 can generate the equation symmetric key by positioning (e.g., randomly positioning) the keys (e.g., all of the keys) of the encryption equation within a function each separated by a (e.g. randomly defined) 14 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 mathematical operation. In some embodiments or in some cases, the encryption program(s) 116 can add one or more (e.g. randomly defined) variables to the function with mathematical operations between the one or more variables and the keys.
[0052] In another example, the encryption equation may only include asymmetric encryption functions. An example of such an encryption equation is below: f(x) = RSA (
[0034] (x1, y1)) + ECC ([5], (x2, y2)) where x1 and x2 are respectively public keys for the RSA encryption function and the ECC encryption function, and y1 and y2 are respectively private keys for the RSA encryption function and the ECC encryption function. The encryption program(s) 116 can generate equation asymmetric keys for such encryption equations by inserting mathematical operations between the keys of the respective encryption functions of the encryption equation using the following functions: Kx = x1+x2 Ky = y1+y2 Where Kx is an equation public key and Ky is an equation private key. The encryption program(s) 116 can generate an asymmetric encryption key pair by generating an equation public key, Kx, by identifying each public key of the encryption equation and positioning (e.g., randomly positioning) the identified keys within a function each separated by a (e.g. randomly defined) mathematical operation. In some embodiments or in some cases, the encryption program(s) 116 can add one or more (e.g., randomly defined) variables to the function with mathematical operations between the one or more variables and the keys. The encryption program(s) 116 can generate an equation private key, Ky, using a similar method but using the private keys in the function instead of the public keys.
[0053] The encryption program(s) 116 can generate an equation symmetric key by inserting mathematical operations between the keys of the respective encryption functions of the encryption equation using the following function: Kz = (x1+y1)+(x2+y2) where Kz is an equation symmetric key. The encryption program(s) 116 can generate the equation symmetric key by positioning (e.g., randomly positioning) the keys (e.g., all of the keys) of the encryption equation within a function each separated by a (e.g. randomly defined) mathematical operation. In some embodiments or in some cases, the encryption program(s) 15 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 116 can add one or more (e.g. randomly defined) variables to the function with mathematical operations between the one or more variables and the keys.
[0054] In another example, the encryption equation may only include symmetric encryption functions. An example of such an encryption equation is below: (x) = 3DES (
[0034] z1) + AES ([5], z2) where z1 is a symmetric key for the 3DES encryption function and z2 is a symmetric key for the AES encryption function. The encryption program(s) 116 can generate equation symmetric keys for such encryption equations by inserting mathematical operations between the keys of the respective encryption functions of the encryption equation using the following function: Kz = z1 + z2 where Kz is an equation symmetric key. The encryption program(s) 116 can generate the equation symmetric key by positioning (e.g., randomly positioning) the keys (e.g., all of the keys) of the encryption equation within a function each separated by a (e.g. randomly defined) mathematical operation. In some embodiments or in some cases, the encryption program(s) 116 can add one or more (e.g. randomly defined) variables to the function with mathematical operations between the one or more variables and the keys.
[0055] The encryption program(s) 116 can execute the encryption equation to generate an encrypted dataset. The encryption program(s) 116 can execute the encryption equation by executing the different encoding functions applied to the parts of the encryption equation as configured by the encryption function and / or performing the operations of the encryption function. The encryption program(s) 116 can store any key(s) in a record in the encryption database 124 that can be used to decrypt portions of the encrypted dataset or create and store a single or multiple encryption key(s) comprising the record of individual keys to the parts of the encryption function. The encryption program(s) 116 can also include a list of operations and / or values of the enhanced encryption equation in the record with an order in which the operations and / or values were applied.
[0056] In some embodiments, the encryption program(s) 116 can store the keys in the record as equation encryption keys and their respective formulas (e.g., Kx, Ky, and / or Kz, as described above). For example, responsive to the encryption program(s) 116 using the encryption equation for asymmetric encryption, the encryption program(s) 116 can generate 16 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 and store Kx and Ky (and their respective formulas) as the encryption keys of the encryption equation. Responsive to the encryption program(s) 116 using the encryption equation for symmetric encryption, the encryption program(s) 116 can generate and store Kz (and its respective formula) as the encryption key of the encryption equation in the record for the encryption equation.
[0057] The encryption program(s) 116 can store the equation encryption keys for the enhanced encryption equation in the record in one of a few other manners. In one example, the encryption program(s) 116 can store the equation encryption keys as a matrix of the individual keys of encoding functions of the encryption equation (e.g., Kz = [x,y,z], or Kx = [x,z] and Ky = [y,z] or Kxy = [x,y,z]). Kz can be a matrix with keys for the symmetric encryption function (with description record how it is compiled), Kx and Ky can be matrixes with keys for the asymmetric encryption function (with description record how they are compiled) or Kx and Ky can represent a single matrixes with all necessary keys for the asymmetric encryption function (with description record how it is compiled), x can be a public asymmetric key, y can be a private asymmetric key, and z can be a symmetric key, all to the respective encoding functions as described herein. In another example, the encryption program(s) 116 can store the equation encryption keys as a derivative of such matrices in which various arithmetic operations and / or variables can be added or inserted between the keys (e.g., randomly positioned keys) of the encoding functions and / or variables (e.g., Kz = [(x+y)+z+5], or Kx = [x+z+5] and Ky = [y+x+5]). In this way, the encryption program(s) 116 can implement the systems and methods described herein to provide a flexible (e.g., symmetric and asymmetric) encryption method for generating equation encryption keys derived from individual keys of encryption functions (e.g., used in the encryption equation) in a manner in which the keys can be represented and / or stored in different forms depending on the implementation (e.g., matrix, derivative, etc.).
[0058] The record can be used for decrypting the encrypted dataset. For instance, any computer that has access to the record of the encryption equation and the encryption key(s) (e.g., the equation encryption keys and / or the individual encryption keys of the encryption functions of the encryption equation) can use these elements to decrypt the encrypted bytes and reverse the operations that were performed to generate the encryption function to decrypt the encrypted dataset. Given the non-predefined character of the encryption function (or the enhanced encryption function) generated for each dataset, it may be not feasible for a computer to decrypt the encrypted dataset without access to the full record including the 17 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 encryption function itself and the respective encryption key(s) and / or equation encryption keys (and their respective formulas, description records) .
[0059] The database updater 120 can include instructions that, when executed by the processor 108, cause the processor 108 to store data in the dataset database 122. The database updater 120 can store the dataset that was encrypted (e.g., the encrypted dataset) by the encryption program(s) 116 in the dataset database 122. In some embodiments, the database updater 120 can store the encryption function or the enhanced encryption function for the dataset in the dataset database 122. Thus, the database updater 120 can store the dataset as encrypted data at rest.
[0060] In some embodiments, the communicator 114 can transmit the encrypted dataset across the network 104. The communicator 114 can transmit the encrypted dataset to the computing device 106 in a message over a communication channel that the communicator 114 had established or establishes over the network 104. Thus, the communicator 114 can transmit the encrypted dataset as encrypted data in transit.
[0061] In some embodiments, the communicator 114 can transmit a message with the record (e.g., an encryption function applied and a key for decrypting the encrypted dataset) containing the operations that were performed to encrypt the dataset and / or any encryption keys (e.g., in a asymmetric equation encryption key, such as Kx or Ky, or in a symmetric equation encryption key, such as Kz) for decrypting the dataset to the computing device 106. The communicator 114 can transmit the message with the record in a separate message from the message containing the encrypted dataset. The communicator 114 can transmit the message containing the record over a different communication channel (e.g., via the same communication medium that the communicator 114 has established with the computing device 106 (e.g., both messages are transmitted over a mobile communication network (e.g., SMS)) or one message is transmitted over a mobile communication network and another message is communicated over a data communication network (e.g., the Internet). By sending the dataset and the record in separate messages and / or by using separate communication mediums to transmit the messages, the communicator 114 can further secure the encrypted dataset, such as from eavesdroppers.
[0062] The data encryption device 102 can repeat this encryption process at each instance in which the data encryption device 102 encrypts a different dataset, thus causing each encryption equation, enhanced encryption equation, and / or updated enhanced encryption 18 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 equation to be unpredictable. In some cases, the data encryption device 102 can split datasets into parts (e.g., a predetermined number of parts or a number of parts determined by the random number generator 118) and separately apply the encryption process to each part. Because the process can involve using randomly generated values, splitting values, dividing values, operations, number of updates to an enhanced encryption equation, etc., each encryption process can be a unique encryption process and result in a different encryption equation, enhanced encryption equation, and / or updated enhanced encryption equation. The meta-programming approach, differing values and the randomization techniques used by the encryption program(s) 116 to generate encryption equations for each dataset provide resistance of the encrypted datasets to any decryption attacks.
[0063] FIG.2 is a flow chart of an implementation of a method 200 for meta-programmed encryption, according to some implementations. The method 200 may be performed by a data processing system (e.g., the data encryption device 102, shown and described with reference to FIG.1). The method 200 may include any number of steps and the steps may be performed in any order. Performance of the method 200 may enable the data processing system to encrypt data in a secure manner using the program-generated (e.g., generated by encryption program(s) 116 in FIG.1) unpredictable encryption equation (function) that if kept undisclosed would make the encrypted data resistant for decryption using brute force techniques in particular.
[0064] At operation 202, the data processing system receives a dataset. The data processing system may receive the dataset from a data source across a network or by retrieving the dataset from a database stored in memory of the data processing system or from any external memory drive. The dataset may have any format and may include any type of data (e.g., numerical data, text, images, audio, etc.) or a combination or permutation of different types of data.
[0065] At operation 204, the data processing system converts the dataset into a byte array. To do so, the data processing system can use pre-processing techniques on the dataset. The data processing system can encode the pre-processed data based on the types of data that are included in the dataset. For example, the data processing system can use UTF-8 to encode the data for all types of data. The encryption program(s) 116 can use IEEE floating-point representation for numerical data. The encryption program(s) 116 can use specific codecs for different types of multimedia (e.g., JPEG for images, MP3 for audio, etc.). The encryption program(s) 116 can use serialization formats, like protocol buffers, to encode structured data. The encryption program(s) 116 can compress the data. The encryption program(s) 116 can 19 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 convert the dataset into a byte array, or a sequence of bytes that represents the dataset. The encryption program(s) 116 can do so, for example, by transforming the encoded data (e.g., the encoded and compressed data) into a binary format or into a numerical format.
[0066] At operation 206, the data processing system splits the byte array into two or more parts. The data processing system can determine a number (e.g., a splitting value) of parts. In some embodiments, the data processing system can determine the number of parts by identifying a predetermined stored value in memory. In some embodiments, the data processing system can determine the number of parts by executing a random number generator. The data processing system can configure the random number with parameters, such as a minimum value (e.g., 2) and a maximum value (e.g., the number of bytes of the byte array) for the output by the random number generator. The data processing system can execute the random number generator as configured to generate a value or number according to the parameters. The data processing system can group the bytes or values of the byte array to have the determined number of parts. The parts can be uniform or non-uniform between each other. The data processing system can group the bytes or values in any manner to cause the byte array to have the determined number of parts.
[0067] At operation 208, the data processing system generates an equation out of the two or more parts of the byte array. The data processing system can generate the equation by positioning the parts in different positions (e.g., random positions) in a string and inserting mathematical signs (e.g., random mathematical signs) between the parts. The data processing system can determine the positioning and / or the mathematical signs using a random number generator and / or based on predetermined stored values. The data processing system can add a value or variable (e.g., a random value or variable) at any position within the equation, such as at the end, with another mathematical operation between the value and the surrounding values of the parts. The data processing system can determine the value and / or the positioning of the value using the random number generator.
[0068] At operation 210, the data processing system applies encoding functions (e.g., different encoding functions) to the equation. The encoding functions can be or include different encryption functions, mathematical operations, or any other functions to change or transform the values. The data processing system can apply different encoding functions separately to each of the at least two parts of the equation to generate an encryption equation.
[0069] At operation 212, the data processing system determines a number of iterations. The 20 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 number of iterations can be a number of instances in which to split and / or encode the encryption equation. The number of iterations can be any number of iterations that equals zero or exceeds zero. If the number is zero, then the encryption equation is complete without enhancing the encryption equation and can be used to encrypt the dataset. Otherwise, the data processing system can split and encode the encryption equation to generate or update an enhanced encryption equation. The data processing system can determine the number of iterations based on a predetermined value and / or using a random number generator.
[0070] At operation 214, the data processing system determines whether to complete any further iterations. The data processing system can complete the operation 214 after completing the operation 212 by determining whether the number of iterations determined at operation 212 is greater than zero. Responsive to determining the number of iterations is greater than zero, the data processing system can proceed to the operation 216.
[0071] At operation 216, the data processing system splits the encryption equation into two or more parts of the encryption equation. To do so, the data processing system determines a number (e.g., a dividing value) of parts. In some embodiments, the data processing system can determine the number of parts by identifying a predetermined stored value (e.g., a stored value different from the stored value for dividing the byte array into parts) in memory. In some embodiments, the data processing system can determine the number of parts by executing a random number generator. The data processing system can configure the random number with parameters, such as a minimum value (e.g., two) and a maximum value for the output by the random number generator. The data processing system can execute the random number generator as configured to generate a value or number according to the parameters. The data processing system splits the encryption equation into the determined number of parts. The data processing system can group the parts of the encryption equation to have the determined number of parts. The data processing system can group the parts in any manner to cause the encryption equation to split into determined number of parts.
[0072] At operation 218, the data processing system applies second (or third) encoding functions to the split encryption equation to generate (or update) an enhanced encryption equation. The data processing system can apply encoding functions to the different parts of the split encryption equation similar to how the data processing system applied encoding functions to the parts of the initial equation. The data processing system can encode the parts using retrieved from memory or randomly determined encoding functions. Accordingly, the data processing system can generate an equation that has been twice encoded (e.g., an 21 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 enhanced encryption equation).
[0073] The data processing repeats the operation 214 after completing the operation 218. To do so, the data processing system can identify the number of iterations determined at operation 212. The data processing system can instantiate a counter. The data processing system can increment the counter each instance the data processing system performs operations 214-218, in some cases including the first instance. For each increment, the data processing system can compare the count of the counter to the number of iterations determined at operation 212. The data processing system can iteratively repeat operations 214-218, updating the enhanced encryption equation and incrementing the counter for each iteration, until determining the count of the counter equals the number of iterations determined at operation 212. The final encryption equation once the count of the counter equals the iteration value can be the encryption equation for encrypting the dataset.
[0074] Responsive to determining no more encoding iterations are needed at operation 214, at operation 220, the data processing system encrypts the dataset using the encryption equation, the enhanced encryption equation, or the updated enhanced encryption equation. The data processing system can encrypt the dataset by executing the encoding functions and / or performing the mathematical operations of the encryption function on the respective bytes of the dataset, for example. The data processing system can execute that encryption equation, the enhanced encryption equation, and / or the updated enhanced encryption equation as a set of arithmetic operations or bitwise operations. Responsive to encrypting the dataset, the data processing system can store the encrypted dataset in a database or in memory at operation 222 and / or transmit the encrypted dataset to another computing device across a communication channel at operation 224.
[0075] FIG.3 is a flow chart of an implementation of a method 300 for meta-programmed encryption, according to some implementations. The method 300 may be performed by a data processing system (e.g., the data encryption device 102, shown and described with reference to FIG.1). The method 300 may include any number of steps and the steps may be performed in any order. Performance of the method 300 may enable the data processing system to encrypt data in a secure manner adding more variables and arithmetic operations to procedures described in method 200 that could enhance resistance to decryption using brute force techniques. The data processing system can perform operations of the method 300 in the same or a similar manner to the manner described with reference to the method 200. 22 4906-9755-9889.1Atty. Dkt. No.: 138777-0103
[0076] At operation 302, the data processing system receives a dataset. The data processing system may receive the dataset from a data source across a network or by retrieving the dataset from a database stored in memory of the data processing system or from any external memory drive.
[0077] At operation 304, the data processing system converts the dataset into a byte array. The data processing system can use pre-processing techniques on the dataset to convert the dataset into the byte array. The data processing system can encode the pre-processed data based on the types of data that are included in the dataset.
[0078] At operation 306, the data processing system splits the byte array into two or more parts of the byte array. The data processing system can determine a splitting value, or a number of parts into which to split the byte array. The data processing system can determine the splitting value by identifying a value stored in memory or by using a random number generator. The data processing system can split the byte array by grouping the byte array into a number of groups or parts equal to the determined splitting value.
[0079] At operation 308, the data processing system generates an equation out of the two or more parts of the byte array. The data processing system can generate the equation by positioning the parts in different positions in a string and inserting mathematical operations (e.g., signs) between the parts. The data processing system can determine the positioning and / or the mathematical operations using a random number generator and / or based on predetermined stored values.
[0080] At operation 310, the data processing system determines whether to apply additional operations to the byte array to generate the equation. The data processing system can do so, for example, by identifying a configuration in memory indicating whether to do so or by executing a random number generator.
[0081] Responsive to determining to add a variable, at operation 312, the data processing system adds one or more variables to the two or more parts of the equation. The data processing system can add the one or more variables prior to applying any encoding functions to at least two of the two or more parts of the equation. The data processing system can determine a number of variables to add by identifying the configuration or value stored in memory or by executing a random number generator. The data processing system can determine the value of each variable based on a stored value and / or by executing the random number generator and identifying the output. The data processing system can additionally 23 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 determine the locations of the variables between and / or outside of the two or more parts of the equation based on a predetermined value and / or using a random number generator.
[0082] The data processing system can place mathematical operations between the variables and / or the two or more parts of the equation. The data processing system can determine the mathematical operations based on the mathematical operations being predetermined and / or by executing the random number generator.
[0083] At operation 314, the data processing system applies encoding functions (e.g., different encoding functions) to the equation. The encoding functions can be or include different encryption functions, mathematical operations, or any other functions to change or transform the values. The data processing system can apply different encoding functions separately to each of the at least two parts of the equation to generate an encryption equation.
[0084] At operation 316, the data processing system determines whether to apply additional operations to the byte array to generate the encryption equation. The data processing system can do so, for example, by identifying a configuration in memory indicating whether to do so or by executing a random number generator.
[0085] Responsive to determining whether to apply additional operations, at operation 318, the data processing system adds one or more variables to the two or more parts of the equation. The data processing system can add the one or more variables subsequent to applying the encoding functions to at least two of the two or more parts of the equation. The data processing system can determine a number of variables to add by identifying the configuration or value determined at the operation 316. The data processing system can determine the value of each variable based on a stored value and / or by executing a random number generator and identifying the output. The data processing system can additionally determine the locations of the variables between and / or outside of the two or more parts of the equation based on predetermined values and / or using a random number generator.
[0086] At operation 320, the data processing system determines a number of iterations. The number of iterations can be a number of instances in which to split and / or encode the encryption equation. The number of iterations can be any number of iterations that equals or exceeds zero. If the number is zero, then the encryption equation is complete without enhancing the encryption equation and can be used to encrypt the dataset. Otherwise, the data processing system can split and encode parts of the encryption equation to generate an enhanced encryption equation. The data processing system can determine the number of 24 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 iterations based on a predetermined value and / or using a random number generator.
[0087] At operation 322, the data processing system splits the encryption equation into two or more parts of the encryption equation. The data processing system can determine a splitting value (e.g., a second splitting value), or a number of parts into which to split the encryption. The data processing system can determine the splitting value by identifying a value stored in memory or by using a random number generator. The data processing system can split the encryption equation by grouping elements or components of the encryption equation into a number (e.g., the determined splitting value) of groups or parts.
[0088] When splitting the encryption equation at operation 322, the data processing system can position the parts of the split encryption equation in different positions in a string. The data processing system can insert mathematical signs between the parts. The data processing system can determine the positioning and / or the mathematical signs using the random number generator and / or based on predetermined stored values.
[0089] At operation 324, the data processing system determines whether to apply additional operations to the split encryption equation. The data processing system can do so, for example, by identifying a configuration in memory indicating whether to do so or by executing a random number generator.
[0090] Responsive to determining to add additional operations, at operation 326, the data processing system adds one or more variables (e.g., second variables) to the two or more parts of the encryption equation. The data processing system can add the one or more variables prior to applying any encoding functions to at least two of the two or more parts of the encryption equation. The data processing system can determine a number of variables to add by identifying the configuration or value stored in memory or by executing a random number generator. The data processing system can determine the value of each variable based on a stored value and / or by executing a random number generator and identifying the output. The data processing system can additionally determine the locations of the variables between and / or outside of the two or more parts of the encryption equation based on the locations being predetermined and / or by using a random number generator.
[0091] The data processing system can place mathematical operations (e.g., second mathematical operations) between the variables and / or the two or more parts of the encryption equation. The data processing system can determine the mathematical operations based on the mathematical operations being predetermined and / or by executing the random number 25 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 generator.
[0092] At operation 328, the data processing system applies encoding functions (e.g., second encoding functions) to the encryption equation to generate the enhanced encryption equation. The encoding functions can be or include different encryption functions, mathematical operations, or any other functions to change or transform the values. The data processing system can apply different encoding functions separately to each of the at least two parts of the encryption equation to generate an enhanced encryption equation.
[0093] At operation 330, the data processing system determines whether to apply additional operations to the encryption equation to generate the enhanced encryption equation. The data processing system can do so, for example, by identifying a configuration in memory indicating whether to do so or by executing a random number generator.
[0094] Responsive to determining to add a variable, at operation 332, the data processing system adds one or more variables (e.g., second variables) to the two or more parts of the encryption equation. The data processing system can add the one or more variables subsequent to applying the encoding functions to at least two of the two or more parts of the encryption equation. The data processing system can determine a number of variables to add by identifying the configuration or value stored in memory or by executing a random number generator. The data processing system can determine the value of each variable based on a stored value and / or by executing a random number generator and identifying the output. The data processing system can additionally determine the locations of the variables between and / or outside of the two or more parts of the encryption equation based on predetermined values and / or using a random number generator.
[0095] At operation 334, the data processing system determines whether to complete any further iterations. To do so, the data processing system can identify the number of iterations determined at the operation 320. The data processing system can instantiate a counter. The data processing system can increment the counter each instance the data processing system performs operations 322-332. For each increment, the data processing system can compare the count of the counter to the number of iterations determined at operation 320. The data processing system can iteratively repeat operations 322-332, updating the enhanced encryption equation and incrementing the counter for each iteration, until determining the count of the counter equals the number of iterations. The final encryption equation once the count of the counter equals the iteration value can be the encryption equation for encrypting 26 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 the dataset.
[0096] Responsive to determining no more encoding iterations are needed at operation 334, at operation 336, the data processing system encrypts the dataset using the encryption equation. The data processing system can encrypt the dataset by executing the enhanced encryption equation (or updated enhanced encryption equation ^ depending on the iteration) as a set of arithmetic or bitwise operations, for example. Responsive to encrypting the dataset, the data processing system can store the encrypted dataset in a database or in memory at operation 338 and / or transmit the encrypted dataset to another computing device across a communication channel at operation 340.
[0097] FIG.4A is a flow chart of an implementation of a method 400 for implementing randomized parameter selection, according to some implementations. The method 400 may be performed by a data processing system (e.g., the data encryption device 102, shown and described with reference to FIG.1). The method 400 may include any number of steps and the steps may be performed in any order. One or more operations of the method 400 can be performed when determining different values or parameters in operations of the method 200 or the method 300. Performance of the method 400 may enable the data processing system to encrypt data in a secure manner that would make the data difficult to decrypt using brute force techniques.
[0098] At operation 402, the data processing system identifies an instance in which to determine a parameter (e.g., a data structure or algorithm parameter). The parameter may be a parameter of a data structure or algorithm, such as a byte array, an equation, an encryption equation, an enhanced encryption equation, or an updated enhanced encryption equation, for example. The parameter can be a number of parts to split the respective data structure or algorithm into, a value of a variable, a number of iterations in which to enhance and / or update the encryption equation, mathematical operations to insert into the data structure or algorithm, positioning of the added variables and / or mathematical operations, etc. The data processing system can identify such instances based on the configuration of the data processing system and / or by determining the operation of the method 200 or 300 that the data processing system is performing.
[0099] At operation 404, the data processing system determines whether to use a random number generator to determine the parameter. The data processing system can determine whether to use the random number generator based on the configuration of the data processing 27 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 system. For instance, the data processing system may be configured to identify one or more parameters from memory and determine other parameters using a random number generator or be configured to identify all parameters from memory or determine all parameters using a random number generator. The data processing system can identify the parameter being generated and determine whether to use the random number generator to generate the parameter or not based on the configuration of the data processing system. Responsive to determining not to use a random number generator, at operation 406, the data processing system identifies the parameter from memory.
[0100] However, responsive to determining to use the random number generator, at operation 408, the data processing system executes the random number generator to determine the parameter. The data processing system can use the random number generator to determine the parameter in different ways depending on the type of the parameter. For example, if the parameter is a numerical value, such as a variable, the data processing system can determine the parameter by executing the random number generator to generate a value and set the parameter equal to the generated value. In some cases, the data processing system can perform a function (e.g., addition, subtraction, multiplication, division, etc.) on the generated value to generate the parameter. In another example, if the parameter is a number of parts in which to split an equation or byte array (e.g., a splitting value or a dividing value), the data processing system can generate a value using the random number generator and set the splitting value or dividing value to the generated value. In another example, the parameter is a type of function, the data processing system may store a table that maps functions to values within a defined range. The data processing system can execute the random number generator using the defined range to generate a value within the defined range. The data processing system can compare the value to the mapping to identify the function that matches the generated value. In another example, to determine the positioning in which to place a variable or part, the data processing system can store index values for an equation or a byte array. The data processing system can execute the random number generator to generate value equal to one of the index values and place the variable or function at the location corresponding to the index value. In another example, the data processing system can determine a number of iterations in which to enhance or update the encryption equation using the random number generator. The data processing system can do so by executing the random number generator to generate a value and setting the number of iterations to be equal to the value or a function of the value. The data processing system can similarly use the random number generator to 28 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 determine any type of parameter of an encryption equation. At operation 410, the data processing system uses the parameter to generate the equation and / or the encryption equation (e.g., the encryption equation, the enhanced encryption equation, and / or the updated enhanced encryption equation).
[0101] When generating an encryption equation, the data processing system can determine parameters such as a number of the two or more parts of the byte array; and / or a number of the two or more parts of the equation; and / or positioning of the two or more parts of the byte array within the equation; and / or types of the mathematical operations; and / or an execution priority of the mathematical operations; and / or a number of the encoding functions; and / or types of the encoding functions; and / or a number and positioning of the at least two of the two or more parts of the equation only using the random number generator, based on predetermined values, or using a combination of the random number generator and predetermined values. The data processing system can determine similar parameters when generating an enhanced encryption and / or updating an enhanced encryption equation.
[0102] FIG.4B is a flow chart of a method 412 for generating equation encryption keys, according to some embodiments. The method 412 may be performed by a data processing system (e.g., the data encryption device 102, shown and described with reference to FIG.1). The method 412 may include any number of steps and the steps may be performed in any order. One or more operations of the method 412 can be performed when storing the keys for the encryption equation, the enhanced encryption equation, or the updated enhanced encryption equation in a record in memory or parameters in operations of the method 200 or the method 300. Performance of the method 412 may enable the data processing system to store and / or transmit the keys for encrypting and / or decrypting a dataset encrypted as described herein in a secure manner.
[0103] At operation 414, the data processing system identifies the types of the encoding functions of the (enhanced) encryption equation. The data processing system can identify the types as asymmetric encryption functions, symmetric encryption functions, or non-encryption encoding functions. At operation 416, the data processing system determines whether the encryption functions of the encryption equation only include symmetric functions. The data processing system can do so based on (e.g., based only on) the identified types of encryption functions.
[0104] Responsive to determining the encryption functions of the encryption equation only 29 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 include symmetric encryption functions, at operation 418, the data processing system generates a symmetric equation encryption key based on the symmetric keys of the symmetric encryption functions. In one example, the data processing system can do so by generating a matrix including the symmetric encryption keys. In another example, the data processing system can do so by generating a function with the symmetric keys by positioning (e.g., randomly positioning) the symmetric keys in a function with arithmetic operations (e.g., addition) between the symmetric keys in the function and / or variables (e.g., variables of random numbers). The data processing system can store the symmetric equation encryption key in memory.
[0105] At operation 420, the data processing system determines whether the encryption functions of the encryption equation only include asymmetric functions. The data processing system can do so based on (e.g., based only on) the identified types of encryption functions. Responsive to determining the encryption functions of the encryption equation do not only include asymmetric encryption functions, at operation 422, the data processing system determines whether to generate a symmetric equation encryption key or an asymmetric equation encryption key. The data processing system can do so based on a user input or based on a stored configuration of the data processing system.
[0106] Responsive to determining to generate an asymmetric equation encryption key, at operation 424, the data processing system generates a public equation encryption key and a private equation encryption key. The data processing system can generate the public equation encryption key as a function of one or more public keys and one or more symmetric keys of the encryption functions of the encryption equation. In one example, the data processing system can do so by generating a function with the public keys and the symmetric keys by positioning (e.g., randomly positioning) the public keys and the symmetric keys in a function with arithmetic operations (e.g., addition) between the public keys and the symmetric keys in the function and / or variables (e.g., variables of random numbers) that the data processing system adds to the function. The data processing system can generate the private equation encryption key as a function of one or more private keys and the one or more symmetric keys of the encryption functions of the encryption equation. In one example, the data processing system can do so by generating a function with the private keys and the symmetric keys by positioning (e.g., randomly positioning) the private keys and the symmetric keys in a function with arithmetic operations (e.g., addition) between the private keys and the symmetric keys in the function and / or variables (e.g., variables of random numbers) added to the function. 30 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 The data processing system can store the private and / or public equation encryption keys in memory. In some embodiments, the data processing system generates and stores the public equation encryption key and / or the private equation encryption key as matrices including the respective keys of the encryption functions.
[0107] However, responsive to determining to generate a symmetric equation encryption key, at operation 426, the data processing system generates a symmetric equation encryption key. The data processing system can generate the symmetric equation encryption key as a function of one or more public keys, one or more private keys, and one or more symmetric keys of the encryption functions of the encryption equation. In one example, the data processing system can do so by generating a function with the public keys, the private keys, and the symmetric keys by positioning (e.g., randomly positioning) the public keys, the private keys, and the symmetric keys in a function with arithmetic operations (e.g., addition) between the public keys, the private keys, and the symmetric keys in the function and / or variables (e.g., variables of random numbers) that the data processing system adds to the function. The data processing system can store the symmetric equation encryption keys in memory. In some embodiments, the data processing system generates and stores the symmetric encryption key as a matrix including the respective keys of the encryption function.
[0108] Responsive to determining at operation 420 that the encryption equation only includes asymmetric functions, at operation 428, the data processing system determines whether to generate a symmetric equation encryption key or an asymmetric equation encryption key. The data processing system can do so based on a user input or based on a stored configuration of the data processing system.
[0109] Responsive to determining to generate an asymmetric equation encryption key, at operation 430, the data processing system generates a public equation encryption key and a private equation encryption key. The data processing system can generate the public equation encryption key as a function of one or more public keys of the encryption functions of the encryption equation. In one example, the data processing system can do so by generating a function with the public keys by positioning (e.g., randomly positioning) the public keys in a function with arithmetic operations (e.g., addition) between the public keys in the function and / or variables (e.g., variables of random numbers) that the data processing system adds to the function. The data processing system can generate the private equation encryption key as a function of one or more private keys of the encryption functions of the encryption equation. In one example, the data processing system can do so by generating a function with the private 31 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 keys by positioning (e.g., randomly positioning) the private keys in a function with arithmetic operations (e.g., addition) between the private keys in the function and / or variables (e.g., variables of random numbers) that the data processing system adds to the function. The data processing system can store the private and / or public equation encryption keys in memory. In some embodiments, the data processing system generates and stores the public equation encryption key and / or the private equation encryption key as matrices including the respective keys of the encryption functions.
[0110] However, responsive to determining to generate a symmetric equation encryption key, at operation 432, the data processing system generates a symmetric equation encryption key. The data processing system can generate the symmetric equation encryption key as a function of one or more public keys and one or more private keys of the encryption functions of the encryption equation. In one example, the data processing system can do so by generating a function with the public keys and the private keys by positioning (e.g., randomly positioning) the public keys and the private keys in a function with arithmetic operations (e.g., addition) between the public keys and the private keys in the function and / or variables (e.g., variables of random numbers) added to the function. The data processing system can store the symmetric equation encryption keys in memory. In some embodiments, the data processing system generates and stores the symmetric equation encryption key as a matrix including the respective keys of the encryption functions.
[0111] FIG.5 is a flow chart of an implementation of a method 500 for implementing a meta- programming encryption, according to some implementations. The method 500 may be performed by a data processing system (e.g., the data encryption device 102, shown and described with reference to FIG.1). The method 500 may include any number of steps and the steps may be performed in any order. One or more operations of the method 500 can be similar to or the same as one or more of the operations of the method 200 or 300. Performance of the method 500 may enable the data processing system to encrypt data in a secure manner that would make the data resistant to decryption using brute force techniques.
[0112] At operation 502, the data processing system receives a raw file (e.g., a dataset) as input. The data processing system can receive the raw file from a computing device or by retrieving the raw file from memory or a database. At operation 504, the data processing system converts a data object from the raw file into a byte record. The data object can be or include a dataset from the raw file or the raw file itself. An example of a byte array generated in performing the operation 504 is below: 32 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 [1,22,34,12,45,243,255,11,2,34]
[0113] At operation 506, the data processing system generates an equation out of two or more parts of the byte array. Optionally, the data processing system can add one or more variables to the byte array or the equation when creating the equation out of the two or more parts of the byte array. An example of an equation generated in performing the operation 506 is below: f(x) =
[0034] +
[0243] -[1]+[255,11]*
[0045] +
[0022] :
[0012] +[2,34]-[5]
[0114] At operation 508, the data processing system applies encoding functions (e.g., different encoding functions) with individual encryption keys to at least two or more parts of the equation. In doing so, the data processing system can generate an encryption equation. The encoding functions can be encryption functions or any other type of function that transforms values from one value to another value. In some cases, the data processing system may be configured, as a default or a setting, to only use symmetric encryption functions, to only use asymmetric encryption functions, or to use a combination of symmetric and asymmetric encryption functions in the encoding functions, instead of or in addition to any non-encryption-based encoding function. The data processing system can apply different encoding functions to different at least two parts of the byte record. In some embodiments, the data processing system can add one or more variables to the equation or the encryption equation to generate the encryption equation. The data processing system can insert mathematical operations between the encoding functions. An example of an encryption equation generated in performing the operation 508 is below: f(x)=(aes(
[0034] ,x1)+rsa(
[0243] ,x2)- otp([1],x3)+aes([255,11],x4))*(replace(
[0045] ,x5)+aes(
[0022] ,x6):ceaser(
[0012] ,x7)+elipse([2,34],x 8)-otp([5],x9)*87)
[0115] At operation 510, the data processing system applies second encoding functions (e.g., cryptographic algorithms) with individual encryption keys to at least two of the two or more parts of the encryption equation. The data processing system can apply different second encoding functions to the at least two of the two or more parts of the encryption equation. By applying the second encoding functions to the encryption equation, the data processing system can generate an enhanced encryption equation. In some embodiments, the data processing system can add one or more variables to the encryption equation or the enhanced encryption equation to generate the enhanced encryption equation. An example of an 33 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 enhanced encryption equation generated in performing the operation 510 is below: f(x) = 100*otp((aes(
[0034] ,x1)+rsa(
[0243] ,x2)-otp([1],x3)+aes([255,11],x4),x10))*aes((replace (
[0045] ,x5)+aes(
[0022] ,x6):ceaser(
[0012] ,x7)+elipse([2,34],x8)-otp([5],x9)*87,x11))
[0116] At operation 512, the data processing system can create the encrypted dataset and the key by encrypting the initial data file using the enhanced encryption equation. As the result of the encryption operations described in FIG.5 the subject matter techniques lead to an encrypted dataset and records of the encryption function and the key(s) to the encryption function for decrypting the respective encrypted dataset. The record of the encryption function can include a list of the operations that the data processing system performed to generate the encryption function (e.g., the enhanced encryption equation generated at operation 510 and applied at operation 512). The record of the key(s) can be any form of derivative of the keys to the individually encrypted parts of the encryption function (e.g., keys x1-x11 to the parts of the enhanced encryption equation generated at operation 510 and applied at operation 512) or just a list of the individual keys to the respective encrypted parts of the encryption function. In some cases, the key(s) can store the equation encryption keys (e.g., asymmetric equation encryption keys and / or symmetric equation encryption keys, determined as described with respect to FIG.4B) in matrix form or as functions with the keys of the individual encoding functions of the enhanced encryption equation separated from each other and / or one or more added variables by arithmetic operations. Together, the encryption function and the key(s) for the encryption function can operate as two components needed for decrypting the encrypted dataset. The data processing system can transmit or store the encrypted dataset and / or encryption function and / or key(s) (e.g., encryption keys of the encoding functions and / or equation encryption keys) in memory or a database and / or transmit the encrypted dataset and / or encryption function and / or key(s) to another computing device.
[0117] Advantageously, the encryption method described herein offers a unique and effective solution to enhance data security in the face of evolving encryption threats (e.g., quantum computing). Application of the proposed encryption method provides a high level of security and adaptability. The use of multiple complex encoding functions and randomization techniques in the resulting non-predetermined encryption function makes it resistant to brute force attacks and ensures data confidentiality. Thus, the encryption method offers improved protection for sensitive information in an increasingly digital world.
[0118] In one aspect, a method for encrypting a dataset comprises receiving, by one or more 34 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 processors, the dataset; converting, by the one or more processors, the dataset into a byte array; splitting, by the one or more processors, the byte array into two or more parts of the byte array; generating, by the one or more processors, an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation and represent two or more parts of the equation; applying, by the one or more processors, encoding functions to at least two of the two or more parts of the equation to generate an encryption equation; encrypting, by the one or more processors, the dataset using the encryption equation; and storing, by the one or more processors, the encrypted dataset in memory.
[0119] In some embodiments, encrypting the dataset using the encryption equation comprises executing, by the one or more processors, the encryption equation as a set of arithmetic operations or bitwise operations.
[0120] In some embodiments, one or more operations of the method for encrypting a dataset are performed by one or more programs or generative AI models running on the one or more processors.
[0121] In some embodiments, applying the encoding functions comprises applying, by the one or more processors, one or more cryptographic algorithms to the at least two of the two or more parts of the equation to generate the encryption equation.
[0122] In some embodiments, applying the encoding functions comprises applying, by the one or more processors, different encoding functions with encryption keys (e.g., individual encryption keys) to the at least two of the two or more parts of the equation to generate the encryption equation.
[0123] In some embodiments, the method further comprises determining, by the one or more processors using a random number generator: a number of the two or more parts of the byte array; and / or a number of the two or more parts of the equation; and / or positioning of the two or more parts of the byte array within the equation; and / or types of the mathematical operations; and / or an execution priority of the mathematical operations; and / or a number of the encoding functions; and / or types of the encoding functions; and / or a number and positioning of the at least two of the two or more parts of the equation.
[0124] In some embodiments, generating the encryption equation comprises adding, by the one or more processors, one or more variables to the two or more parts of the equation prior and / or subsequent to applying the encoding functions to the at least two of the two or more 35 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 parts of the equation, wherein the added one or more variables are considered as the two or more parts of the equation after adding.
[0125] In some embodiments, generating the encryption equation further comprises determining, by the one or more processors using a random number generator: a number of the one or more variables; and / or values of the one or more variables; and / or types of second mathematical operations added to the equation with the one or more variables; and / or positioning of the one or more variables and the two or more parts of the equation within the encryption equation; and / or an execution priority of the second mathematical operations.
[0126] In some embodiments, the method further comprises splitting, by the one or more processors, the encryption equation into two or more parts of the encryption equation; applying, by the one or more processors, second encoding functions to at least two of the two or more parts of the encryption equation to generate an enhanced encryption equation in which the two or more parts of the encryption equation are separated from each other by a third mathematical operation; and iteratively, and for a number of iterations, wherein the number of iterations is zero or higher: splitting, by the one or more processors, the enhanced encryption equation into two or more parts of the enhanced encryption equation; and applying, by the one or more processors, third encoding functions to at least two of the two or more parts of the enhanced encryption equation to update the enhanced encryption equation such that the two or more parts of the enhanced encryption equation are separated from each other by a fourth mathematical operation; wherein encrypting the dataset using the encryption equation comprises encrypting, by the one or more processors, the dataset using the enhanced encryption equation subsequent to completion of the number of iterations.
[0127] In some embodiments, encrypting the dataset using the encryption equation or the enhanced encryption equation comprises executing, by the one or more processors, the encryption equation or the enhanced encryption equation as a set of arithmetic operations or bitwise operations.
[0128] In some embodiments, one or more operations of the method for encrypting a dataset are performed by one or more programs or generative AI models running on the one or more processors.
[0129] In some embodiments, applying the second encoding functions comprises applying, by the one or more processors, one or more second cryptographic algorithms to the at least two of the two or more parts of the encryption equation to generate the enhanced encryption 36 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 equation.
[0130] In some embodiments, applying the second encoding functions comprises applying, by the one or more processors, different second encoding functions with encryption keys (e.g., individual encryption keys) to the at least two of the two or more parts of the encryption equation to generate the enhanced encryption equation.
[0131] In some embodiments, the method further comprises determining, by the one or more processors using a random number generator the number of iterations; and / or a number of the two or more parts of the encryption equation; and / or positioning of the two or more parts of the encryption equation within the enhanced encryption equation; and / or types of the third mathematical operations; and / or an execution priority of the third mathematical operations; and / or a number of the second encoding functions; and / or types of the second encoding functions; and / or a number and positioning of the at least two or the two or more parts of the encryption equation; and / or a number of the two or more parts of the enhanced encryption equation; and / or positioning of the two or more parts of the enhanced encryption equation within the updated enhanced encryption equation; and / or types of the fourth mathematical operations; and / or an execution priority of the fourth mathematical operations; and / or a number of the third encoding functions; and / or types of the third encoding functions; and / or a number and positioning of the at least two or the two or more parts of the enhanced encryption equation.
[0132] In some embodiments, generating the enhanced encryption equation further comprises adding, by the one or more processors, one or more second variables to the two or more parts of the encryption equation prior and / or subsequent to applying the second encoding functions to the at least two of the two or more parts of the encryption equation, wherein the added one or more second variables are considered as the two or more parts of the encryption equation after adding.
[0133] In some embodiments, generating the enhanced encryption equation further comprises determining, by the one or more processors using a random number generator a number of the one or more second variables; and / or values of the one or more second variables; and / or types of fifth mathematical operations added to the encryption equation with the one or more second variables; and / or the positioning of the one or more second variables and the two or more parts of the encryption equation within the enhanced encryption equation; and / or an execution priority of the fifth mathematical operations. 37 4906-9755-9889.1Atty. Dkt. No.: 138777-0103
[0134] In some embodiments, the method further comprises transmitting, by the one or more processors, the encrypted dataset to a device over a communication channel.
[0135] In some embodiments, the enhanced encryption equation is non-predetermined for each dataset received for encrypting.
[0136] In some embodiments, the method further comprises transmitting, by the one or more processors, the encrypted dataset to a device over a communication channel.
[0137] In some embodiments, the encryption equation and / or the enhanced encryption equation are non-predetermined for each dataset received for encrypting.
[0138] In some embodiments, the encryption equation comprises two or more encryption functions corresponding to encryption keys, and further comprising generating, by the one or more processors, an equation encryption key for the encryption equation as a function of the encryption keys or as a matrix containing the encryption keys.
[0139] In some embodiments, generating the equation encryption key for the encryption equation comprises inserting, by the one or more processors, arithmetic operations between the encryption keys in the function of the encryption keys.
[0140] In some embodiments, generating the equation encryption key for the encryption equation containing symmetric and asymmetric encryption functions, comprises generating, by the one or more processors, a pair of asymmetric equation encryption keys in which a public equation key of the pair of asymmetric equation encryption key is a function of one or more public keys of the asymmetric encryption functions and one or more symmetric keys of the symmetric encryption functions and a private equation key of the pair of asymmetric encryption keys is a function of one or more private keys of the asymmetric encryption functions and the one or more symmetric keys of the symmetric encryption functions; or generating, by the one or more processors, a symmetric equation encryption key as a function of the one or more public keys of the asymmetric encryption functions, the one or more private keys of the asymmetric encryption functions, and the one or more symmetric keys of the symmetric encryption functions.
[0141] In some embodiments, generating the equation encryption key for the encryption equation containing asymmetric encryption functions, comprises generating, by the one or more processors, a pair of asymmetric equation encryption keys in which a public equation key of the pair of asymmetric equation encryption keys is a function of two or more public keys of the asymmetric encryption functions and a private equation key of the pair of 38 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 asymmetric encryption keys is a function of two or more private keys of the asymmetric encryption functions; or generating, by the one or more processors, a symmetric equation encryption key as a function of the two or more public keys and the two or more private keys of the asymmetric encryption functions.
[0142] In some embodiments, generating the equation encryption key for the encryption equation containing asymmetric encryption functions, comprises generating, by the one or more processors, a symmetric equation encryption key as a function of two or more symmetric keys of the symmetric encryption functions.
[0143] In one aspect, the present disclosure describes a system for encrypting a dataset comprising one or more processors coupled with memory, the memory comprising one or more instructions that, when executed by the one or more processors, cause the one or more processors to receive the dataset; convert the dataset into a byte array; split the byte array into two or more parts of the byte array; generate an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation and represent two or more parts of the equation; apply encoding functions to at least two of the two or more parts of the equation to generate an encryption equation; encrypt the dataset using the encryption equation; and store the encrypted dataset in memory.
[0144] In some embodiments, the instructions cause the one or more processors to encrypt the dataset using the encryption equation by executing the encryption equation as a set of arithmetic operations or bitwise operations or arithmetic and bitwise operations.
[0145] In some embodiments, the instructions cause the one or more processors to apply the encoding functions by applying different cryptographic algorithms with encryption keys (e.g., individual encryption keys) to the at least two of the two or more parts of the equation to generate the encryption equation.
[0146] In some embodiments, the instructions cause the one or more processors to further determine, using a random number generator a number of the two or more parts of the byte array; and / or a number of the two or more parts of the equation; and / or positioning of the two or more parts of the byte array within the equation; and / or types of the mathematical operations; and / or an execution priority of the mathematical operations; and / or a number of the encoding functions; and / or types of the encoding functions; and / or a number and positioning of the at least two of the two or more parts of the equation. 39 4906-9755-9889.1Atty. Dkt. No.: 138777-0103
[0147] In some embodiments, the instructions further cause the one or more processors to split the encryption equation into two or more parts of the encryption equation; apply second encoding functions to at least two of the two or more parts of the encryption equation to generate an enhanced encryption equation in which the two or more parts of the encryption equation are separated from each other by a third mathematical operation; and iteratively, and for a number of iterations, wherein the number of iterations is zero or higher: split the enhanced encryption equation into two or more parts of the enhanced encryption equation; and apply third encoding functions to at least two of the two or more parts of the enhanced encryption equation to update the enhanced encryption equation such that the two or more parts of the enhanced encryption equation are separated from each other by a fourth mathematical operation; wherein the instructions cause the one or more processors to encrypt the dataset using the encryption equation by encrypting the dataset using the enhanced encryption equation subsequent to completion of the number of iterations.
[0148] In some embodiments, the instructions cause one or more programs or generative AI models running on the one or more processors to execute at least a portion of the instructions.
[0149] In one aspect, the present disclosure describes non-transitory computer-readable media for encrypting a dataset, the non-transitory computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to receive the dataset; convert the dataset into a byte array; split the byte array into two or more parts of the byte array; generate an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation and represent two or more parts of the equation; apply encoding functions to at least two of the two or more parts of the equation to generate an encryption equation; encrypt the dataset using the encryption equation; and store the encrypted dataset in memory.
[0150] In some embodiments, the instructions cause the one or more processors to encrypt the dataset using the encryption equation by executing the encryption equation as a set of arithmetic operations or bitwise operations.
[0151] In some embodiments, the instructions cause the one or more processors to apply the encoding functions by applying different cryptographic algorithms with encryption keys (e.g., individual encryption keys) to the at least two of the two or more parts of the equation to generate the encryption equation. 40 4906-9755-9889.1Atty. Dkt. No.: 138777-0103
[0152] In some embodiments, the instructions further cause the one or more processors to split the encryption equation into two or more parts of the encryption equation; apply second encoding functions to at least two of the two or more parts of the encryption equation to generate an enhanced encryption equation in which the two or more parts of the encryption equation are separated from each other by a third mathematical operation; and iteratively, and for a number of iterations, wherein the number of iterations is zero or higher: split the enhanced encryption equation into two or more parts of the enhanced encryption equation; and apply, third encoding functions to at least two of the two or more parts of the enhanced encryption equation to update the enhanced encryption equation such that the two or more parts of the enhanced encryption equation are separated from each other by a fourth mathematical operation; wherein the instructions cause the one or more processors to encrypt the dataset using the encryption equation by encrypting the dataset using the enhanced encryption equation subsequent to completion of the number of iterations. B. Computing Environment
[0153] Having discussed specific embodiments of the present solution, it may be helpful to describe aspects of the operating environment as well as associated system components (e.g., hardware parts) in connection with the methods and systems described herein.
[0154] The systems discussed herein may be deployed as and / or executed on any type and form of computing device, such as a computer, network device or appliance capable of communicating on any type and form of network and performing the operations described herein. FIGs. 6A and 6B depict block diagrams of a computing device 600 useful for practicing an embodiment of the systems and methods described herein. As shown in FIGs. 6A and 6B, each computing device 600 includes a central processing unit 621, and a main memory unit 622. As shown in FIG.6A, a computing device 600 may include a storage device 628, an installation device 616, a network interface 618, an I / O controller 623, display devices 624a^624n, a keyboard 626 and a pointing device 627, such as a mouse. The storage device 628 may include, without limitation, an operating system and / or software. As shown in FIG.6B, each computing device 600 may also include additional optional parts, such as a memory port 603, a bridge 670, one or more input / output devices 630a^630n (generally referred to using reference numeral 630), and a cache memory 640 in communication with the central processing unit 621.
[0155] The central processing unit 621 is any logic circuitry that responds to and processes 41 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 instructions fetched from the main memory unit 622. In many embodiments, the central processing unit 621 is provided by a microprocessor unit, such as: those manufactured by Intel Corporation of Mountain View, California; those manufactured by International Business Machines of White Plains, New York; or those manufactured by Advanced Micro Devices of Sunnyvale, California, etc. The computing device 600 may be based on any of these processors, or any other processor capable of operating as described herein.
[0156] The main memory unit 622 may be or include one or more memory chips capable of storing data and allowing any storage location to be directly accessed by the central processing unit 621, such as any type or variant of Static random access memory (SRAM), Dynamic random access memory (DRAM), Ferroelectric RAM (FRAM), NAND Flash, NOR Flash and Solid State Drives (SSD). The main memory unit 622 may be based on any of the above described memory chips, or any other available memory chips capable of operating as described herein. In the embodiment shown in FIG. 6A, the central processing unit 621 communicates with main memory 622 via a system bus 680 (described in more detail below). FIG.6B depicts an embodiment of a computing device 600 in which the central processing unit 621 communicates directly with the main memory unit 622 via a memory port 603. For example, in FIG.6B the main memory unit 622 may be DRDRAM.
[0157] FIG. 6B depicts an embodiment in which the central processing unit 621 communicates directly with cache memory 640 via a secondary bus, sometimes referred to as a backside bus. In other embodiments, the central processing unit 621 communicates with cache memory 640 using the system bus 680. Cache memory 640 typically has a faster response time than main memory unit 622 and is provided by, for example, SRAM, BSRAM, or EDRAM. In the embodiment shown in FIG. 6B, the central processing unit 621 communicates with various I / O devices 630 via the system bus 680. Various buses may be used to connect the central processing unit 621 to any of the I / O devices 630, for example, a VESA VL bus, an ISA bus, an EISA bus, a MicroChannel Architecture (MCA) bus, a PCI bus, a PCI-X bus, a PCI-Express bus, or a NuBus. For embodiments in which an I / O device 630 is a video display (e.g., the video display 624), the central processing unit 621 may use an Advanced Graphics Port (AGP) to communicate with the video display. FIG.6B depicts an embodiment of a computing device 600 in which the central processing unit 621 may communicate directly with the I / O device 630b, for example via HYPERTRANSPORT, RAPIDIO, or INFINIBAND communications technology. FIG. 6B also depicts an embodiment in which local busses and direct communication are mixed: the central 42 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 processing unit 621 communicates with the I / O device 630a using the system bus 680 while communicating with the I / O device 630b directly.
[0158] A wide variety of I / O devices 630a^630n may be present in the computing device 600. Input devices include keyboards, mice, trackpads, trackballs, microphones, dials, touch pads, touch screens, and drawing tablets. Output devices include video displays, speakers, inkjet printers, laser printers, projectors and dye-sublimation printers. The I / O devices may be controlled by an I / O controller 623 as shown in FIG.6A. The I / O controller may control one or more I / O devices such as a keyboard 626 and a pointing device 627, e.g., a mouse or optical pen. Furthermore, an I / O device may also provide storage and / or an installation device 616 for the computing device 600. In still other embodiments, the computing device 600 may provide USB connections (not shown) to receive handheld USB storage devices such as the USB Flash Drive line of devices manufactured by Twintech Industry, Inc., of Los Alamitos, California.
[0159] Referring again to FIG. 6A, the computing device 600 may support any suitable installation device 616, such as a disk drive, a CD-ROM drive, a CD-R / RW drive, a DVD- ROM drive, a flash memory drive, tape drives of various formats, USB device, hard-drive, a network interface, or any other device suitable for installing software and programs. The computing device 600 may further include a storage device, such as one or more hard disk drives or redundant arrays of independent disks, for storing an operating system and other related software, and for storing application software programs such as any program or software 620 for implementing (e.g., configured and / or designed for) the systems and methods described herein. Optionally, any of the installation devices 616 could also be used as the storage device. Additionally, the operating system and the software can be run from a bootable medium.
[0160] Furthermore, the computing device 600 may include a network interface 618 to interface to the network 104 through a variety of connections including, but not limited to, standard telephone lines, LAN or WAN links (e.g., 802.11, T1, T3, 56kb, X.25, SNA, DECNET), broadband connections (e.g., ISDN, Frame Relay, ATM, Gigabit Ethernet, Ethernet-over-SONET), wireless connections, or some combination of any or all of the above. Connections can be established using a variety of communication protocols (e.g., TCP / IP, IPX, SPX, NetBIOS, Ethernet, ARCNET, SONET, SDH, Fiber Distributed Data Interface (FDDI), RS232, IEEE 802.11, IEEE 802.11a, IEEE 802.11b, IEEE 802.11g, IEEE 802.11n, IEEE 802.11ac, IEEE 802.11ad, CDMA, GSM, WiMax and direct asynchronous 43 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 connections). In one embodiment, the computing device 600 communicates with other computing devices 600^ via any type and / or form of gateway or tunneling protocol such as Secure Socket Layer (SSL) or Transport Layer Security (TLS). The network interface 618 may include a built-in network adapter, network interface card, PCMCIA network card, card bus network adapter, wireless network adapter, USB network adapter, modem or any other device suitable for interfacing the computing device 600 to any type of network capable of communication and performing the operations described herein.
[0161] In some implementations, the computing device 600 may include or be connected to one or more display devices 624a^624n. As such, any of the I / O devices 630a^630n and / or the I / O controller 623 may include any type and / or form of suitable hardware, software, or combination of hardware and software to support, enable or provide for the connection and use of the display device(s) 624a^624n by the computing device 600. For example, the computing device 600 may include any type and / or form of video adapter, video card, driver, and / or library to interface, communicate, connect or otherwise use the display device(s) 624a^ 624n. In one embodiment, a video adapter may include multiple connectors to interface to the display device(s) 624a^624n. In other embodiments, the computing device 600 may include multiple video adapters, with each video adapter connected to the display device(s) 624a^624n. In some implementations, any portion of the operating system of the computing device 600 may be configured for using multiple display devices 624a^624n. One ordinarily skilled in the art will recognize and appreciate the various ways and embodiments that a computing device 600 may be configured to have one or more display devices 624a^624n.
[0162] In further embodiments, an I / O device 630 may be a bridge between the system bus 680 and an external communication bus, such as a USB bus, an Apple Desktop Bus, an RS- 232 serial connection, a SCSI bus, a FireWire bus, a FireWire 500 bus, an Ethernet bus, an AppleTalk bus, a Gigabit Ethernet bus, an Asynchronous Transfer Mode bus, a FibreChannel bus, a Serial Attached small computer system interface bus, a USB connection, or a HDMI bus.
[0163] A computing device 600 of the sort depicted in FIGs.6A and 6B may operate under the control of an operating system, which controls scheduling of tasks and access to system resources. The computing device 600 can be running any operating system, such as any of the versions of the MICROSOFT WINDOWS operating systems, the different releases of the Unix and Linux operating systems, any version of the MAC OS for Macintosh computers, any embedded operating system, any real-time operating system, any open source operating 44 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 system, any proprietary operating system, any operating systems for mobile computing devices, or any other operating system capable of running on the computing device and performing the operations described herein. Typical operating systems include, but are not limited to, Android, produced by Google Inc.; WINDOWS 7 and 8, produced by Microsoft Corporation of Redmond, Washington; MAC OS, produced by Apple Computer of Cupertino, California; WebOS, produced by Research In Motion (RIM); OS / 2, produced by International Business Machines of Armonk, New York; and Linux, a freely-available operating system distributed by Caldera Corp. of Salt Lake City, Utah, or any type and / or form of a Unix operating system, among others.
[0164] The computer 600 can be any workstation, telephone, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone or other portable telecommunications device, media playing device, a gaming system, mobile computing device, or any other type and / or form of computing, telecommunications or media device that is capable of communication. The computer 600 has sufficient processor power and memory capacity to perform the operations described herein.
[0165] In some implementations, the computing device 600 may have different processors, operating systems, and input devices consistent with the device. For example, in one embodiment, the computing device 600 is a smart phone, mobile device, tablet or personal digital assistant. In still other embodiments, the computing device 600 is an Android-based mobile device, an iPhone smart phone manufactured by Apple Computer of Cupertino, California, or a Blackberry or WebOS-based handheld device or smart phone, such as the devices manufactured by Research In Motion Limited. Moreover, the computing device 600 can be any workstation, desktop computer, laptop or notebook computer, server, handheld computer, mobile telephone, any other computer, or other form of computing or telecommunications device that is capable of communication and that has sufficient processor power and memory capacity to perform the operations described herein.
[0166] Although the disclosure may reference one or more ^users^, such ^users^ may refer to user-associated devices or stations (STAs), for example, consistent with the terms ^user^ and ^multi-user^ typically used in the context of a multi-user multiple-input and multiple- output (MU-MIMO) environment.
[0167] Although examples of communications systems described above may include devices operating according to an 802.11 standard, it should be understood that embodiments of the 45 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 systems and methods described can operate according to other standards and use wireless communications devices other than devices configured as devices and APs. For example, multiple-unit communication interfaces associated with cellular networks, satellite communications, vehicle communication networks, and other non-802.11 wireless networks can utilize the systems and methods described herein to achieve improved overall capacity and / or link quality without departing from the scope of the systems and methods described herein.
[0168] It should be noted that certain passages of this disclosure may reference terms such as ^first^ and ^second^ in connection with devices, mode of operation, transmit chains, antennas, etc., for purposes of identifying or differentiating one from another or from others. These terms are not intended to merely relate entities (e.g., a first device and a second device) temporally or according to a sequence, although in some cases, these entities may include such a relationship. Nor do these terms limit the number of possible entities (e.g., devices) that may operate within a system or environment.
[0169] It should be understood that the systems described above may provide multiple ones of any or each of those components and these components may be provided on either a standalone machine or, in some implementations, on multiple machines in a distributed system. In addition, the systems and methods described above may be provided as one or more computer-readable programs or executable instructions embodied on or in one or more articles of manufacture. The article of manufacture may be a floppy disk, a hard disk, a CD- ROM, a flash memory card, a PROM, a RAM, a ROM, or a magnetic tape. In general, the computer-readable programs may be implemented in any programming language, such as LISP, PERL, C, C++, C#, PROLOG, or in any byte code language such as JAVA, etc. The software programs or executable instructions may be stored on or in one or more articles of manufacture as object code.
[0170] While the foregoing written description of the methods and systems enables one of ordinary skill to make and use what is considered presently to be the best mode thereof, those of ordinary skill will understand and appreciate the existence of variations, combinations, and equivalents of the specific embodiment, method, and examples herein. The present methods and systems should therefore not be limited by the above described embodiments, methods, and examples, but by all embodiments and methods within the scope and spirit of the disclosure. 46 4906-9755-9889.1
Claims
Atty. Dkt. No.: 138777-0103 WHAT IS CLAIMED IS:
1. A method for encrypting a dataset comprising: receiving, by one or more processors, the dataset; converting, by the one or more processors, the dataset into a byte array; splitting, by the one or more processors, the byte array into two or more parts of the byte array; generating, by the one or more processors, an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation and represent two or more parts of the equation; applying, by the one or more processors, encoding functions to at least two of the two or more parts of the equation to generate an encryption equation; encrypting, by the one or more processors, the dataset using the encryption equation; and storing, by the one or more processors, the encrypted dataset in memory.
2. The method of claim 1, wherein one or more operations of the method of claim 1 are by one or more programs or generative AI models running on the one or more processors.
3. The method of claim 1, wherein applying the encoding functions comprises applying, by the one or more processors, one or more cryptographic algorithms to the at least two of the two or more parts of the equation to generate the encryption equation.
4. The method of claim 1, wherein applying the encoding functions comprises applying, by the one or more processors, different encoding functions with encryption keys to the at least two of the two or more parts of the equation to generate the encryption equation.
5. The method of claim 1, further comprising determining, by the one or more processors using a random number generator: a number of the two or more parts of the byte array; and / or a number of the two or more parts of the equation; and / or positioning of the two or more parts of the byte array within the equation; and / or types of the mathematical operations; and / or 47 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 an execution priority of the mathematical operations; and / or a number of the encoding functions; and / or types of the encoding functions; and / or a number and positioning of the at least two of the two or more parts of the equation.
6. The method of claim 1, wherein generating the encryption equation comprises: adding, by the one or more processors, one or more variables to the two or more parts of the equation prior and / or subsequent to applying the encoding functions to the at least two of the two or more parts of the equation, wherein the added one or more variables are considered as the two or more parts of the equation after adding.
7. The method of claim 6, wherein generating the encryption equation further comprises determining, by the one or more processors using a random number generator: a number of the one or more variables; and / or values of the one or more variables; and / or types of second mathematical operations added to the equation with the one or more variables; and / or positioning of the two or more parts of the equation within the encryption equation after adding the one or more variables; and / or an execution priority of the second mathematical operations.
8. The method of claim 1, further comprising: splitting, by the one or more processors, the encryption equation into two or more parts of the encryption equation; applying, by the one or more processors, second encoding functions to at least two of the two or more parts of the encryption equation to generate an enhanced encryption equation in which the two or more parts of the encryption equation are separated from each other by a third mathematical operation; and iteratively, and for a number of iterations, wherein the number of iterations is zero or higher: splitting, by the one or more processors, the enhanced encryption equation into two or more parts of the enhanced encryption equation; and applying, by the one or more processors, third encoding functions to at least two of the two or more parts of the enhanced encryption equation to update the 48 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 enhanced encryption equation such that the two or more parts of the enhanced encryption equation are separated from each other by a fourth mathematical operation; wherein encrypting the dataset using the encryption equation comprises encrypting, by the one or more processors, the dataset using the enhanced encryption equation subsequent to completion of the number of iterations.
9. The method of claim 8, wherein encrypting the dataset using the encryption equation or the enhanced encryption equation comprises executing, by the one or more processors, the encryption equation or the enhanced encryption equation as a set of arithmetic operations or bitwise operations.
10. The method of claim 8, wherein one or more operations of the method of claim 9 are performed by one or more programs or generative AI models running on the one or more processors.
11. The method of claim 8, wherein applying the second encoding functions comprises applying, by the one or more processors, one or more second cryptographic algorithms to the at least two of the two or more parts of the encryption equation to generate the enhanced encryption equation.
12. The method of claim 8, wherein applying the second encoding functions comprises applying, by the one or more processors, different second encoding functions with encryption keys to the at least two of the two or more parts of the encryption equation to generate the enhanced encryption equation.
13. The method of claim 8, further comprising determining, by the one or more processors using a random number generator: the number of iterations; and / or a number of the two or more parts of the encryption equation; and / or positioning of the two or more parts of the encryption equation within the enhanced encryption equation; and / or types of the third mathematical operations; and / or an execution priority of the third mathematical operations; and / or 49 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 a number of the second encoding functions; and / or types of the second encoding functions; and / or a number and positioning of the at least two or the two or more parts of the encryption equation; and / or a number of the two or more parts of the enhanced encryption equation; and / or positioning of the two or more parts of the enhanced encryption equation within the updated enhanced encryption equation; and / or types of the fourth mathematical operations; and / or an execution priority of the fourth mathematical operations; and / or a number of the third encoding functions; and / or types of the third encoding functions; and / or a number and positioning of the at least two or the two or more parts of the enhanced encryption equation.
14. The method of claim 8, wherein generating the enhanced encryption equation further comprises: adding, by the one or more processors, one or more second variables to the two or more parts of the encryption equation prior and / or subsequent to applying the second encoding functions to the at least two of the two or more parts of the encryption equation, wherein the added one or more second variables are considered as the two or more parts of the encryption equation after adding.
15. The method of claim 14, wherein generating the enhanced encryption equation further comprises determining, by the one or more processors using a random number generator: a number of the one or more second variables; and / or values of the one or more second variables; and / or types of fifth mathematical operations added to the encryption equation with the one or more second variables; and / or the positioning of the two or more parts of the encryption equation within the enhanced encryption equation after adding the one or more second variables; and / or an execution priority of the fifth mathematical operations.
16. The method of claim 8 further comprising: transmitting, by the one or more processors, the encrypted dataset to a device over a 50 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 communication channel.
17. The method of claim 8, wherein the encryption equation and / or the enhanced encryption equation are non-predetermined for each dataset received for encrypting.
18. The method of claim 1, further comprising: transmitting, by the one or more processors, the encrypted dataset to a device over a communication channel.
19. The method of claim 1, wherein the encryption equation comprises two or more encryption functions corresponding to encryption keys, and further comprising: generating, by the one or more processors, an equation encryption key for the encryption equation as a function of the encryption keys or as a matrix containing the encryption keys.
20. The method of claim 19, wherein generating the equation encryption key for the encryption equation containing symmetric and asymmetric encryption functions, comprises: generating, by the one or more processors, a pair of asymmetric equation encryption keys in which a public equation key of the pair of asymmetric equation encryption keys is a function of one or more public keys of the asymmetric encryption functions and one or more symmetric keys of the symmetric encryption functions and a private equation key of the pair of asymmetric encryption keys is a function of one or more private keys of the asymmetric encryption functions and the one or more symmetric keys of the symmetric encryption functions; or generating, by the one or more processors, a symmetric equation encryption key as a function of the one or more public keys of the asymmetric encryption functions, the one or more private keys of the asymmetric encryption functions, and the one or more symmetric keys of the symmetric encryption functions.
21. The method of claim 19, wherein generating the equation encryption key for the encryption equation containing asymmetric encryption functions, comprises: generating, by the one or more processors, a pair of asymmetric equation encryption keys in which a public equation key of the pair of asymmetric equation encryption keys is a 51 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 function of two or more public keys of the asymmetric encryption functions and a private equation key of the pair of asymmetric encryption keys is a function of two or more private keys of the asymmetric encryption functions; or generating, by the one or more processors, a symmetric equation encryption key as a function of the two or more public keys and the two or more private keys of the asymmetric encryption functions.
22. The method of claim 19, wherein generating the equation encryption key for the encryption equation containing symmetric encryption functions, comprises: generating, by the one or more processors, a symmetric equation encryption key as a function of two or more symmetric keys of the symmetric encryption functions.
23. A system for encrypting a dataset comprising: one or more processors coupled with memory, the memory comprising one or more instructions that, when executed by the one or more processors, cause the one or more processors to: receive the dataset; convert the dataset into a byte array; split the byte array into two or more parts of the byte array; generate an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation and represent two or more parts of the equation; apply encoding functions to at least two of the two or more parts of the equation to generate an encryption equation; encrypt the dataset using the encryption equation; and store the encrypted dataset in memory.
24. The system of claim 23, wherein the instructions cause the one or more processors to encrypt the dataset using the encryption equation by executing the encryption equation as a set of arithmetic operations or bitwise operations or arithmetic and bitwise operations.
25. The system of claim 23, wherein the instructions cause the one or more processors to apply the encoding functions by applying different cryptographic algorithms with encryption keys to the at least two of the two or more parts of the equation to generate the encryption 52 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 equation.
26. The system of claim 23, wherein the instructions cause the one or more processors to further determine, using a random number generator: a number of the two or more parts of the byte array; and / or a number of the two or more parts of the equation; and / or positioning of the two or more parts of the byte array within the equation; and / or types of the mathematical operations; and / or an execution priority of the mathematical operations; and / or a number of the encoding functions; and / or types of the encoding functions; and / or a number and positioning of the at least two of the two or more parts of the equation.
27. The system of claim 23, wherein the instructions further cause the one or more processors to: split the encryption equation into two or more parts of the encryption equation; apply second encoding functions to at least two of the two or more parts of the encryption equation to generate an enhanced encryption equation in which the two or more parts of the encryption equation are separated from each other by a third mathematical operation; and iteratively, and for a number of iterations, wherein the number of iterations is zero or higher: split the enhanced encryption equation into two or more parts of the enhanced encryption equation; and apply third encoding functions to at least two of the two or more parts of the enhanced encryption equation to update the enhanced encryption equation such that the two or more parts of the enhanced encryption equation are separated from each other by a fourth mathematical operation; wherein the instructions cause the one or more processors to encrypt the dataset using the encryption equation by encrypting the dataset using the enhanced encryption equation subsequent to completion of the number of iterations.
28. Non-transitory computer-readable media for encrypting a dataset, the non-transitory 53 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 computer-readable media comprising instructions that, when executed by one or more processors, cause the one or more processors to: receive the dataset; convert the dataset into a byte array; split the byte array into two or more parts of the byte array; generate an equation out of the two or more parts of the byte array in which the two or more parts of the byte array are separated from each other by a mathematical operation and represent two or more parts of the equation; apply encoding functions to at least two of the two or more parts of the equation to generate an encryption equation; encrypt the dataset using the encryption equation; and store the encrypted dataset in memory.
29. The non-transitory computer-readable media of claim 28, wherein the instructions cause the one or more processors to encrypt the dataset using the encryption equation by executing the encryption equation as a set of arithmetic operations or bitwise operations.
30. The non-transitory computer-readable media of claim 28, wherein the instructions further cause the one or more processors to: split the encryption equation into two or more parts of the encryption equation; apply second encoding functions to at least two of the two or more parts of the encryption equation to generate an enhanced encryption equation in which the two or more parts of the encryption equation are separated from each other by a third mathematical operation; and iteratively, and for a number of iterations, wherein the number of iterations is zero or higher: split the enhanced encryption equation into two or more parts of the enhanced encryption equation; and apply, third encoding functions to at least two of the two or more parts of the enhanced encryption equation to update the enhanced encryption equation such that the two or more parts of the enhanced encryption equation are separated from each other by a fourth mathematical operation; wherein the instructions cause the one or more processors to encrypt the dataset using the encryption equation by encrypting the dataset using the 54 4906-9755-9889.1Atty. Dkt. No.: 138777-0103 enhanced encryption equation subsequent to completion of the number of iterations. 55 4906-9755-9889.1
Citation Information
Patent Citations
Systems and methods for diversification of encryption algorithms and obfuscation symbols, symbol spaces and / or schemas
US20120079281A1
Secure Dynamic Communication Network And Protocol
US20160219024A1
Methods And Apparatus For HyperSecure Last Mile Communication
US20210014939A1