×

System and method for validating program execution at run-time using control flow signatures

  • US 9,762,399 B2
  • Filed: 12/30/2015
  • Issued: 09/12/2017
  • Est. Priority Date: 07/15/2010
  • Status: Active Grant
First Claim
Patent Images

1. A secure computing method, comprising:

  • storing a set of precomputed, encrypted reference signatures for a plurality of basic blocks of an executable program terminating in a control flow instruction in a first memory;

    during execution of the executable program, retrieving a respective basic block of the executable program from a second memory;

    partially processing instructions of the respective basic block of the executable program in a multistage instruction processing pipeline, and concurrently computing a signature of the instructions of the respective basic block with a signature generator, to generate a signature for the respective basic block along an execution path of the instructions to the terminating control flow instruction;

    predictively fetching, based on a previously determined pattern of instruction fetching, at least one encrypted reference signature from the first memory;

    securely decrypting the at least one encrypted reference signature from the first memory;

    storing the securely decrypted at least one encrypted reference signature in a signature cache;

    if;

    (a) the control flow instruction terminating an execution path of the instructions of the respective basic block of the executable program is pending completion, and(b) the decrypted reference signature of the respective basic block is available in the signature cache,then;

    verifying the signature for the respective basic block against the decrypted reference signature;

    else;

    stalling commitment of the control flow instruction terminating the execution path of the instructions of the respective basic block of the executable program, the multistage instruction processing pipeline comprising at least one stage provided as a buffer for a delay incurred by said stalling, until the decrypted reference signature of the respective basic block is available in the signature cache; and

    verifying the signature for the respective basic block against the decrypted reference signature; and

    if the signature for the respective basic block matches the decrypted reference signature, committing execution of the control flow instruction terminating the execution path of the instructions of the respective basic block of the executable program, else preventing commitment of the control flow instruction terminating the execution path of the instructions of the respective basic block of the executable program and flushing uncommitted instructions from the multistage instruction processing pipeline.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×