WO2007099224A2 - Method for verifying conformity of the logical content of a computer appliance with a reference content - Google Patents

Method for verifying conformity of the logical content of a computer appliance with a reference content Download PDF

Info

Publication number
WO2007099224A2
WO2007099224A2 PCT/FR2007/000351 FR2007000351W WO2007099224A2 WO 2007099224 A2 WO2007099224 A2 WO 2007099224A2 FR 2007000351 W FR2007000351 W FR 2007000351W WO 2007099224 A2 WO2007099224 A2 WO 2007099224A2
Authority
WO
WIPO (PCT)
Prior art keywords
memory
program
data
processor
code
Prior art date
Application number
PCT/FR2007/000351
Other languages
French (fr)
Other versions
WO2007099224A3 (en
Inventor
David Naccache
Original Assignee
Ingenico
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from EP06290345A external-priority patent/EP1830295A1/en
Application filed by Ingenico filed Critical Ingenico
Priority to US12/280,438 priority Critical patent/US20090260084A1/en
Publication of WO2007099224A2 publication Critical patent/WO2007099224A2/en
Publication of WO2007099224A3 publication Critical patent/WO2007099224A3/en

Links

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/341Active cards, i.e. cards including their own processing means, e.g. including an IC or chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect

Definitions

  • the present invention relates to computing devices and more specifically to verifying the compliance of the logical content of a computing device with a reference content.
  • Computer apparatus is an information processing apparatus, including a processor associated with a storage memory, as well as input-output devices.
  • the processor, the memory, as the input-output devices can be made according to different hardware solutions.
  • the memory may for example include a memory type EEPROM, EPROM or Flash memory.
  • the apparatus is capable of loading into the processor a program or software contained in the memory, and executing the program or software.
  • the apparatus is capable of communicating with the outside through input-output devices, receiving information from outside or transmitting information to the outside. Included in this definition of computer apparatus are smart cards, payment terminals, digital personal assistants (PDAs), pay TV terminals, and computers. These devices differ in the type of processor, the type of memory, the type of input-output devices as well as their destination.
  • the content of the memory - be it executable code, parameters or passive data - is called logical content or logical state.
  • a problem encountered for computing devices is that of the conformity of the logical content of the device to a reference content. This problem arises when one has a device, which are known hardware specifications, especially the size of the memory and the type of processor. The problem is whether the device we have is in a reference state.
  • the reference state can correspond to a given logical content - some information present in the memory - or to a lack of information in the memory.
  • Personalization of smart cards for GSM, payment or identity-based telephony applications
  • payment terminals includes a code injection phase executable to these devices.
  • smart cards with open operating systems such as those sold as compliant with the "Javacard” standard
  • programs or extensions executable in the non-volatile memory of the card typically EEPROM, EPROM or Flash.
  • the initialization of payment terminals such as the one sold under the reference 5100 by the company INGENICO comprises a phase where it is loaded into the non-volatile memory of the terminal (typically EEPROM, EPROM, Flash or RAM saved by battery) a specific application to the financial operator (acquirer) for whom the terminal is intended.
  • application means executable code, passive parameters and keys.
  • the injection into the memory of executable code, passive parameters and keys is done in a personalization station, which receives the device.
  • a personalization station receives the device.
  • the device When the device is connected to the personalization station, it is assumed that it is in a reference state, ie in a given logical state.
  • a malicious application is defined, for the purposes of this patent application, as any executable code and / or passive data different from the reference state in which the device is supposed to be.
  • an empty payment terminal is handled by a malicious employee who loads an application that simulates the behavior of a blank terminal.
  • This application leaves a copy of the secret keys in a readable area of the non-volatile memory.
  • the malicious employee takes possession of the injected keys, thanks to the copy made in a readable area of the memory.
  • the malicious employee erases the application that simulates the behavior of a blank terminal and reprograms the keys stolen correctly in a blank terminal it reinserts into the distribution chain; checking the number of terminals does not detect the manipulation.
  • the purchaser will receive a terminal whose keys he believes to be safe while these keys are known to the malicious employee;
  • an identity card is manufactured in country A on behalf of a country B.
  • Country B provides the personalization of these cards, by injecting secret keys in an area of the card memory not readable from the outside .
  • the card delivered to B may include a malicious code injected by the authorities of country A before the delivery of the blank cards to country B. This code can simulate vis-à-vis the personalization station a perfect behavior card software blank but save , in a hidden file stored in readable memory, copies of the secret keys injected by B into the identity document.
  • the malicious code could be activated, the country A could thus recover the keys put in the map by the country B and duplicate the identity document; the procedure for activating the malicious code can be very particular, for example resulting from the writing in a file of a specific data causing the waking of the malicious software; a credit card in which you have to register a Javacard applet with keys can already contain a malicious code, downloaded by a dishonest operator before the personalization of the card.
  • the operator could recover the card at the end of the customization, reread his keys, erase the malicious code, reload the legitimate code in the card (and the keys he just read) and reinsert the card in the industrial process so that it does not fail in the final count;
  • This verification can be a verification before the injection of information into the device: in the examples of the personalization of a smart card or a payment terminal, the verification aims to prove, before customization , the conformity of the device to the reference state, in particular the absence of malicious application.
  • This verification can be a verification after the injection of information into the device: the verification is then intended to prove that the device is carrying a content (executable code, parameters, passive data) strictly in accordance with a given model.
  • the state of the art offers three types of solutions to ensure that a computer device carries a logical content according to a given model. These solutions can be software, hardware or invasive.
  • the user has the possibility to load a new operating system on the chip of the card and can not force the device to boot on an external support, these chips do not therefore allow the user to to know if the operating system present aboard the chip of the card is in conformity with a given listing or not.
  • a first software solution is to ask the examined device to chop all or part of its memory. Such an approach is insufficient because one could perfectly imagine that the malicious code has compressed the operating system (any executable code is highly redundant and therefore conducive to compression) that it decompresses and chops as and when to answer hash requests from the verifier. Such a solution is for example described in the article "Oblivious Hashing: A Stealthy Software
  • a second solution consists in signing by a digital signature algorithm the code initially present on board the device to be checked. This approach assumes that the code already on board the device is trustworthy. This solution is for example recommended by the Trusted Computing Group consortium whose website is https://www.trustedcomputinggroup.org/home.
  • the invention provides a solution to the problem of verifying the compliance of a computing device with a logical content or reference state.
  • the invention assumes only knowledge of the hardware specifications of the verified device.
  • the invention makes it possible to ensure that a given code is loaded exactly on an apparatus whose hardware specifications are known. These embodiments do not assume that the apparatus to be verified contains specific secrets, nor a code already assumed safe; they also do not assume the existence of a hardware mechanism to ensure a privileged grip of the device.
  • the invention proposes a method of verifying the conformity of the logical content of a computing device with a reference content, the computing device having a processor, a memory in which the processor can read and write, and an input input device allowing a dialogue between the processor of the apparatus and the outside world, the method comprising the following steps
  • the method may have one or more of the following features: the verification of conformity is made according to the content of the messages exchanged with the apparatus; the verification of the conformity is carried out according to the measurement of the timing in the time of the messages exchanged with the apparatus;
  • the verification program P includes additional reading instructions, causing increased activity on the input device output;
  • the method comprises a step of proving the verification of conformity by a backtracking technique applied to the set of instructions executable by the processor;
  • the step of proof of conformity by a backtracking technique comprises the evaluation of the different candidate instructions in a concrete manner;
  • the step of proof of conformity by a backtracking technique comprises the evaluation of the different candidate instructions in an abstract manner
  • the method comprises a step of proving the verification of conformity by an exhaustive search of the possible programs applied to the set of instructions executable by the processor;
  • the load request in the memory includes a request to load the verification program P into the memory from the input input device;
  • the request for loading into the memory includes a request to activate a verification program P contained in the device;
  • the execution of the program P to saturate the available memory comprises reading stuffing data from the input input device and writing the stuffing data in the memory;
  • the execution of the program P to saturate the available memory comprises the reading of a problem from the input-output device and the resolution by the verification program P of the problem using the available memory; executing the program P to saturate the available memory includes reading a seed from the input input device and expanding the seed using the available memory;
  • the message exchange comprises: sending to the apparatus a request for reading data from the memory and receiving from the apparatus data read from the memory, including the code of the verification program;
  • the verification program is capable of executing a function on data in the memory
  • the message exchange comprises: sending to the apparatus a request to execute the function and to read data from Memory; and receiving from the apparatus the result of the function and the code of the verification program read from the memory.
  • the function performed on the data comprises the hash calculation of the data of the memory other than the code of the verification program;
  • the execution of the program P to saturate the available memory includes reading a problem from the input-output device and solving the problem using the available memory, the message exchange comprising: sending to the device a problem; and receiving from the apparatus the result of the problem and the code of the verification program read from the memory.
  • the code of the verification program includes instructions for reading the code to the input-output device;
  • the execution of the verification program causes the erasure of the memory, excluding the code of the verification program.
  • the invention provides a method of restoring a computing device having a processor, a memory in which the processor can read and write, and an input input device allowing dialogue between the processor of the processor. apparatus and the outside world, the method comprising the steps of: - saving to the outside world of the data present in the memory;
  • the invention proposes a computing device, comprising a processor, a memory in which the processor can read and write, an input input device allowing a dialogue between the processor of the device and the world. external and a verification program stored in the device, the verification program including instructions adapted to cause, when executed by the processor, - the writing of data in the memory of the device and
  • the invention provides a computing device, comprising - a first subset having a processor, a memory in which the processor can read and write, and an input input device; a second subassembly, the second subassembly being adapted to interact with the processor of the first subassembly through the input input device and to check the conformity of the logic state of the first subassembly according to the mentioned method upper.
  • FIG. 1 a diagrammatic representation a device, which one wishes to check the logical state
  • FIG. 2 is a flowchart of a first example of implementation of the method of the invention
  • Figure 3 a flow chart of a second example of implementation of the method of the invention.
  • Figure 4 is a flowchart of a method of restoring the state of a computing device; - Figure 5, a block diagram of a device within which is implemented the method of Figure 2 or 3.
  • Figure 1 shows a schematic view of a computer apparatus.
  • the apparatus 2 has a processor 4, a memory 6 and an input input device 8.
  • the processor 4 is able to write to the memory 6 and read from this memory.
  • the processor 4 is also capable of executing executable code stored in the memory 6.
  • the processor 4 is still capable of receiving information from the input input device and transmitting information to the outside via the device. enter exit.
  • the device may have a specific memory containing the operating system, as in the Flash chips mentioned above as an example; the memory 6 is the memory offered to the user of the device for loading data, parameters or codes executable by the processor.
  • the different elements of the apparatus of Figure 1 are functional elements, and various hardware solutions can be used to implement them.
  • the processor it is possible to use commercial processors, such as 68HC05 or 80C51, or the Flash chips mentioned above.
  • Flash memory can be used to store magnetic memory or EEPPROM memory in any form.
  • the particular shape of the input input device is indifferent.
  • the input input device is able to read the signals applied to the serial port of the card; in the example of a contactless smart card, the output input device comprises an antenna and the circuits adapted to decode the signals received on the antenna.
  • the various functional elements of FIG. 1 are typically composed of a 32-bit microprocessor, a serial port and a flash memory.
  • the apparatus may be a PC-type computer or the like, a personal digital assistant, a pay-TV terminal, or any other device having the schematic structure of the device.
  • Figure 1 a PC-type computer or the like, a personal digital assistant, a pay-TV terminal, or any other device having the schematic structure of the device.
  • the verification method of the invention assumes known the hardware specifications of the device 2. In the example of Figure 2, it is sufficient to know the capacity of the memory 6 of the device. In the example of FIG. 3, the method also requires to know the time characteristics of the processor of the apparatus, typically the number of clock cycles required to execute each instruction.
  • Figure 2 is a flow chart of a first embodiment of the method of the invention.
  • the invention exploits the fact that the execution of a malicious program, which simulates the "normal" operation of the apparatus 2, assumes that memory resources are available.
  • the invention therefore proposes to ask the device to execute a verification program able to interact with the outside world and to saturate the memory of the device before the dialogue.
  • the dialogue with the outside world will take place in an expected manner; if a malicious program is present and tries to simulate the execution of the verification program, the absence of memory resources will lead to the dialogue with the outside world not taking place in the expected way.
  • step 10 the apparatus 2 is instructed to load in the memory 6 a verification program, noted P in the following, and to execute it.
  • the loading can be carried out via the input-output device, by writing the program in the memory 6. It is also possible to provide a dormant verification program - stored in the device verified elsewhere; in this case, it is not necessary to load it via the input-output device and it is sufficient to go back to the memory 6.
  • the word "loading” must therefore be understood as covering not only a writing in the memory 6 of the program through the input device output 8, but also a writing in the memory 6 of a program already contained in the device 2.
  • the verification program P when executed, makes it possible to write data into the memory 6; in the embodiment described with reference to FIG. 2, the writing of the data consists in writing in the memory 6 of the data received on the input-output device 8. Other ways of writing data are given below. in the memory.
  • the program P also allows, when executed, to read the contents of the memory to send it to the input device output.
  • step 10 there is still no certainty that the device has correctly loaded and executed the program P.
  • the device behaves in a "normal” way.
  • the device may have a malicious program trying to simulate "normal” operation: the device, because of this malicious program, may try to behave as if the program P had been loaded but not to load it correctly or to load it only a part or abstain from performing it.
  • program P is used to undertake a verification protocol with the apparatus. This protocol aims to test the operation of the device to allow to conclude, with certainty that the device is "clean", that is to say that it has no malicious program or to conclude with certainty that the device is infected, that is to say it has a malicious code.
  • step 12 the program P is used to saturate the memory 6 of the apparatus, with a block of random or non-random data, denoted R.
  • the saturation consists in filling the memory 6, with the exception of the part of the memory 6 in which the program P is stored. In the example of FIG. 2, this saturation is carried out simply by applying random data, noted R in the following, to the input input of the apparatus 2; the data R is written in the memory 6 because of the execution of the program P. Alternatively, it is not excluded that R consists of fixed and / or non-random data already present within the verified device or data from the outside world.
  • Step 14 is the application to the apparatus of a request to execute the program P to read the contents of the memory 6.
  • step 16 the contents of the memory 6 or data whose value is related to the contents of the memory.
  • memory content any data whose value is related to and / or equal to the content of the memory.
  • step 18 the content of the memory 6 received from the apparatus 2 is compared with the expected random data R and with the code of the program P and more generally with any trace of normal execution that would have resulted from the execution of P if the conditions were normal.
  • step 20 If the content of the memory 6 received from the apparatus corresponds to the data R and the code of the program P, it is concluded in step 20 that the apparatus is "clean" and does not include a malicious program. Conversely, if this is not the case, it is concluded in step 22 that the apparatus is not in a state conformed to the reference state.
  • step 18 is based on the fact that P is the only program capable of:
  • Idx portA read command beq read if command is zero then read garlic code out write
  • Ida portA read byte presented by external world sta portA, X store it at location X bra start ask for next byte read: com ddra if command nozero make portA output
  • the program proceeds to read the memory - including the reading of its own code. If the command is not null, the program writes in all available memory, outside the position it occupies.
  • the method of the invention is therefore implemented: - by asking the device to execute to load the program Exemplel .asm above in its memory then to execute it;
  • the verifier can avoid such loading from the moment when he verifies that the R data already on board do not allow a malicious program to simulate correct behavior - subject to such proof or assumption of R data already on board may be used); it is recalled here that one is supposed to know the material specifications of the apparatus, in particular the memory size; - By applying a null command to cause the reading of all the data contained in the memory.
  • this program Exemplel. asm will produce the sequence 00FF3F81 BE802706 B680E780 20F43381 E680B780 5C26F920 E9 ⁇ random block R ⁇
  • the example proposed above shows that it is possible to generate codes having the required operation and returning the expected information to the reading.
  • the method described with reference to Figure 2 has the advantage of involving only the knowledge of the capacity of the memory 6 of the device 2, so as to ensure a saturation of the memory. If one also knows the temporal characteristics of the processor 4 of the apparatus, one can also measure the time - in number of clock cycles of the processor - necessary to return the data R as well as the code of the program P.
  • the verifier can time the number of clock cycles separating the return of the different bytes composing the returned data "R and the code of P” and conclude that the apparatus M is "clean” only if the bytes of the data " R and P 'code are returned to predictable timing, given the processor specifications of the apparatus M.
  • Figure 3 shows the corresponding method; Figure 3 is identical to Figure 2, except for step 19, checking the timing of messages exchanged with the device. If the timing of the messages is not that expected, the verifier concludes in step 26 that the logical content of the device does not comply with the expected content. Otherwise, the apparatus is in a logical state in accordance with the reference state (step 28).
  • the step 19 of verifying the timing of the messages exchanged with the apparatus follows step 18. This is only a schematic representation, the order of the verifications being irrelevant. This verification of the timing of the exchanges makes it even more difficult to simulate the behavior of the program P by a malicious program.
  • the preceding code fragment returns one byte every 14 machine cycles.
  • the formal demonstration that can be used in the method of FIG. 3 consists in proving that no sequence of instructions of at most 14 cycles is capable of generating the expected sequence in time.
  • the replay loop can also be sprinkled with feedback operations to reduce the 14-cycle time between sending the characters.
  • successive sequence "R and P code” as much as possible.
  • Annex 2 to the present description gives, for example program Example 1.asm scattered with additional reading instructions, the expected behavior of the apparatus.
  • Proof of compliance verification may use an exhaustive search applied to the instruction set executable by the verified platform; the set of possible codes having the required size are then determined, and these codes are tested to prove that they are not suitable for providing the messages exchanged with the apparatus; this proof applies to the method of FIG. 2, in which the verification is carried out according to the content of the messages exchanged with the apparatus; this technique is still applicable to the method of FIG. 3, in which the verification is also carried out as a function of the measurement of the temporal timing of the messages exchanged with the apparatus.
  • Appendices 3 and 4 show the encodings of the different 7-cycle and 8-cycle instructions, which are possible for a set of instructions corresponding to the 68HC05 assembler. These different 7- and 8-cycle instructions can be used for proof of compliance verification by exhaustive search, when the program is sprinkled with replay instructions leading to 7 or 8 cycles available for the malicious program, as in the example proposed above.
  • Annex 5 shows another example of the code for the verification program P; the appendix shows only the part of the program that reads values, the value placement part in the checked memory having been removed for clarity.
  • a first solution is to provide the device, in lieu of saturation data, the statement of a problem to be solved, solving the problem leading to the saturation of the memory.
  • problems known as SP ACE-COMPLETS.
  • problems are cited in the article "Moderately Hard, Memory-bound Functions” by Martin Abadi, Mike Burrows, Mark Manasse and Ted Wobber or in the article "On Memory-Bound Functions for Fighting Spam” by Cynthia Dwork, Andrew Goldberg and Moni Naor.
  • the problem exploited in the second article involves the computation of collisions, and thus the occupation of a memory capacity whose size can be fixed according to a parameter.
  • the statement of the problem measures only a few bytes. It is understood that the statement of the problem is "short", with regard to the size of the memory 6.
  • a second solution is to apply to the apparatus a short seed of a data to be expanded by the program P, the expanded data to saturate the memory.
  • the expansion process is preferably such that there is no way to expand the data other than by occupying all of the available memory.
  • a third solution consists in not saturating the memory and working with data already present on board the verified platform (these data being able to be according to the cases , executable code already on board (legitimate application code) and / or legitimate passive data).
  • the verifier may preferably first prove or assume that the return of these data already present on board the platform verified by the program P during the verification phase can not be simulated by a malicious program (with or without temporal timing constraints). Such proof is always possible to obtain by a backtracking technique.
  • the methods of Figures 2 and 3 also involve a step 16 of reading the contents of the memory.
  • this solution does not pose any particular problem when the capacity of the memory 6 is sufficiently small, compared to the flow rate of the input input device.
  • a first solution is to proceed, instead of reading the random or pseudo-random saturation data, a hash calculation or a calculation of CRC on these data.
  • the data are random or pseudo-random, the compression mentioned in the description of the software solution of the state of the art is impossible or very difficult.
  • n random or pseudo-random stuffing blocks are received from the outside world; these data are placed in the memory 6 by the program P.
  • This memory saturation step 12 is followed by an indication by the outside world of a permutation of the n elements and by the return by the program P of the hash of the permutated data. to the outside world.
  • the method of Figures 2 and 3 applies in particular when the memory is not supposed to contain code or when the memory contains a known code that can be restored without problem at the end of the verification process. It can also be provided that the program P begins by erasing all the data present in the memory, excluding its own code, and then starting to receive data from the outside world.
  • FIG. 4 shows such a method, applied to an apparatus of the type of FIG. 1: the first step 30 is a step of saving the contents of the memory to the outside world; it is followed by a compliance verification step 32, according to the method described above; in step 34, the exported data are analyzed and, if necessary, processed, for example if they contain a malicious program.
  • step 36 If the apparatus is in a state in accordance with the reference state (step 36), the processed data is reinjected (step 38). If the verified device is not in a state in accordance with the reference state, an error is reported (step 40); we can then take the necessary corrective measures (reset or others).
  • a first generalization consists, instead of writing the data R in one go and re-reading it in one go, of alternating writes and reads repeatedly.
  • a first block of data R [I] would be written, a first block R '[l] would be read again, then a second block of data R [2] would be written, a second block R' [2] would be read again and so after.
  • R '[i] denotes either a value which must be equal to R [i] or a value which is a function of R [i].
  • a second variant may be to repeat the verification protocol with the machine several times and accept the machine as clean only if successful in all sessions of the protocol. Such a repetition aims to exponentially reduce the probability that a malicious application will pass the protocol out of sheer luck.
  • a third variant replaces the backtracking proof with any other form of proof, for example the exhaustive search (or the construction) of the smallest code (let's call it the size of this code) capable of restoring a datum of the size of R minus m bytes.
  • a verification of an apparatus from the outside world is described with reference to a "verifier" which is not part of the apparatus.
  • the method of the invention also applies within the same device, between two circuits, two subsystems or two components forming part of the device; in this case, one of the two circuits, subsystems or components behaves as the "outside world" or as the "verifier” for the other circuit, subsystem or component.
  • FIG. 5 shows such a device 50.
  • the elements of the first subset are identified by the reference numerals of FIG. 1, increased by 50.
  • the second subset is referenced 60; it is not described in more detail.
  • the method mentioned above is carried out internally in the device. This can be done between two subsets of the device or between more than two subsets, according to desired permutations; the method can be performed invisibly for the user of the device, periodically or under circumstances special. In case of non-compliance, one or more actions may then be caused, such as for example a stop of the functions of the device, or a message to the user or to the outside world.
  • the method of the invention could be used in a multiprocessor machine, such as a PC, a payment terminal, a pay-TV decoder, an electronic element embossed with a weapon or from where military vehicle, each processor constituting the "outside world" for verification of the other processor.
  • a multiprocessor machine such as a PC, a payment terminal, a pay-TV decoder, an electronic element embossed with a weapon or from where military vehicle, each processor constituting the "outside world" for verification of the other processor.
  • NC: Function [ ⁇ pt, lst ⁇ , Sum [If [lst [[d + l]] ⁇ RM [s [pt + d]] && RM [s [pt + d]] ⁇ -l, l, 0 ], ⁇ d, 0, Length [lst] -l ⁇ ] ⁇ 0];
  • BRAT Function [L, (Ex ⁇ A
  • TestInst Function [hy, Pick [ ⁇ INCT, LDAT, BRAT, STAT ⁇ , ⁇ "INC”, “LDA”, “BRA”, “STA” ⁇ , hy [[l]]] [[l]] [ hy [[2]]]]]
  • ExecInst Function [hy, Pick [ ⁇ INCS, LDAS, ARM, ST AS ⁇ , ("INC 5 11 LDA 11 Z 1 BRA 11 Z 1 STA”) , hy [
  • ⁇ LDA.OMLDAJÎ ⁇ LDA ⁇ ... (insert here elements of the form ⁇ LDA, i ⁇ ) ..., ⁇ LDA, 2 5 1 ⁇ , ⁇ LDA, 2 5 2 ⁇ , ⁇ LDA.253 ⁇ , ⁇ LDA, 2 5 4 ⁇ , ⁇ LDA, 2 55 ⁇ , ⁇ BRA, 0 ⁇ , (BRA 1 ] ⁇ t ⁇ BRA, 2 ⁇ , ... insert here elements of the form ⁇ BRA, i ⁇ ) ..., ⁇ BRA, 2 5 3 ⁇ , ⁇ BRA, 2 5 4 ⁇ , ⁇ BRA, 2 55 ⁇ , ⁇ INC, Q) ⁇

Abstract

The invention concerns a computer appliance comprising a processor (4), a memory (6) in which the processor can read and write, and an input/output device (8) for interfacing the appliance processor (4) with the outside world. In order to verify the conformity of the logical content of the appliance with the reference content, the method consists in sending (10) to the appliance (2) a request for loading into the memory (6) and executing a verification programme (P). The verification programme is capable or writing data into the memory (6) of the appliance and of reading data in the memory (6) to send them to the input/output device (8). Then, it consists in sending (12) to the appliance a request for executing the programme (P) to saturate the memory (6) available not taken up by the programme (P). Finally, it consists in exchanging (14, 16) messages with the appliance by executing the programme (P). Based on the exchanged messages, the conformity of the logical content of the appliance is verified.

Description

PROCEDE DE VERIFICATION DE LA CONFORMITE DU CONTENU LOGIQUE D'UN APPAREIL INFORMATIQUE A UN CONTENU DE REFERENCE METHOD FOR VERIFYING THE COMPLIANCE OF THE LOGIC CONTENT OF A COMPUTER APPARATUS WITH REFERENCE CONTENT
La présente invention concerne les appareils informatiques et plus spécifiquement la vérification de la conformité du contenu logique d'un appareil informatique à un contenu de référence.The present invention relates to computing devices and more specifically to verifying the compliance of the logical content of a computing device with a reference content.
On appelle appareil informatique un appareil de traitement de l'information, comprenant un processeur associé à une mémoire de stockage, ainsi que des dispositifs d'entrée-sortie. Le processeur, la mémoire, comme les dispositifs d'entrée-sortie peuvent être réalisés suivant différentes solutions matérielles. Ainsi, la mémoire peut par exemple comprendre une mémoire de type EEPROM, EPROM ou mémoire Flash. L'appareil est capable de charger dans le processeur un programme ou logiciel contenu dans la mémoire, et d'exécuter le programme ou logiciel. L'appareil est capable de communiquer avec l'extérieur par le biais des dispositifs d'entrée-sortie, pour recevoir de l'information en provenance de l'extérieur ou transmettre de l'information vers l'extérieur. Entrent dans cette définition d'appareil informatique les cartes à puces, terminaux de paiement, assistants personnels numériques (PDA), terminaux de télévisions à péage, et ordinateurs. Ces appareils diffèrent par le type de processeur, le type de mémoire, le type de dispositifs d'entrée-sortie ainsi que par leur destination. Pour un tel appareil, on appelle contenu logique ou état logique le contenu de la mémoire — qu'il s'agisse de code exécutable, de paramètres ou encore de données passives.Computer apparatus is an information processing apparatus, including a processor associated with a storage memory, as well as input-output devices. The processor, the memory, as the input-output devices can be made according to different hardware solutions. Thus, the memory may for example include a memory type EEPROM, EPROM or Flash memory. The apparatus is capable of loading into the processor a program or software contained in the memory, and executing the program or software. The apparatus is capable of communicating with the outside through input-output devices, receiving information from outside or transmitting information to the outside. Included in this definition of computer apparatus are smart cards, payment terminals, digital personal assistants (PDAs), pay TV terminals, and computers. These devices differ in the type of processor, the type of memory, the type of input-output devices as well as their destination. For such an apparatus, the content of the memory - be it executable code, parameters or passive data - is called logical content or logical state.
Un problème rencontré pour les appareils informatiques est celui de la conformité du contenu logique de l'appareil à un contenu de référence. Ce problème se pose lorsque l'on dispose d'un appareil, dont sont connues les spécifications matérielles, en particulier la taille de la mémoire et le type de processeur. Le problème est de savoir si l'appareil dont on dispose se trouve dans un état de référence. L'état de référence peut correspondre à un contenu logique donné - une certaine information présente dans la mémoire - ou encore à une absence d'information dans la mémoire.A problem encountered for computing devices is that of the conformity of the logical content of the device to a reference content. This problem arises when one has a device, which are known hardware specifications, especially the size of the memory and the type of processor. The problem is whether the device we have is in a reference state. The reference state can correspond to a given logical content - some information present in the memory - or to a lack of information in the memory.
Ce problème se pose notamment pour les cartes à puce et les terminaux de paiement; en effet, on écrit dans les mémoires de ces appareils des informations à caractère confidentiel.This problem arises especially for smart cards and payment terminals; indeed, confidential information is written in the memories of these devices.
La personnalisation de cartes à puce (pour des applications de téléphonie à la norme GSM, paiement ou identité) et de terminaux de paiement comporte une phase d'injection de code exécutable vers ces appareils. Typiquement, des cartes à puce à systèmes d'exploitation ouverts (comme celles vendues comme conformes à la norme « Javacard ») permettent l'ajout de programmes ou extensions exécutables dans la mémoire non-volatile de la carte (typiquement EEPROM, EPROM ou Flash).Personalization of smart cards (for GSM, payment or identity-based telephony applications) and payment terminals includes a code injection phase executable to these devices. Typically, smart cards with open operating systems (such as those sold as compliant with the "Javacard" standard) allow the addition of programs or extensions executable in the non-volatile memory of the card (typically EEPROM, EPROM or Flash).
De même, l'initialisation de terminaux de paiement tel celui vendu sous la référence 5100 par la société INGENICO comporte une phase où l'on charge dans la mémoire non- volatile du terminal (typiquement EEPROM, EPROM, Flash ou RAM sauvegardée par batterie) une application spécifique à l'opérateur financier (acquéreur) auquel le terminal est destiné. Le terme « application » signifie du code exécutable, des paramètres passifs et des clés.Similarly, the initialization of payment terminals such as the one sold under the reference 5100 by the company INGENICO comprises a phase where it is loaded into the non-volatile memory of the terminal (typically EEPROM, EPROM, Flash or RAM saved by battery) a specific application to the financial operator (acquirer) for whom the terminal is intended. The term "application" means executable code, passive parameters and keys.
L'injection dans la mémoire du code exécutable, des paramètres passifs et des clés s'effectue dans une station de personnalisation, qui reçoit l'appareil. Lorsque l'on connecte l'appareil à la station de personnalisation, on suppose qu'il est dans un état de référence, c'est à dire dans un état logique donné.The injection into the memory of executable code, passive parameters and keys is done in a personalization station, which receives the device. When the device is connected to the personalization station, it is assumed that it is in a reference state, ie in a given logical state.
Si l'on veut préserver la confidentialité des informations injectées dans l'appareil par la station de personnalisation, il est indispensable de s'assurer que l'appareil à personnaliser est vide de toute application malicieuse. Une application malicieuse est définie, pour les besoins de la présente demande de brevet, comme tout code exécutable et/ou données passives différents de l'état de référence dans lequel l'appareil est supposé se trouver.If we want to preserve the confidentiality of the information injected into the device by the personalization station, it is essential to ensure that the device to be personalized is empty of any malicious application. A malicious application is defined, for the purposes of this patent application, as any executable code and / or passive data different from the reference state in which the device is supposed to be.
Nous donnons ici quelques exemples d'applications malicieuses dans divers domaines : un terminal de paiement vide est manipulé par un employé malicieux qui y charge une application qui simule le comportement d'un terminal vierge. Cette application laisse une copie des clés secrètes dans une zone lisible de la mémoire non-volatile. Une fois les clés injectées, l'employé malicieux prend possession des clés injectées, grâce à la copie faite dans une zone lisible de la mémoire. Ensuite l'employé malicieux efface l'application qui simule le comportement d'un terminal vierge et reprogramme les clés volées de manière correcte dans un terminal vierge qu'il réinsère dans la chaîne de distribution; le contrôle du nombre de terminaux ne permet pas de détecter la manipulation. Ainsi l'acquéreur recevra un terminal dont il croit les clés à l'abri alors que ces clés sont connues de l'employé malicieux;We give here some examples of malicious applications in various fields: an empty payment terminal is handled by a malicious employee who loads an application that simulates the behavior of a blank terminal. This application leaves a copy of the secret keys in a readable area of the non-volatile memory. Once the keys are injected, the malicious employee takes possession of the injected keys, thanks to the copy made in a readable area of the memory. Then the malicious employee erases the application that simulates the behavior of a blank terminal and reprograms the keys stolen correctly in a blank terminal it reinserts into the distribution chain; checking the number of terminals does not detect the manipulation. Thus the purchaser will receive a terminal whose keys he believes to be safe while these keys are known to the malicious employee;
- une carte d'identité est fabriquée dans un pays A pour le compte d'un pays B. Le pays B assure la personnalisation de ces cartes, par injection de clés secrètes dans une zone de la mémoire des cartes non lisible depuis l'extérieur. La carte livrée à B peut comporter un code malicieux injecté par les autorités du pays A avant la livraison des cartes vierges au pays B. Ce code pouvant simuler vis-à-vis de la station de personnalisation un parfait comportement logiciel de carte vierge mais sauvegarder, dans un fichier caché stocké dans la mémoire lisible, des copies des clés secrètes injectées par B dans le document d'identité. Ainsi, lors d'un contrôle du document d'identité par le pays A, le code malicieux pourrait être activé, le pays A pourrait ainsi récupérer les clés mises dans la carte par le pays B et dupliquer le document d'identité; la procédure d'activation du code malicieux peut être très particulière, par exemple résulter de l'écriture dans un fichier d'une donnée spécifique provoquant le réveil du logiciel malicieux; une carte bancaire dans laquelle l'on doit inscrire une applet Javacard comportant des clés peut déjà contenir un code malicieux, téléchargé par un opérateur malhonnête avant la personnalisation de la carte. Ainsi, l'opérateur pourrait récupérer la carte à la fin de la personnalisation, relire ses clés, effacer le code malicieux, recharger le code légitime dans la carte (ainsi que les clés dont il vient de prendre connaissance) et réinsérer la carte dans le processus industriel afin que celle-ci ne manque pas lors du comptage final;- an identity card is manufactured in country A on behalf of a country B. Country B provides the personalization of these cards, by injecting secret keys in an area of the card memory not readable from the outside . The card delivered to B may include a malicious code injected by the authorities of country A before the delivery of the blank cards to country B. This code can simulate vis-à-vis the personalization station a perfect behavior card software blank but save , in a hidden file stored in readable memory, copies of the secret keys injected by B into the identity document. Thus, during an inspection of the identity document by the country A, the malicious code could be activated, the country A could thus recover the keys put in the map by the country B and duplicate the identity document; the procedure for activating the malicious code can be very particular, for example resulting from the writing in a file of a specific data causing the waking of the malicious software; a credit card in which you have to register a Javacard applet with keys can already contain a malicious code, downloaded by a dishonest operator before the personalization of the card. Thus, the operator could recover the card at the end of the customization, reread his keys, erase the malicious code, reload the legitimate code in the card (and the keys he just read) and reinsert the card in the industrial process so that it does not fail in the final count;
- de même, après avoir formaté un disque dur et y avoir installé un système d'exploitation de la marque Windows XP, il peut être utile de s'assurer que le disque dur contient bien l'image du contenu du CD officiel de Windows XP commercialisé par la société- similarly, after formatting a hard drive and installing a Windows XP operating system, it may be useful to make sure that the hard disk contains the image of the official Windows XP CD content. marketed by the company
Microsoft.Microsoft.
Le même scénario peut se produire lors de l'initialisation de tout appareil comportant ou non des secrets (ordinateur de type PC, assistant personnel numérique ou PDA, téléphone mobile, station de jeux, terminal de paiement, décodeur de télévision à péage etc.), ou lors de l'injection sur un tel appareil d'informations - programmes, clés, données de toute nature.The same scenario can occur during the initialization of any device with or without secrets (PC-type computer, PDA or PDA, mobile phone, gaming station, payment terminal, pay-TV decoder, etc.). , or during the injection on such an information device - programs, keys, data of any kind.
On comprend que dans tous ces exemples, il est utile de pouvoir vérifier que l'état de l'appareil est conforme à un état de référence. Cette vérification peut être une vérification avant l'injection d'informations dans l'appareil : dans les exemples de la personnalisation d'une carte à puce ou d'un terminal de paiement, la vérification a pour objectif d'avérer, avant la personnalisation, la conformité de l'appareil à l'état de référence, notamment l'absence d'application malicieuse. Cette vérification peut être une vérification après l'injection d'informations dans l'appareil : la vérification a alors pour objectif d'avérer que l'appareil est porteur d'un contenu (code exécutable, paramètres, données passives) strictement conforme à un modèle donné. L'état de la technique propose trois types de solutions permettant de s'assurer qu'un appareil informatique est porteur d'un contenu logique conforme à un modèle donné. Ces solutions peuvent être logicielles, matérielles ou invasives.It is understood that in all these examples, it is useful to be able to verify that the state of the device is in accordance with a reference state. This verification can be a verification before the injection of information into the device: in the examples of the personalization of a smart card or a payment terminal, the verification aims to prove, before customization , the conformity of the device to the reference state, in particular the absence of malicious application. This verification can be a verification after the injection of information into the device: the verification is then intended to prove that the device is carrying a content (executable code, parameters, passive data) strictly in accordance with a given model. The state of the art offers three types of solutions to ensure that a computer device carries a logical content according to a given model. These solutions can be software, hardware or invasive.
Les solutions logicielles supposent que l'appareil est conçu d'une manière telle qu'une certaine action physique sur l'appareil résultera en un comportement garanti de l'appareil. Dans l'exemple d'un ordinateur personnel de type PC, l'action physique consistant en l'appui des touches ctrl-alt-del, précédé par l'insertion d'une disquette dans le lecteur et de l'allumage de la machine résulte en un démarrage du système d'exploitation. Lorsque le BIOS (acronyme de l'anglais Basic Input/Output System, c'est-à-dire système d'entrées sorties de base) d'un ordinateur PC détecte à l'allumage la présence d'une disquette dans le lecteur de disquettes, il passe la main au programme présent sur la disquette et force ce programme à s'exécuter. Ainsi, il est possible de reformater un appareil tombée en panne ou contenant un code malicieux (tel qu'un « virus » ou un « rootkit »); ce reformatage remet l'appareil dans un état de référence donné — un état d'initialisation, dans lequel l'appareil est vide de contenu logique. Une telle solution matérielle suppose que l'appareil permette, par une telle action physique, une prise en main privilégiée.Software solutions assume that the device is designed in such a way that a certain physical action on the device will result in a guaranteed behavior of the device. In the example of a PC-type personal computer, the physical action consisting of pressing the ctrl-alt-del keys, preceded by the insertion of a floppy disk in the reader and the ignition of the machine results in a boot of the operating system. When the BIOS (acronym for the Basic Input / Output System) of a PC detects the presence of a floppy disk in the floppies, he passes the hand to the program on the floppy disk and forces this program to run. Thus, it is possible to reformat a device that has failed or contains malicious code (such as a "virus" or a "rootkit"); this reformatting puts the device back into a given reference state - an initialization state, in which the device is empty of logical content. Such a material solution supposes that the apparatus allows, by such a physical action, a privileged grip.
Lorsqu'il s'agit de vérifier que l'appareil présente un contenu logique donné, une telle solution suppose que le vérificateur puisse à nouveau écrire dans l'appareil le contenu logique souhaité. Ceci n'est pas toujours le cas. Ainsi, on trouve de nos jours des appareils dont la mémoire n'est pas constituée de ROM (mémoire morte) mais de mémoire non-volatile réinscriptible (telle que la mémoire Flash ou 1 'EEPROM). Par exemple, plusieurs fabricants de composants offrent des puces Flash vierges dans lesquelles le fabricant de cartes peut télécharger un système d'exploitation de son choix; des exemples de telles puces sont celles vendues par la société SST sous la référence Emosyn, par la société Atmel sous la référence, AT90SC3232, par la société Infineon sous la référence SLE88CFX4000P, ou encore par la société Electronic Marin sous la référence EMTCG. Pour ce tels appareils, l'utilisateur a la possibilité de charger sur la puce de la carte un nouvel système d'exploitation et ne peut forcer le dispositif à démarrer sur un support externe, ces puces ne ne permettent donc pas à l'utilisateur de savoir si le système d'exploitation présent à bord de la puce de la carte est conforme à un listing donné ou pas.When it comes to verifying that the device has a given logical content, such a solution assumes that the verifier can write the desired logical content back to the device. This is not always the case. Thus, there are nowadays devices whose memory is not made of ROM (ROM) but non-volatile memory rewritable (such as Flash memory or EEPROM). For example, several component manufacturers offer blank flash chips in which the card manufacturer can download an operating system of their choice; examples of such chips are those sold by the company SST under the reference Emosyn, by the company Atmel under the reference, AT90SC3232, by the Infineon company under the reference SLE88CFX4000P, or by the company Electronic Marin under the reference EMTCG. For such devices, the user has the possibility to load a new operating system on the chip of the card and can not force the device to boot on an external support, these chips do not therefore allow the user to to know if the operating system present aboard the chip of the card is in conformity with a given listing or not.
Les solutions invasives supposent que l'appareil à vérifier ait été démonté et que l'élément contenant le code ou données - l'élément physique assurant la fonction de mémoire - soit inspecté à l'aide d'un appareil de test externe. L'appareil de test externe permet de lire le contenu de la mémoire de l'appareil à vérifier, indépendamment du processeur de l'appareil à vérifier, et donc indépendamment de l'exécution de toute application malicieuse simulant un fonctionnement attendu. Une fois acquise une certitude sur la conformité au modèle du code contenu dans l'élément démonté, l'élément est remonté sur la machine. A titre d'exemple, le logiciel commercialisé sous la référence EnCase par la société Guidance Software permet d'auditer le contenu d'un disque dur hors d'une machine. Une telle solution invasive est souvent hors de portée pour l'utilisateur moyen ou est simplement techniquement impossible; ainsi, une carte à puce ou un terminal de paiement est conçu d'une manière telle qu'il est impossible d'en détacher le moindre élément sans provoquer l' autodestruction de l'appareil pour des raisons de sécurité. Les solutions logicielles consistent à dialoguer avec l'appareil à vérifier. Plusieurs approches sont actuellement utilisées mais aucune ne donne une certitude absolue quant au contenu de l'appareil vérifié. Dans toutes les approches logicielles il est supposé que l'attaquant a le droit d'altérer l'état logiciel (logique) de la machine cible mais en aucun cas il n'a le droit d'en altérer la structure physique (par exemple ajouter de la mémoire, débrancher un périphérique, remplacer le disque etc.).Invasive solutions assume that the device to be verified has been dismounted and that the element containing the code or data - the physical element providing the memory function - is inspected using an external test device. The external test device makes it possible to read the contents of the memory of the device to be verified, independently of the processor of the device to be verified, and therefore independently of the execution of any malicious application simulating an expected operation. Once you know for sure that the model conforms to the code contained in the disassembled element, the element is reassembled on the machine. By way of example, the software marketed under the reference EnCase by Guidance Software makes it possible to audit the contents of a hard disk outside a machine. Such an invasive solution is often out of reach for the average user or is simply technically impossible; Thus, a smart card or a payment terminal is designed in such a way that it is impossible to detach any element without causing the self-destruction of the device for security reasons. Software solutions consist of dialoguing with the device to be verified. Several approaches are currently used but none gives absolute certainty as to the content of the verified device. In all software approaches it is assumed that the attacker has the right to alter the software state (logic) of the target machine but in no case has he the right to alter the physical structure (eg add memory, unplug a device, replace the disk etc.).
Une première solution logicielle consiste à demander à l'appareil examiné de hacher la totalité ou une partie de sa mémoire. Une telle approche est insuffisante car l'on pourrait parfaitement imaginer que le code malicieux ait compressé le système d'exploitation (tout code exécutable est hautement redondant et donc propice à la compression) qu'il décompresse et hache au fur et à mesure pour répondre aux requêtes de hachage du vérificateur. Une telle solution est par exemple décrite dans l'article « Oblivious Hashing: A Stealthy SoftwareA first software solution is to ask the examined device to chop all or part of its memory. Such an approach is insufficient because one could perfectly imagine that the malicious code has compressed the operating system (any executable code is highly redundant and therefore conducive to compression) that it decompresses and chops as and when to answer hash requests from the verifier. Such a solution is for example described in the article "Oblivious Hashing: A Stealthy Software
Integrity Vérification Primitive », par Yuqun Chen, Ramarathnam Venkatesan, MatthewIntegrity Verification Primitive ", by Yuqun Chen, Ramarathnam Venkatesan, Matthew
Cary, Ruoming Pang, Saurabh Sinha et Mariusz H. Jakubowski, Proceedings of 5th Cary, Ruoming Pang, Saurabh Sinha and Mariusz H. Jakubowski, Proceedings of 5 th
International Workshop on Information Hiding, Noordwijkerhout, The Netherlands, October 2002. Lecture Notes in Computer Science, No. 2578, Springer-Verlag, 2003.International Workshop on Information Hiding, Noordwijkerhout, The Netherlands, October 2002. Reading Notes in Computer Science, No. 2578, Springer-Verlag, 2003.
Une seconde solution consiste à signer par un algorithme de signature numérique le code initialement présent à bord de l'appareil à vérifier. Cette approche suppose que le code déjà présent à bord de l'appareil est digne de confiance. Cette solution est par exemple préconisée par le consortium Trusted Computing Group dont le site Internet est https://www.trustedcomputinggroup.org/home.A second solution consists in signing by a digital signature algorithm the code initially present on board the device to be checked. This approach assumes that the code already on board the device is trustworthy. This solution is for example recommended by the Trusted Computing Group consortium whose website is https://www.trustedcomputinggroup.org/home.
L'invention fournit une solution au problème de la vérification de la conformité d'un appareil informatique à un contenu logique ou état de référence. L'invention suppose uniquement la connaissance des spécifications matérielles de l'appareil vérifié.The invention provides a solution to the problem of verifying the compliance of a computing device with a logical content or reference state. The invention assumes only knowledge of the hardware specifications of the verified device.
Dans certains modes de réalisation, l'invention permet de s'assurer qu'un code donné est chargé de manière exacte sur un appareil dont les spécifications matérielles sont connues. Ces modes de réalisation ne supposent pas que l'appareil à vérifier contienne des secrets spécifiques, ni un code déjà supposé sûr; ils ne supposent pas non plus l'existence d'un mécanisme matériel permettant d'assurer une prise en main privilégiée de l'appareil. Dans un mode de mise en œuvre, l'invention propose un procédé de vérification de la conformité du contenu logique d'un appareil informatique à un contenu de référence, l'appareil informatique présentant un processeur, une mémoire dans laquelle le processeur peut lire et écrire, et un dispositif d'entrée sortie permettant un dialogue entre le processeur de l'appareil et le monde extérieur, le procédé comprenant les étapes suivantesIn some embodiments, the invention makes it possible to ensure that a given code is loaded exactly on an apparatus whose hardware specifications are known. These embodiments do not assume that the apparatus to be verified contains specific secrets, nor a code already assumed safe; they also do not assume the existence of a hardware mechanism to ensure a privileged grip of the device. In one embodiment, the invention proposes a method of verifying the conformity of the logical content of a computing device with a reference content, the computing device having a processor, a memory in which the processor can read and write, and an input input device allowing a dialogue between the processor of the apparatus and the outside world, the method comprising the following steps
- envoi à l'appareil d'une demande de chargement dans la mémoire et d'exécution d'un programme de vérification P, le programme de vérification étant capable d'écrire des données dans la mémoire de l'appareil et de lire des données dans la mémoire pour les envoyer vers le dispositif d'entrée sortie; - envoi à l'appareil d'une demande d'exécution du programme P pour saturer Ia mémoire disponible non occupée par le programme;sending to the apparatus a request for loading into the memory and executing a verification program P, the verification program being able to write data into the memory of the apparatus and to read data; in the memory to send them to the input input device; sending a request to execute the program P to saturate the available memory not occupied by the program;
- échange de messages avec l'appareil exécutant le programme et vérification de la conformité du contenu logique de l'appareil en fonction des messages échangés avec l'appareil. Dans d'autres modes de réalisation, le procédé peut présenter une ou plusieurs des caractéristiques suivantes : la vérification de la conformité s'effectue en fonction du contenu des messages échangés avec l'appareil; la vérification de la conformité s'effectue en fonction de la mesure du cadencement dans le temps des messages échangés avec l'appareil;- exchange of messages with the device running the program and verification of the conformity of the logical contents of the device according to the messages exchanged with the device. In other embodiments, the method may have one or more of the following features: the verification of conformity is made according to the content of the messages exchanged with the apparatus; the verification of the conformity is carried out according to the measurement of the timing in the time of the messages exchanged with the apparatus;
- le programme de vérification P comprend des instructions de lecture supplémentaires, provoquant une activité accrue sur le dispositif d'entrée sortie;- The verification program P includes additional reading instructions, causing increased activity on the input device output;
- le procédé comprend une étape de preuve de la vérification de la conformité par une technique de retour arrière appliquée au jeu d'instructions exécutable par le processeur; - l'étape de preuve de la conformité par une technique de retour arrière comprend l'évaluation des différentes instructions candidates de manière concrète;the method comprises a step of proving the verification of conformity by a backtracking technique applied to the set of instructions executable by the processor; the step of proof of conformity by a backtracking technique comprises the evaluation of the different candidate instructions in a concrete manner;
- l'étape de preuve de la conformité par une technique de retour arrière comprend l'évaluation des différentes instructions candidates de manière abstraite;the step of proof of conformity by a backtracking technique comprises the evaluation of the different candidate instructions in an abstract manner;
- le procédé comprend une étape de preuve de la vérification de la conformité par une recherche exhaustive des programmes possibles appliquée au jeu d'instructions exécutables par le processeur; la demande de chargement dans la mémoire comprend une demande de chargement du programme de vérification P dans la mémoire à partir du dispositif d'entrée sortie; la demande de chargement dans la mémoire comprend une demande d'activation d'un programme de vérification P contenu dans l'appareil;the method comprises a step of proving the verification of conformity by an exhaustive search of the possible programs applied to the set of instructions executable by the processor; the load request in the memory includes a request to load the verification program P into the memory from the input input device; the request for loading into the memory includes a request to activate a verification program P contained in the device;
- l'exécution du programme P pour saturer la mémoire disponible comprend la lecture de données de bourrage depuis le dispositif d'entrée sortie et l'écriture des données de bourrage dans la mémoire;the execution of the program P to saturate the available memory comprises reading stuffing data from the input input device and writing the stuffing data in the memory;
- l'exécution du programme P pour saturer la mémoire disponible comprend la lecture d'un problème depuis le dispositif d'entrée sortie et la résolution par le programme de vérification P du problème en utilisant la mémoire disponible; l'exécution du programme P pour saturer la mémoire disponible comprend la lecture d'une graine depuis le dispositif d'entrée sortie et l'expansion de la graine en utilisant la mémoire disponible;the execution of the program P to saturate the available memory comprises the reading of a problem from the input-output device and the resolution by the verification program P of the problem using the available memory; executing the program P to saturate the available memory includes reading a seed from the input input device and expanding the seed using the available memory;
- l'échange de messages comprend : l'envoi à l'appareil d'une demande de lecture de données de la mémoire et la réception depuis l'appareil des données lues dans la mémoire, y compris le code du programme de vérification;the message exchange comprises: sending to the apparatus a request for reading data from the memory and receiving from the apparatus data read from the memory, including the code of the verification program;
- le programme de vérification est capable d'exécuter une fonction sur des données de la mémoire, et l'échange de message comprend : l'envoi à l'appareil d'une demande d'exécution de la fonction et de lecture de données de Ia mémoire; et la réception depuis l'appareil du résultat de la fonction et du code du programme de vérification lue dans la mémoire.the verification program is capable of executing a function on data in the memory, and the message exchange comprises: sending to the apparatus a request to execute the function and to read data from Memory; and receiving from the apparatus the result of the function and the code of the verification program read from the memory.
- la fonction exécutée sur les données comprend le calcul de hachage des données de la mémoire autres que le code du programme de vérification; l'exécution du programme P pour saturer la mémoire disponible comprend la lecture d'un problème depuis le dispositif d'entrée sortie et la résolution du problème en utilisant la mémoire disponible, l'échange de message comprenant : l'envoi à l'appareil d'un problème; et la réception depuis l'appareil du résultat du problème et du code du programme de vérification lue dans la mémoire. - le code du programme de vérification comprend des instructions de relecture du code vers le dispositif d'entrée sortie; l'exécution du programme de vérification provoque l'effacement de la mémoire, à l'exclusion du code du programme de vérification. Dans un autre mode de réalisation, l'invention propose un procédé de restauration d'un appareil informatique présentant un processeur, une mémoire dans laquelle Ie processeur peut lire et écrire, et un dispositif d'entrée sortie permettant un dialogue entre le processeur de l'appareil et le monde extérieur, le procédé comprenant les étapes de - sauvegarde vers le monde extérieur des données présentes dans la mémoire;the function performed on the data comprises the hash calculation of the data of the memory other than the code of the verification program; the execution of the program P to saturate the available memory includes reading a problem from the input-output device and solving the problem using the available memory, the message exchange comprising: sending to the device a problem; and receiving from the apparatus the result of the problem and the code of the verification program read from the memory. the code of the verification program includes instructions for reading the code to the input-output device; the execution of the verification program causes the erasure of the memory, excluding the code of the verification program. In another embodiment, the invention provides a method of restoring a computing device having a processor, a memory in which the processor can read and write, and an input input device allowing dialogue between the processor of the processor. apparatus and the outside world, the method comprising the steps of: - saving to the outside world of the data present in the memory;
- vérification de la conformité du contenu logique de l'appareil informatique à un contenu de référence, suivant le procédé décrit plus haut; analyse et le cas échéant traitement des données sauvegardées et- checking the conformity of the logical content of the computer device to a reference content, according to the method described above; analysis and where appropriate treatment of the data saved and
- recopie des données analysées dans la mémoire de l'appareil. Dans encore un autre mode de réalisation, l'invention propose un appareil informatique, comprenant un processeur, une mémoire dans laquelle le processeur peut lire et écrire, un dispositif d'entrée sortie permettant un dialogue entre le processeur de l'appareil et le monde extérieur et un programme de vérification stocké dans l'appareil, le programme de vérification comprenant des instructions adaptées à provoquer, lorsqu'il est exécuté par le processeur, - l'écriture de données dans la mémoire de l'appareil et- Copy of the analyzed data into the memory of the device. In yet another embodiment, the invention proposes a computing device, comprising a processor, a memory in which the processor can read and write, an input input device allowing a dialogue between the processor of the device and the world. external and a verification program stored in the device, the verification program including instructions adapted to cause, when executed by the processor, - the writing of data in the memory of the device and
- la lecture des données dans la mémoire, y-compris le code du programme de vérification, pour les envoyer vers le dispositif d'entrée sortie.reading the data in the memory, including the code of the verification program, to send them to the input input device.
Dans un dernier mode de réalisation, l'invention propose un dispositif informatique, comprenant - un premier sous-ensemble présentant un processeur, une mémoire dans laquelle le processeur peut lire et écrire, et un dispositif d'entrée sortie; un deuxième sous-ensemble, le deuxième sous-ensemble étant adapté à dialoguer avec le processeur du premier sous-ensemble à travers le dispositif d'entrée sortie et à vérifier la conformité de l'état logique du premier sous-ensemble suivant le procédé mentionnée plus haut.In a final embodiment, the invention provides a computing device, comprising - a first subset having a processor, a memory in which the processor can read and write, and an input input device; a second subassembly, the second subassembly being adapted to interact with the processor of the first subassembly through the input input device and to check the conformity of the logic state of the first subassembly according to the mentioned method upper.
D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit des modes de réalisation de l'invention, donnés à titre d'exemple uniquement et en références aux dessins qui montrent : figure 1, une représentation schématique d'un appareil, dont l'on souhaite vérifier l'état logique; figure 2, un ordinogramme d'un premier exemple de mise en œuvre du procédé de l'invention;Other characteristics and advantages of the invention will appear on reading the following detailed description of the embodiments of the invention, given by way of example only and with reference to the drawings which show: FIG. 1, a diagrammatic representation a device, which one wishes to check the logical state; FIG. 2 is a flowchart of a first example of implementation of the method of the invention;
- figure 3, un ordinogramme d'un second exemple de mise en œuvre du procédé de l'invention. figure 4, un ordinogramme d'un procédé de restauration de l'état d'un appareil informatique; - figure 5, un schéma fonctionnel d'un dispositif à l'intérieur duquel est mis en œuvre le procédé de la figure 2 ou 3. La figure 1 montre une vue schématique d'un appareil informatique. Comme expliqué plus haut, l'appareil 2 présente un processeur 4, une mémoire 6 et un dispositif d'entrée sortie 8. Le processeur 4 est capable d'écrire dans la mémoire 6 et de lire à partir de cette mémoire. Le processeur 4 est aussi capable d'exécuter du code exécutable stocké dans la mémoire 6. Le processeur 4 est encore capable de recevoir des informations depuis le dispositif d'entrée sortie et d'émettre des informations vers l'extérieur via le dispositif d'entrée sortie. On n'a représenté sur la figure 1 que les éléments fonctionnels nécessaires à Ia mise en œuvre de l'invention; en particulier, l'appareil peut présenter une mémoire spécifique contenant le système d'exploitation, comme dans les puces Flash mentionnées plus haut à titre d'exemple; la mémoire 6 est donc la mémoire offerte à l'utilisateur de l'appareil pour le chargement de données, de paramètres ou de codes exécutable par le processeur.- Figure 3, a flow chart of a second example of implementation of the method of the invention. Figure 4 is a flowchart of a method of restoring the state of a computing device; - Figure 5, a block diagram of a device within which is implemented the method of Figure 2 or 3. Figure 1 shows a schematic view of a computer apparatus. As explained above, the apparatus 2 has a processor 4, a memory 6 and an input input device 8. The processor 4 is able to write to the memory 6 and read from this memory. The processor 4 is also capable of executing executable code stored in the memory 6. The processor 4 is still capable of receiving information from the input input device and transmitting information to the outside via the device. enter exit. FIG. 1 only shows the functional elements necessary for the implementation of the invention; in particular, the device may have a specific memory containing the operating system, as in the Flash chips mentioned above as an example; the memory 6 is the memory offered to the user of the device for loading data, parameters or codes executable by the processor.
Les différents éléments de l'appareil de la figure 1 sont des éléments fonctionnels, et diverses solutions matérielles peuvent être utilisées pour les implémenter. Pour ce qui est du processeur, on peut utiliser des processeurs du commerce, comme 68HC05 ou 80C51, ou encore les puces Flash mentionnées plus haut. Pour ce qui est de la mémoire, on peut utiliser de la mémoire Flash une mémoire magnétique ou une mémoire EEPPROM sous une forme quelconque. La forme particulière que présente le dispositif d'entrée sortie est indifférente. Dans l'exemple d'une carte à puce, le dispositif d'entrée sortie est capable de lire les signaux appliqués sur le port série de la carte; dans l'exemple d'une carte à puce sans contact, le dispositif d'entrée sortie comprend une antenne et les circuits adaptés à décoder les signaux reçus sur l'antenne. Dans l'exemple d'un terminal de paiement, les différents éléments fonctionnels de la figure 1 sont typiquement composés de d'un microprocesseur 32 bits, d'un port séries et d'une mémoire Flash.The different elements of the apparatus of Figure 1 are functional elements, and various hardware solutions can be used to implement them. As for the processor, it is possible to use commercial processors, such as 68HC05 or 80C51, or the Flash chips mentioned above. As far as memory is concerned, Flash memory can be used to store magnetic memory or EEPPROM memory in any form. The particular shape of the input input device is indifferent. In the example of a smart card, the input input device is able to read the signals applied to the serial port of the card; in the example of a contactless smart card, the output input device comprises an antenna and the circuits adapted to decode the signals received on the antenna. In the example of a payment terminal, the various functional elements of FIG. 1 are typically composed of a 32-bit microprocessor, a serial port and a flash memory.
Comme indiqué plus haut, outre une carte à puce ou un terminal de paiement, l'appareil peut être un ordinateur de type PC ou autre, un assistant numérique personnel, un terminal de télévision à péage, ou tout autre appareil présentant la structure schématique de la figure 1.As indicated above, in addition to a smart card or a payment terminal, the apparatus may be a PC-type computer or the like, a personal digital assistant, a pay-TV terminal, or any other device having the schematic structure of the device. Figure 1.
Le procédé de vérification de l'invention suppose connues les spécifications matérielles de l'appareil 2. Dans l'exemple de la figure 2, il suffit de connaître la capacité de la mémoire 6 de l'appareil. Dans l'exemple de la figure 3, le procédé nécessite de connaître aussi les caractéristiques temporelles du processeur de l'appareil, typiquement le nombre de cycles d'horloge nécessaires à l'exécution de chaque instruction.The verification method of the invention assumes known the hardware specifications of the device 2. In the example of Figure 2, it is sufficient to know the capacity of the memory 6 of the device. In the example of FIG. 3, the method also requires to know the time characteristics of the processor of the apparatus, typically the number of clock cycles required to execute each instruction.
La figure 2 est un ordinogramme d'un premier mode de mise en œuvre du procédé de l'invention. Dans ce mode de mise en œuvre, l'invention exploite le fait que l'exécution d'un programme malicieux, qui simulerait le fonctionnement "normal" de l'appareil 2, suppose que des ressources mémoires soient disponibles. L'invention propose donc de demander à l'appareil d'exécuter un programme de vérification apte à dialoguer avec le monde extérieur et de saturer la mémoire de l'appareil avant le dialogue. En l'absence de programme malicieux, le dialogue avec le monde extérieur s'effectuera de façon attendue; si un programme malicieux est présent et tente de simuler l'exécution du programme de vérification, l'absence de ressources mémoire conduira à ce que le dialogue avec le monde extérieur ne s'effectue pas de la façon attendue.Figure 2 is a flow chart of a first embodiment of the method of the invention. In this embodiment, the invention exploits the fact that the execution of a malicious program, which simulates the "normal" operation of the apparatus 2, assumes that memory resources are available. The invention therefore proposes to ask the device to execute a verification program able to interact with the outside world and to saturate the memory of the device before the dialogue. In the absence of a malicious program, the dialogue with the outside world will take place in an expected manner; if a malicious program is present and tries to simulate the execution of the verification program, the absence of memory resources will lead to the dialogue with the outside world not taking place in the expected way.
A l'étape 10, on demande à l'appareil 2 de charger dans la mémoire 6 un programme de vérification, noté P dans la suite, et de l'exécuter. Le chargement peut s'effectuer par le biais du dispositif d'entrée-sortie, en écrivant le programme dans la mémoire 6. On peut aussi prévoir un programme de vérification P dormant — stocké dans le dispositif vérifié par ailleurs; dans ce cas, il n'est pas nécessaire de le charger par l'intermédiaire du dispositif d'entrée-sortie et il suffit de le remonter vers la mémoire 6. Le mot "chargement" doit donc s'entendre comme couvrant non seulement une écriture dans la mémoire 6 du programme à travers le dispositif d'entrée sortie 8, mais aussi une écriture dans la mémoire 6 d'un programme déjà contenu dans l'appareil 2.In step 10, the apparatus 2 is instructed to load in the memory 6 a verification program, noted P in the following, and to execute it. The loading can be carried out via the input-output device, by writing the program in the memory 6. It is also possible to provide a dormant verification program - stored in the device verified elsewhere; in this case, it is not necessary to load it via the input-output device and it is sufficient to go back to the memory 6. The word "loading" must therefore be understood as covering not only a writing in the memory 6 of the program through the input device output 8, but also a writing in the memory 6 of a program already contained in the device 2.
Le programme P de vérification, lorsqu'il est exécuté, permet d'écrire des données dans la mémoire 6; dans le mode de réalisation décrit en référence à la figure 2, l'écriture des données consiste à écrire dans la mémoire 6 des données reçues sur le dispositif d'entrée sortie 8. On donne plus loin d'autres modes d'écriture des données dans la mémoire.The verification program P, when executed, makes it possible to write data into the memory 6; in the embodiment described with reference to FIG. 2, the writing of the data consists in writing in the memory 6 of the data received on the input-output device 8. Other ways of writing data are given below. in the memory.
Le programme P permet aussi, lorsqu'il est exécuté, de lire le contenu de la mémoire pour l'envoyer vers le dispositif d'entrée sortie.The program P also allows, when executed, to read the contents of the memory to send it to the input device output.
A l'issue de l'étape 10, il n'existe encore aucune certitude que l'appareil a correctement chargé et exécuté le programme P. Tel est le cas si, en l'absence de tout programme malicieux, l'appareil se comporte de façon "normale". L'appareil peut comporter un programme malicieux tentant de simuler le fonctionnement "normal" : l'appareil, du fait de ce programme malicieux, peut essayer de se comporter comme si le programme P avait été chargé mais ne pas le charger correctement ou en charger seulement une partie ou encore s'abstenir de l'exécuter. Aux étapes 12 à 18, on utilise le programme P pour entreprendre un protocole de vérification avec l'appareil. Ce protocole a pour objectif de tester le fonctionnement de l'appareil pour permettre de conclure, avec certitude que l'appareil est « propre », c'est-à-dire qu'il ne comporte pas de programme malicieux ou de conclure avec certitude que l'appareil est infecté, c'est-à-dire qu'il comporte un code malicieux.At the end of step 10, there is still no certainty that the device has correctly loaded and executed the program P. Such is the case if, in the absence of any malicious program, the device behaves in a "normal" way. The device may have a malicious program trying to simulate "normal" operation: the device, because of this malicious program, may try to behave as if the program P had been loaded but not to load it correctly or to load it only a part or abstain from performing it. In steps 12 to 18, program P is used to undertake a verification protocol with the apparatus. This protocol aims to test the operation of the device to allow to conclude, with certainty that the device is "clean", that is to say that it has no malicious program or to conclude with certainty that the device is infected, that is to say it has a malicious code.
A l'étape 12, on utilise le programme P pour saturer la mémoire 6 de l'appareil, avec un bloc de données aléatoires ou non aléatoires, noté R. La saturation consiste à remplir Ia mémoire 6, à l'exception de la partie de la mémoire 6 dans laquelle est stockée le programme P. Dans l'exemple de la figure 2, cette saturation s'effectue simplement en appliquant sur l'entrée sortie de l'appareil 2 des données aléatoires, notées R dans la suite; les données R sont écrites dans la mémoire 6 du fait de l'exécution du programme P. Alternativement, il n'est pas exclu que R soit constitué de données fixes et/ou non-aléatoires déjà présentes au sein de l'appareil vérifié ou de données provenant du monde extérieur.In step 12, the program P is used to saturate the memory 6 of the apparatus, with a block of random or non-random data, denoted R. The saturation consists in filling the memory 6, with the exception of the part of the memory 6 in which the program P is stored. In the example of FIG. 2, this saturation is carried out simply by applying random data, noted R in the following, to the input input of the apparatus 2; the data R is written in the memory 6 because of the execution of the program P. Alternatively, it is not excluded that R consists of fixed and / or non-random data already present within the verified device or data from the outside world.
Aux étapes 14 à 16, on échange des messages avec l'appareil à vérifier. L'étape 14 est l'application à l'appareil d'une demande d'exécution du programme P pour lire le contenu de la mémoire 6. A l'étape 16, on reçoit depuis l'appareil le contenu de la mémoire 6 ou une donnée dont la valeur est liée au contenu de la mémoire. Nous entendrons donc par « contenu de la mémoire » toute donnée dont la valeur est liée et/ou égale au contenu de la mémoire.In steps 14 to 16, messages are exchanged with the device to be verified. Step 14 is the application to the apparatus of a request to execute the program P to read the contents of the memory 6. In step 16, the contents of the memory 6 or data whose value is related to the contents of the memory. We will therefore understand by "memory content" any data whose value is related to and / or equal to the content of the memory.
A l'étape 18, on compare le contenu de la mémoire 6 reçu depuis l'appareil 2 aux données aléatoires R attendues et au code du programme P et plus généralement à toute trace d'exécution normale qu'aurait résulté de l'exécution de P si les conditions étaient normales.In step 18, the content of the memory 6 received from the apparatus 2 is compared with the expected random data R and with the code of the program P and more generally with any trace of normal execution that would have resulted from the execution of P if the conditions were normal.
Si le contenu de la mémoire 6 reçu depuis l'appareil correspond aux données R et au code du programme P, on conclut à l'étape 20 que l'appareil est "propre" et ne comprend pas de programme malicieux. A l'inverse, si tel n'est pas le cas, on conclut à l'étape 22 que l'appareil n'est pas dans un état conformé à l'état de référence.If the content of the memory 6 received from the apparatus corresponds to the data R and the code of the program P, it is concluded in step 20 that the apparatus is "clean" and does not include a malicious program. Conversely, if this is not the case, it is concluded in step 22 that the apparatus is not in a state conformed to the reference state.
La comparaison de l'étape 18 repose sur le fait que P est le seul programme capable à la fois :The comparison of step 18 is based on the fact that P is the only program capable of:
- de tenir dans l'espace restant dans la mémoire après le chargement des données R et- to fit in the remaining space in the memory after loading the data R and
- capable d'un comportement consistant à retourner au vérifieur extérieur les données R et le code de P.- capable of a behavior consisting in returning to the external verifier the data R and the code of P.
Ce fait résulte d'une part de la saturation de la mémoire 6; un programme malicieux qui serait présent sur l'appareil pour simuler son fonctionnement normal devrait utiliser une partie de la mémoire 6; il devrait donc simuler le chargement dans la mémoire des données R, pour ensuite les restituer. Or ceci est d'autant plus difficile que les données R sont aléatoires, comme mentionné plus haut, ou pseudo-aléatoires. Au cas où les données R ne seraient pas aléatoires le vérifîeur devrait s'assurer (prouver à lui-même) ou faire l'hypothèse qu'un potentiel programme malicieux est incapable de simuler la restitution correcte de ces données non aléatoires. Ceci résulte ensuite de la taille du programme P. Il est avantageux que le programme P présente une taille aussi faible que possible, pour rendre impossible en pratique récriture d'une programme simulant son fonctionnement. Dans l'exemple proposé plus loin, le programme P présente une taille de 23 octets. Une taille de moins de 50 octets constitue en pratique une taille faible, rendant extrêmement difficile, voire impossible l'écriture d'un programme ayant le même fonctionnement.This fact results on the one hand from the saturation of the memory 6; a malicious program that would be present on the device to simulate its normal operation should use part of the memory 6; it should simulate the loading in the memory of the data R, and then restore them. But this is all the more difficult as the data R are random, as mentioned above, or pseudo-random. In case the R data would not be random, the verifier should make sure (prove to himself) or make the assumption that a potential malicious program is unable to simulate the correct restitution of these non-random data. This then results from the size of the program P. It is advantageous that the program P has a size as small as possible, to make it impossible in practice to rewrite a program simulating its operation. In the example proposed below, the program P has a size of 23 bytes. A size of less than 50 bytes is in practice a small size, making it extremely difficult or impossible to write a program having the same operation.
Enfin ceci résulte du fait que l'échange de messages avec l'appareil comprend aussi la lecture du code du programme P.Finally, this results from the fact that the exchange of messages with the apparatus also comprises the reading of the code of the program P.
Ainsi, du fait de la saturation de la mémoire disponible, un programme malicieux ne peut pas disposer des ressources mémoire nécessaires pour simuler le fonctionnement "normal" de l'appareil dans les différentes étapes du procédé de la figure 2.Thus, due to the saturation of the available memory, a malicious program can not have the memory resources necessary to simulate the "normal" operation of the device in the different steps of the method of FIG.
Un premier exemple de programme P est donné ci-dessous. Ce programme est écrit en assembleur 68HC05.A first example of program P is given below. This program is written in assembler 68HC05.
Example1.asm portA equ $80 I/O port location ddrA equ $81 data direction register (ddr) location org $0080 program starts at address 0x80 dw $0000 initialise ddr in input mode start: clr ddra ddr in input mode upon resetExample1.asm portA equ $ 80 I / O port rental ddrA equ $ 81 data direction register (ddr) location org $ 0080 program starts at address 0x80 dw $ 0000 initializes ddr in input mode start: clr ddra ddr in input mode reset
Idx portA read command beq read if command is zéro then read ail code out write: else fill memory with incoming dataIdx portA read command beq read if command is zero then read garlic code out write
Ida portA read byte presented by external world sta portA, X store it at location X bra start ask for next byte read: com ddra if command nonzero make portA outputIda portA read byte presented by external world sta portA, X store it at location X bra start ask for next byte read: com ddra if command nozero make portA output
Ll: Ida portA, X load code value, no need to set X=O (done) sta portA send it out incx incrément index bne Ll from program first byte to last bra start from program first byte to last org : ?lffE dw start indicate to chip where program startsLl: Ida portA, X load code value, no need to set X = O (done) sta portA send it out incx index index bne Ll from program first byte to last start from program first byte to last org:? LffE dw start point to where program starts
Tant que la commande appliquée est nulle, le programme procède à la lecture de la mémoire - y compris la lecture de son propre code. Si la commande n'est pas nulle, le programme écrit dans la toute la mémoire disponible, en dehors de la position qu'il occupe. Le procédé de l'invention est donc mis en œuvre : - en demandant à l'appareil d'exécuter de charger le programme Exemplel .asm ci-dessus dans sa mémoire puis de l'exécuter;As long as the command applied is null, the program proceeds to read the memory - including the reading of its own code. If the command is not null, the program writes in all available memory, outside the position it occupies. The method of the invention is therefore implemented: - by asking the device to execute to load the program Exemplel .asm above in its memory then to execute it;
- en appliquant une commande non nulle et des données de bourrage en quantité suffisante pour remplir la mémoire disponible (le vérifieur peut éviter un tel chargement à partir du moment où il vérifie que les données R déjà présentes à bord ne permettent pas à un programme malicieux de simuler un comportement correct - sous réserve d'une telle preuve ou d'une telle hypothèse des données R déjà présentes à bord peuvent être utilisées); on rappelle ici que l'on est supposé connaître les spécifications matérielles de l'appareil, notamment la taille mémoire; - en appliquant une commande nulle pour provoquer la lecture de l'ensemble des données contenues dans la mémoire.by applying a non-zero command and stuffing data in sufficient quantity to fill the available memory (the verifier can avoid such loading from the moment when he verifies that the R data already on board do not allow a malicious program to simulate correct behavior - subject to such proof or assumption of R data already on board may be used); it is recalled here that one is supposed to know the material specifications of the apparatus, in particular the memory size; - By applying a null command to cause the reading of all the data contained in the memory.
A l'exécution, ce programme Exemplel. asm produira la suite 00FF3F81 BE802706 B680E780 20F43381 E680B780 5C26F920 E9 {bloc aléatoire R} L'exemple proposé ci-dessus montre qu'il est possible de générer des codes ayant le fonctionnement requis et retournant à la lecture les informations attendues.At runtime, this program Exemplel. asm will produce the sequence 00FF3F81 BE802706 B680E780 20F43381 E680B780 5C26F920 E9 {random block R} The example proposed above shows that it is possible to generate codes having the required operation and returning the expected information to the reading.
Le procédé décrit en référence à la figure 2 présente l'avantage de n'impliquer que la connaissance de la capacité de la mémoire 6 de l'appareil 2, de sorte à assurer une saturation de la mémoire. Si l'on connaît aussi les caractéristiques temporelles du processeur 4 de l'appareil, on peut aussi mesurer le temps - en nombre de cycles d'horloges du processeur - nécessaire pour retourner les données R ainsi que le code du programme P.The method described with reference to Figure 2 has the advantage of involving only the knowledge of the capacity of the memory 6 of the device 2, so as to ensure a saturation of the memory. If one also knows the temporal characteristics of the processor 4 of the apparatus, one can also measure the time - in number of clock cycles of the processor - necessary to return the data R as well as the code of the program P.
Ainsi le vérifieur peut chronométrer le nombre de cycles d'horloge séparant le retour des différents octets composant la donnée retournée « R et le code de P » et ne conclure que l'appareil M est « propre » que si les octets de la donnée « R et le code de P » sont retournés au rythme prévisible, étant données les spécifications du processeur de l'appareil M.Thus, the verifier can time the number of clock cycles separating the return of the different bytes composing the returned data "R and the code of P" and conclude that the apparatus M is "clean" only if the bytes of the data " R and P 'code are returned to predictable timing, given the processor specifications of the apparatus M.
La figure 3 montre le procédé correspondant; la figure 3 est identique à la figure 2, à l'exception de l'étape 19, de vérification du cadencement temporel des messages échangés avec l'appareil. Si le cadencement des messages n'est pas celui attendu, le vérificateur conclut à l'étape 26 que le contenu logique de l'appareil n'est pas conforme au contenu attendu. Sinon, l'appareil est dans un état logique conforme à l'état de référence (étape 28). Dans la représentation de la figure 3, l'étape 19 de vérification du cadencement des messages échangés avec l'appareil suit l'étape 18. Il ne s'agit que d'une représentation schématique, l'ordre des vérifications étant sans incidence. Cette vérification du cadencement des échanges rend encore plus difficile la simulation du comportement du programme P par un programme malicieux.Figure 3 shows the corresponding method; Figure 3 is identical to Figure 2, except for step 19, checking the timing of messages exchanged with the device. If the timing of the messages is not that expected, the verifier concludes in step 26 that the logical content of the device does not comply with the expected content. Otherwise, the apparatus is in a logical state in accordance with the reference state (step 28). In the representation of FIG. 3, the step 19 of verifying the timing of the messages exchanged with the apparatus follows step 18. This is only a schematic representation, the order of the verifications being irrelevant. This verification of the timing of the exchanges makes it even more difficult to simulate the behavior of the program P by a malicious program.
En outre, il est possible de prouver de manière formelle en utilisant une technique dite de backtracking (ou retour arrière en langue française) qu'un code donné est le seul capable de restituer au vérifieur R et son propre code en un délai et/ou un rythme précis. Cette technique de backtracking est connue en soi par l'homme du métier et est décrite par exemple dans : http://www.cis.upenn.edu/~matuszek/cit594-2002/Pages/backtracking.html; elle n'est donc pas décrite plus en détail. Alors que la certitude de la conformité est empirique dans le procédé de la figure 2, le procédé de la figure 3 permet une démonstration formelle de l'impossibilité de fournir un programme malicieux simulant le fonctionnement du programme de vérification P.In addition, it is possible to prove in a formal way by using a technique known as backtracking (or backtracking in French) that a given code is the only one capable of returning to the verifier R and its own code in a delay and / or a precise rhythm. This backtracking technique is known per se by those skilled in the art and is described for example in: http://www.cis.upenn.edu/~matuszek/cit594-2002/Pages/backtracking.html; it is therefore not described in more detail. While the certainty of conformity is empirical in the method of FIG. 2, the method of FIG. 3 allows a formal demonstration of the impossibility of providing a malicious program simulating the operation of the verification program P.
Afin de faciliter cette preuve, il est avantageux de parsemer la boucle de relecture d'octets d'instructions supplémentaires de retour d'octets ayant pour but de contraindre davantage tout programme malicieux, comme illustré dans l'exemple suivant :In order to facilitate this proof, it is advantageous to parse the byte replay loop of additional byte return instructions to further constrain any malicious program, as shown in the following example:
Ll : LDA PORTA, X ; LOAD CODE VALUE 4 CYCLESLl: LDA PORTA, X; LOAD CODE VALUE 4 CYCLES
STA PORTA ; SEND IT OUT 4 CYCLESSTA PORTA; SEND IT OUT 4 CYCLES
INCX ; INCREMENT INDEX 3 CYCLESINCX; INCREMENT INDEX 3 CYCLES
BNE Ll 3 CYCLESBNE LL 3 CYCLES
Le fragment de code précédent retourne un octet chaque 14 cycles machine. La démonstration formelle utilisable dans le procédé de la figure 3 consiste à prouver qu'aucune séquence d'instructions de 14 cycles au plus est capable de générer la séquence attendue en temps et en heure.The preceding code fragment returns one byte every 14 machine cycles. The formal demonstration that can be used in the method of FIG. 3 consists in proving that no sequence of instructions of at most 14 cycles is capable of generating the expected sequence in time.
Pour rendre encore plus difficile la réalisation d'un programme malicieux - ou simplifier la démonstration formelle, on peut en outre parsemer la boucle de relecture avec des opérations de retour d'informations afin de réduire cette durée de 14 cycles séparant l'envoi des caractères successifs de la séquence « R et code de P » autant que possible. Par exemple :To make it even more difficult to carry out a malicious program - or to simplify the formal demonstration - the replay loop can also be sprinkled with feedback operations to reduce the 14-cycle time between sending the characters. successive sequence "R and P code" as much as possible. For example :
Ll : COM PORTA AMELIORATION DELAIS 5 CYCLESLl: COM PORTA ENHANCEMENT DELAY 5 CYCLES
LDA PORTA, X LOAD CODE VALUE CYCLESPORTA LDA, X LOAD CODE VALUE CYCLES
STA PORTA SEND IT OUT CYCLESSTA PORTA SEND IT OUT CYCLES
INCX INCREMENT INDEX CYCLESINCX INCREMENT INDEX CYCLES
STX PORTA AMELIORATION DELAIS CYCLESSTX PORTA IMPROVEMENT DELAY CYCLES
BNE Ll CYCLES Dans cet exemple, on remarque que le programme malicieux ne dispose plus que 8, 7 ou 8 cycles pour générer chacun des octets la séquence « R et code de P ». Ceci permet d'explorer de manière automatisée les codes permettant de générer des séquences et cribler ces codes l'un après l'autre par le biais d'un procédé dit de backtracking, dans la mesure où l'on souhaite disposer d'une vérification formelle de l'impossibilité de construire un code malicieux.BNE Ll CYCLES In this example, we note that the malicious program has only 8, 7 or 8 cycles to generate each byte sequence "R and code P". This makes it possible to automatically explore the codes making it possible to generate sequences and to screen these codes one after the other by means of a so-called backtracking process, insofar as one wishes to have a verification formal impossibility of constructing a malicious code.
L'on notera qu'il ne s'agit pas de recherche exhaustive de tous les codes possibles car dès qu'un code C s'écarte des contraintes de temps imposées tous les codes plus longs ayant C comme fragment ou préfixe sont éliminés. On peut, pour la vérification par backtracking, évaluer les différentes instructions candidates de manière concrète ou abstraite (symbolique). Les avantages d'une évaluation concrète sont une plus grande facilité de programmation. Les avantages d'une vérification symbolique sont une plus grande efficacité malgré une plus grande complexité de programmation. L'annexe 1 à la présente description présente le code source d'une procédure de preuve de code permettant un procédé de backtracking adapté spécialement à la présente invention.It should be noted that this is not an exhaustive search of all the possible codes because as soon as a code C deviates from the imposed time constraints all the longer codes having C as fragment or prefix are eliminated. For the backtracking verification, it is possible to evaluate the different candidate instructions in a concrete or abstract (symbolic) way. The advantages of a concrete evaluation are a greater ease of programming. The advantages of symbolic verification are greater efficiency despite greater programming complexity. Appendix 1 to this disclosure presents the source code of a code proofing procedure for a backtracking method specifically adapted to the present invention.
L'annexe 2 h la présente description donne, pour l'exemple de programme Exemple 1.asm parsemé d'instructions de lecture supplémentaires, le comportement attendu par l'appareil. La preuve de la vérification de la conformité peut utiliser une recherche exhaustive appliquée au jeu d'instructions exécutables par la plateforme vérifiée; on détermine alors l'ensemble des codes possibles présentant la taille requise et on procède au test de ces codes pour prouver qu'ils ne sont pas adaptés à fournir les messages échangés avec l'appareil; cette preuve s'applique au procédé de la figure 2, dans lequel la vérification s'effectue en fonction du contenu des messages échangés avec l'appareil; cette technique s'applique encore au procédé de la figure 3, dans lequel la vérification s'effectue aussi en en fonction de la mesure du cadencement dans le temps des messages échangés avec l'appareil.Annex 2 to the present description gives, for example program Example 1.asm scattered with additional reading instructions, the expected behavior of the apparatus. Proof of compliance verification may use an exhaustive search applied to the instruction set executable by the verified platform; the set of possible codes having the required size are then determined, and these codes are tested to prove that they are not suitable for providing the messages exchanged with the apparatus; this proof applies to the method of FIG. 2, in which the verification is carried out according to the content of the messages exchanged with the apparatus; this technique is still applicable to the method of FIG. 3, in which the verification is also carried out as a function of the measurement of the temporal timing of the messages exchanged with the apparatus.
Les annexes 3 et 4 montrent les codages des différentes instructions à 7 cycles et à 8 cycles, possibles pour un jeu d'instructions correspondant à l'assembleur 68HC05. Ces différentes instructions à 7 et 8 cycles peuvent être utilisées pour une preuve de la vérification de la conformité par recherche exhaustive, lorsque le programme est parsemé d'instructions de relecture conduisant à 7 ou 8 cycles disponibles pour le programme malicieux, comme dans l'exemple proposé plus haut. L'annexe 5 montre un autre exemple du code du programme de vérification P; l'annexe ne montre que la partie du programme permettant la relecture de valeurs, la partie de placement de valeur dans la mémoire vérifiée ayant été enlevée pour plus de clarté.Appendices 3 and 4 show the encodings of the different 7-cycle and 8-cycle instructions, which are possible for a set of instructions corresponding to the 68HC05 assembler. These different 7- and 8-cycle instructions can be used for proof of compliance verification by exhaustive search, when the program is sprinkled with replay instructions leading to 7 or 8 cycles available for the malicious program, as in the example proposed above. Annex 5 shows another example of the code for the verification program P; the appendix shows only the part of the program that reads values, the value placement part in the checked memory having been removed for clarity.
Les procédés proposés en référence aux figures 2 et 3 permettent une vérification de la conformité du contenu logique de l'appareil. Ces procédés impliquent toutefois une saturation de la mémoire, par application au dispositif d'entrée sortie des données R de saturation. Une telle solution ne pose pas de problème particulier lorsque la capacité de la mémoire 6 est suffisamment faible, par rapport au débit du dispositif d'entrée sortie. Les procédés des figures 2 et 3 sont donc facilement utilisables pour des appareils tels des cartes à puce. Si la capacité de la mémoire est trop importante - par exemple une mémoire en méga-octets ou en gigaoctets sur un ordinateur, on peut avantageusement utiliser l'une des solutions suivantes pour l'étape de saturation de la mémoire.The methods proposed with reference to Figures 2 and 3 allow verification of the conformity of the logical content of the device. These methods, however, involve a saturation of the memory, by applying to the input device output data R saturation. Such a solution does not pose any particular problem when the capacity of the memory 6 is sufficiently small compared to the output device of the output device. The methods of Figures 2 and 3 are therefore easily used for devices such as smart cards. If the capacity of the memory is too large - for example a memory in megabytes or in gigabytes on a computer, one of the following solutions for the memory saturation step can advantageously be used.
Une première solution consiste à fournir à l'appareil, en lieu et place de données de saturation, l'énoncé d'un problème à résoudre, la résolution du problème conduisant à la saturation de la mémoire. A titre d'exemple de tels problèmes, on peut mentionner les problèmes dits SP ACE-COMPLETS. Par exemple de tels problèmes sont cités dans l'article « Moderately Hard, Memory-bound Functions » par Martin Abadi, Mike Burrows, Mark Manasse et Ted Wobber ou encore dans l'article « On Memory-Bound Functions for Fighting Spam » par Cynthia Dwork, Andrew Goldberg et Moni Naor. Le problème exploité dans le second article implique le calcul de collisions, et donc l'occupation d'une capacité mémoire dont la taille peut être fixée en fonction d'un paramètre. L'énoncé du problème mesure quant à lui uniquement quelques octets. On comprend que l'énoncé du problème est "court", au regard de la taille de la mémoire 6.A first solution is to provide the device, in lieu of saturation data, the statement of a problem to be solved, solving the problem leading to the saturation of the memory. By way of example of such problems, mention may be made of the problems known as SP ACE-COMPLETS. For example such problems are cited in the article "Moderately Hard, Memory-bound Functions" by Martin Abadi, Mike Burrows, Mark Manasse and Ted Wobber or in the article "On Memory-Bound Functions for Fighting Spam" by Cynthia Dwork, Andrew Goldberg and Moni Naor. The problem exploited in the second article involves the computation of collisions, and thus the occupation of a memory capacity whose size can be fixed according to a parameter. The statement of the problem measures only a few bytes. It is understood that the statement of the problem is "short", with regard to the size of the memory 6.
Une deuxième solution consiste à appliquer à l'appareil une graine courte d'une donnée à expanser par le programme P, la donnée expansée permettant de saturer la mémoire. Le processus d'expansion est de préférence tel qu'il n'y ait pas moyen d'expanser la donnée autrement qu'en occupant l'intégralité de la mémoire disponible.A second solution is to apply to the apparatus a short seed of a data to be expanded by the program P, the expanded data to saturate the memory. The expansion process is preferably such that there is no way to expand the data other than by occupying all of the available memory.
On peut aussi panacher les différentes solutions proposées ci-dessus et en référence à la figure 2. Une troisième solution consiste à ne pas saturer la mémoire et travailler avec des données déjà présentes à bord de la plateforme vérifiée (ces données pouvant être selon les cas, du code exécutable déjà présent à bord (code d'applications légitimes) et/ou des données passives légitimes). Dans ce cas, le vérifieur peut de préférence au préalable prouver ou supposer que la restitution de ces données déjà présentes à bord de la plateforme vérifiée par le programme P lors de la phase de vérification ne peut être simulée par un programme malicieux (avec ou sans contraintes de cadencement temporel). Une telle preuve est toujours possible à obtenir par une technique de backtracking.It is also possible to mix the different solutions proposed above and with reference to FIG. 2. A third solution consists in not saturating the memory and working with data already present on board the verified platform (these data being able to be according to the cases , executable code already on board (legitimate application code) and / or legitimate passive data). In this case, the verifier may preferably first prove or assume that the return of these data already present on board the platform verified by the program P during the verification phase can not be simulated by a malicious program (with or without temporal timing constraints). Such proof is always possible to obtain by a backtracking technique.
Ces solutions permettent de limiter la durée de l'étape de saturation de la mémoire par le programme P ou éviter le rechargement de données déjà présentes à bord. Dans les cas où les données de saturation proviennent, au moins au départ, du monde extérieur (fourniture du problème, fourniture de la graine), il reste impossible à un programme malicieux de prévoir à l'avance la solution et d'éviter ainsi la saturation de la mémoire. Ces solutions supposent toutefois que le programme P est plus complexe que le programme Examplel .asm proposé plus haut.These solutions make it possible to limit the duration of the stage of saturation of the memory by the program P or to avoid the reloading of data already on board. In cases where saturation data originates, at least initially, from the outside world (problem supply, seed supply), it remains impossible for a malicious program to predict the solution in advance and thus avoid the problem. saturation of the memory. These solutions assume, however, that the program P is more complex than the Examplel .asm program proposed above.
Notons enfin, qu'en lieu et place de la donnée aléatoire il est également possible d'utiliser à la place de R une donnée fixe et non confidentielle et dans ce cas prouver que le comportement de la plate-forme est caractérisable sans ambiguïté.Finally, it should be noted that instead of random data it is also possible to use R instead of fixed and non-confidential data and in this case to prove that the behavior of the platform is unambiguously characterizable.
Les procédés des figures 2 et 3 impliquent aussi une étape 16 de lecture du contenu de la mémoire. Comme pour l'écriture dans la mémoire, cette solution ne pose pas de problème particulier lorsque la capacité de la mémoire 6 est suffisamment faible, par rapport au débit du dispositif d'entrée sortie. On peut néanmoins utiliser l'une des solutions suivantes pour rendre plus rapide l'échange entre l'appareil et le monde extérieur.The methods of Figures 2 and 3 also involve a step 16 of reading the contents of the memory. As for writing in the memory, this solution does not pose any particular problem when the capacity of the memory 6 is sufficiently small, compared to the flow rate of the input input device. One can nevertheless use one of the following solutions to make the exchange between the device and the outside world faster.
Une première solution consiste à procéder, au lieu de la lecture des données aléatoires ou pseudo-aléatoires de saturation, à un calcul de hachage ou à un calcul de CRC sur ces données. Dans la mesure où les données sont aléatoires ou pseudo-aléatoires, la compression mentionnée dans la description de la solution logicielle de l'état de la technique est impossible ou très difficile.A first solution is to proceed, instead of reading the random or pseudo-random saturation data, a hash calculation or a calculation of CRC on these data. Insofar as the data are random or pseudo-random, the compression mentioned in the description of the software solution of the state of the art is impossible or very difficult.
On peut aussi proposer la solution suivante : n blocs de bourrage aléatoires ou pseudo- aléatoires sont reçus du monde extérieur; ces données sont placées dans la mémoire 6 par le programme P. Cette étape 12 de saturation de la mémoire est suivie par une indication par le monde extérieur d'une permutation des n éléments et par le retour par Ie programme P du haché des données permutées au monde extérieur. Ainsi, même si le programme malicieux connaît le type de hachage à appliquer, il lui est impossible de calculer le haché lors de la réception des blocs de bourrage.We can also propose the following solution: n random or pseudo-random stuffing blocks are received from the outside world; these data are placed in the memory 6 by the program P. This memory saturation step 12 is followed by an indication by the outside world of a permutation of the n elements and by the return by the program P of the hash of the permutated data. to the outside world. Thus, even if the malicious program knows the type of hash to apply, it is impossible for it to calculate the hash when receiving blocks of jam.
Ces solutions permettent de limiter la durée de l'étape de lecture depuis la mémoire par le programme P. Dans la mesure où le calcul du CRC, du haché ou le calcul du résultat implique de disposer des données de saturation dans leur ensemble, il reste impossible à un programme malicieux de prévoir à l'avance la solution et d'éviter ainsi la saturation de la mémoire. Le retour des informations vers le monde extérieur est toutefois plus rapide, puisqu'il suffit de transmettre {le résultat du calcul sur les données R + le code de P} au lieu de transmettre {les données R + le code de P}These solutions make it possible to limit the duration of the reading step from the memory by the program P. Since the computation of the CRC, the hash or the calculation of the result implies having saturation data as a whole, it remains impossible for a malicious program to predict in advance the solution and thus avoid the saturation of the memory. The return of information to the outside world is however faster, since it suffices to transmit {the result of the calculation on the data R + the code of P} instead of transmitting {the data R + the code of P}
On peut aussi panacher les différentes solutions proposées ci-dessus et en référence à la figure 2. On comprend aussi que l'on peut mélanger les solutions limitant la durée d'écriture dans la mémoire et les solutions limitant la durée de lecture des données depuis la mémoire.It is also possible to mix the various solutions proposed above and with reference to FIG. 2. It is also understood that the solutions limiting the duration of writing in the memory and the solutions limiting the duration of reading of the data can be mixed. Memory.
On ne décrit pas ici la suite du procédé de vérification ni ses applications. Dans l'exemple des appareils à personnaliser, une vérification de la conformité de l'appareil est suivie de la personnalisation, alors qu'un appareil qui s'avère non conforme est rejeté. Une fois l'appareil vérifié, on peut utiliser pour la personnalisation la capacité du programme P à écrire dans la mémoire 6 de l'appareil.The rest of the verification process and its applications are not described here. In the example of devices to be customized, a device compliance check is followed by customization, while a device that is found to be non-compliant is rejected. Once the device is verified, it is possible to use for personalization the capacity of the program P to write in the memory 6 of the device.
Le procédé des figures 2 et 3 s'applique notamment lorsque la mémoire n'est pas supposée contenir de code ou lorsque la mémoire contient un code connu pouvant être restauré sans problème à la fin du procédé de vérification. On peut aussi prévoir que le programme P commence par effacer de la mémoire toutes les données présentes, à l'exclusion de son propre code puis entreprendre la réception de données du monde extérieur.The method of Figures 2 and 3 applies in particular when the memory is not supposed to contain code or when the memory contains a known code that can be restored without problem at the end of the verification process. It can also be provided that the program P begins by erasing all the data present in the memory, excluding its own code, and then starting to receive data from the outside world.
On peut aussi prévoir que le programme P laisse en place les données présentes, mais communique ces dernières au vérifieur qui fera la preuve qu'il est possible de conduire l'épreuve sans ambigϋité avec ces données en lieu et place des données aléatoires.It can also be expected that the program P leaves in place the data present, but communicates them to the verifier who will demonstrate that it is possible to conduct the test without ambiguity with these data instead of random data.
On peut aussi prévoir, avant l'étape de saturation de la mémoire, une sauvegarde des données contenues dans la mémoire - ou d'une partie de celles-ci en transmettant temporairement ces données au monde extérieur. La conformité des données sauvegardées peut être analysée en dehors de l'appareil; les données sauvegardées, si elles sont conformes, peuvent ensuite être restaurées dans l'appareil vérifié; de nouveau, on peut utiliser le programme P pour la restauration des données à l'issue de la vérification de la conformité. L'invention permet alors une restauration d'un appareil informatique. La figure 4 montre un tel procédé, appliqué à un appareil du genre de la figure 1 : la première étape 30 est une étape de sauvegarde vers le monde extérieur du contenu de la mémoire; elle est suivi d'une étape 32 de vérification de la conformité, suivant le procédé décrit plus haut; à l'étape 34, on analyse les données exportées et, le cas échéant on les traite, par exemple si elles contiennent un programme malicieux. Si l'appareil est dans un état conforme à l'état de référence (étape 36), on y réinjecte les données traitées (étape 38). Si l'appareil vérifié n'est pas dans un état conforme à l'état de référence, on signale une erreur (étape 40); on peut alors prendre les mesures correctrices nécessaires (réinitialisation ou autres).It is also possible to provide, before the memory saturation step, a backup of the data contained in the memory - or part of it - by temporarily transmitting this data to the outside world. The conformity of the saved data can be analyzed outside the device; saved data, if true, can then be restored to the verified device; again, the program P can be used for data restoration after the compliance check. The invention then allows a restoration of a computer apparatus. FIG. 4 shows such a method, applied to an apparatus of the type of FIG. 1: the first step 30 is a step of saving the contents of the memory to the outside world; it is followed by a compliance verification step 32, according to the method described above; in step 34, the exported data are analyzed and, if necessary, processed, for example if they contain a malicious program. If the apparatus is in a state in accordance with the reference state (step 36), the processed data is reinjected (step 38). If the verified device is not in a state in accordance with the reference state, an error is reported (step 40); we can then take the necessary corrective measures (reset or others).
Il est également possible de modifier ou généraliser le procédé décrit dans la présente invention des manières suivantes : - Une première généralisation consiste, au lieu d'écrire les données R d'une traite et les relire d'une traite, d'alterner des écritures et lectures de manière répétée. Ainsi un premier bloc de données R[I] serait écrit, un premier bloc R'[l] serait relu, puis un second bloc de données R[2] serait écrit, un second bloc R' [2] serait relu et ainsi de suite. Ici R'[i] note soit une valeur qui doit être égale à R[i] ou une valeur qui est fonction de R[i].It is also possible to modify or generalize the method described in the present invention in the following ways: A first generalization consists, instead of writing the data R in one go and re-reading it in one go, of alternating writes and reads repeatedly. Thus a first block of data R [I] would be written, a first block R '[l] would be read again, then a second block of data R [2] would be written, a second block R' [2] would be read again and so after. Here R '[i] denotes either a value which must be equal to R [i] or a value which is a function of R [i].
- Une seconde variante peut être de répéter le protocole de vérification avec la machine plusieurs fois et d'accepter la machine comme propre qu'en cas de réussite dans toutes les sessions du protocole. Une telle répétition ayant pour but de réduire de manière exponentielle la probabilité qu'une application malicieuse passe le protocole par pure chance.- A second variant may be to repeat the verification protocol with the machine several times and accept the machine as clean only if successful in all sessions of the protocol. Such a repetition aims to exponentially reduce the probability that a malicious application will pass the protocol out of sheer luck.
- Une troisième variante remplace Ia preuve par backtracking par toute autre forme de preuve, par exemple la recherche exhaustive (ou la construction) du plus petit code (appelons m la taille de ce code) capable de restituer une donnée de la taille de R moins m octets. On a décrit en référence aux figures 2 et 3 une vérification d'un appareil depuis le monde extérieur, en référence à un "vérificateur" ne faisant pas partie de l'appareil. Le procédé de l'invention s'applique aussi à l'intérieur d'un même dispositif, entre deux circuits, deux sous-systèmes ou deux composants faisant partie du dispositif; dans ce cas, l'un des deux circuits, sous-systèmes ou composants se comporte comme le "monde extérieur" ou comme le "vérificateur" pour l'autre circuit, sous-système ou composant. Cet autre circuit, sous-système ou composant se comporte alors comme l'appareil à vérifier décrit plus haut : il doit donc comprendre un processeur, une mémoire, ainsi qu'un dispositif d'entrée-sortie permettant de dialoguer avec l'autre sous-ensemble. La figure 5 montre un tel dispositif 50. Les éléments du premier sous-ensemble sont repérés par les numéros de référence de la figure 1 , augmentés de 50. Le deuxième sous-ensemble est référencé 60; il n'est pas décrit plus en détails.A third variant replaces the backtracking proof with any other form of proof, for example the exhaustive search (or the construction) of the smallest code (let's call it the size of this code) capable of restoring a datum of the size of R minus m bytes. With reference to FIGS. 2 and 3, a verification of an apparatus from the outside world is described with reference to a "verifier" which is not part of the apparatus. The method of the invention also applies within the same device, between two circuits, two subsystems or two components forming part of the device; in this case, one of the two circuits, subsystems or components behaves as the "outside world" or as the "verifier" for the other circuit, subsystem or component. This other circuit, subsystem or component then behaves like the device to be verified described above: it must therefore include a processor, a memory, and an input-output device for dialogue with the other under -together. FIG. 5 shows such a device 50. The elements of the first subset are identified by the reference numerals of FIG. 1, increased by 50. The second subset is referenced 60; it is not described in more detail.
En d'autres termes, on exécute de manière interne au dispositif le procédé mentionné plus haut. Ceci peut être effectué entre deux sous-ensembles du dispositif ou entre plus de deux sous-ensembles, suivant des permutations souhaitées; on peut exécuter le procédé de manière invisible pour l'utilisateur du dispositif, périodiquement ou dans des circonstances particulières. En cas de non-conformité, on peut alors provoquer une ou plusieurs actions, comme par exemple un arrêt des fonctions du dispositif, ou encore un message à l'utilisateur ou au monde extérieur.In other words, the method mentioned above is carried out internally in the device. This can be done between two subsets of the device or between more than two subsets, according to desired permutations; the method can be performed invisibly for the user of the device, periodically or under circumstances special. In case of non-compliance, one or more actions may then be caused, such as for example a stop of the functions of the device, or a message to the user or to the outside world.
A titre d'exemple, on pourrait utiliser le procédé de l'invention dans une machine multiprocesseur, telle qu'un PC, un terminal de paiement, un décodeur de télévision à péage, un élément électronique embraqué d'une arme ou d'où véhicule militaire, chacun des processeurs constituant le "monde extérieur" pour la vérification de l'autre processeur. By way of example, the method of the invention could be used in a multiprocessor machine, such as a PC, a payment terminal, a pay-TV decoder, an electronic element embossed with a weapon or from where military vehicle, each processor constituting the "outside world" for verification of the other processor.
ANNEXE 1 Algorithme de backtracking écrit en langage MathematicaAPPENDIX 1 Backtracking algorithm written in Mathematica language
L'algorithme explore les codes de taille MSZ=21 octets (à titre d'exemple) et suppose un jeu d'instructions 68HC05 restreint aux instructions INCA, LDA, STA et BNE, port d'entrée à 0x00, porte de sortie à OxOlThe algorithm explores MSZ size codes = 21 bytes (as an example) and assumes a 68HC05 instruction set restricted to INCA, LDA, STA, and BNE instructions, 0x00 input port, OxOl output port
q:=Function[x,Mod[x,256]]; MSZ=21; s:=Function[x,Mod[x,MSZ]];q: = Function [x, Mod [x 256]]; MSZ = 21; s: = Function [x, Mod [x, MSZ]];
(* cette fonction initialise l'état de la mémoire à -1 (-1 signifiant par convention valeur indéfinie) sauf le port se trouvant à l'adresse 0 qui est initialise à 0 *) M=Prepend[Table[-l , {n,l ,MSZ-I }],0];(* this function initializes the state of the memory to -1 (-1 meaning by convention indefinite value) except the port at address 0 which is initialized to 0 *) M = Prepend [Table [-l, { n, 1, MSZ-1), 0];
(*valeurs de 4 opcodes*) BNE=16ΛΛ26; LDA=16ΛΛB6; INC=16ΛΛ4C; STA=16ΛΛB7; (^fonction retournant le contenu d'une case mémoire *) RM:=Function[x,M[[s[x]+l]]];(* values of 4 opcodes *) BNE = 16 ΛΛ 26; LDA = 16 ΛΛ B6; INC = 16 ΛΛ 4C; STA = 16 ΛΛ B7; (^ function returning the contents of a memory box *) RM: = Function [x, M [[s [x] + l]]];
(*fonction assignant une valeur à une case mémoire*) SM:=Function[{x,v},M[[s[x]+l]]=v];(* function assigning a value to a memory box *) SM: = Function [{x, v}, M [[s [x] + l]] = v];
(* fonction vérifiant la compatibilité du contenu de la machine avec une hypothèse de code faite par l'algorithme de backtracking*)(* function checking the compatibility of the contents of the machine with a hypothesis of code made by the algorithm of backtracking *)
NC:=Function[{pt,lst},Sum[If[lst[[d+l]]≠ RM[s[pt+d]]&& RM[s[pt+d]]≠-l ,l,0],{d,0,Length[lst]-l }]≠0];NC: = Function [{pt, lst}, Sum [If [lst [[d + l]] ≠ RM [s [pt + d]] && RM [s [pt + d]] ≠ -l, l, 0 ], {d, 0, Length [lst] -l}] ≠ 0];
(*fonction assignant une série de valeurs à la mémoire*) SetM:=Function[{pt,vl},For[b=l,b< Length[vl],SM[s[pt+b-l],vl[[s[b]]]];b++]];(* function assigning a series of values to the memory *) SetM: = Function [{pt, vl}, For [b = l, b <Length [vl], SM [s [pt + bl], vl [[s [b]]]]; b ++]];
(*fonction assignant des valeurs aux registres du microprocesseur*) SetRegs:=Function[{va,pt},A=q[va];Z=If[A 0,l,0];PC=s[pt];SM[l,A]]; (*fonction de décodage d'adresses relatives pour l'instruction de saut*) dec:-Function[j,2+j-If[j< 167F,0,256]];(* function assigning values to the microprocessor registers *) SetRegs: = Function [{va, pt}, A = q [va]; Z = If [A 0, l, 0]; PC = s [pt]; SM [the]]; (* relative address decoding function for the jump instruction *) dec: -Function [j, 2 + j-If [j <16 7F, 0,256 ]];
(*fonction testant si l'état de la mémoire est compatible avec l'hypothèse de fragment d'instructions de la forme INCA STA 1*) INCT~Function[U, q[Ex-l]≠ A||NC[PC, (INC5STA, 1 }]](* function testing if the state of the memory is compatible with the hypothesis of fragment of instructions of the form INCA STA 1 *) INCT ~ Function [U, q [Ex-1] ≠ A || NC [PC, (INC 5 STA, 1}]]
(*modélisation de l'effet d'un fragment d'instruction de type INCA STA 1*)(* modeling the effect of a INCA STA 1 * instruction fragment)
INCS:=Function[U,SetM[PC,{INC,STA,l }];A=Ex;Z=If[A 0,l ,0];PC=s[PC+3]; SM[1,A];]INCS: = Function [U, SetM [PC, {INC, STA, l}]; A = Ex; Z = If [A 0, 1, 0]; PC = s [PC + 3]; MS [1, A]]
(*même démarche que précédemment pour un fragment de type LDA m STA 1 *) LDAT:=Function[U,(* same approach as before for a fragment of type LDA m STA 1 *) LDAT: = Function [U,
NC[PC, {LDA,U,STA,1}] || If[MemberQ[{PC,s[PC+l],s[PC+2],s[PC+3]},s[U]],NC [PC, {LDA, U, STA, 1}] || If [MemberQ [{PC, s [PC + l], s [PC + 2], s [PC + 3]}, s [A]],
Ex≠ Pick[{LDA,U,STA,l },{PC,s[PC+l],s[PC+2],s[PC+3]},s[U]][[l]],Ex ≠ Pick [{LDA, U, STA, l}, {PC, s [PC + 1], s [PC + 2], s [PC + 3]}, s [U]] [[l]],
RM[U]≠Ex && RM[U]≠-1 ]];RM [U] ≠ Ex && RM [U] ≠ -1]];
LDAS:=Function[U5 LDAS: = Function [U 5
SetM[PC,{LD A5U5STA, 1 }]; If [Not[MemberQ[{PC,s[PC+l],s[PC+2]5s[PC+3]}5s[U]]] ,SM[U5Ex]]; A=RM[U]5Z=If[A 05l,0];PC=s[PC+4]; SM[I5A];]SetM [PC, {LD A 5 U 5 STA, 1}]; If [Not [MemberQ [{PC, s [PC + 1], s [PC + 2] 5 s [PC + 3]} 5 s [U]]], SM [U 5 Ex]]; A = RM [U] 5 Z = If [A 0 5 1.0], PC = s [PC + 4]; SM [I 5 A];]
(*modélisation de l'effet d'un fragment d'instruction de type BNE Lable STA 1*)(* modeling of the effect of an instruction fragment of BNE type Lable STA 1 *)
BRAT:=Function[L,(Ex≠ A||NC[PC5 (BNE5L)]) ||BRAT: = Function [L, (Ex ≠ A || NC [PC 5 (BNE 5 L)]) ||
If [Z==l5NC[s[PC+2],(STA,l }] , NC[s[PC+dec[L]],{STA5l)]||16ΛAFE< L< 16ΛΛFF]] ;If [Z == l 5 NC [s [PC + 2], (STA, l}], NC [s [PC + dec [L]], {STA 5 l)] || 16 ΛA FE <L <16 ΛΛ FF]];
BRAS:=Function[L, SetM[PC, (BNE5L)];ARM: = Function [L, SetM [PC, (BNE 5 L)];
SetM[If[Z 1 ,s[PC+2],s[PC+dec[L]]]5 (STA5I )];SetM [If [Z 1, s [PC + 2], s [PC + dec [L]]] 5 (STA 5 I)];
Z=If[A 0,l,0];A=Ex;SM[l,A];PC=s[PC+If [Z l,4,dec[L]+2]]] ;Z = If [A 0, 1, 0]; A = Ex; SM [1, A]; PC = s [PC + If [Z l, 4, dec [L] + 2]]];
(^modélisation de l'effet d'un fragment d'instruction de type STA m STA 1*)(^ modeling of the effect of an STA m STA 1 * instruction fragment)
STAT:=Function[U,STAT = Function [U,
NC[PC, (STA5U5STA5I)] || A≠Ex || s[U]=l || (s[U] s[PC+2] && A≠STA) || (S[U] s[PC+l] && A≠l)]; STAS:=Function[U,NC [PC, (STA 5 U 5 STA 5 I)] || A ≠ Ex || s [U] = l || (s [U] s [PC + 2] && A ≠ STA) || (S [U] s [PC + l] && A ≠ l)]; STAS: = Function [U,
SetM[PC5 (STA3U5STA, 1 ) ];SetM [PC 5 (STA 3 U 5 STA, 1)];
SM[U5Ex]; Z=If[A 05l,0];A=Ex;PC=s[PC+4];SM[l,Ex];];SM [U 5 Ex]; Z = If [A 0 5 1, 0]; A = Ex; PC = s [PC + 4]; SM [1, Ex];];
(* lecture du fichier contenant les valeurs attendues d'une plateforme légitime et leur cadencement dans le temps, fichier donné plus bas*) ExList=Drop[Drop[«file.m, I]5I] ;(* reading the file containing the expected values of a legitimate platform and their timing in time, file given below *) ExList = Drop [Drop ["file.m, I] 5 I];
(* lecture des fichiers contenant tous les fragments dont l'exécution peut prendre 7 ou 8 cycles, fichiers donnés plus bas*)(* read files containing all the fragments whose execution can take 7 or 8 cycles, files given below *)
Try[7]=«try7.txt ;Try[8]=«try8.txt;S[8]=Length[Try[8]];S[7]=Length[Try[7]];Try [7] = "try7.txt; Try [8] =" try8.txt; S [8] = Length [Try [8]]; S [7] = Length [Try [7]];
(* Isolation des valeurs attendues dans une table EV=Expected Values et des valeurs de cadencement temporel TM=Timing*) TM=Table[ExList[[h,2]]5(h,l,Length[ExList]}]; EV=Table[ExList[[h5l]]5(h,l,Length[ExList]}];(* Isolation of Expected Values in a Table EV = Expected Values and Timing Values TM = Timing *) TM = Table [ExList [[h, 2]] 5 (h, l, Length [ExList]}]; EV = Table [ExList [[h 5 l]] 5 (h, l, Length [ExList]}];
(*Initialisation d'une liste GS contenant l'état de l'hypothèse explorée*) For[h=l ,h< Length [ExLi St]5G S [h]=l ;PL[h]=0;h++]; (*cette fonction génère l'état correspondant à une liste GS donnée*) ReRun:=Function[idd, PC=PCx;A=Ax;Z=Zx;M=Prepend[Table[-l , {n,l ,MSZ-I }],0]; For[c=l,c≤idd, Ex=EV[[c]]; ExecInst[Try[TM[[c]]][[ GS[c]]]]; c++]]; (*fonction traduisant une instruction en une fonction de test*)(* Initialization of a GS list containing the state of the hypothesis explored *) For [h = l, h <Length [ExLi St] 5 GS [h] = l; PL [h] = 0; h ++]; (* this function generates the state corresponding to a given GS list *) ReRun: = Function [idd, PC = PCx; A = Ax; Z = Zx; M = Prepend [Table [-l, {n, l, MSZ -I}], 0]; For [c = 1, c≤idd, Ex = EV [[c]]; ExecInst [Try [TM [[c]]] [[GS [c]]]]; c ++]]; (* function translating an instruction into a test function *)
TestInst:=Function[hy,Pick[ {INCT,LDAT,BRAT,STAT} , { "INC","LDA","BRA","STA" } ,hy[ [l]]][[l]][hy[[2]]]]TestInst: = Function [hy, Pick [{INCT, LDAT, BRAT, STAT}, {"INC", "LDA", "BRA", "STA"}, hy [[l]]] [[l]] [ hy [[2]]]]
(^fonction traduisant une instruction en une fonction d'exécution*) ExecInst:=Function[hy,Pick[ {INCS,LDAS,BRAS,ST AS}, ("INC5 11LDA11Z1BRA11Z1STA") ,hy[(^ function translating an instruction into an execution function *) ExecInst: = Function [hy, Pick [{INCS, LDAS, ARM, ST AS}, ("INC 5 11 LDA 11 Z 1 BRA 11 Z 1 STA") , hy [
[l]]][[l]][hy[[2]]]][T]]] [[s]] [hy [[2]]]]
(*fonction de passage de retenue sur les index de fragment de code*)(* carryover function on code fragment index *)
Uniformize:=Function[,For[h=Length[ExList],h≠l, If[GS[h] S[TM[[h]]] +l,GS[h-l]++;GS[h]=l]; h-]];Uniformize: = Function [, For [h = Length [ExList], h ≠ l, If [GS [h] S [TM [[h]]] + l, GS [hl] ++, GS [h] = l ]; h-]];
(*boucle de backtracking*)(* backtracking loop *)
For[Zx=l, Zx≤ 2,For[Ax=0,Ax< 255,For[PCx=8,PCx< MSZ-I,For [Zx = 1, Zx≤2, For [Ax = 0, Ax <255, For [PCx = 8, PCx <MSZ-I,
PC=PCx; A-Ax; Z=Zx; ID=I ; Labelfyyy]; Ex=EV[[ID]];CY=TM[[ID]]; HY=Try[CY][[GS[ID]]];PC = PCx; A-Ax; Zx = Z; ID = I; Labelfyyy]; Ex EV = [[ID]]; CY = TM [[ID]]; HY = Try [CY] [[GS [ID]]];
If[Not[TestInst[HYJJ , ExecInst[HY]; ID++;Goto[yyy],If [Not [TestInst [HYJJ, ExecInst [HY]; ID ++; Goto [yyy]
IfIGS[ID]<S[CY],GS[ID]++; Goto[yyy]]];IfIGS [ID] <S [CY] GS [ID] ++; Goto [yyy]]];
PL[ID-I]++; GS[ID]=I ; GS[ID-I ]++;ID-; Uniformize[]; ReRun[ID-I]; Goto[yyy]; Labelfzzz];PL [ID-I] ++; GS [ID] = I; GS [ID-I] ++; ID-; Uniformize []; ReRu n [ID-I]; Goto [yyy]; Labelfzzz];
PCx++]; Ax++];Zx++] ; PCx ++]; Ax ++]; Zx ++];
ANNEXE 2 Codage du comportement attendu par Ia plateforme (fichier file.m)ANNEX 2 Coding of the behavior expected by the platform (file file.m)
{{0,4},{0,7}>{0I7},{],7},{1,8},{1>7}){1,7}>{1,7},{2,7},{2,8},{2,7},{183,7},{2)7}){3,7),{3,8},{3,7},{1,7},{3,7},{4,7},{4,8},{4,7},{182,7}, {47},{5,7},{5,8},{5>7},{5J}){5J},{6,7},{6,8},{6,7},{183>7}W6J},{7,7},{7,8},{7,7},{l,7},{7,7},{8r7},{8,8},{8,7},{182,7},{8,7},{9,7},{ 9,81,(9,71,(5,71,(9,7J, {10,7}, {10,8}, {10,7}, {183,7}, {10,7}, {11,7}, {11,8}, {11,7}, {1,7}, {11,7}, {12,7}, {12,8}, {12,7}, {76,7}, {12,7}, {13,7} , {13,8}, {13,7}, {183,7}, {13,7},{]4(7}, {14,8}, {14,7}, {1,7}, {14,7}, { 15,7}, {15,8},{15,7},{183,7), {15,7},{ 16,7}, {16,8}, {16,7}, {5,7}, {16,7}, {17,7}, {17,8}, {17,7}, {183,7}, {17,7}, {18,7}, {18,8}, {18,7}, {1,7}, {18,7},{19,7}, {19,8}, {19,7}, {38,7}, {19,7}, {20,7}, {20,8}, {20,7},{237,7} ,{20,7}, {21,7}, {21,8}, {21,7}, {0,7}, {21,7}, {22,7}, {22,8}, {22,7}, {22,7}, {22,7}, {23,7}, {23,8}, {23,7}, {183,7}, {23,7}, {24,7}, {24,8}, {24,7}, {1,7}, {24,7}, {25,7}, {25,8}, {25,7}, {182,7}, {25,7}, {26,7}, {26,8}, {26,7}, {26,7}, {26,7}, {27,7}, {27,8}, {27,7}, {183,7}, {27,7}, {28,7}, {28,8} ,{28,7}, {1,7}, {28,7},{29,7}, {29,8}, {29,7}, {182,7}, {29,7}, {30,7}, {30,8}, {30,7}, {5,7}, {30,7},{31,7}, {31,8}, {31,7}, {183,7}, {31,7}, {32,7}, {32,8}, {32,7}, {1,7}, {32,7}, {33,7}, {33,8}, {33,7}, {76,7}, {33,7}, {34,7}, {34,8}, {34,7}, {183,7}, {34,7}, {35,7}, {35,8}, {35,7}, {1,7}, {35,7}, { 36,7}, {36,8}, {36,7}, {183,7}, {36,7}, {37,7}, {37,8}, {37,7}, {5,7}, {37,7}, {38,7}, {38,8}, {38,7}, {183,7}, {38,7}, {39,7}, {39,8}, {39,7}, {1,7}, { 39,7},{40,7}, {40,8}, {40,7}, {38,7}, {40,7}>{41,7}, {41,8}, {41,7}, {237,7}, {41,7}, {42,7}, {42,8}, {42,7}, {0,7}, {42,7}, {43,7}, {43,8}, {43,7}, { 43,7}, {43,7}, {44,7}, {44,8}, {44,7}, {183,7}, {44,7}, {45,7}, {45,8}, {45,7}, {1,7}, {45,7}, {46,7}, {46,8}, {46,7}, {182,7}, {46,7}, {47,7}, {47,8}, {47,7}, {47,7}, {47,7}, {48,7}, {48,8}, {48,7}, {183,7}, {48,7}, {49,7}, {49,8}, {49,7}, {1,7}, {49,7}, {50,7}, {50,8}, {50,7}, {182,7}, {50,7}, {51,7} ,{51,8}, {51,7}, {5,7}, {51,7} ,{52,7}, {52,8}, {52,7}, {183,7}, {52,7}, {53,7}, {53,8}, {53,7}, {1,7}, {53,7}, {54,7}, {54,8}, {54,7}, {76,7}, {54,7}, { 55,7}, {55,8}, {55,7}, {183,7}, {55,7}, {56,7}, {56,8}, {56,7}, {1,7}, {56,7}, {57,7}, {57,8}, {57,7}, {183,7}, {57,7}, {58,7}, {58,8}, {58,7}, {5,7}, { 58,7}, {59,7}, {59,8}, {59,7}, {183,7}, {59,7}, {60,7}, {60,8}, {60,7}, {1,7}, {60,7}, {61,7}, {6i,8}, {61,7}, {38,7}, {61,7}, {62,7}, {62,8}, {62,7}, { 237,7}, {62,7}, {63,7}, {63,8}, {63,7}, {0,7}, {63,7), {64,7}, {64,8}, {64,7), {64,7}, {64,7}, {65,7}, {65,8}, {65,7}, {183,7}, {65,7}, {66,7}, {66,8}, {66,7}, {1,7}, {66,7}, {67,7}, {67,8}, {67,7}, {182,7),{67,7}, {68,7}, {68,8}, {68,7}, {68,7}, (68,7), )69,7), {69,8}, {69,7}, {183,7}, {69,7}, {70,7} ,{70,8}, {70,7}, {1,7}, {70,7}, {71,7}, {71,8}, {71,7}, {182,7}, {71,7}, {72,7}, {72,8}, {72,7}, {5,7}, {72,7}, {73,7}, {73,8}, {73,7}, {183,7}, {73,7}, {74,7}, {74,8}, {74,7}, {1,7}, {74,7}, {75,7), {75,8}, {75,7), {76,7}, {75,7}, {76,7}, {76,8}, {76,7}, {183,7}, {76,7}, {77,7},{77,8}, {77,7}, {1,7}, { 77,7), {78,7}, {78,8}, {78,7}, {183,7}, {78,7), {79,7} ,{79,8}, {79,7}, {5,7}, {79,7}, {80,7}, {80,8}, {80,7}, {183,7}, {80,7}, {81,7}, {81,8}, {81,7}, {1,7}, {81,7}, {82,7}, {82,8}, {82,7), {38,7}, {82,7}, {83,7), {83,8}, {83,7), {237,7}, (83,7), {84,7}, {84,8}, {84,7}, {0,7},{84,7}, {85,7}, {85,8}, { 85,7), {85,7} ,{85,7}, {86,7}, {86,8}, {86,7}, {183,7}, {86,7}, {87,7), {87,8}, {87,7}, {1,7}, {87,7}, {88,7}, {88,8}, {88,7}, {182,7}, {88,7}, {89,7}, {89,8), {89,7}, {89,7}, {89,7}, {90,7}, {90,8}, {90,7}, {183,7}, {90,7}, {91,7},{91,8}, {91,7), (1,7), {91,7}, {92,7}, {92,8}, {92,7}, {182,7}, {92,7} ,{93,7}, (93,8), {93,7}, {5,7}, {93,7}, {94,7}, {94,8}, {94,7}, {183,7}, {94,7}, {95,7}, {95,8}, {95,7}, {1,7}, {95,7}, {96,7}, {96,8}, {96,7}, {76,7}, { 96,7), {97,7}, {97,8}, {97,7},{I83,7}, {97,7), {98,7}, {98,8), {98,7}, {1,7}, {98,7}, {99,7}, {99,8}, {99,7}, {183,7}, {99,7}, {100,7}, {100,8}, {100, 7), {5,7}, {100,7}, {101,7}, {10),8}, {101,7}, {183,7}, {101,7), {102,7}, {102,8}, {102,7}, {1,7}, {102.7}, {103,7}, {103,8}, {103,7}, {38,7}, {103, 7}, {104,7), {104,8}, {104,7}, {237,7}, {104,7}, {105,7}, {105,8), {105,7}, {0,7}, { 105,7}, {106,7}, { 106,8}, { 106,7}, { 106,7), {106,7}, { 107,7), { I 07,8}, {107,7}, {183,7}, {107,7}, {108,7}, {108,8}, {108,7}, {1,7), {108,7), {109,7}, {109,8}, {109,7}, {182,7}, {109,7}, {110,7}, {110,8}, {110,7} ,{110,7}, {110,7}, {II 1,7}, {111,8}, {111,7), {183,7), {111,7}, {112,7}, {112,8}, {112,7}, {1,7), {112,7}, {153,7}, {1)3,8}, {113,7}, {182,7}, {113 ,7}, {114,7), {114,8}, {114,7}, {5,7), {114,7}, { 115,7), {115,8), { 115,7), {183,7}, {115,7}, {116,7}, {116,8}, {116,7}, {1,7}, {116,7}, {117,7},{ 11 7,8), {117,7}, {76,7}, {117,7}, {118,7), {118,8), { 118,7), { 183,7), {118,7), {119,7},{ 119,8), {119,7}, {1,7}, {119,7}, {120,7}, {120,8}, { 120,7}, { 183,7), {120,7}, {121,7}, {121,8}, {121,7), {5,7}, {121,7}, {122,7}, {122,8), {122,7}, {183,7}. {122,7}, {123,7}, {123,8}, {123,7}, {1,7}, {123,7}, {124,7},{124,8}, {124,7), {38,7}, {124,7}, {125,7), {125,8}, {125,7), {237,7}, {125,7}, {126,7}, {126,8}, {126,7}, {0,7}, {126,7}, {127,7}, {127,8 }, {127,7}, {127,7), {127,7}, {128,7}, {128,8), {128,7}, {183,7}, {128,7}, {129,7), { 129,8), { 129,7}, {!,7},{129,7}, {130,7}, {130,8}, {130,7}, {18 2,7), {130,7}, {131,7}, {131,8}, {131,7}, {131, 7}, {131,7), {132,7}, {132,8), {132,7}, {183,7}, {132,7}, (133,7), {133,8}, {133,7}, {1,7}, {133,7}, {134,7}, {134,8}, {134,7), {182,7), {134,7), {135,7), {135,8}, {135,7}, {5,7}, {135,7}, {136,7}, (136,8), {136,7}, {183,7}, {136,7}, {137,7}, {137, 8), {137,7}, {1,7), {137,7}, {138,7}, {138,8}, {138,7), {76,7}, {138,7), {139,7}, {139,8}, {139,7}, {183,7}, {139,7}, (140,7), {140,8}, { 140,7}, {), 7}, {140,7}, {141,7}, {141,8}, {141,7}, {183,7}, {141,7}, {142,7), {142,8), {142,7}, {5,7}, (142.7), {143,7}, {143,8}, {143,7}, {183,7}, {143,7}, {1 44,7}, {144,8}, {144,7}, {1,7}, {144,7}, {145,7), {145,8}, {145,7}, {38,7}, {145,7}, {146,7}, {146,8}, {146,7}, {237,7}, {146,7}, {147,7}, {147,8}, {147,7},{0,7},{ 147,7), {148,7}, {148,8}, {148,7}, {148,7}, {148,7), {149,7}, {149,8), {149,7}, {183,7}, (149,7), {150,7}, (150,8), {150,7}, {1,7} , {150,7}, {151,7}, {151,8}, {151,7}, {182,7}, {151,7}, {152,7}, {152,8), {152,7},{ 152,7), {152,7}, (153,7), {153,8}, (153,7), (183,7), {153,7}, {1 54,7), {154,8}, {154,7}, {1,7}, {154.7}, {155,7}, {155,8), {155,7}, {182,7}, {155,7), {156,7}, {156,8}, (156,7), {5,7}, {156,7}, {157,7}, { 157,8}, { 157,7}, {183,7}, {157,7}, {158,7}, {158,8}, {158,7}, {1,7), {158,7}, {159,7}, {159,8), {159,7}, {76,7}, {159,7), {160,7}, {160,8}, {160,7}, {183,7} ,{160,7}, {161,7}, {161,8}, {161,7}, {1,7}, {161,7}, {162,7}, {162,8}, {162,7}, {183,7}, {162,7}, (163,7}, {163,8}, {163,7}, {5,7}, {163,7}, {164,7 }, {164,8}, {164,7), {183,7}, {164,7}, {165,7}, {165,8}, {165,7}, {1,7}, {165,7), {166,7), {166,8}, {166,7}, {38,7}, (166,7), {167,7}, (167,8), {167 ,7}, {237,7}, {167,7} ,{168,7}, {168,8}, {168,7}, {0,7}, {168,7},{169,7}, {169,8}, {169,7}, {169,7}, {169,7}, {170,7}, {170,8}, {170,7}, {183,7}, { 170,7}, {171,7}, {171,8}, {171,7}, {1,7}, {171,7}, {172,7}, { 172,8}, {172,7},{182,7}, {172,7}, {173,7}, {173,8}, {173,7}, {173,7}, {173,7}, {174,7 },{174,8},{174,7},{183,7}, {174,7}, {175,7}, {175,8},{175,7},{l,7},{175t7},{176,7}1{176,8},{176,7}, {182,7}, {176,7}, {177,7}, {177,8},{17 7,7}, {5,7}, {177,7}, {178,7}, { 178,8}, {178,7}, {183,7}, {178,7}, {179,7}, {179,8}, {179,7}, {l,7},{179,7},{180,7}, {180,8}, {180,7}, {76,7}, { 18 0,7}, {181,7}, {181,8}, {181,7}, {183,7}, {181,7}, {182,7}, {182,8}, {182,7}, {1,7}, {182,7}, {183,7}, {183,8}, {183,7}, {183,7}, {183,7}, {184,7}, {184,8}, { 184,7}, {5,7}, {184,7}, {185,7}, {185,8}, {185,7}, {183,7}, {185,7}, { 186,7}, {186,8} , {186,7}, {1,7}, {186,7}, {187,7}, { 187,8}, {187,7} ,{38,7}, { 187,7}, { 188,7}, {188,8}, {188,7}, {237,7}, {188,7}, {189,7}, { 189,8}, {189,7}, {0,7}, {189,7}, {190,7}, {190,8}, {190,7}, {190,7}, {190, 7}, {191 ,7}, {191,8}, { 191 ,7}, { 183,7}, {191,7}, {192,7}, {192,8}, {192,7}, { 1,7}, {192,7}, {193,7}, {193,8}, { 193,7}, {182,7}, {193,7}, {194,7}, { 1 94,8), { 194,7}, { 194,7}, { 194,7}, {195,7}, { 195,8}, { 195,7} , { 183,7}, {195,7},{ 196,7}, { 196,8} ,{ 196,7}, {1,7}, {196,7}, {197,7},{197,8}, { 197,7} ,{182,7}, {197,7}, {198,7}, {198,8}, {198,7}, {5,7}, {198,7}, {199,7}, {199,8}, {199,7}, {183,7}, {199,7}, {200,7}, {200,8}, {200,7}, {1,7}, {200,7 }, {201,7}, {201,8}, {201,7}, {76,7}, {201,7}, {202,7}, {202,8}, {202,7}, {183,7}, {202,7}, {203,7}, {203,8}, {203,7}, {1 ,7}, {203,7}, {204,7}, {204 ,8},{204,7}, {183,7}, {204,7}, {205,7}, {205,8}, {205,7}, {5,7}, {205,7}, {206,7}, {206,8}, {206,7}, {183,7}, {206,7}, {207,7}, {207,8}, {207,7}, { 1,7}, {207,7}, {208,7}, {208,8}, {208,7}, {38,7}, {208,7}, {209,7}, {209,8}, {209,7}, {237,7}, {209,7}, {210,7}, {210,8}, {210,7}, {0,7},{210,7},{ 211,7}, {211,8}, {211,7}, {211,7}, {211,7}, {212,7}, {212,8}, {212,7}, { 183,7}, {212,7}, {213,7},{213,8}, {213,7}, { 1 ,7}, {213,7}, {214,7}, {214,8 }, {214,7}, { 182,7}, {214,7}, {215,7}, {215,8}, {215,7}, {215,7}, {215,7}, {216,7}, {216,8}, {216,7}, {183,7}, {216,7}, {217,7}, {217,8}, {217,7}, { 1,7}, {217,7}, {218,7}, {218,8}, {218,7}, {182,7}, {218,7}, {219,7}, {219,8}, {219,7}, {5,7}, {219,7}, {220,7}, {220,8}, {220,7},{183,7}, {220,7}, {221,7}, {221,8}, {221,7}, {1,7}, {221,7}, {222,7}, {222,8}, {222,7}, {76,7},{222,7j, {223,7}, {223,8}, {223,7}, {183,7}, {223,7}, {224,7}, {224,8 }, {224,7}, {1,7}, {224,7}, {225,7}, {225,8}, {225,7}, { 183,7}, {225,7}, {226,7}, {226,8}, {226,7},{5,7}, {226,7}, {227,7}, {227,8}, {227,7}, {183, 7}, {227,7}, {228,7}, {228,8}, {228,7},{ 1,7}, {228,7}, {229,7}, {229,8}, {229,7}, {38,7}, {229,7}, {230,7}, {230,8}, {230,7}, {237,7}, {230,7}, {23 1 , 7}, {231,8},{231,7}, {0,7}, {231,7}, {232,7}, {232,8}, {232,7}, {232,7}, {232,7}, {233,7}, {233,8}, {233,7}, {183,7}, {233,7}, {234,7}, {234,8}, {234,7}, { 1,7}, {234,7}, {235,7}, {235,8}, {235,7}, {182,7}, {235,7}, {236,7}, {236,8}, {236,7}, {236,7}, {236,7}, {237,7}, {237,8}, {237,7}, {183, 7}, {237,7}, {238,7}, {238,8}, {238,7}, { 1 ,7}, {238,7}, {239,7}, {239,8}. {239,7}, {182,7}, {239,7}, {240,7}, {240,8}, {240,7}, {5,7}, {240,7}, {241 ,7}, {241,8}, {241,7}, {183,7}, {241,7}, {242,7}, {242,8}, {242,7}, {1,7}, {242,7}, {243,7}, {243,8},{243,7}, {76,7}, {243,7}, {244,7}, {244,8}, {2 44,7}, {183,7}, {244,7}, {245,7}, {245,8}, {245,7}, {1,7}, {245,7} , {246,7}, {246,8}, {246,7}, {183,7}, {246,7}, {247,7}, {247,8}, {247 ,7}, {5,7}, { 247,7}, {248,7}, {248,8}, {248,7}, {183,7}, {248,7}, {249,7}, {249,8}, {249,7},{ 1,7}, {249,7}, {250,7}, {250,8}, {250,7}, {38,7}, {250,7}, {251,7} ,{251, 8}, {251,7}, {237,7}, {251,7}, {252,7},{252,8}, {252,7}, {0,7}, {252,7}, {253,7}, {253,8}, {253,7}, {253,7}, {253,7}, {254,7}, {254,8}, {254 ,7}, { 183,7}, {254,7}, {255,7}, {255,8}, {255,7}, { 1,7}, {255,7}, {0,7}, {0,8} } {{0,4}, {0,7} > {0 I 7}, {], 7}, {1,8}, {1 > 7} ) {1,7} > {1,7}, { 2,7}, {2,8}, {2,7}, {183.7} {2) 7}) {3,7), {3,8}, {3,7}, {1, 7}, {3,7}, {4,7}, {4,8}, {4,7}, {182,7}, {47}, {5,7}, {5,8}, { 5 > 7}, {5J} ) {5J}, {6,7}, {6,8}, {6,7}, {183 > 7} W6J}, {7,7}, {7,8} , {7,7}, {1,7}, {7,7}, {8 r 7}, {8,8}, {8,7}, {182,7}, {8,7}, { 9.7}, {9.81, (9.71, (5.71, (9.7J, {10.7}, {10.8}, {10.7}, {183.7}, { 10,7}, {11,7}, {11,8}, {11,7}, {1,7}, {11,7}, {12,7}, {12,8}, {12, 7}, {76,7}, {12,7}, {13,7}, {13,8}, {13,7}, {183,7}, {13,7}, { ] 4 ( 7) }, {14,8}, {14,7}, {1,7}, {14,7}, {15,7}, {1 5 , 8}, {1 5 , 7}, {183,7 ), {1 5 , 7}, {16,7}, {16,8}, {16,7}, {5,7}, {16,7}, {17,7}, {17,8} , {17,7}, {183,7}, {17,7}, {18,7}, {18,8}, {18,7}, {1,7}, {18,7}, { 19.7}, {19.8}, {19.7}, {38.7}, {19.7}, {20.7}, {20.8}, {20.7}, {237, 7}, {20,7}, {21,7}, {21,8}, {21,7}, {0,7}, {21,7}, {22,7}, {22,8} , {22,7}, {22,7}, {22,7}, {23,7}, {23,8}, {23,7}, {183,7}, {23,7}, { 24.7}, {24.8}, {24.7}, {1.7}, {24.7}, {25.7}, {25.8}, {25.7}, {182, 7}, {25,7}, {26,7}, {26,8}, {26,7}, {26,7}, {26 , 7}, {27,7}, {27,8}, {27,7}, {183,7}, {27,7}, {28,7}, {28,8}, {28,7 }, {1,7}, {28,7}, {29,7}, {29,8}, {29,7}, {182,7}, {29,7}, {30,7}, {30,8}, {30,7}, {5,7}, {30,7}, {31,7}, {31,8}, {31,7}, {183,7}, {31 , 7}, {32,7}, {32,8}, {32,7}, {1,7}, {32,7}, {33,7}, {33,8}, {33,7 }, {76,7}, {33,7}, {34,7}, {34,8}, {34,7}, {183,7}, {34,7}, {35,7}, {35,8}, {35,7}, {1,7}, {35,7}, {36,7}, {36,8}, {36,7}, {183,7}, {36 , 7}, {37,7}, {37,8}, {37,7}, {5,7}, {37,7}, {38,7}, {38,8}, {38,7 }, {183,7}, {38,7}, {39,7}, {39,8}, {39,7}, {1,7}, {39,7}, {40,7}, {40.8}, {40.7}, {38.7}, {40.7} > {41.7}, {41.8}, {41.7}, {237.7}, {41 , 7}, {42,7}, {42,8}, {42,7}, {0,7}, {42,7}, {43,7}, {43,8}, {43,7 }, {43,7}, {43,7}, {44,7}, {44,8}, {44,7}, {183,7}, {44,7}, {45,7}, {45.8}, {45.7}, {1.7}, {45.7}, {46.7}, {46.8}, {46.7}, {182.7}, {46 , 7}, {47,7}, {47,8}, {47,7}, {47,7}, {47,7}, {48,7}, {48,8}, {48,7 }, {183,7}, {48,7}, {49,7}, {49,8}, {49,7}, {1,7}, {49,7}, {50,7}, {50,8}, {50,7}, {182,7}, {50,7}, {51,7}, {51,8}, {51,7}, {5,7}, { 51.7}, {52.7}, {52.8}, {52.7}, {183.7}, {52.7}, {53.7}, {53.8}, {53, 7}, {1,7}, {53,7}, {54,7}, {54,8}, {54,7}, {76,7}, {54,7}, {55,7} , {55,8}, {55,7}, {183,7}, {55,7}, {56,7}, {56,8}, {56,7}, {1,7}, { 56.7}, {57.7}, {57.8}, {57.7}, {183.7}, {57.7}, {58.7}, {58.8}, {58, 7}, {5,7}, {58,7}, {59,7}, {59,8}, {59,7}, {183,7}, {59,7}, {60,7} , {60,8}, {60,7}, {1,7}, {60,7}, {61,7}, {6i, 8}, {61,7}, {38,7}, { 61.7}, {62.7}, {62.8}, {62.7}, {237.7}, {62.7}, {63.7}, {63.8}, {63, 7}, {0,7}, {63,7), {64,7}, {64,8}, {64,7}, {64,7}, {64,7}, {65,7} , {65,8}, {65,7}, {183,7}, {65,7}, {66,7}, {66,8}, {66,7}, {1,7}, { 66.7}, {67.7}, {67.8}, {67.7}, {182.7), {67.7}, {68.7}, {68.8}, {68, 7}, {68,7}, (68,7),) 69,7), {69,8}, {69,7}, {183,7}, {69,7}, {70,7} , {70,8}, {70,7}, {1,7}, {70,7}, {71,7}, {71,8}, {71,7}, {182,7}, { 71,7}, {72,7}, {72,8}, {72,7}, {5,7}, {72,7}, {73,7}, {73,8}, {73, 7}, {183,7}, {73,7}, {74,7}, {74,8}, {74,7}, {1,7}, {74,7}, {75,7} , {75,8}, {75,7}, {76,7}, {75,7}, {76,7}, {76,8}, {76,7}, {183,7 }, {76,7}, {77,7}, {77,8}, {77,7}, {1,7}, {77,7}, {78,7}, {78,8}, {78,7}, {183,7}, {78,7), {79,7}, {79,8}, {79,7}, {5,7}, {79,7}, {80 , 7}, {80,8}, {80,7}, {183,7}, {80,7}, {81,7}, {81,8}, {81,7}, {1,7 }, {81,7}, {82,7}, {82,8}, {82,7}, {38,7}, {82,7}, {83,7}, {83,8}, {83.7}, {237.7}, (83.7), {84.7}, {84.8}, {84.7}, {0.7}, {84.7}, {85 , 7}, {85,8}, {85,7), {85,7}, {85,7}, {86,7}, {86,8}, {86,7}, {183,7 }, {86,7}, {87,7}, {87,8}, {87,7}, {1,7}, {87,7}, {88,7}, {88,8}, {88,7}, {182,7}, {88,7}, {89,7}, {89,8}, {89,7}, {89,7}, {89,7}, {90 , 7}, {90,8}, {90,7}, {183,7}, {90,7}, {91,7}, {91,8}, {91,7}, (1,7 ), {91.7}, {92.7}, {92.8}, {92.7}, {182.7}, {92.7}, {93.7}, (93.8), {93,7}, {5,7}, {93,7}, {94,7}, {94,8}, {94,7}, {183,7}, {94,7}, {95 , 7}, {95,8}, {95,7}, {1,7}, {95,7}, {96,7}, {96,8}, {96,7}, {76,7} }, {96.7), {97.7}, {97.8}, {97.7}, {183.7}, {97.7}, {98.7}, {98.8}, {98,7}, {1,7}, {98,7}, {99,7}, {99,8}, {99,7}, {183,7}, {99,7}, {100 , 7}, {100,8}, {100, 7), {5,7}, {100,7}, {101,7}, {10), 8}, {101,7} , {183.7}, {101.7), {102.7}, {102.8}, {102.7}, {1.7}, {102.7}, {103.7}, {103, 8}, {103,7}, {38,7}, {103,7}, {104,7}, {104,8}, {104,7}, {237,7}, {104,7} , {105.7}, {105.8}, {105.7}, {0.7}, {105.7}, {106.7}, {106.8}, {106.7}, { 106.7), {106.7}, {107.7}, {I 07.8}, {107.7}, {183.7}, {107.7}, {108.7}, {108 , 8}, {108,7}, {1,7), {108,7}, {109,7}, {109,8}, {109,7}, {182,7}, {109,7} }, {110,7}, {110,8}, {110,7}, {110,7}, {110,7}, {II 1,7}, {111,8}, {111,7} , {183,7}, {111,7}, {112,7}, {112,8}, {112,7}, {1,7), {112,7}, {153,7}, { 1) 3,8}, {113,7}, {182,7}, {113, 7}, {114,7}, {114,8}, {114,7}, {5,7), { 114.7}, {115.7), {115.8), {115.7}, {183.7}, {115.7}, {116.7}, {116.8}, {116 7}, {1,7}, {116,7}, {117,7}, {11,8,8}, {117,7}, {76,7}, {117,7}, {118,7 ), {118.8), {118.7), {183.7), {118.7}, {119.7}, {119.8}, {119.7}, {1.7}, {119,7}, {120,7}, {120,8}, {120,7}, {183,7}, {120,7}, {121,7}, {121,8}, {121 , 7), {5,7}, {121,7}, {122,7}, {122,8}, {122,7}, {183,7}. {122.7}, {123.7}, {123.8}, {123.7}, {1.7}, {123.7}, {124.7}, {124.8}, {124 , 7), {38,7}, {124,7}, {125,7}, {125,8}, {125,7}, {237,7}, {125,7}, {126,7 }, {126,8}, {126,7}, {0,7}, {126,7}, {127,7}, {127,8}, {127,7}, {127,7}, {127,7}, {128,7}, {128,8}, {128,7}, {183,7}, {128,7}, {129,7}, {129,8}, {129} , 7}, {!, 7}, {129,7}, {130,7}, {130,8}, {130,7}, {18 2,7), {130,7}, {131, 7}, {131.8}, {131.7}, {131, 7}, {131.7), {132.7}, {132.8), {132.7}, {183.7} , {132,7}, (133,7), {133,8}, {133,7}, {1,7}, {133,7}, {134,7}, {134,8}, { 134.7), {182.7), {134.7), {135.7), {135.8}, {135.7}, {5.7}, {135.7}, {136, 7}, (136.8), {136.7}, {183.7}, {136.7}, {137.7}, {137, 8), {137.7}, {1.7) , {137,7}, {138,7}, {138,8}, {138,7}, {76,7}, {138,7}, {139,7}, {139,8}, { 139.7}, {183.7}, {139.7}, (140.7), {140.8}, {140.7}, {), 7}, {140.7}, {141, 7}, {141,8}, {141,7}, {183,7}, {141,7}, {142,7}, {142,8}, {142,7}, {5,7} , (142.7), {143.7}, {143.8}, {143.7}, {183.7}, {143.7}, {1 44.7}, {144.8}, {144 , 7}, {1,7}, {144,7}, {145,7), {145, 8}, {145,7}, {38,7}, {145,7}, {146,7}, {146,8}, {146,7}, {237,7}, {146,7} , {147,7}, {147,8}, {147,7}, {0,7}, {147,7}, {148,7}, {148,8}, {148,7}, { 148.7}, {148.7), {149.7}, {149.8}, {149.7}, {183.7}, (149.7), {150.7}, (150, 8), {150,7}, {1,7}, {150,7}, {151,7}, {151,8}, {151,7}, {182,7}, {151,7} , (152.7), {152.8), {152.7}, {152.7), {152.7}, (153.7), {153.8}, (153.7), ( 183.7), {153.7}, {1 54.7), {154.8}, {154.7}, {1.7}, {154.7}, {155.7}, {155.8 ), {155.7}, {182.7}, {155.7), {156.7}, {156.8}, (156.7), {5.7}, {156.7}, {157.7}, {157.8}, {157.7}, {183.7}, {157.7}, {158.7}, {158.8}, {158.7}, {1 , 7), {158,7}, {159,7}, {159,8}, {159,7}, {76,7}, {159,7}, {160,7}, {160,8} }, {160,7}, {183,7}, {160,7}, {161,7}, {161,8}, {161,7}, {1,7}, {161,7}, {162.7}, {162.8}, {162.7}, {183.7}, {162.7}, (163.7}, {163.8}, {163.7}, {5 , 7}, {163,7}, {164,7}, {164,8}, {164,7}, {183,7}, {164,7}, {165,7}, {165,8} }, {165,7}, {1,7}, {165,7}, {166,7}, {166,8}, {166,7}, {38,7}, (166,7), {167.7}, (167.8), {167 , 7}, {237,7}, {167,7}, {168,7}, {168,8}, {168,7}, {0,7}, {168,7}, {169,7} }, {169.8}, {169.7}, {169.7}, {169.7}, {170.7}, {170.8}, {170.7}, {183.7}, {170,7}, {171,7}, {171,8}, {171,7}, {1,7}, {171,7}, {172,7}, {172,8}, {172 , 7}, {182,7}, {172,7}, {173,7}, {173,8}, {173,7}, {173,7}, {173,7}, {174,7} }, {174,8}, {174,7}, {183,7}, {174,7}, {175,7}, {175,8}, {175,7}, {1,7}, {175 t 7}, {176.7} 1 {176.8}, {176.7}, {182.7}, {176.7}, {177.7}, {177.8}, {17 7.7}, {5.7}, {177.7}, {178.7}, {178.8}, {178.7}, {183.7}, {178.7}, {179, 7}, {179,8}, {179,7}, {1,7}, {179,7}, {180,7}, {180,8}, {180,7}, {76,7} , {18 0.7}, {181.7}, {181.8}, {181.7}, {183.7}, {181.7}, {182.7}, {182.8}, {182.7}, {1.7}, {182.7}, {183.7}, {183.8}, {183.7}, {183.7}, {183.7}, {184 , 7}, {184,8}, {184,7}, {5,7}, {184,7}, {185,7}, {18 5 , 8}, {185,7}, {183, 7}, {185,7}, {186,7}, {186,8}, {186,7}, {1,7}, {186,7}, {187,7}, {187,8} , {187.7}, {38.7}, {187.7}, {188.7}, {188.8}, {188.7}, {237.7}, {188.7}, { 189.7}, {189.8}, {189.7}, {0.7}, {189.7}, { 190.7}, {190.8}, {190.7}, {190.7}, {190, 7}, {191, 7}, {191.8}, {191, 7}, {183, 7}, {191.7}, {192.7}, {192.8}, {192.7}, {1.7}, {192.7}, {193.7}, {193.8} , {193.7}, {182.7}, {193.7}, {194.7}, {1 94.8), {194.7}, {194.7}, {194.7}, {195.7}, {195.8}, {195.7}, {183.7}, {195.7}, {196.7}, {196.8}, {196.7}, {1 , 7}, {196,7}, {197,7}, {197,8}, {197,7}, {182,7}, {197,7}, {198,7}, {198,8 }, {198,7}, {5,7}, {198,7}, {199,7}, {199,8}, {199,7}, {183,7}, {199,7}, {200,7}, {200,8}, {200,7}, {1,7}, {200,7}, {201,7}, {201,8}, {201,7}, {76 , 7}, {201,7}, {202,7}, {202,8}, {202,7}, {183,7}, {202,7}, {203,7}, {203,8 }, {203,7}, {1, 7}, {203,7}, {204,7}, {204, 8}, {204,7}, {183,7}, {204,7}, {205.7}, {205.8}, {205.7}, {5.7}, {205.7}, {206.7}, {206.8}, {206.7}, {183 , 7}, {206,7}, {207,7}, {207,8}, {207,7}, {1,7}, {207,7}, {208,7}, {208,8} }, {208,7}, {38,7}, {208,7}, {209,7}, {209,8}, {209,7}, {237,7}, {209,7}, {210,7}, {210,8}, {210,7}, {0,7}, {210,7}, {211,7}, {211,8}, {211,7}, {211 , 7}, {211,7}, {212,7}, {212.8}, {212.7}, {183.7}, {212.7}, {213.7}, {213.8}, {213.7}, {1, 7}, {213 , 7}, {214,7}, {214,8}, {214,7}, {182,7}, {214,7}, {215,7}, {215,8}, {215,7} }, {215.7}, {215.7}, {216.7}, {216.8}, {216.7}, {183.7}, {216.7}, {217.7}, {217.8}, {217.7}, {1.7}, {217.7}, {218.7}, {218.8}, {218.7}, {182.7}, {218} , 7}, {219,7}, {219,8}, {219,7}, {5,7}, {219,7}, {220,7}, {220,8}, {220,7 }, {183,7}, {220,7}, {221,7}, {221,8}, {221,7}, {1,7}, {221,7}, {222,7}, {222.8}, {222.7}, {76.7}, {222.7}, {223.7}, {223.8}, {223.7}, {183.7}, {223, 7}, {224,7}, {224,8}, {224,7}, {1,7}, {224,7}, {225,7}, {225,8}, {225,7} , {183,7}, {225,7}, {226,7}, {226,8}, {226,7}, {5,7}, {226,7}, {227,7}, { 227.8}, {227.7}, {183, 7}, {227.7}, {228.7}, {228.8}, {228.7}, {1.7}, {228, 7}, {229,7}, {229,8}, {229,7}, {38,7}, {229,7}, {230,7}, {230,8}, {230,7} , {237.7}, {230.7}, {23 1, 7}, {231.8}, {231.7}, {0.7}, {231.7}, {232.7}, {232.8}, {232.7}, {232.7}, {232.7}, {233.7}, {233.8}, {233.7}, {183.7}, {233} , 7}, {234,7}, {234,8}, {234,7}, {1 , 7}, {234,7}, {235,7}, {235,8}, {235,7}, {182,7}, {235,7}, {236,7}, {236,8} }, {236,7}, {236,7}, {236,7}, {237,7}, {237,8}, {237,7}, {183, 7}, {237,7}, {238,7}, {238,8}, {238,7}, {1, 7}, {238,7}, {239,7}, {239,8}. {239,7}, {182,7}, {239,7}, {240,7}, {240,8}, {240,7}, {5,7}, {240,7}, {241} , 7}, {241,8}, {241,7}, {183,7}, {241,7}, {242,7}, {242,8}, {242,7}, {1,7 }, {242,7}, {243,7}, {243,8}, {243,7}, {76,7}, {243,7}, {244,7}, {244,8}, {2 44,7}, {183,7}, {244,7}, {245,7}, {245,8}, {245,7}, {1,7}, {245,7}, { 246.7}, {246.8}, {246.7}, {183.7}, {246.7}, {247.7}, {247.8}, {247, 7}, {5, 7}, {247,7}, {248,7}, {248,8}, {248,7}, {183,7}, {248,7}, {249,7}, {249,8} , {249,7}, {1,7}, {249,7}, {250,7}, {250,8}, {250,7}, {38,7}, {250,7}, { 251.7}, {251, 8}, {251.7}, {237.7}, {251.7}, {252.7}, {252.8}, {252.7}, {0, 7}, {252,7}, {253,7}, {253,8}, {253,7}, {253,7}, {253,7}, {254,7}, {254,8} , {254, 7}, {183,7}, {254,7}, {255,7}, {255,8}, {255,7}, {1,7}, {255,7}, { 0.7}, {0.8}
ANNEXE 3 Codage des différentes instructions à 7 cycles (fichier try7.txt)APPENDIX 3 Coding of the different 7-cycle instructions (file try7.txt)
{ {LDA.OMLDAJÎΛLDA^}, ...(insérer ici des éléments de la forme {LDA,i}) ...,{LDA,251 }, {LDA,252}, {LDA.253}, {LDA,254}, {LDA,255},{BRA,0}, (BRA1] }t{BRA,2},... insérer ici des éléments de la forme {BRA, i}) ..., {BRA,253}, {BRA,254}, {BRA,255}, {INC,Q) }{{LDA.OMLDAJÎΛLDA ^}, ... (insert here elements of the form {LDA, i}) ..., {LDA, 2 5 1}, {LDA, 2 5 2}, {LDA.253} , {LDA, 2 5 4}, {LDA, 2 55 }, {BRA, 0}, (BRA 1 ]} t {BRA, 2}, ... insert here elements of the form {BRA, i}) ..., {BRA, 2 5 3}, {BRA, 2 5 4}, {BRA, 2 55 }, {INC, Q)}
ANNEXE 4 Codage des différentes instructions à 8 cycles (fichier try8.txt)APPENDIX 4 Coding of the different 8-cycle instructions (file try8.txt)
{ {STA,1},{STA,2J,...insérer ici des éléments de Ia forme {STA, i})...,{STA>252},{STA,253},{STA,254),{STA,255}, {STA,0} } {{STA, 1}, {STA, 2J, ... insert here elements of the form {STA, i}) ..., {STA > 2 5 2}, {STA, 2 5 3}, {STA , 2 5 4), {STA 25 5}, {STA, 0}}
ANNEXE 5ANNEX 5
portR equ $00 ; read port locationportR equ $ 00; read port location
PortS egu PortR+1 ; send port locationPortS egu PortR + 1; send port location
org portR dw $0000 start: sta ports addrl Ida portR sta portsorg portR dw $ 0000 start: port ports addrl Ida portR sta ports
Ida addrl+1 sta ports inca sta ports sta addrl+1 sta ports bne sendIda addrl + 1 sta ports inca sta ports sta addrl + 1 sta ports bne send
org $lffE dw start org $ lffE dw start

Claims

REVENDICATIONS
1. Procédé de vérification de la conformité du contenu logique d'un appareil informatique (2) à un contenu de référence, l'appareil informatique présentant un processeur (4), une mémoire (6) dans laquelle le processeur peut lire et écrire, et un dispositif d'entrée sortie (8) permettant un dialogue entre le processeur (4) de l'appareil et le monde extérieur le procédé comprenant les étapes suivantesA method of verifying the conformity of the logical contents of a computing device (2) to a reference content, the computing device having a processor (4), a memory (6) in which the processor can read and write, and an output input device (8) allowing a dialogue between the processor (4) of the apparatus and the outside world, the method comprising the following steps
- envoi (10) à l'appareil (2) d'une demande de chargement dans la mémoire (6) et d'exécution d'un programme de vérification (P), Ie programme de vérification étant capable d'écrire des données dans la mémoire (6) de l'appareil et de lire des données dans la mémoire (6) pour les envoyer vers le dispositif d'entrée sortie (8);sending (10) to the apparatus (2) a request for loading into the memory (6) and executing a verification program (P), the verification program being able to write data into the memory (6) of the apparatus and reading data in the memory (6) to send them to the input input device (8);
- envoi (12) à l'appareil d'une demande d'exécution du programme (P) pour saturer la mémoire (6) disponible non occupée par le programme (P); - échange (14, 16) de messages avec l'appareil exécutant le programme (P) etsending (12) to the apparatus a program execution request (P) for saturating the available memory (6) not occupied by the program (P); - exchange (14, 16) messages with the device running the program (P) and
- vérification (18) de la conformité du contenu logique de l'appareil en fonction des messages échangés avec l'appareil.- checking (18) of the conformity of the logical contents of the device according to the messages exchanged with the device.
2. Le procédé de la revendication 1, dans lequel la vérification de la conformité s'effectue en fonction du contenu des messages échangés avec l'appareil.2. The method of claim 1, wherein the verification of compliance is effected according to the content of the messages exchanged with the apparatus.
3. Le procédé de la revendication 1 ou 2, dans lequel la vérification de la conformité s'effectue en fonction de la mesure du cadencement dans le temps des messages échangés avec l'appareil.3. The method of claim 1 or 2, wherein the checking of the conformity is carried out according to the measurement of the timing in time of the messages exchanged with the apparatus.
4. Le procédé de la revendication 3, dans lequel le programme de vérification (P) comprend des instructions de lecture supplémentaires, provoquant une activité accrue sur le dispositif d'entrée sortie (8).The method of claim 3, wherein the verification program (P) comprises additional read instructions, causing increased activity on the output input device (8).
5. Le procédé de l'une des revendications 1 à 4, comprenant en outre une étape de preuve de Ia vérification de la conformité par une technique de retour arrière appliquée au jeu d'instructions exécutable par le processeur (4). The method of one of claims 1 to 4, further comprising a step of proving compliance verification by a backtracking technique applied to the instruction set executable by the processor (4).
6. Le procédé de la revendication 5, dans lequel l'étape de preuve de la conformité par une technique de retour arrière comprend l'évaluation des différentes instructions candidates de manière concrète.The method of claim 5, wherein the step of demonstrating compliance by a backtracking technique comprises evaluating the various candidate instructions in a concrete manner.
7. Le procédé de la revendication 5, dans lequel l'étape de preuve de la conformité par une technique de retour arrière comprend l'évaluation des différentes instructions candidates de manière abstraite.The method of claim 5, wherein the step of demonstrating conformance by a backtracking technique comprises evaluating the various candidate instructions in an abstract manner.
8. Le procédé de l'une des revendications 1 à 4, comprenant en outre une étape de preuve de la vérification de la conformité par une recherche exhaustive des programmes possibles appliquée au jeu d'instructions exécutables par le processeur (4).The method of one of claims 1 to 4, further comprising a step of proving the compliance check by an exhaustive search of the possible programs applied to the executable instruction set by the processor (4).
9. Le procédé de l'une des revendications 1 à 8, dans lequel la demande de chargement dans la mémoire comprend une demande de chargement du programme de vérification (P) dans la mémoire (6) à partir du dispositif d'entrée sortie (8).The method of one of claims 1 to 8, wherein the request for loading into the memory comprises a request to load the verification program (P) into the memory (6) from the input input device ( 8).
10. Le procédé de l'une des revendications 1 à 8, dans lequel la demande de chargement dans la mémoire comprend une demande d'activation d'un programme de vérification (P) contenu dans l'appareil.The method of one of claims 1 to 8, wherein the request for loading into the memory includes a request to activate a verification program (P) contained in the apparatus.
11. Le procédé de l'une des revendications 1 à 10, dans lequel l'exécution du programme (P) pour saturer la mémoire disponible comprend la lecture de données de bourrage depuis le dispositif d'entrée sortie et l'écriture des données de bourrage dans la mémoire.The method of one of claims 1 to 10, wherein executing the program (P) to saturate the available memory comprises reading stuffing data from the input input device and writing the data of jam in the memory.
12. Le procédé de l'une des revendications 1 à 11, dans lequel l'exécution du programme (P) pour saturer la mémoire disponible comprend la lecture d'un problème depuis le dispositif d'entrée sortie et la résolution par le programme de vérification (P) du problème en utilisant la mémoire disponible.The method of one of claims 1 to 11, wherein executing the program (P) to saturate the available memory includes reading a problem from the input input device and the resolution by the program. checking (P) of the problem using the available memory.
13. Le procédé de l'une des revendications 1 à 12, dans lequel l'exécution du programme (P) pour saturer la mémoire disponible comprend la lecture d'une graine depuis le dispositif d'entrée sortie et l'expansion de la graine en utilisant la mémoire disponible.The method of one of claims 1 to 12, wherein executing the program (P) to saturate the available memory comprises reading a seed from the input input device and expanding the seed. using available memory.
14. Le procédé de l'une des revendications 1 à 13, dans lequel l'échange de messages comprend : - l'envoi (14) à l'appareil d'une demande de lecture de données de la mémoire (6); etThe method of one of claims 1 to 13, wherein the message exchange comprises: sending (14) to the apparatus a request for reading data from the memory (6); and
- la réception (16) depuis l'appareil des données lues dans la mémoire (6), y compris le code du programme de vérification.- Reception (16) from the device of the data read from the memory (6), including the code of the verification program.
15. Le procédé de l'une des revendications 1 à 13, dans lequel Ie programme de vérification est capable d'exécuter une fonction sur des données de la mémoire, et dans lequel l'échange de message comprend :The method of one of claims 1 to 13, wherein the verification program is capable of performing a function on data of the memory, and wherein the message exchange comprises:
- l'envoi (14) à l'appareil d'une demande d'exécution de la fonction et de lecture de données de la mémoire (6); etsending (14) to the apparatus a request for executing the function and for reading data from the memory (6); and
- la réception (16) depuis l'appareil du résultat de la fonction et du code du programme de vérification lue dans la mémoire.receiving (16) from the apparatus the result of the function and the code of the verification program read from the memory.
16. Le procédé de la revendication 15, dans lequel la fonction comprend le calcul de hachage des données de la mémoire autres que le code du programme de vérification.The method of claim 15, wherein the function comprises hashing calculation of the data of the memory other than the code of the verification program.
17. Le procédé de l'une des revendications 1 à 13, dans lequel l'exécution du programme (P) pour saturer la mémoire disponible comprend la lecture d'un problème depuis le dispositif d'entrée sortie et la résolution du problème en utilisant la mémoire disponible et dans lequel l'échange de message comprend :The method of one of claims 1 to 13, wherein executing the program (P) to saturate the available memory comprises reading a problem from the input-output device and solving the problem using the available memory and wherein the message exchange comprises:
- l'envoi (14) à l'appareil d'un problème; etsending (14) to the apparatus a problem; and
- la réception (16) depuis l'appareil du résultat du problème et du code du programme de vérification lue dans la mémoire.receiving (16) from the apparatus the result of the problem and the code of the verification program read from the memory.
18. Le procédé de l'une des revendications 1 à 17, dans lequel Ie code du programme de vérification comprend des instructions de relecture du code vers le dispositif d'entrée sortie.18. The method of any one of claims 1 to 17, wherein the verification program code includes instructions for replaying the code to the output input device.
19. Le procédé de l'une des revendications 1 à 18, dans lequel l'exécution du programme de vérification provoque l'effacement de la mémoire, à l'exclusion du code du programme de vérification.19. The method of one of claims 1 to 18, wherein the execution of the verification program causes the erasure of the memory, excluding the code of the verification program.
20. Un procédé de restauration d'un appareil informatique présentant un processeur (4), une mémoire (6) dans laquelle le processeur peut lire et écrire, et un dispositif d'entrée sortie (8) permettant un dialogue entre le processeur (4) de l'appareil et le monde extérieur, le procédé comprenant les étapes de - sauvegarde (30) vers le monde extérieur des données présentes dans la mémoire (6);20. A method of restoring a computing device having a processor (4), a memory (6) in which the processor can read and write, and an input input device (8) for dialogue between the processor (4). ) of the apparatus and the outside world, the method comprising the steps of - backup (30) to the outside world of the data present in the memory (6);
- vérification (32) de la conformité du contenu logique de l'appareil informatique (2) à un contenu de référence, suivant le procédé de l'une des revendications 1 à 19;- checking (32) the conformity of the logical contents of the computing device (2) to a reference content, according to the method of one of claims 1 to 19;
- analyse (34) et le cas échéant traitement des données sauvegardées et - recopie (38) des données analysées dans la mémoire de l'appareil.- analysis (34) and if necessary treatment of the saved data and - recopy (38) of the analyzed data in the memory of the device.
21. Un appareil informatique, comprenant un processeur (4), une mémoire (6) dans laquelle le processeur peut lire et écrire, un dispositif d'entrée sortie (8) permettant un dialogue entre le processeur (4) de l'appareil et le monde extérieur et un programme de vérification stocké dans l'appareil, le programme de vérification comprenant des instructions adaptées à provoquer, lorsqu'il est exécuté par le processeur,21. A computer apparatus, comprising a processor (4), a memory (6) in which the processor can read and write, an output input device (8) for a dialogue between the processor (4) of the apparatus and the outside world and a verification program stored in the apparatus, the verification program including instructions adapted to cause, when executed by the processor,
- l'écriture de données dans la mémoire (6) de l'appareil et- the writing of data in the memory (6) of the device and
- la lecture des données dans la mémoire (6), y-compris le code du programme de vérification, pour les envoyer vers le dispositif d'entrée sortie (8).reading the data in the memory (6), including the code of the verification program, to send them to the input input device (8).
22. Un dispositif informatique, comprenant - un premier sous-ensemble présentant un processeur, une mémoire dans laquelle le processeur peut lire et écrire, et un dispositif d'entrée sortie;A computing device, comprising - a first subset having a processor, a memory in which the processor can read and write, and an input input device;
- un deuxième sous-ensemble, le deuxième sous-ensemble étant adapté à dialoguer avec le processeur du premier sous-ensemble à travers le dispositif d'entrée sortie et à vérifier la conformité de l'état logique du premier sous-ensemble suivant le procédé de l'une des revendications 1 à 19. a second subset, the second subset being adapted to interact with the processor of the first subset through the input-output device and to verify the conformity of the logic state of the first subset according to the method; of one of claims 1 to 19.
PCT/FR2007/000351 2006-03-01 2007-02-27 Method for verifying conformity of the logical content of a computer appliance with a reference content WO2007099224A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/280,438 US20090260084A1 (en) 2006-03-01 2007-02-27 Method for verifying conformity of the logical content of a computer appliance with a reference content

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP062903455 2006-03-01
EP06290345A EP1830295A1 (en) 2006-03-01 2006-03-01 Method for verifying the conformity of the logical content of a computer device with a reference content
EP06017741A EP1830293A1 (en) 2006-03-01 2006-08-25 Method for verifying the conformity of the logical content of a computer device with a reference content
EP060177417 2006-08-25

Publications (2)

Publication Number Publication Date
WO2007099224A2 true WO2007099224A2 (en) 2007-09-07
WO2007099224A3 WO2007099224A3 (en) 2007-10-25

Family

ID=38283232

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2007/000351 WO2007099224A2 (en) 2006-03-01 2007-02-27 Method for verifying conformity of the logical content of a computer appliance with a reference content

Country Status (1)

Country Link
WO (1) WO2007099224A2 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1653321A1 (en) * 2004-10-27 2006-05-03 Lucent Technologies Inc. Method and apparatus for software integrity protection using timed executable agents

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1653321A1 (en) * 2004-10-27 2006-05-03 Lucent Technologies Inc. Method and apparatus for software integrity protection using timed executable agents

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
GRIZZARD J B ET AL: "Towards an approach for automatically repairing compromised network systems" NETWORK COMPUTING AND APPLICATIONS, 2004. (NCA 2004). PROCEEDINGS. THIRD IEEE INTERNATIONAL SYMPOSIUM ON BOSTON, MA, USA AUG. 30 - SEPT. 1, 2004, PISCATAWAY, NJ, USA,IEEE, 30 août 2004 (2004-08-30), pages 389-392, XP010736923 ISBN: 0-7695-2242-4 *
MARK SHANECK ET AL: "Remote Software-Based Attestation for Wireless Sensors" SPRINGER VERLAG, 2005, pages 27-41, XP019026274 Berlin Heidelberg *
SESHADRI A ET AL: "SWATT: softWare-based attestation for embedded devices" SECURITY AND PRIVACY, 2004. PROCEEDINGS. 2004 IEEE SYMPOSIUM ON BERKELEY, CA, USA 9-12 MAY 2004, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 9 mai 2004 (2004-05-09), pages 272-282, XP010768051 ISBN: 0-7695-2136-3 *
SHI E ET AL: "BIND: A Fine-Grained Attestation Service for Secure Distributed Systems" SECURITY AND PRIVACY, 2005 IEEE SYMPOSIUM ON OAKLAND, CA, USA 08-11 MAY 2005, PISCATAWAY, NJ, USA,IEEE, 8 mai 2005 (2005-05-08), pages 154-168, XP010798369 ISBN: 0-7695-2339-0 *

Also Published As

Publication number Publication date
WO2007099224A3 (en) 2007-10-25

Similar Documents

Publication Publication Date Title
EP1830295A1 (en) Method for verifying the conformity of the logical content of a computer device with a reference content
Bond et al. Chip and Skim: cloning EMV cards with the pre-play attack
Decker et al. Bitcoin transaction malleability and MtGox
CN107395614B (en) Single sign-on method and system
KR101948721B1 (en) Method and apparatus for examining forgery of file by using file hash value
CN110765451B (en) Risk identification method and device and electronic equipment
CN112507291B (en) Method and device for generating unique identifier of Android device
Ma et al. An empirical study of sms one-time password authentication in android apps
CN112861191B (en) Application program monitoring method and device
EP1904946B1 (en) Detection of faults during a long perturbation
CN108111464B (en) Data verification method and device
EP3033857B1 (en) Binary code authentication
FR2987152A1 (en) METHOD AND SECURITY DEVICE FOR PERFORMING A TRANSACTION
EP1108249B1 (en) Method for making secure a sensitive information processing in a monolithic security module, and associated security module
FR2969787A1 (en) PROTECTION OF APPLETS AGAINST HALF-CHANNEL ANALYZES
KR101532765B1 (en) System and method for application counterfeit prevention
CN114006705B (en) Digital signature processing method and device, computer equipment and storage medium
WO2007099224A2 (en) Method for verifying conformity of the logical content of a computer appliance with a reference content
WO2017215650A1 (en) Automatic login method and device for micro-game client, program, and medium
CN113886894A (en) Digital signature method and digital signature device
Du et al. An Empirical Analysis of Hazardous Uses of Android Shared Storage
CN108259490B (en) Client verification method and device
CN113065168A (en) Method, device and storage medium for storing and verifying authenticity of video data
CN106533685A (en) Identity authentication method, identity authentication device, and identity authentication system
CN113268737A (en) Environment security verification method, system and client

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 07731055

Country of ref document: EP

Kind code of ref document: A2

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 07731055

Country of ref document: EP

Kind code of ref document: A2

WWE Wipo information: entry into national phase

Ref document number: 12280438

Country of ref document: US