US10613993B2 - Method for protecting a program code, corresponding system and processor - Google Patents
Method for protecting a program code, corresponding system and processor Download PDFInfo
- Publication number
- US10613993B2 US10613993B2 US14/610,924 US201514610924A US10613993B2 US 10613993 B2 US10613993 B2 US 10613993B2 US 201514610924 A US201514610924 A US 201514610924A US 10613993 B2 US10613993 B2 US 10613993B2
- Authority
- US
- United States
- Prior art keywords
- instruction word
- cache
- instruction
- memory
- encrypted
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active, expires
Links
- 238000000034 method Methods 0.000 title claims description 31
- 230000015654 memory Effects 0.000 claims abstract description 145
- 238000012795 verification Methods 0.000 claims abstract description 69
- 230000010365 information processing Effects 0.000 claims description 31
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims 10
- 101100473585 Arabidopsis thaliana RPP4 gene Proteins 0.000 description 8
- 101150085479 CHS2 gene Proteins 0.000 description 8
- 101100167214 Emericella nidulans (strain FGSC A4 / ATCC 38163 / CBS 112.46 / NRRL 194 / M139) chsA gene Proteins 0.000 description 8
- 101100377543 Gerbera hybrida 2PS gene Proteins 0.000 description 8
- 101100439693 Ustilago maydis (strain 521 / FGSC 9021) CHS4 gene Proteins 0.000 description 8
- 101001018064 Homo sapiens Lysosomal-trafficking regulator Proteins 0.000 description 5
- 101000667110 Homo sapiens Vacuolar protein sorting-associated protein 13B Proteins 0.000 description 5
- 102100033472 Lysosomal-trafficking regulator Human genes 0.000 description 5
- 239000013256 coordination polymer Substances 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/603—Details of cache memory of operating mode, e.g. cache mode or local memory mode
Definitions
- the disclosure relates to the protection of program codes intended to be executed by an information processing module, for example but not limitingly a microprocessor.
- SoC system-on-chip
- a complex system-on-chip may comprise, in addition to a microprocessor, hundreds of different modules commonly referred to by the person skilled in the art by the acronym IP (Intellectual Property). Most of these modules may contain microcontrollers which execute code. Furthermore, these modules may be used by attackers as entry points for spying, and possibly subsequently modifying the program code executed by the microprocessor.
- IP Intelligent Property
- One embodiment provides protection of a program code intended to be executed by a microprocessor, for example, which makes this program code less sensitive to attacks.
- One embodiment also provides protection of a program code which allows verification of the integrity of this program code.
- One embodiment furthermore provides a scheme for protecting the program code distributed all along the production and execution sequence, and not only in the startup sequence (better known to the person skilled in the art by the term “boot”).
- One aspect provides a method for protecting a program code intended to be executed by an information processing module, for example a processor or a microprocessor, comprising at least one level-one cache of a cache memory containing cache lines, each having an address field and a data field, this data field being intended to store instruction words executable by the central unit of the information processing module.
- an information processing module for example a processor or a microprocessor, comprising at least one level-one cache of a cache memory containing cache lines, each having an address field and a data field, this data field being intended to store instruction words executable by the central unit of the information processing module.
- the method according to this aspect comprises:
- DRAM memory dynamic random-access memory
- the content of a memory location of the first memory for example the DRAM memory
- the communication medium for example a “network-on-chip” (NoC)
- NoC network-on-chip
- the cache memory is a hierarchy of caches and, in addition to the level-one cache, to contain at least one higher-level cache, for example a level-two cache and a level-three cache, in which case the level-three cache may optionally be outside the information processing module.
- the decryption of the encrypted content is advantageously carried out locally at the level of the level-one cache, that is to say between the level-two cache and the level-one cache, or alternatively downstream of the level-one cache, and the encrypted content delivered to the cache memory remains stored encrypted in the various cache levels of levels greater than or equal to two.
- the method advantageously comprises decryption of the encrypted content within the information processing module.
- the method comprises, after the decryption, delivery of the requested instruction word to the central unit.
- delivery of the requested instruction word to the central unit.
- no verification of the integrity of this decrypted content is then carried out before delivery of the requested instruction word to the central unit.
- the method furthermore comprises, before delivery of the requested instruction word, verification of the integrity of the decrypted content and delivery of the requested instruction word if the result of the verification is representative of an integral content.
- the method comprises:
- a scheme for protecting the program code is then obtained, which is distributed all along the production and execution sequence of this program code, that is to say during the compilation of the program code, during the delivery of this program code from the FLASH memory to the DRAM memory, and during the execution of the program code, by virtue of the fact that the decryption of the program code portion delivered to the microprocessor in the event of a cache miss is only carried out inside the microprocessor, and more particularly locally at the level of the cache memory.
- control indication may be a checksum
- verification of the integrity of the check indication then comprises, after decryption of the encrypted content, a new calculation of a checksum and a comparison of the checksum present in the decrypted content and the newly calculated checksum.
- the first phase furthermore comprise verification of the integrity of the modified compiled program code before replacement of each second instruction word.
- the verification of the integrity of the modified program code may here again be carried out with the aid of an additional checksum calculated on the basis of the modified program code.
- a checksum may be calculated before encryption of the modified program code and storage in the FLASH memory.
- the first phase may be carried out when launching a startup program.
- Another aspect provides a system, comprising
- the decryption means are advantageously configured in order to carry out the decryption of the encrypted content at the level of the level-one cache.
- control means are configured in order, before the decryption of the encrypted content, to carry out storage of this encrypted content in the data field of a cache line of the cache memory.
- control means are configured in order, after the decryption of the encrypted content, to carry out storage of the decrypted content in the data field of a cache line of the level-one cache of the cache memory.
- the decryption means are configured in order to carry out decryption of the encrypted content locally at the level of the level-one cache.
- control means are configured in order, after the decryption, to deliver the requested instruction word to the central unit.
- system furthermore comprises verification means configured in order, before delivery of the requested instruction word, to carry out verification of the integrity of the decrypted content and to deliver the requested instruction word if the result of the verification is representative of an integral content.
- system furthermore comprises
- the check indication is a checksum
- the verification means comprise calculation means configured in order to carry out, after decryption of the encrypted content, a new calculation of a checksum and a comparison of the checksum present in the decrypted content and the newly calculated checksum.
- the processing means furthermore comprise initial verification means configured in order to carry out verification of the integrity of the modified compiled program code before replacement of each second instruction word.
- the initial verification means may comprise initial calculation means configured in order to calculate an additional checksum on the basis of the modified program code.
- the system may comprise a startup controller advantageously containing the processing means.
- the system may be a system-on-chip.
- Another aspect provides an information processing module, for example a processor or a microprocessor, comprising
- control means are configured in order, before the decryption of the encrypted content, to carry out storage of this encrypted content in the data field of a cache line of the cache memory.
- control means are configured in order, after the decryption of the encrypted content, to carry out storage of the decrypted content in the data field of a cache line of the level-one cache of the cache memory.
- the decryption means are configured in order to carry out decryption of the encrypted content locally at the level of the level-one cache.
- control means are configured in order, after the decryption, to deliver the requested instruction word to the central unit.
- the module furthermore comprises verification means configured in order, before delivery of the requested instruction word, to carry out verification of the integrity of the decrypted content of the data field of a cache line and to deliver the requested instruction word if the result of the verification is representative of an integral content.
- the decrypted content of the data field of a cache line contains an instruction word group comprising first instruction words relating to a compiled program code and a check indication, obtained on the basis of at least some of the first instruction words and located at a reference position in the cache line, which may be the same for all the cache lines, and the verification means are configured in order to carry out verification the integrity of the check indication, an integral check indication being representative of the integral nature of the decrypted content, and if the result of the verification is representative of an integral content, in order to replace, before delivery of the requested instruction word to the central unit, the check indication with a second instruction word, this instruction word being identical for all the cache lines.
- the second instruction word may be a no operation instruction
- the check indication may be a checksum
- the verification means then for example comprise calculation means configured in order to carry out, after decryption of the decrypted content, a new calculation of a checksum and a comparison of the checksum present in the decrypted content and the newly calculated checksum.
- the reference SYS denotes a system, for example a system-on-chip (SoC), comprising an information processing module 1 , for example a microprocessor, coupled to a communication medium 2 , in the case in point a network-on-chip (NoC).
- SoC system-on-chip
- NoC network-on-chip
- the system SYS comprises a memory 4 , also referred to as the initial memory, for example a nonvolatile memory of the FLASH type, associated with an initial memory controller 3 coupled to the network 2 .
- the initial memory for example a nonvolatile memory of the FLASH type
- the system SYS also comprises another memory 6 , also referred to as the first memory, for example a DRAM memory, as well as an associated first memory controller 5 also coupled to the network 2 .
- the first memory for example a DRAM memory
- an associated first memory controller 5 also coupled to the network 2 .
- the system SYS also comprises various modules or IP, 7 (a single one being represented for the sake of simplicity) also coupled to the network 2 .
- the system SYS comprises a startup controller 18 (“boot controller”), also coupled to the network 2 and configured in order to launch a startup (“boot”) sequence of the system SYS, and in particular of the microprocessor 1 .
- boot controller a startup controller 18
- boot controller also coupled to the network 2 and configured in order to launch a startup (“boot”) sequence of the system SYS, and in particular of the microprocessor 1 .
- the startup controller 18 comprises processing means 180 , themselves comprising initial verification means 1800 including initial calculation means 1801 , which may for example be implemented as software, and which will be returned to in more detail below regarding their function.
- the microprocessor 1 comprises an interface 10 coupled to the network 2 , a central unit 11 (also known to the person skilled in the art by the acronym CPU: “Central Processing Unit”).
- a central unit 11 also known to the person skilled in the art by the acronym CPU: “Central Processing Unit”.
- the processor 1 also comprises a cache memory 12 , which will be assumed here only to be of level 1 comprising a level-1 instruction cache 120 and a level-1 data cache 130 .
- the processor 1 also comprises a cache controller 14 , as well as control means 15 , decryption means 16 and verification means 17 , the functions of which will be returned to in more detail below.
- the system SYS furthermore comprises a compiler 19 .
- the instruction cache 120 comprises cache lines LCH j , each comprising an address field TG j and a data field CHD j .
- the data field CHD j comprises a plurality of instruction words executable by the central unit 11 of the microprocessor, and the address field TG j comprises the address of the data field CHD j in the first memory 6 .
- the reference CP denotes a program code intended to be executed by the microprocessor 1 .
- step 30 the program code CP is compiled and supplemented with specific instruction words, in the case in point no operation instructions (NOP instructions), so as to obtain a compiled and modified program code CPM.
- NOP instructions point no operation instructions
- this compiled modified program code CPM comprises instruction word groups J i .
- Each instruction word group J i comprises first instruction words MI 1 resulting from the compilation of the program code and a second instruction word, in the case in point an NOP instruction, all the second instruction words being identical and located at the same position in the corresponding instruction groups.
- the NOP instruction is placed at the last place of each instruction group J i .
- the second instruction word could be an instruction other than the NOP instruction, but this would then require the sacrifice of a register of the microprocessor because such an instruction can be executed by the processor.
- the compiler 19 carries out a calculation 31 of a checksum CHS 1 on the basis of at least some, and in practice all, of the instruction words of the compiled modified program code.
- the compiled modified program code CPM, as well as the checksum CHS 1 are encrypted (step 32 ) by conventional encryption means, which may be incorporated in the compiler 19 .
- an algorithm of the AES type may be used as the encryption algorithm.
- the modified, compiled and encrypted program code is then stored (step 33 ) under the control of the memory controller 3 , in memory locations EM 0 i of the initial memory 4 . These memory locations correspond to data fields of cache lines.
- the protection method then comprises a first phase, advantageously carried out during the startup (“boot”) phase 34 of the processor.
- the operations which will now be described are typically carried out by the startup controller 18 .
- the processing means 180 of the startup controller 18 carry out decryption 35 of the compiled modified program code and of the checksum CHS 1 , which are stored in the initial memory 4 and extracted from this memory via the memory controller 3 .
- the initial verification means 1800 then carries out verification 36 of the checksum CHS 1 . More particularly, in a conventional way, the initial calculation means 1801 are configured in order to calculate again an additional checksum on the basis of the modified program code CPM, and the initial verification means 1800 compare the checksum CHS 1 with the additional checksum which has just been calculated (step 37 , FIG. 4 ).
- specific error handling 38 may be applied.
- the content of such error handling varies depending on the applications and may for example consist in blocking the system SYS.
- the processing means 180 determine (step 39 ) for each instruction group J i a checksum CHS 2 i obtained on the basis of the instruction words MI 1 and NOP of the group J i and replace the second instruction word, in the case in point the NOP instruction, with this checksum CHS 2 i , so as to form a modified instruction group JM i .
- the processing means 180 then carries out encryption 40 of the modified instruction groups JM i and stores them (step 41 ) via the memory controller 5 in the memory locations EM 1 i of the first memory 6 .
- the program code is ready to be executed by the microprocessor 1 .
- the control means 15 which in practice may for example be implemented as software within the cache controller 14 , verify by comparison of addresses in the various address fields TG j of the cache 12 whether this instruction word MI is present in a cache line LCH of the cache 120 .
- control means deliver on the network 2 (step 52 ) a command CMD to read the encrypted content of the memory location of the first memory 6 containing the requested instruction word.
- This command consequently contains the address of this memory location.
- the memory controller 5 then extracts from this memory location its encrypted content, that is to say the modified encrypted instruction group, which is assumed in this example to be the group JM j .
- the memory controller then delivers this encrypted group JM j on the network 2 to the microprocessor 1 (step 54 ).
- the decryption means 16 which may also be implemented as software within the cache controller 14 , then carry out decryption 55 of the modified encrypted instruction group JM j , and the verification means 17 , which may also be incorporated as software within the cache controller, carry out verification 56 of the integrity of this decrypted content, that is to say of the decrypted modified instruction group JM j .
- the verification means will verify the integrity of the checksum CHS 2 j (step 57 ).
- This verification is carried out in a conventional way by recalculation of a new checksum CHS 2 ′ j and by a comparison of the received checksum CHS 2 j and the calculated checksum CHS 2 ′ j .
- the cache controller may implement specific error handling 58 .
- the verification means 17 replace the checksum CHS 2 j with the second instruction word, in the case in point the NOP instruction, so as to obtain again the instruction group J j which had been obtained at the end of step 30 in FIG. 3 .
- This instruction group J j which comprises the first instruction words MI 1 and the NOP instruction, is then stored (step 60 ) in the data field of a cache line, in the case in point the cache line LCH m .
- the requested instruction word MI is then delivered (step 61 ) to the central unit 11 with a view to its execution, in which case the requested instruction word MI may be either one of the instruction words MI 1 or the NOP instruction.
- step 51 the requested instruction word MI already belongs to a cache line LCH its delivery is carried out directly (step 61 ).
- step 70 after delivery of the encrypted modified instruction group JM j to the microprocessor 1 , storage of this encrypted group JM j in a cache line, in the case in point the cache line LCH m , may be carried out directly (step 70 ).
- the decryption means 16 then carry out the decryption of the modified instruction group JM j (step 71 ), and the verification means 17 carry out (step 72 ) verification of the integrity of the decrypted modified instruction group in a similar way to that described above with reference to step 56 of FIG. 5 .
- error handling 74 is implemented.
- the verification means then carry out (step 75 ) replacement of the checksum CHS 2 j with the NOP instruction in a similar way to that described with reference to step 59 of FIG. 6 , so as to restore the instruction group J j then, in step 76 , deliver the requested instruction word MI.
- step 71 of FIG. 7 is proceeded to directly (step 81 ) in order then to carry out steps 72 , 73 , optionally 74 , 75 and 76 .
- step 90 in the case in which the requested instruction word MI belongs to a cache line LCH (step 90 ), for example the cache line LCH m already decrypted, that the verification processing is carried out not before the storage of the decrypted content in the cache line but after the storage, before delivery of the requested instruction word.
- step 91 leads directly to step 56 of FIG. 5 so as to execute steps 56 , 57 , optionally 58 and 59 to 61 .
- the cache memory comprised only a level-one cache.
- the cache memory may be a hierarchy of caches and comprise caches of different levels, for example a level-one cache 120 1 , a level-two cache 120 2 and a level-three cache 120 3 .
- Some of these caches may even be located outside the microprocessor.
- any content decryption will be carried out only either between the level-two cache and the level-one cache or downstream of the level-one cache before delivery of the instruction word to the central unit.
- any content extracted from the memory 6 will remain encrypted so long as it remains present in a cache of a level higher than level one.
- Each cache is associated with a cache controller.
- the content of the corresponding cache line of the level-two cache remains encrypted in the level-two cache and is delivered by the level-two cache controller to the level-one cache controller.
- the latter may then store the encrypted content in the cache line of the level-one cache before the decryption, or may alternatively carry out the decryption first before storage.
- the encrypted content extracted from the DRAM memory is delivered to the level-three cache controller, which is assumed here to be outside the microprocessor.
- the level-three controller may either update the level-3 cache by storing the encrypted content therein then deliver the encrypted content to the microprocessor, and more particularly to the level-two cache controller, or may alternatively deliver the encrypted content directly to the level-two cache controller before updating the level-three cache.
- the level-two cache controller may either update the level-2 cache by storing the encrypted content therein then deliver the encrypted content to the level-one cache controller, or alternatively deliver the encrypted content directly to the level-one cache controller before updating the level-two cache. Furthermore, here again, the level-one cache controller may then store the encrypted content in the cache line of the level-one cache before decryption, or alternatively carry out the decryption first before storage.
- system is not necessarily a system-on-chip (SoC) but may, for example, comprise a processor and external memories connected on a board and mutually coupled by a conventional bus.
- SoC system-on-chip
- a means, or module, as used herein may include a hardware module, such as one or more electronic circuits; a software module, such as one or more processor-executable instructions or one or more representations of processor-executable instructions; or a combined hardware and software module.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
Description
-
- an initial phase, for example during the compilation of the program code, prior to step a), comprising storage of the modified, compiled and encrypted program code in memory locations of an initial memory, for example a nonvolatile memory of the FLASH type, external to the information processing module, these memory locations here again corresponding to data fields of cache lines, the modified compiled program code comprising instruction word groups which are stored in the memory locations of the initial memory, each instruction word group comprising first instruction words resulting from the compilation of the program code and a second instruction word, for example a “no operation” (better known to the person skilled in the art by the acronym “NOP instruction”: No OPeration), all the second instruction words being identical and located respectively at reference positions in the corresponding instruction groups (these reference positions may occupy identical places, for example the last place, in the corresponding instruction groups, or the place of a reference position in the corresponding group may be calculable on the basis of a parameter of the group, for example the address of the cache line or that of its associated memory location),
- a first phase, for example during the startup (boot) phase, comprising decryption of the modified and compiled code, replacement of the second instruction word of each instruction group with a check indication obtained on the basis of at least some of the first instruction words of the instruction group, for example a “checksum” so as to form a modified instruction group, and encryption of the modified instruction groups, the step a) then comprising storage of the modified encrypted instruction groups in the memory locations of the first memory, for example the DRAM memory,
- and the verification of the integrity of the decrypted content comprises verification of the integrity of the check indication, an integral check indication being representative of the integral nature of the decrypted content, and if the result of the verification is representative of an integral content, the method furthermore then comprises, before delivery of the requested instruction word to the central unit, replacement of the check indication with the second instruction word, in the case in point the NOP instruction.
-
- an information processing module comprising at least one level-one cache of a cache memory containing cache lines, each having an address field and a data field intended to store instruction words executable by the central unit of the information processing module,
- a first memory, external to the information processing module, having memory locations corresponding to data fields of cache lines and intended to store the compiled and encrypted program code,
- a first memory controller coupled to the first external memory,
- a communication medium coupled to the first memory controller and to the information processing module,
- the information processing module furthermore comprising control means configured in order, in the event of a request by the central unit for an instruction word not present in the data field of a cache line of the cache memory, to deliver on the communication medium to the first memory controller a command to read the encrypted content of the memory location containing the requested instruction word,
- the first memory controller being configured in order to deliver this encrypted content to the information processing module,
- the information processing module furthermore comprising decryption means configured in order to decrypt this encrypted content.
-
- an initial memory, external to the information processing module, comprising memory locations corresponding to data fields of cache lines and intended to store a compiled and encrypted modified program code comprising instruction word groups, each instruction word group comprising first instruction words resulting from the compilation of the program code and a second instruction word, all the second instruction words being identical and located at reference positions, for example at the same reference position, in the corresponding instruction groups,
- an initial memory controller coupled to the external initial memory and to the communication medium,
- processing means configured in order to carry out decryption of the compiled modified code, to replace the second instruction word of each instruction group with a check indication obtained on the basis of at least some of the first instruction words of the instruction group, so as to form a modified instruction group, and to encrypt the modified instruction groups with a view to the storage of the encrypted modified instruction groups in memory locations of the first memory,
- and the verification means are configured in order to carry out verification of the integrity of the check indication, an integral check indication being representative of the integral nature of the decrypted content, and if the result of the verification is representative of an integral content, in order to replace, before delivery of the requested instruction word to the central unit, the check indication with the second instruction word.
-
- an interface intended to be coupled to a communication medium,
- a central unit,
- at least one level-one cache of a cache memory containing cache lines, each having an address field and a data field intended to store instruction words executable by the central unit of the information processing module,
- control means configured in order, in the event of a request by the central unit for an instruction word not present in the data field of a cache line of the cache memory, to deliver on the communication medium to an external memory a command to read the encrypted content of the memory location of this external memory containing the requested instruction word, the interface being configured in order to receive this encrypted content, and
- decryption means configured in order to decrypt this encrypted content.
-
-
FIG. 1 is a block diagram of a system according to one embodiment of the invention; -
FIG. 2 is a schematic view of an instruction cache of the system ofFIG. 1 ; -
FIG. 3 is a flowchart of a part of a method according to one embodiment of the present disclosure; -
FIG. 4 is a flowchart of another part of the method according to one embodiment of the present disclosure; -
FIG. 5 is a flowchart of another part of the method according to one embodiment of the present disclosure; -
FIG. 6 is a flowchart of another part of the method according to one embodiment of the present disclosure; -
FIG. 7 is a flowchart of another part of the method according to one embodiment of the present disclosure; -
FIG. 8 is a flowchart of another part of the method according to one embodiment of the present disclosure; -
FIG. 9 is a flowchart of another part of the method according to one embodiment of the present disclosure; -
FIG. 10 is a block diagram illustrating a multi-level cache and decryption and/or verification according to one embodiment of the present disclosure.
-
Claims (37)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1400289 | 2014-02-03 | ||
FR1400289A FR3017226B1 (en) | 2014-02-03 | 2014-02-03 | METHOD FOR SECURING A PROGRAM CODE, SYSTEM AND CORRESPONDING PROCESSOR |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150220456A1 US20150220456A1 (en) | 2015-08-06 |
US10613993B2 true US10613993B2 (en) | 2020-04-07 |
Family
ID=51260899
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/610,924 Active 2036-08-03 US10613993B2 (en) | 2014-02-03 | 2015-01-30 | Method for protecting a program code, corresponding system and processor |
Country Status (2)
Country | Link |
---|---|
US (1) | US10613993B2 (en) |
FR (1) | FR3017226B1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200347B1 (en) * | 2015-08-28 | 2021-12-14 | Frank R. Dropps | Secure controller systems and associated methods thereof |
US20220245052A1 (en) * | 2021-02-02 | 2022-08-04 | Thales DIS CPL USA, Inc | Method and device of protecting a first software application to generate a protected software application |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3047585B1 (en) | 2016-02-09 | 2018-03-09 | Stmicroelectronics (Rousset) Sas | METHOD AND DEVICE FOR MONITORING THE EXECUTION OF A PROGRAM CODE |
KR102445243B1 (en) * | 2017-10-23 | 2022-09-21 | 삼성전자주식회사 | Data encryption method and electronic apparatus thereof |
CN112567366B (en) | 2018-05-28 | 2024-10-11 | 加拿大皇家银行 | System and method for securing an electronic transaction platform |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044450A (en) * | 1996-03-29 | 2000-03-28 | Hitachi, Ltd. | Processor for VLIW instruction |
US20080141279A1 (en) * | 2006-10-06 | 2008-06-12 | Peter Mattson | Software development for parallel processing systems |
US20090177873A1 (en) * | 2006-07-18 | 2009-07-09 | Taichi Sato | Instruction generation apparatus |
US20100030967A1 (en) * | 2008-07-31 | 2010-02-04 | Samsung Electronics Co., Ltd. | Method and system for securing instruction caches using substantially random instruction mapping scheme |
US20100042824A1 (en) * | 2008-08-14 | 2010-02-18 | The Trustees Of Princeton University | Hardware trust anchors in sp-enabled processors |
US20100332850A1 (en) * | 2009-06-26 | 2010-12-30 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US20120144195A1 (en) * | 2009-08-14 | 2012-06-07 | Azuki Systems, Inc. | Method and system for unified mobile content protection |
US20130091387A1 (en) * | 2010-03-26 | 2013-04-11 | Software Diagnostics Technology Gmbh | Method for Automatically Generating a Trace Data Set for a Software System, a Computer System, and a Computer Program Product |
US20140237255A1 (en) * | 2011-09-29 | 2014-08-21 | Robert Paul Martin | Decryption and Encryption of Application Data |
US20140282883A1 (en) * | 2013-03-13 | 2014-09-18 | Ronald Simon CHAN | System and method for distributing, monitoring and controlling information |
US20150052288A1 (en) * | 2013-08-14 | 2015-02-19 | Micron Technology, Inc. | Apparatuses and methods for providing data from a buffer |
-
2014
- 2014-02-03 FR FR1400289A patent/FR3017226B1/en not_active Expired - Fee Related
-
2015
- 2015-01-30 US US14/610,924 patent/US10613993B2/en active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044450A (en) * | 1996-03-29 | 2000-03-28 | Hitachi, Ltd. | Processor for VLIW instruction |
US20090177873A1 (en) * | 2006-07-18 | 2009-07-09 | Taichi Sato | Instruction generation apparatus |
US20080141279A1 (en) * | 2006-10-06 | 2008-06-12 | Peter Mattson | Software development for parallel processing systems |
US20100030967A1 (en) * | 2008-07-31 | 2010-02-04 | Samsung Electronics Co., Ltd. | Method and system for securing instruction caches using substantially random instruction mapping scheme |
US20100042824A1 (en) * | 2008-08-14 | 2010-02-18 | The Trustees Of Princeton University | Hardware trust anchors in sp-enabled processors |
US20100332850A1 (en) * | 2009-06-26 | 2010-12-30 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US20120144195A1 (en) * | 2009-08-14 | 2012-06-07 | Azuki Systems, Inc. | Method and system for unified mobile content protection |
US20130091387A1 (en) * | 2010-03-26 | 2013-04-11 | Software Diagnostics Technology Gmbh | Method for Automatically Generating a Trace Data Set for a Software System, a Computer System, and a Computer Program Product |
US20140237255A1 (en) * | 2011-09-29 | 2014-08-21 | Robert Paul Martin | Decryption and Encryption of Application Data |
US20140282883A1 (en) * | 2013-03-13 | 2014-09-18 | Ronald Simon CHAN | System and method for distributing, monitoring and controlling information |
US20150052288A1 (en) * | 2013-08-14 | 2015-02-19 | Micron Technology, Inc. | Apparatuses and methods for providing data from a buffer |
Non-Patent Citations (5)
Title |
---|
Gelbart et al., "CODESSEAL: Compiler/FPGA Approach to Secure Applications," in Field Programmable Logic and Application, Springer Berlin Heidelberg, ISI 2005, LNCS 3495, pp. 530-535, 2005. |
Milenković et al., "Hardware Support for Code Integrity in Embedded Processors," Proceedings of the 2005 International Conference on Compliers, Architectures and Synthesis for Embedded Systems, CASES '05, San Francisco, CA, Sep. 27-27, 2005, pp. 55-65. |
Patel et al., "Ensuring Secure Program Execution in Multiprocessor Embedded Systems: A Case Study," 2007 5th IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis (CODESS + ISSS), Salzburg, Austria, Sep. 30-Oct. 3, 2007, pp. 57-62. |
Ragel et al., "IMPRES: Integrated Monitoring for Processor REliability and Security," ACM/IEEE Design Automation Conference, DAC 2006, San Francisco, CA, Jul. 24-28, 2006, pp. 502-505. |
Zambreno et al., "SAFE-OPS: An Approach to Embedded Software Security," ACM Transactions on Embedded Computing Systems 4(1):189-210, Feb. 2005. |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11200347B1 (en) * | 2015-08-28 | 2021-12-14 | Frank R. Dropps | Secure controller systems and associated methods thereof |
US20220245052A1 (en) * | 2021-02-02 | 2022-08-04 | Thales DIS CPL USA, Inc | Method and device of protecting a first software application to generate a protected software application |
US11687440B2 (en) * | 2021-02-02 | 2023-06-27 | Thales Dis Cpl Usa, Inc. | Method and device of protecting a first software application to generate a protected software application |
Also Published As
Publication number | Publication date |
---|---|
US20150220456A1 (en) | 2015-08-06 |
FR3017226A1 (en) | 2015-08-07 |
FR3017226B1 (en) | 2016-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10540297B2 (en) | Memory organization for security and reliability | |
US10613993B2 (en) | Method for protecting a program code, corresponding system and processor | |
US20190042799A1 (en) | Memory tagging for side-channel defense, memory safety, and sandboxing | |
US8914627B2 (en) | Method for generating a secured boot image including an update boot loader for a secured update of the version information | |
US8281229B2 (en) | Firmware verification using system memory error check logic | |
EP3320478B1 (en) | Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management | |
JP4876053B2 (en) | Trusted device integrated circuit | |
KR20200064968A (en) | Anti-rollback version upgrade in secured memory chip | |
US10565130B2 (en) | Technologies for a memory encryption engine for multiple processor usages | |
US20100058073A1 (en) | Storage system, controller, and data protection method thereof | |
US8281154B2 (en) | Encrypting data in volatile memory | |
CN104956374A (en) | A method for software anti-rollback recovery | |
EP3271828B1 (en) | Cache and data organization for memory protection | |
JP2022512051A (en) | Integrity tree for memory integrity check | |
US20200233676A1 (en) | Bios management device, bios management system, bios management method, and bios management program-stored recording medium | |
US20080084273A1 (en) | Method and system for securely loading code in a security processor | |
US20170053124A1 (en) | Processor and processor system | |
US20210117545A1 (en) | Semiconductor device including secure patchable rom and patch method thereof | |
US10496825B2 (en) | In-memory attack prevention | |
US12032478B2 (en) | Electronic apparatus for time series data management, and method and storage medium | |
CN111931190B (en) | Starting method based on XIP processor system | |
US12015689B2 (en) | Container management for cryptanalysis attack protection | |
CN111400701A (en) | Public financial system for processing data at high speed | |
US20090113207A1 (en) | Secure overlay manager protection | |
US8127203B2 (en) | Method, data processing apparatus and wireless device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: STMICROELECTRONICS SA, FRANCE Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:FEL, BRUNO;REEL/FRAME:034867/0640 Effective date: 20141023 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
AS | Assignment |
Owner name: STMICROELECTRONICS INTERNATIONAL N.V., SWITZERLAND Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:STMICROELECTRONICS SA;REEL/FRAME:060620/0769 Effective date: 20220630 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |