An USB-Key_based approach for software tamper resistance

A lot of approaches for software tamper resistance have been proposed to insure that the program will execute as expected. One important technique is integrity-checking which use self-hashing to check the integrity of the software, but the adversary can easily bypass the verification by locating the hash value comparison instruction. Another one is software encryption. But most of them don't protect the keys and decryption routines well. In this paper we propose an approach for software tamper resistance based on USB-Key. We divide the software into individual blocks and use different keys to encrypt them, a number of small code segments called security guides which are used to control the program flow and check the security of software are inserted into the blocks. And the USB-Key is used to protect the keys and security self-checking.