← Back to Patent Explorer
US5987252A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for statically analyzing a computer program for data dependencies

Assignee: Hewlett Packard Enterprise Development LP
•
Filing: 1997-09-19
•
Granted: 1999-11-16
•
Expires: 2017-09-19
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and an apparatus analyze a computer program for dependencies of the program output on the program input. To analyze the program, the program is transformed by a function into a Boolean expression called a verification condition. An example of this function is the weakest liberal precondition. The verification condition characterizes a condition between the input and the output of the program that must be satisfied for the output to be independent of the input. A theorem prover evaluates the verification condition to determine whether the output would depend on the input if the program was executed. If the verification condition evaluates to true, then the output is independent of the input; false, then the output depends on the input.

Inventors

  • 👤 K. Rustan M. Leino
  • 👤 Mark David Lillibridge
  • 👤 Raymond Paul Stata

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-10-28 14:23
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/43; G06F8/433; G06F8/49; G06N; G06N5/00; G06N5/01; G06N5/013

Claims Analysis

Total Claims: 25
Claim 1
Independent Claim 105 words
A computerized method for providing secure information flow in a computer system by analyzing a computer program for data dependencies, comprising the steps of: generating a representation of the computer program by applying a function for transforming the computer program, the representation including a verification condition indicating a relationship between input data including private data to the computer program and an output of the computer program; and evaluating the verification condition using a theorem prover to determine whether the output would depend on the private data if the program were executed; and preventing execution of the program when the evaluation produces a predefined failure result.
Claim 2
Dependent Claim 105 words
A computerized method for providing secure information flow in a computer system by analyzing a computer program for data dependencies, comprising the steps of: generating a representation of the computer program by applying a function for transforming the computer program, the representation including a verification condition indicating a relationship between input data including private data to the computer program and an output of the computer program; and evaluating the verification condition using a theorem prover to determine whether the output would depend on the private data if the program were executed; and preventing execution of the program when the evaluation produces a predefined failure result.
Claim 3
Dependent Claim 12 words
The method of claim 1 wherein the representation is a Boolean expression.
Claim 4
Dependent Claim 23 words
The method of claim 1 wherein said steps of generating the representation and evaluating are statically performed before the computer program is executed.
Claim 5
Dependent Claim 27 words
The method of claim 1 wherein the output is independent of the private data when the step of evaluating proves that the verification condition to be true.
Claim 6
Dependent Claim 25 words
The method of claim 1 wherein the output depends on the private data when the step of evaluating proves that the verification condition is false.
Claim 7
Dependent Claim 64 words
The method of claim 1 wherein the verification condition is wlp.S.R.≡<∀h::wlp.S.R> where S represents the program, wlp represents a predefined weakest liberal precondition function, h represents the private data, R represents a set of post-states of the program S, and wlp.S.R represents a predicate that is independent of h when the theorem prover proves that the verification condition evaluates to a logical True value.
Claim 8
Dependent Claim 150 words
The method of claim 6 wherein the verification condition is a first verification condition, the method includes: determining whether the program is non-deterministic, and when the program is non-deterministic applying a second, weakest conservative precondition function to the program to generate a second verification condition: wp.S.true≡<∀h::wp.S.true>, where wp is the weakest conservative precondition function and wp.S.true represents pre-states of the program from which the program terminates; applying a third function to the program to generate a third verification condition: wlp.S.(v≠K)≡<∀h::wlp.S.(v≠K)>, where v is a variable represent the output of the program and K is a value not modified by execution of the program; evaluating the second and third verification conditions with the theorem prover, and logically combining the evaluation of the second and third verification conditions to determine whether the computer program may reveal information about the private data via selective termination of the program based on the private data.
Claim 9
Dependent Claim 80 words
The method of claim 6, wherein the verification condition is a first verification condition, the method includes determining whether the program is non-deterministic, and when the program is non-deterministic applying a second, weakest conservative precondition to the program to generate a second verification condition, evaluating the second verification condition with the theorem prover, and logically combining the evaluation of the first and second verification conditions to determine whether the output of the computer program may depend on the private data.
Claim 10
Dependent Claim 149 words
The method of claim 6, wherein the verification condition is a first verification condition; and representing the computer program as S, representing the output as a variable v, representing the input as a variable h, representing a variable that would be unchanged by an execution of the program as a variable K, and using a formula] the method includes: applying a second function to the program to generate a second verification condition: wlp.S.(v≠K)≡<∀h::wlp.S.(v≠K)>, where v is a variable represent the output of the program and K is a value not modified by execution of the program; evaluating the second verification condition with the theorem prover to determine whether the computer program may reveal information about the private data via selective termination of the program based on the private data; and combining the evaluations of the first and second verification conditions to determine whether to prevent execution of the program.
Claim 11
Dependent Claim 30 words
The method of claim 1 further including the step of: executing the computer program if said step of evaluating indicates that the output does not depend on the private data.
Claim 12
Dependent Claim 14 words
The method of claim 1 wherein the applied function is a weakest liberal precondition.
Claim 13
Dependent Claim 80 words
The method of claim 1 wherein the verification condition is a first verification condition, the method includes determining whether the program is non-deterministic, and when the program is non-deterministic applying a second, weakest conservative precondition to the program to generate a second verification condition, evaluating the second verification condition with the theorem prover, and logically combining the evaluation of the first and second verification conditions to determine whether the output of the computer program may depend on the private data.
Claim 14
Dependent Claim 12 words
The method of claim 1 wherein the applied function uses Hoare logic.
Claim 15
Dependent Claim 13 words
The method of claim 1 wherein the applied function is a strongest post-condition.
Claim 16
Dependent Claim 12 words
The method of claim 1 wherein the applied function uses dynamic logic.
Claim 17
Dependent Claim 71 words
The computerized method of claim 1, wherein the private data is on a local computer, and said steps of generating the representation and evaluating the verification condition are performed on the local computer; and further comprising the steps of: receiving the computer program from a remote computer; and executing the computer program when the evaluating step determines that the output of the computer program does not depend on the private data.
Claim 18
Independent Claim 101 words
An apparatus for analyzing a computer program for data dependencies to preserve secure information flow, comprising: means for generating a representation of the computer program by applying a function for transforming the computer program, the representation including a verification condition indicating a relationship between input data including private data to the computer program and an output of the computer program; means for evaluating the verification condition using a theorem prover to determine whether the output would depend on the private data if the program were executed; means for preventing execution of the program when the evaluation means produces a failure result.
Claim 19
Independent Claim 101 words
An apparatus for analyzing a computer program for data dependencies to preserve secure information flow, comprising: means for generating a representation of the computer program by applying a function for transforming the computer program, the representation including a verification condition indicating a relationship between input data including private data to the computer program and an output of the computer program; means for evaluating the verification condition using a theorem prover to determine whether the output would depend on the private data if the program were executed; means for preventing execution of the program when the evaluation means produces a failure result.
Claim 20
Dependent Claim 147 words
A computer program product for analyzing a computer program for data dependencies to preserve secure information flow, the computer program product for use in conjunction with a computer system, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising: a verification condition generator that generates a representation of the computer program by applying a function for transforming the computer program, the representation including a verification condition indicating a relationship between input data including private data to the computer program and an output of the computer program; a theorem prover receiving the verification condition from the verification condition generator and evaluating the verification condition to determine whether the output would depend on the private data if the program were executed; and instructions for preventing evaluation of the program when the theorem prover produces a failure result.
Claim 21
Dependent Claim 147 words
A computer program product for analyzing a computer program for data dependencies to preserve secure information flow, the computer program product for use in conjunction with a computer system, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising: a verification condition generator that generates a representation of the computer program by applying a function for transforming the computer program, the representation including a verification condition indicating a relationship between input data including private data to the computer program and an output of the computer program; a theorem prover receiving the verification condition from the verification condition generator and evaluating the verification condition to determine whether the output would depend on the private data if the program were executed; and instructions for preventing evaluation of the program when the theorem prover produces a failure result.
Claim 22
Dependent Claim 96 words
The computer program product of claim 18 wherein the verification condition is a first verification condition; the verification condition generator includes instructions for determining whether the program is non-deterministic, and when the program is non-deterministic applying a second, weakest conservative precondition to the program to generate a second verification condition; the theorem prover includes instructions for evaluating the second verification condition; and the computer program product includes instructions for and logically combining the evaluation of the first and second verification conditions to determine whether the output of the computer program may depend on the private data.
Claim 23
Dependent Claim 66 words
The computer program product of claim 18 wherein the verification condition is wlp.S.R≡<∀h::wlp.S.R> where S represents the program, wlp represents a predefined weakest liberal precondition function, h represents the private data, R represents a set of post-states of the program S, and wlp.S.R represents a predicate that is independent of h when the theorem prover proves that the verification condition evaluates to a logical True value.
Claim 24
Dependent Claim 171 words
The computer program product of claim 20 wherein the verification condition is a first verification condition; the verification condition generator includes instructions for determining whether the program is non-deterministic, and when the program is non-deterministic applying a second, weakest conservative precondition function to the program to generate a second verification condition: wp.S.true≡<∀h::wp.S.true>, where wp is the weakest conservative precondition function and wp.S.true represents pre-states of the program from which the program terminates; and applying a third function to the program to generate a third verification condition: wlp.S.(v≠K)≡<∀h::wlp.S.(v≠K)>, where v is a variable represent the output of the program and K is a value not modified by execution of the program; and the theorem prover includes instructions for evaluating the second and third verification conditions with the theorem prover; and the computer program product includes instructions for logically combining the evaluation of the second and third verification conditions to determine whether the computer program may reveal information about the private data via selective termination of the program based on the private data.
Claim 25
Dependent Claim 122 words
The computer program product of claim 20 wherein the verification condition is a first verification condition; the verification condition generator includes instructions for applying a second function to the program to generate a second verification condition: wlp.S.(v≠K)≡<∀h::wlp.S.(v≠K)>, where v is a variable represent the output of the program and K is a value not modified by execution of the program; the theorem prover includes instructions for evaluating the second verification condition to determine whether the computer program may reveal information about the private data via selective termination of the program based on the private data; and the computer program product includes instructions for combining the evaluations of the first and second verification conditions to determine whether to prevent execution of the program.

References Cited (Backward Citations)

US4814978A Cited
US5329626A Cited
US5513350A Cited
US5680552A Cited
US5754861A Cited
US5787287A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-11-15 2003-05-17 2003-11-16 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-11-15 2007-05-17 2007-11-16 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-11-15 2011-05-17 2011-11-16 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag