System and method of interlocking to protect software-mediated program and device behaviours
AssigneeIrdeto Canada Corporation
InventorsHarold Joseph Johnson, Yuan Xiang Gu, Yongxin Zhou
Life of this patent
Estimating the term…
Abstract
Methods and devices for thwarting code and control flow based attacks on software. The source code of a subject piece of software is automatically divided into basic blocks of logic. Selected basic blocks are amended so that their outputs are extended. Similarly, other basic blocks are amended such that their inputs are correspondingly extended. The amendments increase or create dependencies between basic blocks such that tampering with one basic block's code causes other basic blocks to malfunction when executed.
Claims36
A method executed by one or more computing devices, the method comprising:
- determining, by at least one of the one or more computing devices, a first linear function configured to map u bits of bit-strings in p first vectors to u bits of bit strings in q second vectors, wherein u comprises an integer >0, wherein p comprises an integer ≧3, and wherein q comprises an integer ≧2;
- determining, by at least one of the one or more computing devices, k second linear functions configured to map v remaining bits of the bit-strings in the p first vectors to v remaining bits of the bit-strings in the q second vectors, wherein v>0, wherein the length of each bit-string=u+v, and wherein k≧2;
- determining, by at least one of the one or more computing devices, a function s configured to map the u bits of the bit-strings of each vector of the p first vectors to a number in a set of numbers ranging from 0 to k−1, wherein the function s comprises a surjective function;
- and
- generating, by at least one of the one or more computing devices, a transformation function based at least in part on the first linear function, at least one of the k second linear functions, and the function s.
A system comprising:
- one or more processors;
- and
- one or more memories operatively coupled to at least one of the one or more processors and having instructions stored thereon that, when executed by at least one of the one or more processors, cause at least one of the one or more processors to:
- determine a first linear function configured to map u bits of bit-strings in p first vectors to u bits of bit strings in q second vectors, wherein u comprises an integer >0, wherein p comprises an integer ≧3, and wherein q comprises an integer ≧2;
- determine k second linear functions configured to map v remaining bits of the bit-strings in the p first vectors to v remaining bits of the bit-strings in the q second vectors, wherein v>0, wherein the length of each bit-string=u+v, and wherein k≧2;
- determine a function s configured to map the u bits of the bit-strings of each vector of the p first vectors to a number in a set of numbers ranging from 0 to k−1, wherein the function s comprises a surjective function;
- and
- generate the transformation function based at least in part on the first linear function, at least one of the k second linear functions, and the function s.
At least one non-transitory computer-readable medium storing computer-readable instructions that, when executed by one or more computing devices, cause at least one of the one or more computing devices to:
- determine a first linear function configured to map u bits of bit-strings in p first vectors to u bits of bit strings in q second vectors, wherein u comprises an integer >0, wherein p comprises an integer ≧3, and wherein q comprises an integer ≧2;
- determine k second linear functions configured to map v remaining bits of the bit-strings in the p first vectors to v remaining bits of the bit-strings in the q second vectors, wherein v>0, wherein the length of each bit-string=u+v, and wherein k≧2;
- determine a function s configured to map the u bits of the bit-strings of each vector of the p first vectors to a number in a set of numbers ranging from 0 to k−1, wherein the function s comprises a surjective function;
- and
- generate a transformation function based at least in part on the first linear function, at least one of the k second linear functions, and the function s.
Dependencies are inferred from the claim text.