Cryptography using quasigroups
AssigneeMotorola Mobility LLC
InventorLex Aaron Anderson
Life of this patent
Estimating the term…
Abstract
A method and apparatus 20 for securing executable code embodying a cipher 12 using a metamorphic algorithm 24. The metamorphic algorithm 24 dynamically executes polymorphic primitives 43, each of which implements a functional component 41 of the cryptographic algorithm 12. When a halting condition is met, the output of the cryptographic algorithm 12 occurs.
Claims25
A method of securing an executable program comprising a cipher with a plurality of functional components each of which can be implemented by one or more polymorphic code blocks, the method comprising the following in any order:
- generating a composite quasigroup isotope for each layer in a plurality of layers, wherein each composite quasigroup isotope defines a cryptographic state for a polymorphic code block of the one or more polymorphic blocks in a respective layer,
- receiving input comprising information for encryption or decryption by the cipher,
- recursively executing the one or more polymorphic code blocks repeatedly in any sequence and/or in parallel, wherein on execution each polymorphic code block for a layer reads input from memory and generates and writes output to memory using a respective composite quasigroup isotope for the layer, wherein for any instance of execution the input and output might or might not be valid, and
- outputting resultant decryption or encryption of the information when the one or more polymorphic code blocks implementing the functional components of the cipher have all been executed to provide valid output, the resultant decryption or encryption of information being the output from one or more of the one or more polymorphic code blocks.
A method of creating a metamorphic algorithm to implement a cipher, comprising:
- generating a composite quasigroup isotope for each layer in a plurality of layers, wherein each composite quasigroup isotope defines a cryptographic state for a polymorphic code block in a respective layer;
- receiving a cipher,
- decomposing the cipher into polymorphic code blocks, where each polymorphic code block for a respective layer implements a functional component of the cipher using output from another polymorphic code block or other data source and a respective composite quasigroup isotope for the respective layer, and
- compiling a cipher kernel that upon execution recursively executes repeatedly polymorphic code blocks in a non-sequential and/or parallel manner to read input and write output that might or might not be valid.
An apparatus for securely implementing an executable program comprising a cipher with a plurality of functional components each of which can be implemented by one or more polymorphic code blocks, the apparatus comprising:
- an input for receiving information for encryption or decryption by the cipher,
- an output for providing encrypted or decrypted information, and
- a processor configured to, in any order:
- generate a composite quasigroup isotope for each layer in a plurality of layers, wherein each composite quasigroup isotope defines a cryptographic state for a polymorphic code block of the one or more polymorphic blocks in a respective layer,
- recursively execute the one or more polymorphic code blocks repeatedly in any sequence and/or in parallel, wherein on execution each polymorphic code block for a layer reads input from memory and generates and writes output to memory using a respective composite quasigroup isotope for the layer, wherein for any instance of execution the input and output might or might not be valid, and
- output resultant decryption or encryption of the information when the one or more polymorphic code blocks implementing the functional components of the cipher have all been executed to provide valid output, the resultant decryption or encryption of information being the output from one or more of the one or more polymorphic code blocks.
An apparatus for creating a metamorphic algorithm to implement a cipher, comprising:
- an input for receiving a cryptographic algorithm,
- a processor configured to:
- generate a composite quasigroup isotope for each layer in a plurality of layers, wherein each composite quasigroup isotope defines a cryptographic state for a polymorphic code block in a respective layer,
- receive a cipher,
- decompose the cipher into polymorphic code blocks, where each polymorphic code block for a respective layer implements a functional component of the cipher using output from another polymorphic code block or other data source and a respective composite quasigroup isotope for the respective layer, and
- compile a cipher kernel that upon execution recursively executes repeatedly polymorphic code blocks in a non-sequential and/or parallel manner to read input and write output that might or might not be valid.
A non-transitory computer readable medium containing instructions for a computer to perform a method of securing an executable program comprising a cipher with a plurality of functional components each of which can be implemented by one or more polymorphic code blocks, the method comprising the following in any order:
- generating a composite quasigroup isotope for each layer in a plurality of layers, wherein each composite quasigroup isotope defines a cryptographic state for a polymorphic code block of the one or more polymorphic blocks in a respective layer;
- receiving input comprising information for encryption or decryption by the cipher,
- recursively executing the one or more polymorphic code blocks repeatedly in any sequence and/or in parallel, wherein on execution each polymorphic code block for a layer reads input from memory and generates and writes output to memory using a respective composite quasigroup isotope for the layer, wherein for any instance of execution the input and output might or might not be valid, and
- outputting resultant decryption or encryption of the information when the one or more polymorphic code blocks implementing the functional components of the cipher have all been executed to provide valid output, the resultant decryption or encryption of information being the output from one or more of the one or more polymorphic code blocks.
A non-transitory computer readable medium carrying instruction for a computer to perform a method of creating a metamorphic algorithm to implement a cipher, comprising:
- generating a composite quasigroup isotope for each layer in a plurality of layers, wherein each composite quasigroup isotope defines a cryptographic state for a polymorphic code block in a respective layer,
- receiving a cipher,
- decomposing the cipher into polymorphic code blocks, where each polymorphic code block for a respective layer implements a functional component of the cipher using output from another polymorphic code block or other data source and a respective composite quasigroup isotope for the respective layer, and
- compiling a cipher kernel that upon execution recursively executes repeatedly polymorphic code blocks in a non-sequential and/or parallel manner to read input and write output that might or might not be valid.
Dependencies are inferred from the claim text.