Enabling a software application to be executed on a hardware device
AssigneeIrdeto B.V.
InventorJeroen Mathias Doumen
Life of this patent
Estimating the term…
Abstract
The invention provides a method, a hardware circuit and a hardware device for enabling a software application to be executed on a hardware device in dependence of the hardware circuit, while preventing the execution of a binary copy of the application in another hardware device. Challenge data originating from the software application is input to a hardware circuit of the hardware device, wherein the hardware circuit is configured to perform a deterministic function. Response data is generated by the hardware device, which is used to manipulate at least a part of the software application to thereby enable the software application to be executed.
Claims20
A computer-implemented method for enabling a software application to be executed on a hardware device in dependence of a hardware circuit in the hardware device, the method comprising:
- inputting challenge data originating from the software application to the hardware circuit of the hardware device, wherein the hardware circuit is configured to perform a deterministic function;
- generating response data using the function with the challenge data as input to the function;
- and
- using the response data to manipulate at least a part of the software application to thereby enable the software application to be executed.
A computer-implemented method for adding a random data block to an encrypted software application, the method comprising:
- dividing a software image of the encrypted software application into equal length blocks;
- determining a replacement block being one of the blocks to be replaced by the random data block;
- applying a block cipher-based message authentication code (CMAC) function to the blocks until the replacement block;
- applying a reversed block cipher-based message authentication code (CMAC) function to the blocks starting from the last block until the block after the replacement block, wherein tag T equals the encryption key used to encrypt the encrypted software, wherein the tag T is decrypted using CMAC key K, wherein the decrypted tag T is added to CMAC key dependent value VI and the last block to obtain an intermediate result, wherein the intermediate result is decrypted using the CMAC key K, wherein the decrypted intermediate result is added to the preceding block to obtain a further intermediate result and repeating the decrypting and adding of further intermediate results until the replacement block;
- adding the last result from the block cipher-based message authentication code (CMAC) function to the last result of the reverse block cipher-based message authentication code (CMAC) function to obtain the random data block;
- and
- replacing the replacement block with the random data block, wherein the CMAC key K corresponds to a further CMAC key K in a hardware circuit of an hardware device.
A hardware circuit for enabling a software application to be executed on a hardware device comprising the hardware circuit and in dependence of the hardware circuit, wherein the hardware circuit is configured to perform a deterministic function that uses challenge data originating from the software application as input to the function to generate response data for manipulating at least a part of the software application to thereby enable the software application to be executed.
A nontransitory computer readable medium having instructions encoded thereon which, when being executed by a processor, is adapted to manipulate at least a part of the software application to thereby enable the software application to be executed on a hardware device in dependence of a hardware circuit in the hardware device, by using response data that is generated using a deterministic function in the hardware circuit that uses challenge data as input to the function, wherein the challenge data originates from the software application.
Dependencies are inferred from the claim text.