Abstract:
A method of obfuscating a code is provided, wherein the method comprises performing a first level obfuscating technique on a code to generate a first obfuscated code, and performing a second level obfuscating technique on the first obfuscated code. In particular, the code may be a software code or a software module. Furthermore, the first level obfuscating technique and the second obfuscating may be different. In particular, the second level obfuscating technique may perform a deobfuscation.
Abstract:
A method for obfuscating functionality of computer software is disclosed. In an embodiment, the method involves determining a first set of instructions needed to perform a target operation and a second set of instructions for at least one or more additional operations. The second set of instructions is tuned to contain instructions such that, by executing the second set of instructions, the function of the first set of instructions can be performed. Once the first and second sets of instruction are determined and tuned, a code library is created and code fragments in the library correspond to code needed to perform the function of the first set of instructions when executed. Instructions are then added to the second set of instructions such that, when executed, will cause the functionality of the first set of instructions to be achieved.
Abstract:
A mobile device, including: a wireless communication interface; a memory storing a secure software application; and a processor in communication with the memory, the processor being configured to: transmit an authentication challenge to the SIM card; receive an authentication response from the SIM card; verify the authentication response from the SIM card; and enable the secure software application when the authentication response from the SIM card is verified.
Abstract:
A method of binding a software to a device is disclosed. Accordingly, during a setup of the software in the device, a unique identifier is derived from contents stored in the device and the derived unique identifier is encrypted. The derived unique identifier is then stored in a configuration of the software. During a next invocation of the software in the device, a new unique identifier is derived from the contents stored in the device. The newly derived unique identifier is then matched with the stored unique identifier. The execution of the software is terminated if the matching fails.
Abstract:
An apparatus for restricting execution of software is disclosed. The apparatus includes a telecommunication device configured to communicate with a wireless device (e.g., an RFID device) using a first wireless communication protocol. The telecommunication device is configured to determine whether or not the telecommunication device is located in an authorized wireless environment, based on wireless devices detected by the telecommunication device. The telecommunication device is also configured to execute a program in response to determining that it is located in an authorized wireless environment. Conversely, the telecommunication device is also configured to inhibit execution of the program in response to determining that it is not located in an authorized wireless environment.
Abstract:
A method of obfuscating a code is provided, wherein the method comprises performing a first level obfuscating technique on a code to generate a first obfuscated code, and performing a second level obfuscating technique on the first obfuscated code. In particular, the code may be a software code or a software module. Furthermore, the first level obfuscating technique and the second obfuscating may be different. In particular, the second level obfuscating technique may perform a deobfuscation.
Abstract:
A method of securely implementing functions in a secure software application, including: determining, by a processor, two functions to be implemented by the secure software application; generating a first function lookup table; encrypting the first function lookup table; sorting the first function lookup table by encrypted operand; generating a second function lookup table; encrypting the second function lookup table; sorting the second function lookup table by encrypted operand; generating a flattened lookup table from a combination of the encrypted first and second function lookup tables; permutating the flattened table indices e.g. by use of public key cryptography encryption; and sorting the flattened table by the permutated flattened table indices.
Abstract:
A method for a method for mapping an input message to an output message by a keyed cryptographic operation in a cryptographic system, the keyed cryptographic operation including a plurality of substitution layers and state data, including: mapping the input message to first state data in a first substitution layer of the keyed cryptographic operation, wherein the first substitution layer includes N basic blocks that implement the first substitution layer and wherein a non-linear encoding having a first size is placed on the inputs and outputs of the N basic blocks of the first substitution layer, where N is an integer; mapping the first state data to second state data in a plurality of intermediate substitution layers of the keyed cryptographic operation, wherein the intermediate substitution layers include M blocks that implement the intermediate substitution layers and wherein a plurality of non-linear encodings having a second size are placed on the inputs and outputs of the M basic blocks of the intermediate substitution layers, where M is an integer; and mapping the second state data to an output message in a final substitution layer of the keyed cryptographic operation, wherein the final substitution layer includes K basic blocks that implement the final substitution layer and wherein a non-linear encoding having a third size is placed on the inputs and outputs of the K basic blocks of the final substitution layer, where K is an integer, wherein the first and second size is greater than the second size, wherein N>M, and wherein K>M.
Abstract:
A method of securely implementing functions in a secure software application, including: determining, by a processor, two functions to be implemented by the secure software application; generating a first function lookup table; encrypting the first function lookup table; sorting the first function lookup table by encrypted operand; generating a second function lookup table; encrypting the second function lookup table; sorting the second function lookup table by encrypted operand; generating a flattened lookup table from a combination of the encrypted first and second function lookup tables; permutating the flattened table indices e.g. by use of public key cryptography encryption; and sorting the flattened table by the permutated flattened table indices.
Abstract:
A method for obfuscating functionality of computer software is disclosed. In an embodiment, the method involves determining a first set of instructions needed to perform a target operation and a second set of instructions for at least one or more additional operations. The second set of instructions is tuned to contain instructions such that, by executing the second set of instructions, the function of the first set of instructions can be performed. Once the first and second sets of instruction are determined and tuned, a code library is created and code fragments in the library correspond to code needed to perform the function of the first set of instructions when executed. Instructions are then added to the second set of instructions such that, when executed, will cause the functionality of the first set of instructions to be achieved.