US20050100163A1 - System and method for securing executable code - Google Patents

System and method for securing executable code Download PDF

Info

Publication number
US20050100163A1
US20050100163A1 US10/879,349 US87934904A US2005100163A1 US 20050100163 A1 US20050100163 A1 US 20050100163A1 US 87934904 A US87934904 A US 87934904A US 2005100163 A1 US2005100163 A1 US 2005100163A1
Authority
US
United States
Prior art keywords
image
cache line
encrypted
key
logic
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.)
Granted
Application number
US10/879,349
Other versions
US7734932B2 (en
Inventor
Mark Buer
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Broadcom Corp
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
Application filed by Broadcom Corp filed Critical Broadcom Corp
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BUER, MARK
Priority to US10/879,349 priority Critical patent/US7734932B2/en
Priority to EP04026195A priority patent/EP1536308A3/en
Priority to CNB2004100920414A priority patent/CN100542085C/en
Priority to TW093134287A priority patent/TWI298591B/en
Publication of US20050100163A1 publication Critical patent/US20050100163A1/en
Priority to US12/791,619 priority patent/US8799678B2/en
Publication of US7734932B2 publication Critical patent/US7734932B2/en
Application granted granted Critical
Assigned to BANK OF AMERICA, N.A., AS COLLATERAL AGENT reassignment BANK OF AMERICA, N.A., AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: BROADCOM CORPORATION
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BROADCOM CORPORATION
Assigned to BROADCOM CORPORATION reassignment BROADCOM CORPORATION TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Assignors: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Assigned to AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED reassignment AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED MERGER (SEE DOCUMENT FOR DETAILS). Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Assigned to AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED reassignment AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 9/5/2018 PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0687. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Assigned to AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED reassignment AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 47630 FRAME: 344. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Definitions

  • the invention described herein relates to information security, and more particularly to secure processing.
  • Secure processing in a computing platform is a well known generic problem.
  • any unintended or undesired alteration of executable code can have dire operational consequences.
  • malicious code e.g., a Trojan horse
  • instructions can be permuted by a hostile party, so that operations are performed by the processor out of order. Again, the consequences can be undesirable.
  • Other threats may not be malicious.
  • a hardware failure in memory, for example, may serve to alter the executable code. Clearly, this effects the operation of the processor and its results.
  • executable code itself may represent information that must be maintained as a secret. Revealing the executable code could represent a undesirable compromise of sensitive data.
  • executable code can be vulnerable in storage, as well as in transit between memory and a processor or its cache.
  • the invention described herein provides for the secure storage of executable code and the secure movement of such code from memory to a processor.
  • the invention includes the storage of an encrypted version of the code.
  • the code is then decrypted and decompressed as necessary, before re-encryption in storage (e.g., in flash memory).
  • the re-encrypted executable code is then written to external memory.
  • As a cache line of executable code is required a fetch is performed but intercepted. In the interception process, the cache line is decrypted.
  • the resulting plain text cache line is then stored in an instruction cache associated with a processor.
  • FIG. 1 is a block diagram illustrating the overall structure and context of an embodiment of the invention.
  • FIG. 2 illustrates executable code in encrypted and compressed form in flash memory, according to an embodiment of the invention.
  • FIG. 3 illustrates external memory as it contains decrypted and decompressed executable code, according to an embodiment of the invention.
  • FIG. 4 illustrates the fetch process, in which a cache line of code is decrypted and forwarded to an instruction cache, according to an embodiment of the invention.
  • FIG. 5 is a flowchart illustrating the creation of an encrypted image, according to an embodiment of the invention.
  • FIG. 6 is a flowchart illustrating the overall process of accessing and using the encrypted image, according to an embodiment of the invention.
  • FIG. 7 is a flowchart illustrating the processor boot process in greater detail, according to an embodiment of the invention.
  • FIG. 8 is a flowchart illustrating the process of switching to a secure mode, according to an embodiment of the invention.
  • FIG. 9 is a flowchart illustrating the process of secure execution, according to an embodiment of the invention, according to an embodiment of the invention.
  • FIG. 10 is a flowchart illustrating a simplified version of the process of the invention, according to an embodiment of the invention.
  • the invention features a secure embedded processor system that is in communication with memory modules.
  • An embodiment of the invention is illustrated generally in FIG. 1 .
  • a secure embedded processor system 105 is shown interfaced to an external memory module 160 , and a flash memory module 175 .
  • Flash memory 175 stores executable code (known hereinafter as the image) in a compressed and encrypted form.
  • the encrypted compressed image is transferred to external memory 160 during the boot process. The image is then decrypted, decompressed, then re-encrypted for storage in external memory 160 .
  • Instructions that are to be executed by processor 110 are fetched from external memory 160 one cache line at a time. The fetch, however, is intercepted by memory controller 150 . A cache line that is fetched is then decrypted by security controller 140 before being loaded into the instruction cache 130 .
  • a key management module 170 which provides key management services for security controller 140 .
  • an external interface 180 can also be provided to allow flash memory 175 to interface with system 105 .
  • a peripheral component interconnect (PCI) interface 185 can also be provided to allow communication with secure embedded processor system 105 .
  • PCI interface 185 , external interface 180 , key management module 170 , security controller 140 , and processor 110 are connected by an infrastructure 145 , such as a bus.
  • Flash memory 175 is illustrated in greater detail in FIG. 2 .
  • FIG. 2 illustrates the organization of the image as it resides in flash memory 175 .
  • the image includes a segment of boot code 210 .
  • This is followed by two blocks of code 220 and 230 .
  • These two blocks are collectively encrypted with a first cryptographic key, referred to herein as an image key.
  • these code blocks are encrypted using the Triple Data Encryption Standard (3DES) algorithm.
  • code block 220 comprises logic required to decrypt the remaining block of code 230 .
  • block 230 is compressed as well in the illustrated embodiment.
  • Block 240 represents authentication data derived from blocks 210 , 220 , and 230 . Block does not represent part of the image per se.
  • the authentication process is a hashed message authentication code (HMAC) process.
  • HMAC hashed message authentication code
  • FIG. 3 illustrates the structure of the image as it resides in external memory 160 after the image has been decrypted and decompressed.
  • the memory is shown occupying 10 KB of memory in a block 330 .
  • the starting address of this memory interval is addressed 310 .
  • the ending address for this interval is addressed 320 .
  • the starting and ending addresses 310 and 320 are forwarded to memory controller 150 . This serves as a security check, so that no instructions outside of these boundaries are allowed to be executed.
  • FIG. 4 illustrates the flow and processing of instructions during a fetch from external memory 160 .
  • the image is re-encrypted using a second key, to form a re-encrypted image 410 .
  • the re-encrypted image 410 is fetched on a cache line basis.
  • a cache line 420 is retrieved for decryption purposes by decryption logic 440 .
  • the address 430 of cache line 420 is used to initialize the decryption process.
  • the re-encryption process uses the Advanced Encryption Standard (AES) algorithm, in cipher block chaining (CBC) mode.
  • AES Advanced Encryption Standard
  • CBC cipher block chaining
  • the re-encryption process can use the AES/CBC process in the decrypt mode. Consequently, in such an embodiment the decryption process 440 actually uses the encryption mode of AES.
  • the resulting plain text cache line 450 is then forwarded to instruction cache 130 .
  • the plain text cache line 450 is ultimately executed by processor 110 .
  • key management module 170 Management and security functions related to protection of cryptographic keys are handled in part by key management module 170 , shown in FIG. 1 .
  • secure embedded processor system 105 receives the image key in encrypted form.
  • the encrypted image key is decrypted by key management module 170 using a session key.
  • the resulting plain text image key can then be used by security controller 140 as described above.
  • a time constraint can be associated with an image key, so that the image key may only be used for a given duration, or only up until a particular point in time. After this point, the key can no longer be used, and is said to be expired.
  • security controller 140 can check whether the image key has expired prior to using this key. Alternatively, this check can be performed at the key management module 170 .
  • FIG. 5 illustrates the initial compression and encryption process for the image as it is stored in the flash memory.
  • the process begins at step 510 .
  • the image is compressed.
  • the image is hashed to produce an HMAC.
  • the Secure Hash Algorithm 1 SHA-1
  • the compressed image is encrypted with an image key.
  • encryption can be performed using the 3DES algorithm.
  • the resulting compressed encrypted image is stored in flash memory. The process concludes at step 560 .
  • the overall process of securely accessing and executing the image is illustrated in FIG. 6 .
  • the process begins at step 610 .
  • the processor undergoes its boot operation.
  • the portion of the image that is uncompressed is decrypted using the image key.
  • this uncompressed code is executed.
  • the logic in the uncompressed code portion of the code serves to decrypt the remaining image.
  • the remaining portion of the image is decrypted with the image key.
  • the image is authenticated. As described above, authentication can take place using the SHA-1 algorithm.
  • step 670 the image is decompressed.
  • secure execution can now take place. The process concludes at step 690 .
  • step 620 of FIG. 6 The step of booting the processor (step 620 of FIG. 6 ) is illustrated in greater detail in FIG. 7 .
  • the process begins at step 710 .
  • step 720 the device state is reset.
  • step 730 cryptographic keys are loaded for purposes of subsequent cryptographic processing.
  • step 740 the image is moved from flash memory to external memory.
  • the external memory can be implemented using double data rate synchronous dynamic random access memory (DDR SDRAM).
  • step 750 the system is switched to secure mode.
  • the process concludes at step 760 .
  • step 750 of FIG. 7 The process of switching to a secure mode (step 750 of FIG. 7 ) is illustrated in greater detail in FIG. 8 .
  • the process begins at step 810 .
  • step 820 the processor state is cleared.
  • step 830 the instruction and data caches associated with a processor are set to the invalid state. This prevents any information that happens to be residing in these caches from being used by the processor for execution.
  • step 840 the upper and lower address boundaries of the image are forwarded to the memory controller, thereby limiting execution to the lower n kilobytes of DDR-SRAM.
  • the process concludes at step 850 .
  • the secure execution step (step 680 of FIG. 6 ) is illustrated in greater detail in FIG. 9 .
  • the process begins at step 910 .
  • step 915 the image is encrypted with a session key on a per cache line basis.
  • the AES algorithm is used for this step in the CBC mode.
  • AES can be used in its decryption configuration for this encryption process. This allows for error correction throughout the image encryption process.
  • step 920 the encrypted image is written to external memory.
  • step 925 an instruction cache line is fetched, wherein the cache line is taken from within the boundary addresses.
  • the fetch is intercepted by the memory controller.
  • step 935 the cache line is decrypted by the security controller.
  • step 935 the decryption step 935 will actually use the encryption mode of AES/CBC.
  • step 940 a determination is made in step 940 as to whether the resulting instruction is valid. If not, then the instruction is trapped in step 945 . Otherwise, the instruction is ready for execution in step 955 .
  • step 960 a determination is made as to whether there are additional instructions to be fetched and executed, or whether the process is to halt. If the process halts, then the process concludes at step 950 . Otherwise, the process returns to step 925 , where an additional cache line is fetched.
  • FIG. 10 An alternative method of the invention is illustrated in FIG. 10 .
  • the process begins at step 1005 .
  • step 1010 the boot process is initiated from on-board read only memory (ROM).
  • step 1015 the boot code is submitted to the security module.
  • step 1020 the boot code is hashed.
  • the security module retains the hash value during this step.
  • step 1025 execution of the boot code is commenced.
  • step 1030 the compressed code is hashed, such that the security module retains the resulting cache value.
  • the hash value is signed.
  • the encrypted image is transferred to external memory.
  • external memory can be implemented as DDR-SRAM.
  • step 1045 the uncompressed code is decrypted with the image key.
  • step 1050 the uncompressed code is executed.
  • step 1055 the remaining image is decrypted with the image key.
  • step 1060 the remaining image is decrypted as necessary. The process concludes at step 1065 .

Abstract

A system and method for the secure storage of executable code and the secure movement of such code from memory to a processor. The method includes the storage of an encrypted version of the code. The code is then decrypted and decompressed as necessary, before re-encryption in storage. The re-encrypted executable code is then written to external memory. As a cache line of executable code is required, a fetch is performed but intercepted. In the interception, the cache line is decrypted. The plain text cache line is then stored in an instruction cache associated with a processor.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • This application claims the benefit of U.S. Provisional Application Ser. No. 60/518,323, filed Nov. 10, 2003, incorporated herein by reference in its entirety.
  • STATEMENT REGARDING FEDERALLY-SPONSORED RESEARCH AND DEVELOPMENT
  • Not applicable.
  • REFERENCE TO MICROFICHE APPENDIX/SEQUENCE LISTING/TABLE/COMPUTER PROGRAM LISTING APPENDIX (SUBMITTED ON A COMPACT DISC AND AN INCORPORATION-BY-REFERENCE OF THE MATERIAL ON THE COMPACT DISC)
  • Not applicable.
  • BACKGROUND OF THE INVENTION
  • 1. Field of the Invention
  • The invention described herein relates to information security, and more particularly to secure processing.
  • 2. Related Art
  • Secure processing in a computing platform is a well known generic problem. In particular any unintended or undesired alteration of executable code can have dire operational consequences. For example, malicious code (e.g., a Trojan horse) can be inserted to executable code to cause the processor to perform actions that are undesirable and/or unpredictable. Alternatively, instructions can be permuted by a hostile party, so that operations are performed by the processor out of order. Again, the consequences can be undesirable. Other threats may not be malicious. A hardware failure in memory, for example, may serve to alter the executable code. Clearly, this effects the operation of the processor and its results.
  • In addition, security may an issue with respect to the programmed logic itself. The executable code itself may represent information that must be maintained as a secret. Revealing the executable code could represent a undesirable compromise of sensitive data. In general, executable code can be vulnerable in storage, as well as in transit between memory and a processor or its cache.
  • In light of such known threats and vulnerabilities, a system and method is needed that protects against the above scenarios, such that the processor performs only the intended operations and the confidentiality of its program is maintained.
  • SUMMARY OF THE INVENTION
  • The invention described herein provides for the secure storage of executable code and the secure movement of such code from memory to a processor. The invention includes the storage of an encrypted version of the code. The code is then decrypted and decompressed as necessary, before re-encryption in storage (e.g., in flash memory). The re-encrypted executable code is then written to external memory. As a cache line of executable code is required, a fetch is performed but intercepted. In the interception process, the cache line is decrypted. The resulting plain text cache line is then stored in an instruction cache associated with a processor.
  • BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES
  • FIG. 1 is a block diagram illustrating the overall structure and context of an embodiment of the invention.
  • FIG. 2 illustrates executable code in encrypted and compressed form in flash memory, according to an embodiment of the invention.
  • FIG. 3 illustrates external memory as it contains decrypted and decompressed executable code, according to an embodiment of the invention.
  • FIG. 4 illustrates the fetch process, in which a cache line of code is decrypted and forwarded to an instruction cache, according to an embodiment of the invention.
  • FIG. 5 is a flowchart illustrating the creation of an encrypted image, according to an embodiment of the invention.
  • FIG. 6 is a flowchart illustrating the overall process of accessing and using the encrypted image, according to an embodiment of the invention.
  • FIG. 7 is a flowchart illustrating the processor boot process in greater detail, according to an embodiment of the invention.
  • FIG. 8 is a flowchart illustrating the process of switching to a secure mode, according to an embodiment of the invention.
  • FIG. 9 is a flowchart illustrating the process of secure execution, according to an embodiment of the invention, according to an embodiment of the invention.
  • FIG. 10 is a flowchart illustrating a simplified version of the process of the invention, according to an embodiment of the invention.
  • DETAILED DESCRIPTION OF THE INVENTION
  • A preferred embodiment of the present invention is now described to with reference to the figures, where like reference numbers indicate identical or functionally similar elements. Also in the figures, the left most digit of each reference number corresponds to the figure in which the reference number is first used. While specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the invention. It will be apparent to a person skilled in the relevant art that this invention can also be employed in a variety of devices, systems, and applications.
  • I. Overview
  • A preferred embodiment of the present invention is now described with reference to the figures, where like reference numbers indicate identical or functionally similar elements. Also in the figures, the left most digit of each reference number corresponds to the figure in which the reference number is first used. While specific configurations and arrangements are discussed, it should be understood that this is done for illustrative purposes only. A person skilled in the relevant art will recognize that other configurations and arrangements can be used without departing from the spirit and scope of the invention. It will be apparent to a person skilled in the relevant art that this invention can also be employed in a variety of devices and applications.
  • II. System
  • The invention features a secure embedded processor system that is in communication with memory modules. An embodiment of the invention is illustrated generally in FIG. 1. A secure embedded processor system 105 is shown interfaced to an external memory module 160, and a flash memory module 175. Flash memory 175 stores executable code (known hereinafter as the image) in a compressed and encrypted form. As will be described in greater detail below, the encrypted compressed image is transferred to external memory 160 during the boot process. The image is then decrypted, decompressed, then re-encrypted for storage in external memory 160.
  • Instructions that are to be executed by processor 110 are fetched from external memory 160 one cache line at a time. The fetch, however, is intercepted by memory controller 150. A cache line that is fetched is then decrypted by security controller 140 before being loaded into the instruction cache 130.
  • Also shown in secure embedded processor system 105 is a key management module 170, which provides key management services for security controller 140. In an embodiment of the invention, an external interface 180 can also be provided to allow flash memory 175 to interface with system 105. A peripheral component interconnect (PCI) interface 185 can also be provided to allow communication with secure embedded processor system 105. PCI interface 185, external interface 180, key management module 170, security controller 140, and processor 110 are connected by an infrastructure 145, such as a bus.
  • Flash memory 175 is illustrated in greater detail in FIG. 2. FIG. 2 illustrates the organization of the image as it resides in flash memory 175. The image includes a segment of boot code 210. This is followed by two blocks of code 220 and 230. These two blocks are collectively encrypted with a first cryptographic key, referred to herein as an image key. In an embodiment of the invention, these code blocks are encrypted using the Triple Data Encryption Standard (3DES) algorithm. In the illustrated embodiment, code block 220 comprises logic required to decrypt the remaining block of code 230. Note that block 230 is compressed as well in the illustrated embodiment. Block 240 represents authentication data derived from blocks 210, 220, and 230. Block does not represent part of the image per se. In the illustrated embodiment, the authentication process is a hashed message authentication code (HMAC) process.
  • FIG. 3 illustrates the structure of the image as it resides in external memory 160 after the image has been decrypted and decompressed. The memory is shown occupying 10 KB of memory in a block 330. The starting address of this memory interval is addressed 310. The ending address for this interval is addressed 320. In an embodiment of the invention, the starting and ending addresses 310 and 320 are forwarded to memory controller 150. This serves as a security check, so that no instructions outside of these boundaries are allowed to be executed.
  • FIG. 4 illustrates the flow and processing of instructions during a fetch from external memory 160. After the image has been decrypted, the image is re-encrypted using a second key, to form a re-encrypted image 410. The re-encrypted image 410 is fetched on a cache line basis. A cache line 420 is retrieved for decryption purposes by decryption logic 440. In the illustrated embodiment, the address 430 of cache line 420 is used to initialize the decryption process. In an embodiment of the invention, the re-encryption process uses the Advanced Encryption Standard (AES) algorithm, in cipher block chaining (CBC) mode. Moreover, in an embodiment of the invention, the re-encryption process can use the AES/CBC process in the decrypt mode. Consequently, in such an embodiment the decryption process 440 actually uses the encryption mode of AES. The resulting plain text cache line 450 is then forwarded to instruction cache 130. The plain text cache line 450 is ultimately executed by processor 110.
  • Management and security functions related to protection of cryptographic keys are handled in part by key management module 170, shown in FIG. 1. In particular, in an embodiment of the invention, secure embedded processor system 105 receives the image key in encrypted form. The encrypted image key is decrypted by key management module 170 using a session key. The resulting plain text image key can then be used by security controller 140 as described above.
  • Moreover, a time constraint can be associated with an image key, so that the image key may only be used for a given duration, or only up until a particular point in time. After this point, the key can no longer be used, and is said to be expired. In an embodiment of the invention, security controller 140 can check whether the image key has expired prior to using this key. Alternatively, this check can be performed at the key management module 170.
  • III. Method
  • FIG. 5 illustrates the initial compression and encryption process for the image as it is stored in the flash memory. The process begins at step 510. In step 520, the image is compressed. In step 530, the image is hashed to produce an HMAC. In an embodiment of the invention, the Secure Hash Algorithm 1 (SHA-1) is used. In step 540, the compressed image is encrypted with an image key. As mentioned above, encryption can be performed using the 3DES algorithm. In step 550, the resulting compressed encrypted image is stored in flash memory. The process concludes at step 560.
  • The overall process of securely accessing and executing the image is illustrated in FIG. 6. The process begins at step 610. In step 620, the processor undergoes its boot operation. In step 630, the portion of the image that is uncompressed is decrypted using the image key. In step 640, this uncompressed code is executed. The logic in the uncompressed code portion of the code serves to decrypt the remaining image. In step 650, the remaining portion of the image is decrypted with the image key. In step 660, the image is authenticated. As described above, authentication can take place using the SHA-1 algorithm. In step 670, the image is decompressed. In step 680, secure execution can now take place. The process concludes at step 690.
  • The step of booting the processor (step 620 of FIG. 6) is illustrated in greater detail in FIG. 7. The process begins at step 710. In step 720, the device state is reset. In step 730, cryptographic keys are loaded for purposes of subsequent cryptographic processing. In step 740, the image is moved from flash memory to external memory. In an embodiment of the invention, the external memory can be implemented using double data rate synchronous dynamic random access memory (DDR SDRAM). In step 750, the system is switched to secure mode. The process concludes at step 760.
  • The process of switching to a secure mode (step 750 of FIG. 7) is illustrated in greater detail in FIG. 8. The process begins at step 810. In step 820, the processor state is cleared. In step 830, the instruction and data caches associated with a processor are set to the invalid state. This prevents any information that happens to be residing in these caches from being used by the processor for execution. In step 840, the upper and lower address boundaries of the image are forwarded to the memory controller, thereby limiting execution to the lower n kilobytes of DDR-SRAM. The process concludes at step 850.
  • The secure execution step (step 680 of FIG. 6) is illustrated in greater detail in FIG. 9. The process begins at step 910. In step 915, the image is encrypted with a session key on a per cache line basis. In an embodiment of the invention, the AES algorithm is used for this step in the CBC mode. Moreover, AES can be used in its decryption configuration for this encryption process. This allows for error correction throughout the image encryption process. In step 920, the encrypted image is written to external memory. In step 925, an instruction cache line is fetched, wherein the cache line is taken from within the boundary addresses. In step 930, the fetch is intercepted by the memory controller. In step 935, the cache line is decrypted by the security controller. If the encryption process used the AES/CBC algorithm in decryption mode, then the decryption step 935 will actually use the encryption mode of AES/CBC. After decryption of the cache line in step 935, a determination is made in step 940 as to whether the resulting instruction is valid. If not, then the instruction is trapped in step 945. Otherwise, the instruction is ready for execution in step 955. In step 960, a determination is made as to whether there are additional instructions to be fetched and executed, or whether the process is to halt. If the process halts, then the process concludes at step 950. Otherwise, the process returns to step 925, where an additional cache line is fetched.
  • An alternative method of the invention is illustrated in FIG. 10. The process begins at step 1005. In step 1010, the boot process is initiated from on-board read only memory (ROM). In step 1015, the boot code is submitted to the security module. In step 1020, the boot code is hashed. The security module retains the hash value during this step. In step 1025, execution of the boot code is commenced. In step 1030, the compressed code is hashed, such that the security module retains the resulting cache value. In step 1035, the hash value is signed. In step 1040, the encrypted image is transferred to external memory. As mentioned above, in an embodiment of the invention, external memory can be implemented as DDR-SRAM. In step 1045, the uncompressed code is decrypted with the image key. In step 1050, the uncompressed code is executed. In step 1055, the remaining image is decrypted with the image key. In step 1060, the remaining image is decrypted as necessary. The process concludes at step 1065.
  • IV. Conclusion
  • While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example, and not limitation. It would be apparent to persons skilled in the relevant art that various changes and detail can be made therein without departing from the spirit and scope of the invention. Thus the present invention should not be limited by any of the above described exemplary embodiments.

Claims (23)

1. A system for secure execution of processor instructions, the system comprising:
a first memory containing boot code and an image encrypted with a first key;
a secure embedded processor system, comprising:
a processor;
an instruction cache in communication with said processor;
a memory controller in communication with said instruction cache; and
a security controller in communication with said instruction cache; and
a second memory, external to said secure embedded processor system, in communication with said first memory, said memory controller, and said security controller,
such that said image encrypted with said first key is transferred to said second memory, decrypted by said security controller, and re-encrypted by said security controller using a second key, and such that a cache line of said image encrypted with said second key is then read from said second memory, decrypted with said second key, and stored in staid instruction cache for execution by said processor.
2. The system of claim 1, wherein said security controller comprises logic for decrypting said encrypted image using the Triple Data Encryption Standard (3DES) algorithm and said first key.
3. The system of claim 1, further comprising a key management module that comprises:
logic for receiving said first key in encrypted form;
logic for decrypting said encrypted first key using a session key; and
logic for forwarding said first key to said security controller.
4. The system of claim 1, wherein said security controller comprises:
logic for re-encrypting said image using the Advanced Encryption Standard (AES) algorithm; and
logic for decrypting said cache line using said AES algorithm.
5. The system of claim 4, wherein said logic for re-encrypting said image comprises logic that implements the cipher block chaining (CBC) mode of said AES algorithm: and
said logic for decrypting said cache line comprises logic that implements said CBC mode of said AES algorithm.
6. The system of claim 5, wherein
said logic for re-encrypting said image comprises logic that implements the decryption mode of said CBC mode of said AES algorithm; and
said logic for decrypting said cache line comprises logic that implements the encryption mode of said CBC mode of said AES algorithm.
7. The system of claim 4, wherein said logic for re-encrypting said image uses an address of said second memory as an initialization vector (IV) for said AES algorithm, wherein said address corresponds to the location in said second memory of said cache line; and
said logic for decrypting said cache line uses said address as said IV.
8. A method of providing for secure execution of processor instructions, comprising:
a. booting a processor to load encrypted code to external memory;
b. decrypting an uncompressed portion of the encrypted code using an image key to produce a first portion of decrypted uncompressed code;
c. executing the first portion of decrypted uncompressed code;
d. decrypting a compressed portion of the encrypted code with the image key, to produce an image;
e. authenticating the image;
f. decompressing the image so that it occupies a section of external memory starting at a first address and ending at an end address; and
g. performing secure execution of the image.
9. The method of claim 8, wherein said decryption steps b and d are performed using the triple data encryption standard (3DES) algorithm.
10. The method of claim 8, further comprising the following step performed before step a:
h. determining whether the image key has expired, such that steps a through g are performed only if the image key has not expired.
11. The method of claim 8, further comprising the following step, performed before step a:
h. creating encrypted code.
12. The method of claim 11, wherein step h comprises:
i. compressing the image;
ii. hashing the image to create a hash value;
iii. encrypting the image; and
iv. storing the encrypted code.
13. The method of claim 12, wherein said step h.ii. comprises hashing the image using the Secure Hash Algorithm 1 (SHA-1).
14. The method of claim 12, wherein said step h.iii. comprises encrypting the image using the Triple Data Encryption Standard (3DES) algorithm.
15. The method of claim 12, wherein said step h.iv. comprises storing the encrypted code into flash memory.
16. The method of claim 8, wherein step a. comprises:
i. resetting the state of the processor;
ii. loading the image key;
iii. transferring the encrypted code into external memory; and
iv. switching the processor to a secure mode.
17. The method of claim 16, wherein the external memory comprises double data rate synchronous dynamic random access memory (DDR-SDRAM).
18. The method of claim 16, wherein said step a.iv. comprises:
A. clearing the state of the processor;
B. setting an instruction cache, associated with the processor, to an invalid state; and
C. limiting execution of the image to a portion of the external memory.
19. The method of claim 8, wherein said step g comprises:
i. separately encrypting each cache line of the image;
ii. fetching an encrypted cache line;
iii. intercepting said fetch;
iv. decrypting the fetched encrypted cache line;
V. determining whether the decrypted cache line is valid;
vi. if the decrypted cache line is invalid, trapping the decrypted cache line; and
vii. if the decrypted cache line is valid, executing the decrypted cache line.
20. The method of claim 19, wherein said step g.i. comprises encrypting each cache line using the Advanced Encryption Standard (AES), and said step g.iv. comprises decrypting the fetched encrypted cache line using the AES algorithm.
21. The method of claim 20, wherein the AES algorithm is used in the cipher block chaining (CBC) mode.
22. The method of claim 21, wherein said step g.i. comprises encrypting each cache line using the decryption mode of the AES algorithm, and said step g.iv. comprises decrypting the fetched encrypted cache line using the encryption mode of the AES algorithm.
23. The method of claim 20 wherein the initialization vector (IV) for the AES algorithm for each cache line is the address, in external memory, of the cache line.
US10/879,349 2003-11-10 2004-06-30 System and method for securing executable code Active 2027-07-14 US7734932B2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US10/879,349 US7734932B2 (en) 2003-11-10 2004-06-30 System and method for securing executable code
EP04026195A EP1536308A3 (en) 2003-11-10 2004-11-04 System and method for securing executable code
CNB2004100920414A CN100542085C (en) 2003-11-10 2004-11-09 The system and method for securing executable code
TW093134287A TWI298591B (en) 2003-11-10 2004-11-10 System and method for securing executable code
US12/791,619 US8799678B2 (en) 2003-11-10 2010-06-01 System and method for securing executable code

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US51832303P 2003-11-10 2003-11-10
US10/879,349 US7734932B2 (en) 2003-11-10 2004-06-30 System and method for securing executable code

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/791,619 Continuation US8799678B2 (en) 2003-11-10 2010-06-01 System and method for securing executable code

Publications (2)

Publication Number Publication Date
US20050100163A1 true US20050100163A1 (en) 2005-05-12
US7734932B2 US7734932B2 (en) 2010-06-08

Family

ID=34468046

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/879,349 Active 2027-07-14 US7734932B2 (en) 2003-11-10 2004-06-30 System and method for securing executable code
US12/791,619 Expired - Fee Related US8799678B2 (en) 2003-11-10 2010-06-01 System and method for securing executable code

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/791,619 Expired - Fee Related US8799678B2 (en) 2003-11-10 2010-06-01 System and method for securing executable code

Country Status (4)

Country Link
US (2) US7734932B2 (en)
EP (1) EP1536308A3 (en)
CN (1) CN100542085C (en)
TW (1) TWI298591B (en)

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080187134A1 (en) * 2004-06-21 2008-08-07 France Telecom Method and Device For the Encryption and Decryption of Data
US20090125726A1 (en) * 2007-11-14 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices
WO2010057065A2 (en) * 2008-11-14 2010-05-20 Intel Corporation Method and apparatus to provide secure application execution
US20100241841A1 (en) * 2003-11-10 2010-09-23 Broadcom Corporation System and Method for Securing Executable Code
US20110302400A1 (en) * 2010-06-07 2011-12-08 Maino Fabio R Secure virtual machine bootstrap in untrusted cloud infrastructures
US8356184B1 (en) 2009-06-25 2013-01-15 Western Digital Technologies, Inc. Data storage device comprising a secure processor for maintaining plaintext access to an LBA table
CN103620690A (en) * 2011-04-29 2014-03-05 Lsi公司 Encrypted transport solid-state disk controller
WO2014105160A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Logging in secure enclaves
WO2014105161A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Memory management in secure enclaves
WO2014105159A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Paging in secure enclaves
US20150086012A1 (en) * 2013-09-25 2015-03-26 Siddhartha Chhabra Secure video ouput path
US9195806B1 (en) * 2011-07-06 2015-11-24 The Boeing Company Security server for configuring and programming secure microprocessors
US9251381B1 (en) 2006-06-27 2016-02-02 Western Digital Technologies, Inc. Solid-state storage subsystem security solution
US9305142B1 (en) 2011-12-19 2016-04-05 Western Digital Technologies, Inc. Buffer memory protection unit
US9852301B2 (en) * 2014-12-24 2017-12-26 Intel Corporation Creating secure channels between a protected execution environment and fixed-function endpoints
US9990314B2 (en) 2014-06-27 2018-06-05 Intel Corporation Instructions and logic to interrupt and resume paging in a secure enclave page cache
US10311217B2 (en) * 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US10552344B2 (en) 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
US11056173B2 (en) * 2017-12-21 2021-07-06 Samsung Electronics Co., Ltd. Semiconductor memory device and memory module including the same
US11461476B2 (en) 2019-03-21 2022-10-04 Commissariat A L'energie Atomique Et Aux Energies Alternatives Method for executing a binary code of a function secured by a microprocessor

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2005642A4 (en) * 2006-04-07 2011-12-21 Intel Corp Method and apparatus to mate an external code image with an on-chip private key
EP1855476A3 (en) * 2006-05-11 2010-10-27 Broadcom Corporation System and method for trusted data processing
US8150036B2 (en) 2007-10-31 2012-04-03 Igt Encrypted data installation
TWI497344B (en) * 2010-05-17 2015-08-21 Via Tech Inc Microprocessor and method for generating unpredictable key
CN103946858A (en) 2011-09-29 2014-07-23 惠普发展公司,有限责任合伙企业 Decryption and encryption of application data
US8726044B2 (en) * 2012-07-31 2014-05-13 Hewlett-Packard Development Company, L.P. Encrypting data on primary storage device and on cache storage device
US9152577B2 (en) * 2012-08-17 2015-10-06 Broadcom Corporation Security central processing unit management of a transcoder pipeline
US20140281587A1 (en) * 2013-03-14 2014-09-18 Ologn Technologies Ag Systems, methods and apparatuses for using a secure non-volatile storage with a computer processor
US9215067B2 (en) * 2013-04-05 2015-12-15 International Business Machines Corporation Achieving storage efficiency in presence of end-to-end encryption using downstream decrypters
US9280490B2 (en) 2013-04-17 2016-03-08 Laurence H. Cooke Secure computing
US9846656B2 (en) 2013-04-17 2017-12-19 Laurence H. Cooke Secure computing
US9639671B2 (en) * 2014-05-27 2017-05-02 Assured Information Security, Inc. Secure execution of encrypted program instructions
CN104331671A (en) * 2014-10-30 2015-02-04 无锡市合鑫川自动化设备有限公司 Method and system for uploading safety code onto slave equipment of computer
FR3030827B1 (en) * 2014-12-19 2017-01-27 Stmicroelectronics (Grenoble 2) Sas METHOD AND DEVICE FOR SECURE PROCESSING OF CRYPTED DATA
CN105024805B (en) * 2015-07-24 2018-06-29 东南大学 A kind of improved CBC patterns 3DES encryption method
US9996479B2 (en) * 2015-08-17 2018-06-12 Micron Technology, Inc. Encryption of executables in computational memory
EP3460709B1 (en) * 2017-09-26 2022-02-09 Secure-IC SAS Devices and methods for secured processors
CN109753821B (en) * 2017-11-01 2022-03-15 瑞昱半导体股份有限公司 Data access device and method
US10715321B2 (en) 2017-12-22 2020-07-14 Micron Technology, Inc. Physical unclonable function using message authentication code
US10906506B2 (en) 2017-12-28 2021-02-02 Micron Technology, Inc. Security of user data stored in shared vehicles
US10924277B2 (en) * 2018-01-25 2021-02-16 Micron Technology, Inc. Certifying authenticity of stored code and code updates
US10778661B2 (en) 2018-04-27 2020-09-15 Micron Technology, Inc. Secure distribution of secret key using a monotonic counter
FR3095869B1 (en) * 2019-05-09 2021-04-09 Commissariat Energie Atomique PROCESS FOR EXECUTING A BINARY CODE OF A SECURE FUNCTION BY A MICROPROCESSOR
CN112035866B (en) * 2020-11-04 2021-07-23 湖北芯擎科技有限公司 Data encryption method, device, equipment and computer readable storage medium
US20230205514A1 (en) * 2021-12-27 2023-06-29 Honeywell International Inc. Bsidiff delta upgrade in external storage

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030046563A1 (en) * 2001-08-16 2003-03-06 Dallas Semiconductor Encryption-based security protection for processors
US20040177260A1 (en) * 2003-03-06 2004-09-09 International Business Machines Corporation System and method for remote code integrity in distributed systems
US6834346B1 (en) * 1998-07-30 2004-12-21 Sony Corporation Content processing system
US6910094B1 (en) * 1997-10-08 2005-06-21 Koninklijke Philips Electronics N.V. Secure memory management unit which uses multiple cryptographic algorithms
US6970565B1 (en) * 2000-12-22 2005-11-29 Xm Satellite Radio Inc. Apparatus for and method of securely downloading and installing a program patch in a processing device

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558176A (en) 1982-09-20 1985-12-10 Arnold Mark G Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software
US5359659A (en) 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5224166A (en) 1992-08-11 1993-06-29 International Business Machines Corporation System for seamless processing of encrypted and non-encrypted data and instructions
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
US5757915A (en) * 1995-08-25 1998-05-26 Intel Corporation Parameterized hash functions for access control
US5943421A (en) 1995-09-11 1999-08-24 Norand Corporation Processor having compression and encryption circuitry
US6141698A (en) * 1997-01-29 2000-10-31 Network Commerce Inc. Method and system for injecting new code into existing application code
US6378072B1 (en) 1998-02-03 2002-04-23 Compaq Computer Corporation Cryptographic system
US6523118B1 (en) 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
KR100722172B1 (en) 1999-03-03 2007-05-29 소니 가부시끼 가이샤 Data processing apparatus, data processing method, terminal unit, and transmission method of data processing apparatus
CN100538587C (en) * 2000-07-18 2009-09-09 辛普雷克斯梅杰有限公司 Digital data protection arrangement
US20020112158A1 (en) 2001-02-14 2002-08-15 Golchikov Andrey Vladimirovich Executable file protection
US7039814B2 (en) 2001-03-07 2006-05-02 Sony Corporation Method for securing software via late stage processor instruction decryption
US7117357B2 (en) * 2001-06-27 2006-10-03 International Business Machines Corporation Method, system, and product for pre-encrypting static information transmitted by secure web sites
DE60228027D1 (en) 2001-07-06 2008-09-18 Texas Instruments Inc Secure bootloader for backing up digital devices
EP1276033B1 (en) * 2001-07-10 2012-03-14 Trident Microsystems (Far East) Ltd. Memory device with data protection in a processor
DE60318817T2 (en) * 2002-02-08 2009-01-22 Matsushita Electric Industrial Co., Ltd., Kadoma-shi PROCESS FOR IPMP SCHEME DESCRIPTION FOR A DIGITAL ARTICLE
US7266842B2 (en) * 2002-04-18 2007-09-04 International Business Machines Corporation Control function implementing selective transparent data authentication within an integrated system
US7509644B2 (en) * 2003-03-04 2009-03-24 Secure 64 Software Corp. Operating system capable of supporting a customized execution environment
US7055039B2 (en) * 2003-04-14 2006-05-30 Sony Corporation Protection of digital content using block cipher crytography
US7321910B2 (en) * 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7472285B2 (en) * 2003-06-25 2008-12-30 Intel Corporation Apparatus and method for memory encryption with reduced decryption latency
US7734932B2 (en) * 2003-11-10 2010-06-08 Broadcom Corporation System and method for securing executable code

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910094B1 (en) * 1997-10-08 2005-06-21 Koninklijke Philips Electronics N.V. Secure memory management unit which uses multiple cryptographic algorithms
US6834346B1 (en) * 1998-07-30 2004-12-21 Sony Corporation Content processing system
US6970565B1 (en) * 2000-12-22 2005-11-29 Xm Satellite Radio Inc. Apparatus for and method of securely downloading and installing a program patch in a processing device
US20030046563A1 (en) * 2001-08-16 2003-03-06 Dallas Semiconductor Encryption-based security protection for processors
US20040177260A1 (en) * 2003-03-06 2004-09-09 International Business Machines Corporation System and method for remote code integrity in distributed systems

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100241841A1 (en) * 2003-11-10 2010-09-23 Broadcom Corporation System and Method for Securing Executable Code
US8799678B2 (en) 2003-11-10 2014-08-05 Broadcom Corporation System and method for securing executable code
US20080187134A1 (en) * 2004-06-21 2008-08-07 France Telecom Method and Device For the Encryption and Decryption of Data
US8548164B2 (en) * 2004-06-21 2013-10-01 France Telecom Method and device for the encryption and decryption of data
US9251381B1 (en) 2006-06-27 2016-02-02 Western Digital Technologies, Inc. Solid-state storage subsystem security solution
US20090125726A1 (en) * 2007-11-14 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Providing the Security and Error Correction Capability for Memory Storage Devices
WO2009064794A2 (en) * 2007-11-14 2009-05-22 Mcm Portfolio Llc Method and apparatus of providing the security and error correction capability for memory storage devices
WO2009064794A3 (en) * 2007-11-14 2009-09-24 Mcm Portfolio Llc Method and apparatus of providing the security and error correction capability for memory storage devices
WO2010057065A2 (en) * 2008-11-14 2010-05-20 Intel Corporation Method and apparatus to provide secure application execution
WO2010057065A3 (en) * 2008-11-14 2010-08-19 Intel Corporation Method and apparatus to provide secure application execution
JP2012508938A (en) * 2008-11-14 2012-04-12 インテル・コーポレーション Secure application execution method and apparatus
US8356184B1 (en) 2009-06-25 2013-01-15 Western Digital Technologies, Inc. Data storage device comprising a secure processor for maintaining plaintext access to an LBA table
CN103069428A (en) * 2010-06-07 2013-04-24 思科技术公司 Secure virtual machine bootstrap in untrusted cloud infrastructures
US8856504B2 (en) * 2010-06-07 2014-10-07 Cisco Technology, Inc. Secure virtual machine bootstrap in untrusted cloud infrastructures
US20110302400A1 (en) * 2010-06-07 2011-12-08 Maino Fabio R Secure virtual machine bootstrap in untrusted cloud infrastructures
US9760502B2 (en) 2011-04-29 2017-09-12 Seagate Technology Llc Encrypted transport solid-state disk controller
CN103620690A (en) * 2011-04-29 2014-03-05 Lsi公司 Encrypted transport solid-state disk controller
US9069703B2 (en) 2011-04-29 2015-06-30 Seagate Technology Llc Encrypted-transport solid-state disk controller
US9195806B1 (en) * 2011-07-06 2015-11-24 The Boeing Company Security server for configuring and programming secure microprocessors
US9305142B1 (en) 2011-12-19 2016-04-05 Western Digital Technologies, Inc. Buffer memory protection unit
US9690704B2 (en) 2012-12-28 2017-06-27 Intel Corporation Paging in secure enclaves
US9990197B2 (en) 2012-12-28 2018-06-05 Intel Corporation Memory management in secure enclaves
US10409597B2 (en) 2012-12-28 2019-09-10 Intel Corporation Memory management in secure enclaves
WO2014105159A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Paging in secure enclaves
US9323686B2 (en) 2012-12-28 2016-04-26 Intel Corporation Paging in secure enclaves
US9189411B2 (en) 2012-12-28 2015-11-17 Intel Corporation Logging in secure enclaves
US9665724B2 (en) 2012-12-28 2017-05-30 Intel Corporation Logging in secure enclaves
WO2014105161A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Memory management in secure enclaves
US9747102B2 (en) 2012-12-28 2017-08-29 Intel Corporation Memory management in secure enclaves
WO2014105160A1 (en) * 2012-12-28 2014-07-03 Intel Corporation Logging in secure enclaves
US9766889B2 (en) 2012-12-28 2017-09-19 Intel Corporation Memory management in secure enclaves
US9501668B2 (en) * 2013-09-25 2016-11-22 Intel Corporation Secure video ouput path
US20150086012A1 (en) * 2013-09-25 2015-03-26 Siddhartha Chhabra Secure video ouput path
US9990314B2 (en) 2014-06-27 2018-06-05 Intel Corporation Instructions and logic to interrupt and resume paging in a secure enclave page cache
US9852301B2 (en) * 2014-12-24 2017-12-26 Intel Corporation Creating secure channels between a protected execution environment and fixed-function endpoints
US10311217B2 (en) * 2016-12-09 2019-06-04 Microsoft Technology Licensing, Llc Application piracy prevention with secure enclave protection of automatically modularized functions
US11056173B2 (en) * 2017-12-21 2021-07-06 Samsung Electronics Co., Ltd. Semiconductor memory device and memory module including the same
US10552344B2 (en) 2017-12-26 2020-02-04 Intel Corporation Unblock instruction to reverse page block during paging
US11461476B2 (en) 2019-03-21 2022-10-04 Commissariat A L'energie Atomique Et Aux Energies Alternatives Method for executing a binary code of a function secured by a microprocessor

Also Published As

Publication number Publication date
EP1536308A3 (en) 2006-05-31
US8799678B2 (en) 2014-08-05
EP1536308A2 (en) 2005-06-01
US20100241841A1 (en) 2010-09-23
US7734932B2 (en) 2010-06-08
CN1677922A (en) 2005-10-05
CN100542085C (en) 2009-09-16
TW200527872A (en) 2005-08-16
TWI298591B (en) 2008-07-01

Similar Documents

Publication Publication Date Title
US7734932B2 (en) System and method for securing executable code
US8751818B2 (en) Method and apparatus for a trust processor
US8347114B2 (en) Method and apparatus for enforcing a predetermined memory mapping
US7853803B2 (en) System and method for thwarting buffer overflow attacks using encrypted process pointers
JP4473330B2 (en) Initializing, maintaining, updating, and recovering secure operations within an integrated system using data access control functions
US8281115B2 (en) Security method using self-generated encryption key, and security apparatus using the same
US20090282254A1 (en) Trusted mobile platform architecture
KR101567620B1 (en) Secure memory management system and method
US7457960B2 (en) Programmable processor supporting secure mode
JP2013232219A (en) Methods and apparatus for secure handling of data in microcontroller
US7930537B2 (en) Architecture for encrypted application installation
US20210334381A1 (en) Method and electronic device capable of securely storing and loading firmware
EP4195583A1 (en) Data encryption method and apparatus, data decryption method and apparatus, terminal, and storage medium
WO2006131921A2 (en) Method, device, and system of maintaining a context of a secure execution environment
WO2022083324A1 (en) Message encryption method and device, message decryption method and device, and mobile terminal
US20210382985A1 (en) Virus immune computer system and method
US20200242235A1 (en) Virus immune computer system and method
US20170060775A1 (en) Methods and architecture for encrypting and decrypting data
EP3009952A1 (en) System and method for protecting a device against attacks on procedure calls by encrypting arguments
Vaslin et al. High Efficiency Protection Solution for Off-Chip Memory in Embedded Systems
KR20200055529A (en) Method for decoding encrypted data stored in an engine control unit

Legal Events

Date Code Title Description
AS Assignment

Owner name: BROADCOM CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BUER, MARK;REEL/FRAME:015536/0364

Effective date: 20040624

Owner name: BROADCOM CORPORATION,CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BUER, MARK;REEL/FRAME:015536/0364

Effective date: 20040624

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH

Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:037806/0001

Effective date: 20160201

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BROADCOM CORPORATION;REEL/FRAME:041706/0001

Effective date: 20170120

AS Assignment

Owner name: BROADCOM CORPORATION, CALIFORNIA

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041712/0001

Effective date: 20170119

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552)

Year of fee payment: 8

AS Assignment

Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE

Free format text: MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:047196/0687

Effective date: 20180509

AS Assignment

Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 9/5/2018 PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0687. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:047630/0344

Effective date: 20180905

AS Assignment

Owner name: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITE

Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 47630 FRAME: 344. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:048883/0267

Effective date: 20180905

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12