Patent US6009543A successfully refreshed from Google Patents.
← Back to Patent Explorer
US6009543A Expired / Lapsed US ⏱️ 0.0 years remaining

Secure software system and related techniques

Assignee: VENICE TECHNOLOGIES Inc
•
Filing: 1997-02-20
•
Granted: 1999-12-28
•
Expires: 2017-02-20
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A secure software system includes a transformation processor for transforming an original program capable of being executed on a lessee site into a vendor server program, a first program intended to be executed at the lessee site which lacks some of the functionality of the original program and a second program. The first program provides some of the computation of the original program but is unable to provide all of the functionality of the Original Program and requires cooperation with the second program which corresponds to an excised portion of the original program to provide the functionality of original program. The excised program is executed or otherwise utilized by a vendor server program which, in one embodiment, is generated by the transformation processor. With this arrangement, the lessee obtains the total functionality of the original program without having access to the original program code and the excised program is selected such that it would be relatively difficult to recreate the total functionality of the original program.

Inventors

  • 👤 Nir N. Shavit

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-07 13:04
CPC Classifications
G; G06; G06F; G06F21/00; G06F21/10; G06F21/12; G06F21/121; G06F21/125; G06F8/00; G06F8/30; G06F8/60; G06F9/00; G06F9/06; G06F9/44; G06F9/448; G06F9/4488

Claims Analysis

Total Claims: 20
Claim 1
Independent Claim 268 words
A processing system for executing a computer program with a first portion of the computer program executing in a first processor located at a first processing site and a second portion of the computer program executing in a second different processor located at a second different processing site wherein the first and second processing sites are physically separate and adapted to communicate over a network, the second processor at the second processing site comprising: (a) a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program wherein said code extraction processor further comprises: (1) means for selecting a subset of inputs to the original program wherein said means for selecting a subset of inputs further comprises: means for identifying a plurality of execution paths in the original software program; means for identifying at least one input in each of the execution paths; and means for selecting predetermined ones of said at least one identified input in accordance with a predetermined criteria; and (2) means for identifying ones of a plurality of statements in the original software program influenced by the subset of inputs selected by said means for selecting; (b) a first storage device having the first program stored therein; (c) a second storage device having stored therein a server program which utilizes the second program; (d) an execution processor, coupled to said first and second storage devices, to execute the server program and the second program at the second processing site; and (e) means for transmitting the first program over a network.
Claim 2
Dependent Claim 268 words
A processing system for executing a computer program with a first portion of the computer program executing in a first processor located at a first processing site and a second portion of the computer program executing in a second different processor located at a second different processing site wherein the first and second processing sites are physically separate and adapted to communicate over a network, the second processor at the second processing site comprising: (a) a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program wherein said code extraction processor further comprises: (1) means for selecting a subset of inputs to the original program wherein said means for selecting a subset of inputs further comprises: means for identifying a plurality of execution paths in the original software program; means for identifying at least one input in each of the execution paths; and means for selecting predetermined ones of said at least one identified input in accordance with a predetermined criteria; and (2) means for identifying ones of a plurality of statements in the original software program influenced by the subset of inputs selected by said means for selecting; (b) a first storage device having the first program stored therein; (c) a second storage device having stored therein a server program which utilizes the second program; (d) an execution processor, coupled to said first and second storage devices, to execute the server program and the second program at the second processing site; and (e) means for transmitting the first program over a network.
Claim 3
Dependent Claim 251 words
A processing system for executing a computer program with a first portion of the computer program executing in a first processor located at a first processing site and a second portion of the computer program executing in a second different processor located at a second different processing site wherein the first and second processing sites are physically separate and adapted to communicate over a network, the second processor at the second processing site comprising: (a) a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program, said code extraction processor comprising: (1) means for selecting a subset of inputs to the original program; and (2) means for identifying ones of a plurality of statements in the original software program influenced by the subset of inputs selected by said means for selecting; (b) a first storage device having the first program stored therein; (c) a second storage device having stored therein a server program which utilizes the second program; (d) an execution processor, coupled to said first and second storage devices, to execute the server program and the second program at the second processing site; and (e) a code modification processor coupled to an input of said code extraction processor for receiving the original program and for modifying program code of the original program and for providing the modified original program to said code extraction processor; and (f) means for transmitting the first program over a network.
Claim 4
Dependent Claim 251 words
A processing system for executing a computer program with a first portion of the computer program executing in a first processor located at a first processing site and a second portion of the computer program executing in a second different processor located at a second different processing site wherein the first and second processing sites are physically separate and adapted to communicate over a network, the second processor at the second processing site comprising: (a) a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program, said code extraction processor comprising: (1) means for selecting a subset of inputs to the original program; and (2) means for identifying ones of a plurality of statements in the original software program influenced by the subset of inputs selected by said means for selecting; (b) a first storage device having the first program stored therein; (c) a second storage device having stored therein a server program which utilizes the second program; (d) an execution processor, coupled to said first and second storage devices, to execute the server program and the second program at the second processing site; and (e) a code modification processor coupled to an input of said code extraction processor for receiving the original program and for modifying program code of the original program and for providing the modified original program to said code extraction processor; and (f) means for transmitting the first program over a network.
Claim 5
Dependent Claim 265 words
A secure software system comprising: (a) a first processing site including: a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program wherein said code extraction processor further comprises means for selecting a subset of inputs of the original software program; and means for identifying statements of the original software program which are influenced by the inputs selected by said means for selecting wherein said means for selecting a subset of inputs further comprises means for identifying a plurality of execution paths in the original software program; means for identifying at least one input in each of the execution paths of the original software program; and means for selecting predetermined ones of the inputs to the original software program in accordance with a predetermined criteria; a first storage device having the first program stored therein; a second storage device having stored therein a server program which utilizes the first program; an execution processor, coupled to said first and second storage devices, to execute the second program generated by the transformation processor and the server program; and means for transmitting and receiving information over a network; (b) a second processing site including: a first storage device having the first program stored therein; and a processor for executing the first program generated by said code extraction processor; means for transmitting and receiving information over a network; and (c) a network, coupled between said first site and said second site for providing a communication channel between the server program and the first program.
Claim 6
Dependent Claim 265 words
A secure software system comprising: (a) a first processing site including: a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program wherein said code extraction processor further comprises means for selecting a subset of inputs of the original software program; and means for identifying statements of the original software program which are influenced by the inputs selected by said means for selecting wherein said means for selecting a subset of inputs further comprises means for identifying a plurality of execution paths in the original software program; means for identifying at least one input in each of the execution paths of the original software program; and means for selecting predetermined ones of the inputs to the original software program in accordance with a predetermined criteria; a first storage device having the first program stored therein; a second storage device having stored therein a server program which utilizes the first program; an execution processor, coupled to said first and second storage devices, to execute the second program generated by the transformation processor and the server program; and means for transmitting and receiving information over a network; (b) a second processing site including: a first storage device having the first program stored therein; and a processor for executing the first program generated by said code extraction processor; means for transmitting and receiving information over a network; and (c) a network, coupled between said first site and said second site for providing a communication channel between the server program and the first program.
Claim 7
Dependent Claim 251 words
A secure software system comprising: (a) a first processing site including: a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program wherein said code extraction processor further comprises means for selecting a subset of inputs of the original software program; and means for identifying statements of the original software program which are influenced by the inputs selected by said means for selecting; a first storage device having the first program stored therein; a second storage device having stored therein a server program which utilizes the first program; an execution processor, coupled to said first and second storage devices, to execute the second program generated by the transformation processor and the server program; and means for transmitting and receiving information over a network; wherein said first site further comprises a code modification processor coupled to the input of said code extraction processor for receiving the original software program and for modifying program code of the original software program and for providing a modified original software program to said code extraction processor; (f) a second processing site including: a first storage device having the first program stored therein; and a processor for executing the first program generated by said code extraction processor; means for transmitting and receiving information over a network; and (c) a network, coupled between said first site and said second site for providing a communication channel between the server program and the first program.
Claim 8
Dependent Claim 251 words
A secure software system comprising: (a) a first processing site including: a code extraction processor to receive an original software program and to parse the original software program to provide a first program and a second program wherein said code extraction processor further comprises means for selecting a subset of inputs of the original software program; and means for identifying statements of the original software program which are influenced by the inputs selected by said means for selecting; a first storage device having the first program stored therein; a second storage device having stored therein a server program which utilizes the first program; an execution processor, coupled to said first and second storage devices, to execute the second program generated by the transformation processor and the server program; and means for transmitting and receiving information over a network; wherein said first site further comprises a code modification processor coupled to the input of said code extraction processor for receiving the original software program and for modifying program code of the original software program and for providing a modified original software program to said code extraction processor; (f) a second processing site including: a first storage device having the first program stored therein; and a processor for executing the first program generated by said code extraction processor; means for transmitting and receiving information over a network; and (c) a network, coupled between said first site and said second site for providing a communication channel between the server program and the first program.
Claim 9
Independent Claim 167 words
A method for securing an original software program comprising a plurality of statements and being responsive to at least one input, said method comprising the steps of: (a) selecting a subset of said at least one input; (b) identifying ones of said plurality of statements which are influenced by said selected subset of said at least one input; (c) defining an abstract object class; (d) including at least one of the identified statements in the abstract object class; (e) generating a vendor server program which utilizes the abstract object class and which is adapted for execution in a first processor at a vendor site; (f) removing the identified statements included in the abstract object class from the software program to provide a lessee software program adapted for execution in a second processor located at a lessee site; and (g) inserting, into the lessee software program, program code which allows the lessee software program to communicate with the vendor server program during execution of the lessee software program.
Claim 10
Independent Claim 167 words
A method for securing an original software program comprising a plurality of statements and being responsive to at least one input, said method comprising the steps of: (a) selecting a subset of said at least one input; (b) identifying ones of said plurality of statements which are influenced by said selected subset of said at least one input; (c) defining an abstract object class; (d) including at least one of the identified statements in the abstract object class; (e) generating a vendor server program which utilizes the abstract object class and which is adapted for execution in a first processor at a vendor site; (f) removing the identified statements included in the abstract object class from the software program to provide a lessee software program adapted for execution in a second processor located at a lessee site; and (g) inserting, into the lessee software program, program code which allows the lessee software program to communicate with the vendor server program during execution of the lessee software program.
Claim 11
Dependent Claim 31 words
The method of claim 5 further comprising the step of: transmitting the lessee program to a lessee site; and storing the lessee program in a storage device at the lessee site.
Claim 12
Dependent Claim 38 words
The method of claim 6 further comprising the step of: including the abstract object class in a program accessible by the vendor server program; and storing the vendor server program in a storage device at a vendor site.
Claim 13
Dependent Claim 23 words
The method of claim 7 further comprising the step of storing the abstract object class in a storage device at the vendor site.
Claim 14
Dependent Claim 27 words
The method of claim 8 further comprising the step of storing the program which includes the abstract object class in a storage device at the vendor site.
Claim 15
Dependent Claim 42 words
The method of claim 6 wherein the at least one input is a plurality of inputs and the step of selecting a subset of the at least one input includes the steps of randomly selecting first ones of the plurality of inputs.
Claim 16
Dependent Claim 62 words
The method of claim 6 wherein the step of selecting a subset of said at least one input comprise the steps of: identifying a plurality of execution paths in the original software program; identifying at least one input in each of the execution paths in the original software program; and selecting predetermined ones of said inputs in accordance with a predetermined criteria.
Claim 17
Independent Claim 125 words
A method for securing an original program that is not dependent on any input, the method comprising the steps of: adding an arbitrary input request to the original program; modifying the original program to operate on new values which are a function of existing program values and values input in response to the arbitrary input request; identifying one or more new values; and rewriting code of identified new values into abstract objects; removing the implementation code of some or all of the abstract objects; replacing the removed code by message calls to a vendor server program; inserting program code into the vendor server program such that the vendor server program utilizes the abstract object classes; and adding a communication interface to the vendor server program.
Claim 18
Independent Claim 125 words
A method for securing an original program that is not dependent on any input, the method comprising the steps of: adding an arbitrary input request to the original program; modifying the original program to operate on new values which are a function of existing program values and values input in response to the arbitrary input request; identifying one or more new values; and rewriting code of identified new values into abstract objects; removing the implementation code of some or all of the abstract objects; replacing the removed code by message calls to a vendor server program; inserting program code into the vendor server program such that the vendor server program utilizes the abstract object classes; and adding a communication interface to the vendor server program.
Claim 19
Dependent Claim 32 words
The system of claim 2 wherein said means for selecting a subset of inputs further comprises means for randomly selecting first ones of a plurality of inputs to the original software program.
Claim 20
Dependent Claim 32 words
The system of claim 4 wherein said means for selecting a subset of inputs further comprises means for randomly selecting first ones of a plurality of inputs to the original software program.

References Cited (Backward Citations)

US5109413A Cited
US5023907A Cited
US5222134A Cited
US5327563A Cited
US5495411A Cited
US5548645A Cited
US5530752A Cited
US5689560A Cited
US5557346A Cited
US5675645A Cited
US5754646A Cited
US5708709A Cited

USPTO Annuity & Maintenance Windows

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

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag