Source: http://www.google.com/patents/US7174466?dq=6101531
Timestamp: 2014-04-18 20:31:14
Document Index: 760444210

Matched Legal Cases: ['art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2', 'art 2']

Patent US7174466 - Method to protect software against unwanted use with a �detection and ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsThe invention concerns a process to protect a vulnerable software working on a data processing system against its unauthorized usage using a processing and memorizing unit. The process comprises defining: 1) at least one software execution characteristic, liable to be monitored at least in part in a...http://www.google.com/patents/US7174466?utm_source=gb-gplus-sharePatent US7174466 - Method to protect software against unwanted use with a �detection and coercion� principleAdvanced Patent SearchPublication numberUS7174466 B2Publication typeGrantApplication numberUS 10/178,918Publication dateFeb 6, 2007Filing dateJun 25, 2002Priority dateAug 1, 2001Fee statusPaidAlso published asUS20030037249, US20070136816Publication number10178918, 178918, US 7174466 B2, US 7174466B2, US-B2-7174466, US7174466 B2, US7174466B2InventorsJean-Christophe Cuenod, Gilles SgroOriginal AssigneeSas ValidyExport CitationBiBTeX, EndNote, RefManPatent Citations (9), Referenced by (2), Classifications (8), Legal Events (4) External Links: USPTO, USPTO Assignment, EspacenetMethod to protect software against unwanted use with a �detection and coercion� principleUS 7174466 B2Abstract The invention concerns a process to protect a vulnerable software working on a data processing system against its unauthorized usage using a processing and memorizing unit. The process comprises defining: 1) at least one software execution characteristic, liable to be monitored at least in part in a processing and memorizing unit 2) at least one criterion to abide by for at least one software execution characteristic 3) detection means to implement in a processing and memorizing unit and enabling to detect that at least one software execution characteristic does not abide by at least one associated criterion 4) coercion means to implement in a processing and memorizing unit and enabling to inform the data processing system and/or modify the execution of a software when at least one criterion is not abided by.
BACKGROUND OF THE INVENTION This invention concerns the technical domain of data processing systems in the general sense, and is more precisely aimed at the means of protecting software running on said data processing systems against unauthorized usage.
Thus, a protection solution is known, which makes use of a hardware protection system, such as a physical component named protection key or �dongle�. Such a protection key should guarantee that the software executes only in presence of the key. Yet, it must be acknowledged that this solution is ineffective because it presents the inconvenience of being easy to bypass. An ill-intentioned person or a hacker can, with the aid of specialized tools such as disassemblers, delete the control instructions of the protection key. It becomes then possible to make illicit copies corresponding to modified versions of the software able to run without the protection. Moreover, this solution cannot be generalized to all software, inasmuch as it is difficult to connect more than two protection keys to the same system.
BRIEF SUMMARY OF THE INVENTION The subject of the invention aims precisely at finding a solution to the aforementioned problems by proposing a process to protect a software against unauthorized usage, using an ad hoc processing and memorizing unit, inasmuch as the presence of such a unit is necessary for the software to be completely functional.
at least one software execution characteristic, liable to be monitored at least in part in a unit, at least one criterion to abide by for at least one software execution characteristic, detection means to implement in a unit and enabling to detect that at least one software execution characteristic does not abide by at least one associated criterion, and coercion means to implement in a unit and enabling to inform the data processing system and/or modify the execution of a software when at least one criterion is not abided by, constructing exploitation means enabling to transform the blank unit into a unit able to implement the detection means and the coercion means, creating a protected software:
by choosing at least one software execution characteristic to monitor, among the software execution characteristics liable to be monitored, by choosing at least one criterion to abide by for at least one chosen software execution characteristic, by choosing, at least one algorithmic processing which, during the execution of the vulnerable software, uses at least one operand and enables to obtain at least one result, and for which at least one chosen software execution characteristic, is to be monitored, by choosing at least one portion of the source of the vulnerable software containing, at least one chosen algorithmic processing, by producing the source of the protected software from the source of the vulnerable software, by modifying at least one chosen portion of the source of the vulnerable software to obtain at least one modified portion of the source of the protected software, this modification being such that:
during the execution of the protected software a first execution part is executed in the data processing system and a second execution part is executed in a unit, obtained from the blank unit after upload of information, the second execution part executes at least the functionality of at least one chosen algorithmic processing, and during the execution of the protected software, at least one chosen execution characteristic is monitored by means of the second execution part and the fact that a criterion is not abided by leads to a modification of the execution of the protected software, and by producing:
a first object part of the protected software, from the source of the protected software, said first object part being such that during the execution of the protected software, appears a first execution part which is executed in the data processing system and whose at least a portion takes into account that at least one chosen software execution characteristic is monitored, and a second object part of the protected software, containing the exploitation means implementing the detection means and the coercion means, said second object part being such that, after upload to the blank unit and during the execution of the protected software, appears the second execution part by means of which at least one chosen software execution characteristic is monitored and by means of which the fact that a criterion is not abided by leads to a modification of the execution of the protected software, and uploading the second object part to the blank unit, with the intention of obtaining the unit, and during a usage phase during which the protected software is executed:
and as long as all the criteria corresponding to all the monitored execution characteristics of all the modified portions of the protected software are abided by, enabling said portions of the protected software to work nominally and consequently enabling the protected software to work nominally, and if at least one of the criteria corresponding to a monitored execution characteristic of a portion of the protected software is not abided by, informing the data processing system of it and/or modifying the functioning of the portion of the protected software, so that the functioning of the protected software is modified, and in the absence of the unit, in spite of the request by a portion of the first execution part to trigger the execution in the unit, of the functionality of a chosen algorithmic processing, in not being able to fulfill said request correctly, so that at least said portion is not executed correctly and that, consequently, the protected software is not completely functional. According to a variant embodiment, the process according to the invention comprises:
at least one chosen algorithmic processing is split so that during the execution of the protected software, said algorithmic processing is executed by means of the second execution part, using instructions, for at least one chosen algorithmic processing, instructions commands are integrated to the source of the protected software, so that during the execution of the protected software, each instruction command is executed by the first execution part and triggers in the unit, the execution by means of the second execution part, of an instruction, a sequence of the instructions commands is chosen among the set of sequences allowing the execution of the protected software, and the chaining by which must abide at least some of the instructions during their execution in the unit is specified, and during the usage phase, in the presence of the unit, in the case where it is detected that the chaining of the instructions executed in the unit does not correspond to the expected one, informing the data processing system of it and/or modifying the functioning of the portion of the protected software, so that the functioning of the protected software is modified. According to a variant embodiment, the process according to the invention comprises:
a part defining the functionality of the instruction, and a part defining the expected chaining for the execution of the instructions and including bits fields corresponding to: an identification field of the instruction, and for each operand of the instruction: a flag field, and an expected identification field of the operand, for each register belonging to the exploitation means and used by the instructions set, a generated identification field in which is automatically memorized the identification of the last instruction which has returned its result in said register, as detection means, means enabling, during the execution of an instruction, for each operand, when the flag field imposes it, to check the equality of the generated identification field corresponding to the register used by said operand, and the expected identification field of the origin of said operand, and as coercion means, means enabling to modify the result of the instructions, if at least one of the checked equalities is false. According to a preferred embodiment, the process according to the invention comprises:
as a triggering command, an instruction command, as a dependent function, an instruction, as an order, at least one argument for a triggering command, corresponding at least in part to the information transmitted by the data processing system to the unit, so as to trigger the execution of the corresponding dependent function, a method of renaming of the orders enabling to rename the orders so as to obtain triggering commands with renamed orders, and restoring means designed to be used in the unit during the usage phase, and enabling to restore the dependent function to execute, from the renamed order, constructing exploitation means enabling the unit to also implement the restoring means, and modifying the protected software:
BRIEF DESCRIPTION OF THE DRAWINGS Various other characteristics emerge from the description made below in reference to the appended diagrams which show, as non-limiting examples, embodiments and implementations of the subject of the invention.
DETAILED DESCRIPTION OF THE INVENTION In the rest of the description, the following definitions will be used:
to accept data provided by a data processing system 3, to return data to the data processing system 3, to store data at least partly in secret and to retain at least a part of said data even if the unit is switched off, and to carry out algorithmic processing on said data, part or all of the result being secret. A unit 6 is a processing and memorizing unit implementing the process according to the invention. A blank unit 60 is a unit which does not implement the process according to the invention, but which can receive data transforming it into a unit 6. A pre-customized unit 66 is a blank unit 60 which has received part of data enabling it, after reception of supplementary data, to be transformed into a unit 6. The upload of information to a blank unit 60 or a pre-customized unit 66 corresponds to a transfer of information to the blank unit 60 or the pre-customized unit 66, and to a storage of said transferred information. The transfer can possibly include a change of the information format. A variable, a function or data contained in the data processing system 3 will be indicated by an uppercase letter, while a variable, a function or data contained in the unit 6 will be indicated by a lowercase letter. A �protected software�, is a software which has been protected by at least one of the principles of protection implemented by the process in accordance with the invention. A �vulnerable software�, is a software which has not been protected by any principle of protection implemented by the process in accordance with the invention. In the case where differentiation between a vulnerable software and a protected software is not important, the term �software� is used. A software has various representations depending on the instant considered in its life cycle:
a an instructions set, whose instructions are liable to be executed in the unit 6, a set of instructions commands for said instructions set, said instructions commands are liable to be executed in the data processing system 3. The execution of each of said instructions commands in the data processing system 3 triggers in the unit 6, the execution of the corresponding instruction, detection means 17 enabling to detect that the chaining of the instructions does not correspond to the expected one, and coercion means 18 enabling to inform the data processing system 3 and/or to modify the execution of a software when the chaining of the instructions does not correspond to the expected one. Are also constructed exploitation means enabling the unit 6 to also execute the instructions of the instructions set, the execution of said instructions being triggered by the execution in the data processing system 3 of the instructions commands.
The first improvement concerns the case where several algorithmic processings are remoted to the unit 6 and at least the result of one algorithmic processing is used by another algorithmic processing. In this case, some triggering commands with renamed orders used for the transfer, can possibly be removed. The second improvement aims at opting for a pertinent sequence of the triggering commands with renamed orders among the set of sequences allowing the execution of the protected software 2 p. In this respect, it is preferable to choose a sequence of the triggering commands with renamed orders which dissociate temporally the execution of the dependent functions, by intercalating, between them portions of code executed in the data processing system 3 and including or not triggering commands with renamed orders used of the determination of other data. FIGS. 83 and 84 illustrate the principle of such an embodiment. FIG. 83 shows an example of execution of a vulnerable software 2 v. In this example, appears, during the execution of the vulnerable software 2 v, in the data processing system 3, the execution of two algorithmic processings leading to the determination of Z and Z′, such as Z←F (X, Y) and Z′←F′ (X′, Y′).
at least one portion of the first execution part 2 pes, which is executed in the data processing system 3, takes into account that the functionality of at least one chosen conditional branch BC is executed in the unit 6, and the second execution part 2 peu, which is executed in the unit 6, executes at least the functionality of at least one chosen conditional branch BC and puts at the data processing system 3's disposal, a piece of information enabling the first execution part 2 pes, to carry on its execution at the chosen spot. The first execution part 2 pes of the protected software 2 p, executed in the data processing system 3, executes conditional branches commands, triggering in the unit 6, the execution by means of the second execution part 2 peu, of remoted conditional branches be whose functionality is equivalent to the functionality of the chosen conditional branches BC.
the notion of vulnerable software must be understood as software vulnerable towards the principle of protection being described. Thus, in the case where a principle of protection has already been applied to the vulnerable software, the expression �vulnerable software� must be interpreted by the reader as the expression �software protected by the principle(s) of protection already applied�; the notion of protected software must be understood as software protected towards the principle of protection being described. Thus, in the case where a principle of protection has already been applied, the expression �protected software� must be interpreted by the reader as the expression �new version of the protected software�; and the choice(s) made for the implementation of the principle of protection being described must take into account the choice(s) made for the implementation of the principle(s) of protection already applied. The rest of the description enables to have a better understanding of the implementation of the protection process in accordance with the invention. This protection process according to the invention is composed, as shown more precisely in FIG. 100:
The first stage of this prior protection sub-phase P1 is called �definitions stage S11�. During this definitions stage S11:
at least one software execution characteristic, liable to be monitored at least in part in a unit 6, at least one criterion to abide by for at least one software execution characteristic, detection means 17 to implement in a unit 6 and enabling to detect that at least one software execution characteristic does not abide by at least one associated criterion, and coercion means 18 to implement in a unit 6 and enabling to inform the data processing system 3 and/or modify the execution of a software when at least one criterion is not abided by, and in the case where the protection process according to the invention implements the principle of protection by detection and coercion using as characteristic a variable of measurement of the software execution, are also defined:
as a triggering command, an instruction command, as a dependent function, an instruction, as an order, at least one argument for a triggering command, corresponding at least in part to the information transmitted by the data processing system 3 to the unit 6, so as to trigger the execution of the corresponding dependent function, a method of renaming of the orders enabling to rename the orders so as to obtain triggering commands with renamed orders, and restoring means 20 designed to be used in the unit 6 during the usage phase U, and enabling to restore the dependent function to execute, from the renamed order, and in the case where the protection process according to the invention implements a variant of the principle of protection by renaming, is also defined for at least one dependent function, a family of dependent functions algorithmically equivalent, but triggered by triggering commands whose renamed orders are different, and in the case where the protection process according to the invention implements one of the preferred embodiments of the variant of the principle of protection by renaming, are also defined for at least one dependent function, a family of algorithmically equivalent dependent functions:
as method of renaming of the orders, a ciphering method to cipher the orders, and as restoring means 20, means implementing a deciphering method to decipher the renamed orders and thus restore the identity of the dependent functions to execute in the unit 6. During the prior protection sub-phase P1, the definitions stage S11 is followed by a stage called �construction stage S12�. During such a stage S12, are constructed the transfer means 12, 13 and the exploitation means corresponding to the definitions of the definitions stage S11.
the construction of the transfer means 12, 13 enabling, during the usage phase U, the transfer of data between the data processing system 3 and the unit 6, the construction:
During the prior protection sub-phase P1, the construction stage S12 can be followed by a stage called �pre-customization stage S13�. During this pre-customization stage S13, at least a part of the transfer means 13 and/or the exploitation means are uploaded to at least one blank unit 60, with the intention of obtaining at least one pre-customized unit 66. It should be observed that part of the exploitation means, once transferred to a pre-customized unit 66, is no longer directly accessible outside said pre-customized unit 66. The transfer of the exploitation means to a blank unit 60 can be carried out through an adapted pre-customization unit, which is described in the rest of the description in FIG. 120. In the case of a pre-customized unit 66, constituted by a chip card 7 and its reader 8, the pre-customization concerns only the chip card 7.
During the prior protection sub-phase P1, after the definitions stage S11 and, possibly after the construction stage S12, a stage called �tools making stage S14� can take place. During this tools making stage S14 are made tools enabling to help generate protected software or automate the protection of software. Such tools enable:
the execution characteristic(s) to monitor and, possibly, the algorithmic processing(s) liable to be split into instructions remotable in the unit 6, the portion(s) liable to be modified, and when the principle of protection by variable is also implemented, the variable(s) liable to be remoted in the unit 6, and when the principle of protection by renaming is also implemented, the algorithmic processing(s) liable to be split into dependent functions remotable in the unit 6 and for which the orders of the triggering commands can be renamed, and when the principle of protection by conditional branch is also implemented, the conditional branch(es) whose functionality is liable to be remoted in the unit 6, and, possibly, to help generate protected software or to automate the protection of software. These different tools can be carried out independently or in combination and each tool can have various forms, such as for instance pre-processor, assembler, compiler, etc.
The prior protection sub-phase P1 is followed by a subsequent protection sub-phase P2 which depends on the vulnerable software 2 v to protect. This subsequent protection sub-phase P2 is composed of several stages as well. The first stage corresponding to the implementation of the principle of protection by detection and coercion is called �creation stage S21�. During this creation stage S21, the choices made during the definition stage S11 are used. With the aid of said choices and possibly of tools constructed during the tools making stage S14, the protected software 2 p is created:
by choosing at least one software execution characteristic to monitor, among the software execution characteristics liable to be monitored, by choosing at least one criterion to abide by for at least one chosen software execution characteristic, by choosing, at least one algorithmic processing which, during the execution of the vulnerable software 2 v, uses at least one operand and enables to obtain at least one result, and for which at least one chosen software execution characteristic, is to be monitored, by choosing at least one portion of the source of the vulnerable software 2 vs containing, at least one chosen algorithmic processing, by producing the source of the protected software 2 ps from the source of the vulnerable software 2 vs, by modifying at least one chosen portion of the source of the vulnerable software 2 vs to obtain at least one modified portion of the source of the protected software 2 ps, this modification being such that:
during the execution of the protected software 2 p a first execution part 2 pes is executed in the data processing system 3 and a second execution part 2 peu is executed in a unit 6, obtained from the blank unit 60 after upload of information, the second execution part 2 peu executes at least the functionality of at least one chosen algorithmic processing, and during the execution of the protected software 2 p, at least one chosen execution characteristic is monitored by means of the second execution part 2 peu and the fact that a criterion is not abided by leads to a modification of the execution of the protected software 2 p, and by producing:
a first object part 2 pos of the protected software 2 p, from the source of the protected software 2 ps, said first object part 2 pos being such that during the execution of the protected software 2 p, appears a first execution part 2 pes which is executed in the data processing system 3 and whose at least a portion takes into account that at least one chosen software execution characteristic is monitored, and a second object part 2 pou of the protected software 2 p, containing the exploitation means implementing the detection means 17 and the coercion means 18, said second object part 2 pou being such that, after upload to the blank unit 60 and during the execution of the protected software 2 p, appears the second execution part 2 peu by means of which at least one chosen software execution characteristic is monitored and by means of which the fact that a criterion is not abided by leads to a modification of the execution of the protected software 2 p. Naturally, the principle of protection by detection and coercion according to the invention can be applied directly during the development of a new software without requiring the prior realization of a vulnerable software 2 v. In this way, a protected software 2 p is obtained directly.
at least one chosen algorithmic processing is split so that during the execution of the protected software 2 p, said algorithmic processing is executed by means of the second execution part 2 peu, using instructions, for at least one chosen algorithmic processing, instructions commands are integrated to the source of the protected software 2 ps, so that during the execution of the protected software 2 p, each instruction command is executed by the first execution part 2 pes and triggers in the unit 6, the execution by means of the second execution part 2 peu, of an instruction, a sequence of the instructions commands is chosen among the set of sequences allowing the execution of the protected software 2 p, and the chaining by which must abide at least some of the instructions during their execution in the unit 6 is specified. During the subsequent protection sub-phase P2, and when at least another principle of protection is applied in addition to the principle of protection by detection and coercion, a �modification stage S22� takes place. During this modification stage S22, are used the definitions intervened in the definitions stage S11. Using said definitions and possibly tools constructed during the tools making stage S14, the protected software 2 p is modified to allow the implementation of the principles of protection according to one of the arrangements herebefore defined.
the first object part 2 pos of the protected software 2 p, said first object part 2 pos being such that during the execution of the protected software 2 p, at least one portion of the first execution part 2 pes takes also into account that at least one variable or at least one copy of variable resides in the unit 6, and the second object part 2 pou of the protected software 2 p, said second object part 2 pou being such that, after upload to the unit 6 and during the execution of the protected software 2 p, appears the second execution part 2 peu by means of which at least one chosen variable, or at least one copy of chosen variable resides too in the unit 6. When the principle of protection by renaming is implemented, the protected software 2 p is modified:
the first object part 2 pos of the protected software 2 p, said first object part 2 pos being such that during the execution of the protected software 2 p, the functionality of at least one chosen series of conditional branches is executed in the unit 6, and the second object part 2 pou of the protected software 2 p, said second object part 2 pou being such that, after upload to the unit 6 and during the execution of the protected software 2 p, appears the second execution part 2 peu by means of which the overall functionality of at least one chosen series of conditional branches is executed. Naturally, the principles of protection according to the invention can be applied directly during the development of a new software without requiring the prior carrying out of intermediate protected pieces of software. In this way, the creation stage S21 and the modification stage S22 can be carried out concomitantly so as to obtain directly the protected software 2 p. During the subsequent protection sub-phase P2, after the creation stage S21 of the protected software 2 p, and possibly after the modification stage S22, a stage called �customization stage S23� takes place. During this customization stage S23, the second object part 2 pou containing the exploitation means is uploaded to at least one blank unit 60, with the intention of obtaining at least one unit 6, or a part of the second object part 2 pou possibly containing the exploitation means is uploaded to at least one pre-customized unit 66, with the intention of obtaining at least one unit 6. The uploading of this customization information enables to make operational at least one unit 6. It should be observed that part of said information, once transferred to a unit 6, is not directly accessible outside said unit 6. The transfer of the customization information to a blank unit 60 or a pre-customized unit 66 can be carried out through an adapted customization unit which is described in the rest of the description in FIG. 150. In the case of a unit 6, constituted by a chip card 7 and its reader 8, the customization concerns only the chip card 7.
It can be planned to use jointly several processing and memorizing units between which is divided out the second object part 2 pou of the protected software 2 p so that their joint use enables to execute the protected software 2 p, the absence of at least one of said processing and memorizing units preventing the usage of the protected software 2 p. In the same way, after the pre-customization stage S13 and during customization stage S23, the part of the second object part 2 pou necessary to transform the pre-customized unit 66 into a unit 6 can be contained in a processing and memorizing unit used by the customization unit 45 so as to limit the access to said part of the second object part 2 pou. Naturally, said part of the second object part 2 pou can be divided out between several processing and memorizing units so that said part of the second object part 2 pou is accessible only during the joint use of said processing and memorizing units. Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5706426 *Feb 7, 1996Jan 6, 1998United Microelectronics CorporationSoftware protection method and apparatusUS5754646 *Jul 19, 1995May 19, 1998Cable Television Laboratories, Inc.Method for protecting publicly distributed softwareUS6523119 *Dec 4, 1996Feb 18, 2003Rainbow Technologies, Inc.Software protection device and methodUS6931542Jun 12, 1999Aug 16, 2005GemplusMethod for verifying the execution of a software productEP0359220A2Sep 13, 1989Mar 21, 1990Wayne W. ChouMethod and apparatus for protecting computer software utilizing coded filter network in conjunction with an active coded hardware deviceEP0417611A2Sep 4, 1990Mar 20, 1991Wayne W. ChouMethod and apparatus for protecting computer software using a presettable counter in combination with an additional functionEP1184771A1Aug 24, 2000Mar 6, 2002Wibu-Systems AGMethod and device for protection of computer software and/or computer-readable dataFR2634917A1 Title not availableWO1999066387A1Jun 12, 1998Dec 23, 1999Gemplus Card IntMethod for verifying the execution of a software product* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS8307429 *Aug 7, 2007Nov 6, 2012Florida Institute Of TechnologySystem and method of generically detecting the presence of emulated environmentsUS20080147353 *Aug 7, 2007Jun 19, 2008Richard FordSystem and Method of Generically Detecting the Presence of Emulated Environments* Cited by examinerClassifications U.S. Classification713/193, 726/2, 380/201International ClassificationG06F21/00, H04L9/32, H04N7/167Cooperative ClassificationG06F21/123European ClassificationG06F21/12A2Legal EventsDateCodeEventDescriptionJul 27, 2010FPAYFee paymentYear of fee payment: 4Jul 7, 2009ASAssignmentOwner name: VALIDY NET INC, OREGONFree format text: LICENSE;ASSIGNOR:SA VALIDY;REEL/FRAME:022928/0428Effective date: 20060120Jan 30, 2004ASAssignmentOwner name: SAS VALIDY, FRANCEFree format text: CORRECT ASSIGNMENT RECORDATION;ASSIGNORS:CUENOD, JEAN-CHRISTOPHE;SGRO, GILLES;REEL/FRAME:014945/0114Effective date: 20021211Dec 16, 2002ASAssignmentOwner name: SAS VALIDY, FRANCEFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:CUENOD, JEAN CHRISTOPHE;SGRO, GILLES;REEL/FRAME:014054/0689Effective date: 20021211RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google