Towards Efficient Software Protection Obeying Kerckhoffs's Principle using Tamper-proof Hardware

We propose the first software protection scheme obeying Kerckhoffs’s principle that is suited for practical implementation. Previous schemes have either been closed source or too inefficient to be considered practically viable. A key technique of our scheme is to partition the software in such a way that a hacker who knows a set of parts cannot learn additional ones. To achieve a partition with this property, our scheme exploits the domain knowledge that is necessary to create the software as well as the inherent complexity of the software’s code. If a software is sufficiently complex to admit such a partition then we can prove that there are no successful attack strategies on our scheme other than storing every line of code that has been executed.