SECURING ACCESSIBLE SYSTEMS USING CROSS-LINKING
Systems and techniques for securing accessible computer-executable program code and systems are provided. One or more base functions may be generated and blended with existing program code, such that it may be difficult or impossible for a potential attacker to distinguish the base functions from the existing code. The systems and code also may be protected using a variety of other blending and protection techniques, such as fractures, variable dependent coding, dynamic data mangling, and cross-linking, which may be used individually or in combination, and/or may be blended with the base functions.
1 . A method, implemented by one or more processors, comprising:
duplicating a first operation of a plurality of operations to be executed by a computer system during execution of a program to create a first operation copy, the plurality of operations comprising a prior operation to be executed before the first operation and a subsequent operation to be executed after the first operation; and
modifying the program to execute the first operation copy subsequent to the prior operation and prior to the subsequent operation, instead of the first operation;
wherein a result of executing the first operation copy is equivalent to a result of executing the first operation.
2 . The method of claim 1 , further comprising:
duplicating each of a plurality of operations to be executed by the computer system during execution of the program to create a corresponding operation copy; and
for operation of the plurality of operations, randomly selecting between leaving the program unmodified to execute the operation, and modifying the program to execute the operation copy instead of the operation.
3 . The method of claim 2 , further comprising:
encoding each of an operation and the corresponding operation copy using a different encoding.
4 . The method claim 1 , further comprising:
randomly selecting one or more pairs, each pair comprising of an operation and a corresponding operation copy; and
modifying the program to add the difference between a result of the operation and a result of the operation copy to the result obtained when the operation or the operation copy is executed.
5 . The method of claim 1 , further comprising:
multiplying the result of the operation by the inverse of the result of the operation copy to obtain a check value; and
multiplying the result of execution of either the first copy or the second copy by the check value.
6 . The method of claim 1 , wherein each of the plurality of operations is located in a code segment selected from the group consisting of: a base function;
and an operation in an existing computer-executable program.
7 . The method of claim 1 , further comprising:
modifying the program to apply multiple encodings to a value associated with the first operation to create a fracture.
8 . A method, implemented by one or more processors, comprising:
during execution of a program by the one or more a processors, the program comprising a plurality operations performed during execution of the program, each operation having a first copy and a second copy, upon reaching an execution point at which an operation of the plurality of operations should be performed, randomly executing either the first copy or the second copy of the operation;
wherein the result of executing the plurality of randomly selected operations is equivalent to a result of executing only the first copies of the plurality of operations.
9 . The method of claim 8 , wherein each first copy of each operation is encoded using a different encoding than the corresponding second copy of the operation.
10 . The method of claim 8 , further comprising:
adding the difference between a result of the first copy of a first operation of the plurality of operations and a result of the second copy of the first operation to the result obtained when either the first copy or the second copy is executed.
11 . The method of claim 8 , further comprising:
multiplying the result of execution of the first copy by the inverse of the result of the second copy to obtain a check value; and
multiplying the result of execution of either the first copy or the second copy by the check value.
12 . The method of claim 8 , further comprising applying multiple encodings to a value associated with the first operation to create a fracture.
13 . A system comprising:
one or more processors; and
a computer-readable storage medium storing instructions which cause the one or more processors to:
duplicate a first operation of a plurality of operations to be executed by a computer system during execution of a program to create a first operation copy, the plurality of operations comprising a prior operation to be executed before the first operation and a subsequent operation to be executed after the first operation; and
modify the program to execute the first operation copy subsequent to the prior operation and prior to the subsequent operation, instead of the first operation;
wherein a result of executing the first operation copy is equivalent to a result of executing the first operation.
14 . A system comprising:
one or more processors; and
a computer-readable storage medium storing a program comprising a plurality operations for performance by the one or more processors during execution of the program, each operation having a first copy and a second copy, the system being arranged so that, during execution of the program by the one or more processor, upon reaching an execution point at which an operation of the plurality of operations should be performed, the one or more processors randomly execute either the first copy or the second copy of the operation;
wherein the result of executing the plurality of randomly selected operations is equivalent to a result of executing only the first copies of the plurality of operations.