Patent attributes
The techniques for authenticating executable code employs keys (609) to modify the code (611). In static watermarking, the code is watermarked by using the key to determine positions in the executable code that will specify digits of a watermark value (607). Instructions are inserted at those positions as required to express the value. The inserted instructions do not affect the outputs from the code when the code is executed. The watermarked code is authenticated by using the key (609) to read the value and determining whether it is the proper value for that code. In dynamic watermarking, the code is watermarked using the key (607) to modify the program to produce execution state for an execution of the code that has properties that are determined by the key. Authentication is done by executing the code and comparing (621) the execution state that would have been produced if the program had been watermarked with the key.