US20070288740A1 - System and method for secure boot across a plurality of processors - Google Patents
System and method for secure boot across a plurality of processors Download PDFInfo
- Publication number
- US20070288740A1 US20070288740A1 US11/423,342 US42334206A US2007288740A1 US 20070288740 A1 US20070288740 A1 US 20070288740A1 US 42334206 A US42334206 A US 42334206A US 2007288740 A1 US2007288740 A1 US 2007288740A1
- Authority
- US
- United States
- Prior art keywords
- boot
- processors
- boot code
- processor
- code
- 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.)
- Abandoned
Links
Images
Classifications
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/177—Initialisation or configuration control
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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 by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting 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 by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
Definitions
- the present application relates generally to an improved data processing system and method. More specifically, the present application is directed to a system and method for secure boot across a plurality of processors.
- an intruder may gain access to a computing system through electrical interfaces and other observable electromagnetic or thermal activity. By observing the boot activity in this way, the intruder may deduce what data signals are being input and output by the boot processor, what cryptographic algorithms are running on the processors, and the like. From this information, an intruder may detect points in the boot sequence where unauthorized intrusion may be made. Moreover, with secure boot sequences in which security keys are required for booting of the system, the intruder may reverse the cryptographic algorithm used by the boot processor to obtain access to the security keys and thereby be given complete access to the computing system. Since the overall security of the computing system is often dependent upon the security of the boot process, when the intruder gains access to the boot sequence, the security of the entire system may be at risk.
- the illustrative embodiments provide a system and method for selecting a random processor to boot a multiprocessor system and for providing a secure boot across a plurality of processors.
- randomizing which processor will be used to boot the multiprocessor system the ability of unauthorized persons to monitor the electrical interfaces, thermal activity, and other electromagnetic activity to obtain information about the boot sequence for purposes of defeating the security of the system is made more difficult.
- the would-be intruder would either need to run the boot sequence many different times while monitoring a single processor in hopes that it may be randomly selected as the boot processor, or monitor all of the processors at boot in order to determine which one was the actual boot processor. Both options require considerable effort on the part of the would-be intruder that may act as a deterrent from actually attempting to monitor the system to obtain boot sequence information or at least add significant delay to the time it would take the would-be intruder to compromise the system.
- pervasive logic is provided on a multiprocessor system, such as a system-on-a-chip, that controls the boot operation of the multiprocessor system.
- the pervasive logic includes a random event generator which randomly selects which processor in the multiprocessor system is to be the boot processor that runs the boot code to thereby bring the system into an operational state. Based on the random selection of a boot processor, a configuration bit associated with the boot processor is set indicating that processor to be the boot processor. Thereafter, the selected boot processor is provided with the necessary security key(s) for secure booting of the multiprocessor system into an operational state.
- the other processors of the multiprocessor system perform operations to mask the real secure boot operation.
- This masking may involve executing other code sequences, other than the boot code sequence, that cause the processors to generate electromagnetic and/or thermal outputs that, if monitored by an interloper, would make it difficult for the interloper to distinguish which processor is performing the actual secure boot operation.
- One way in which a different code sequence may be generated is by inserting random delay elements into the boot code that run loops which iterate a random amount. In this way, each processor may run the boot code but with differing delay amounts thereby causing different electromagnetic and thermal signatures to be generated. From an interloper's perspective, it will be very difficult to discern the actual boot processor from the other processors in the multiprocessor system due to such masking.
- the code sequences performed by the other processors are the same boot code sequence that the randomly selected processor executes but with dummy security keys.
- these other processors operate and look, to an interloper, as if they are performing the secure boot operation.
- false electromagnetic and thermal outputs are identified that make it difficult for the interloper to determine if the monitored processor is the actual randomly selected processor that is performing the secure boot operation.
- masking of the randomly selected boot processor may be performed by providing a dummy processor.
- the dummy processor appears, from an electromagnetic, thermal, etc., monitoring apparatus perspective, as if it is unique by running processes different from the boot code sequence on this dummy processor to thereby redirect attacks on the system to this dummy processor.
- the interloper when an interloper attempts to access the system by getting around the security mechanisms, the interloper only accesses a dummy processor that does not have actual access to the rest of the multiprocessor system.
- the boot code sequence may be distributed across a plurality of processors in the multiprocessor system.
- the number of processors that must be compromised in order to obtain complete information about the boot sequence and thereby circumvent security measures is increased.
- the distributed boot operation of the illustrative embodiments is more secure than multiprocessor data processing systems that utilize a single secure core.
- the boot operation fails, thereby preventing an unauthorized individual from circumventing the security of the system.
- the boot code sequence is partitioned into a plurality of partitions such that each partition may be provided to a different processor of the multiprocessor system. As each partition of the boot code sequence is executed, that partition must complete correctly on its respective processor before the boot code sequence may proceed on another processor.
- a secure communication mechanism is used to communicate satisfactory completion of a previous partition of the boot code sequence.
- This secure communication mechanism may include a security token, such as an encrypted password or other security identifier, e.g., a public/private encryption key pair, that indicates that the previous session was not compromised. In this way, a chain of dependent “sessions” are created that must complete satisfactorily.
- the processors that are involved in the distributed execution of the boot code may be all of the processors in the multiprocessor system or a sub-set of the processors in the multiprocessor system.
- a random selection mechanism such as that described above for selecting a single boot processor, may be used to randomly select a plurality of boot processors to be used in booting the system in a distributed manner.
- the particular partitions of the boot code that are executed by the processors may be randomly selected such that, with each power-on reset (POR) operation, the same processor may or may not execute the same boot code partition as in a previous POR operation.
- POR power-on reset
- processors of the multiprocessor system i.e. non-boot processors
- the distributed boot code sequence operation of the present illustrative embodiment may be combined with one or more of the previously described illustrative embodiments.
- a method in a data processing system having a plurality of processors, for booting the data processing system.
- the method may comprise partitioning boot code into a plurality of boot code partitions and loading, in each of a plurality of boot processors within the plurality of processors of the data processing system, a boot code partition from the plurality of boot code partitions.
- the plurality of boot code partitions may be executed on their respective associated boot processors as a plurality of sessions to thereby boot the data processing system.
- the number of boot code partitions may be equal to a number of boot processors.
- booting of the data processing system may fail.
- an associated boot processor of the plurality of processors that executed the boot code partition may signal, to another boot processor associated with a next boot code partition in a boot code sequence, the successful completion of the boot code partition.
- Executing the plurality of boot code partitions on their respective associated boot processors may comprise utilizing a security mechanism on communications between boot processors to ensure uncompromised execution of the plurality of boot code partitions on their respective associated boot processors.
- the security mechanism may comprise at least one of passing a security token between boot processors, passing a digital signature between boot processors, using a password, passing a checksum of a boot code partition, or using public key/private key encryption of the signals.
- the method may further comprise randomly selecting the boot processors from the plurality of processors, wherein the boot processors are a sub-set of the plurality of processors.
- Masking code may be executed on processors of the plurality of processors that were not randomly selected to be boot processors.
- the method may comprise randomly selecting which boot code partition is associated with each boot processor.
- Each boot code partition may be different from other boot code partitions.
- the sessions for execution of boot code partitions on the boot processors may be arranged in one of a daisy-chain arrangement, a ring arrangement, or a master/slave arrangement.
- the data processing system may be a heterogeneous multiprocessor system-on-a-chip having a first processor the operates according to a first instruction set and one or more second processors that operate according to a second instruction set different from the first instruction set.
- a data processing system comprising a plurality of processors, a boot code storage coupled to the plurality of processors, and pervasive logic coupled to the plurality of processors.
- the boot code storage may store boot code that is partitioned into a plurality of boot code partitions.
- the pervasive logic may perform various ones, and combinations of, the operations outlined above with regard to the illustrative method embodiment described previously.
- a computer program product comprising a computer useable medium having a computer readable program.
- the computer readable program when executed on a data processing system, may cause the data processing system to perform various ones, and combinations of, the operations outlined above with regard to the illustrative method embodiment described previously.
- FIG. 1 is an exemplary block diagram of a multiprocessor system in which the illustrative embodiments may be implemented
- FIG. 2 is an exemplary diagram illustrating the primary operational components of a random boot processor selection mechanism in accordance with one illustrative embodiment
- FIG. 3A is an exemplary diagram illustrating a random selection mechanism in accordance with one illustrative embodiment
- FIG. 3B is a graphical representation of jitter introduced into the input to a LFSR counter of a random event generator in accordance with one illustrative embodiment
- FIG. 3C is an exemplary diagram illustrating an illustrative embodiment in which a secret key and a plurality of randomly generated key values are provided to processors using parallel signal lines;
- FIGS. 4A-4D are exemplary diagrams illustrating masking operations for masking a secure boot operation of a randomly selected boot processor in accordance with illustrative embodiments
- FIG. 5 is a flowchart outlining an exemplary operation for randomly selecting a processor in a multiprocessor system as a boot processor
- FIG. 6 is a flowchart outlining an exemplary operation for masking a boot code sequence in accordance with one illustrative embodiment
- FIG. 7A is an exemplary diagram illustrating a distributed boot operation configured as a daisy chain or ring arrangement in accordance with one illustrative embodiment
- FIG. 7B is an exemplary diagram illustrating a distributed boot operation configured as a master/slave arrangement in accordance with one illustrative embodiment.
- FIG. 8 is a flowchart outlining an exemplary operation for distributed booting of a multiprocessor system in accordance with one illustrative embodiment.
- the illustrative embodiments provide an apparatus and method for selecting a random processor to boot on a multiprocessor system.
- the illustrative embodiments may be implemented for use with any multiprocessor system in which one of the processors may be selected for booting the multiprocessor system.
- the mechanisms of the illustrative embodiments are applicable to symmetric multiprocessor (SMP) systems, heterogeneous multiprocessor systems, non-coherent asymmetrical multiprocessor systems, and the like.
- CBE Cell Broadband Engine
- FIG. 1 is an exemplary block diagram of a data processing system in which aspects of the present invention may be implemented.
- the exemplary data processing system shown in FIG. 1 is an example of the Cell Broadband Engine (CBE) data processing system. While the CBE will be used in the description of the preferred embodiments of the present invention, the present invention is not limited to such, as will be readily apparent to those of ordinary skill in the art upon reading the following description.
- CBE Cell Broadband Engine
- the CBE 100 includes a power processor element (PPE) 110 having a power processor unit (PPU) 116 and its L 1 and L 2 caches 112 and 114 , and multiple synergistic processor elements (SPEs) 120 - 134 that each has its own synergistic processor unit (SPU) 140 - 154 , memory flow control 155 - 162 , local memory or store (LS) 163 - 170 , and bus interface unit (BIU unit) 180 - 194 which may be, for example, a combination direct memory access (DMA), memory management unit (MMU), and bus interface unit.
- a high bandwidth internal element interconnect bus (EIB) 196 , a bus interface controller (BIC) 197 , and a memory interface controller (MIC) 198 are also provided.
- the CBE 100 may be a system-on-a-chip such that each of the elements depicted in FIG. 1 may be provided on a single microprocessor chip. Moreover, the CBE 100 is a heterogeneous processing environment in which each of the SPUs may receive different instructions from each of the other SPUs in the system. Moreover, the instruction set for the SPUs is different from that of the PPU, e.g., the PPU may execute Reduced Instruction Set Computer (RISC) based instructions while the SPUs execute Single Instruction Multiple Data (SIMD) instructions.
- RISC Reduced Instruction Set Computer
- SIMD Single Instruction Multiple Data
- the SPEs 120 - 134 are coupled to each other and to the L 2 cache 114 via the EIB 196 .
- the SPEs 120 - 134 are coupled to MIC 198 and BIC 197 via the EIB 196 .
- the MIC 198 provides a communication interface to shared memory 199 .
- the BIC 197 provides a communication interface between the CBE 100 and other external buses and devices, such as a SouthBridge communications processor, for example.
- the PPE 110 is a dual threaded PPE 110 .
- the combination of this dual threaded PPE 110 and the eight SPEs 120 - 134 makes the CBE 100 capable of handling 10 simultaneous threads and over 128 outstanding memory requests.
- the PPE 110 acts as a controller for the other eight SPEs 120 - 134 which handle most of the computational workload.
- the PPE 110 may be used to run conventional operating systems while the SPEs 120 - 134 perform vectorized floating point code execution, for example.
- the SPEs 120 - 134 comprise a synergistic processing unit (SPU) 140 - 154 , memory flow control units 155 - 162 , local memory or store 163 - 170 , and bus interface units 180 - 194 .
- the local memory or store 163 - 170 in one exemplary embodiment, comprises a 256 KB instruction and data memory which is visible to the PPE 110 and can be addressed directly by software.
- the PPE 110 may load the SPEs 120 - 134 with small programs or threads, chaining the SPEs together to handle each step in a complex operation.
- a set-top box incorporating the CBE 100 may load programs for reading a DVD, video and audio decoding, and display, and the data would be passed off from SPE to SPE until it finally ended up on the output display.
- each SPE 120 - 134 gives a theoretical 32 GFLOPS of performance with the PPE 110 having a similar level of performance.
- the memory flow control units (MFCS) 155 - 162 serve as an interface for an SPU to the rest of the system and other elements.
- the MFCs 155 - 162 provide the primary mechanism for data transfer, protection, and synchronization between main storage and the local storages 163 - 170 .
- Some implementations can share resources of a single MFC between multiple SPUs. In such a case, all the facilities and commands defined for the MFC must appear independent to software for each SPU. The effects of sharing an MFC are limited to implementation-dependent facilities and commands.
- the illustrative embodiments provide an apparatus and method for selecting a random processor, such as one of the SPEs 120 - 134 , to boot a multiprocessor system, e.g., the CBE 100 .
- a random processor such as one of the SPEs 120 - 134
- the CBE 100 e.g., the CBE 100 .
- pervasive logic 193 is provided on the CBE 100 which controls the boot operation of the CBE 100 .
- the pervasive logic 193 includes a random event generator which randomly selects which SPE 120 - 134 is to be the boot processor that runs the boot code to thereby bring the system into an operational state. Based on the random selection of a boot SPE 120 - 134 , a configuration bit associated with the selected SPE, e.g., SPE 120 , is set indicating that SPE 120 to be the actual boot processor. Thereafter, the selected SPE 120 is provided with the necessary security key(s) for secure booting of the CBE 100 into an operational state.
- the chosen SPE When the chosen SPE successfully completes the secure boot procedure, it will transition from a secure state, wherein the MIC 198 , Shared Memory 199 , and a portion of the BIC 197 other than the communication link to Flash Rom 230 in FIG. 2 hereafter, are shutdown and prevented from operation, to an unlocked state.
- the secure SPE Once the secure SPE enters the unlocked state, it will initiate the process of fully enabling the MIC 198 , BIC 197 (a process referred to as “training”), and all other processors (SPEs and PPE) by executing the encrypted code provided by the Flash ROM 230 .
- training a process referred to as “training”
- SPEs and PPE all other processors
- the other SPEs 122 - 134 perform operations to mask the real secure boot operation. This masking may involve executing other code sequences, other than the boot code sequence, that cause the SPEs 122 - 134 to generate electrical, electromagnetic, and/or thermal outputs that, if monitored by an interloper, would make it difficult for the interloper to distinguish which SPE 120 - 134 is performing the actual secure boot operation.
- each SPE 120 - 134 may run the boot code but with differing delay amounts thereby causing different electromagnetic and thermal signatures to be generated. Moreover, the same SPE 120 - 134 will generate different electromagnetic and thermal signatures each time it runs the secure boot code. From an interloper's perspective, it will be very difficult to discern the actual boot SPE 120 from the other SPEs 122 - 134 in the CBE 100 due to such masking.
- the code sequences performed by the other SPEs 122 - 134 are the same boot code sequence that the randomly selected SPE 120 executes but with dummy security keys.
- these other SPEs 122 - 134 operate and look, to an interloper, as if they are performing the secure boot operation.
- the SPEs 122 - 134 are monitored, false electrical, electromagnetic, and thermal outputs are identified that make it difficult for the interloper to determine if the monitored SPE is the actual randomly selected SPE 120 that is performing the secure boot operation.
- masking of the randomly selected boot SPE 120 may be performed by providing a dummy SPE (not shown).
- the dummy SPE appears, from an electromagnetic, thermal, etc., monitoring apparatus perspective, as if it is unique by running processes different from the boot code sequence on this dummy SPE to thereby redirect attacks on the CBE 100 to this dummy SPE.
- the interloper when an interloper attempts to access the system by getting around the security mechanisms, the interloper only accesses a dummy SPE that does not have actual access to the rest of the CBE 100 .
- the intruder compromises the dummy SPE and attempts to execute code, the dummy SPE can then shutdown the rest of the CBE 100 to prevent further intrusion attempts.
- FIG. 2 is an exemplary diagram illustrating the primary operational components of a random boot processor selection mechanism in accordance with one illustrative embodiment. It should be appreciated that, for simplicity of the explanation of the illustrative embodiments, FIG. 2 only shows one processor of a multiprocessor system in detail. However, it should be appreciated that each of the processors of the multiprocessor system have a similar arrangement of elements and operate in a similar manner to that of the processor that is explicitly shown in FIG. 2 . Any number of processors may be included in the multiprocessor system without departing from the spirit and scope of the present invention. However, for purposes of explanation of the illustrative embodiments, it will be assumed that the number of processors is eight as in the CBE architecture shown in FIG. 1 .
- the primary operational components of a random boot processor selection mechanism include a system controller 210 , a secure key storage 220 , a flash ROM 230 , and pervasive logic 240 .
- elements 210 - 240 may be elements that are provided on the chip in which the CBE architecture is implemented. That is, these elements 210 - 240 may be built into the logic of a multiprocessor system-on-a-chip (SoC) and thus, the operations performed by these elements 210 - 240 may be performed on-chip.
- SoC system-on-a-chip
- one or more of the elements may be provided off chip, e.g., the flash ROM 230 may be provided off-chip.
- the system controller 210 is responsible for performing the initial operations of a power on reset (POR) to bring the power of the system to an acceptable and stable level. That is, the system controller 210 is responsible for bringing up the voltages, turning on the system clock, and other initial operations required for bringing the multiprocessor system to a state where boot operations may begin, as is generally known in the art. As part of this POR operation, the processors 280 - 290 are brought up in a secure mode of operation. In this secure mode of operation, the processor's local stores are not accessible outside the processor. The system controller 210 , once these initial operations are completed and the system is at an acceptable power state, signals a “power good” state to the pervasive logic 240 .
- POR power on reset
- the pervasive logic 240 In response to the “power good” signal from the system controller 210 , the pervasive logic 240 begins a boot operation for booting the multiprocessor system into an operational state such that software programs may begin to execute. As part of this boot operation, a random event generator 242 of the pervasive logic 240 randomly selects one of the processors, e.g., processor 280 , to be the boot processor for the multiprocessor system. The random event generator 242 generates a signal that is sent to each of the processors of the multiprocessor system. The signal is logically high only for the processor that is selected as the boot processor.
- This signal effectively sets the value in the configuration bit register 250 of the randomly selected processor 280 to a value, e.g., “1”, indicative of this processor 280 being the boot processor.
- the other processors will have their configuration bit values in their respective configuration bit registers kept at an initial value, thereby indicating that these processors are not the randomly selected boot processor for the multiprocessor system.
- the boot code for booting the multiprocessor system is stored in an encrypted format in flash ROM 230 .
- the encrypted boot code 232 may be provided to each of the processors 280 - 290 . That is, as part of the boot sequence, each of the processors 280 - 290 may attempt to read the encrypted boot code 232 from the flash ROM 230 . However, since only one of the processors has been randomly selected as the boot processor, only one of the processors will be able to decrypt the encrypted boot code 232 and properly execute it so as to bring the multiprocessor system to an operational state.
- selector 260 provided in each of the processors that selects between the secret key that is the key value used to decrypt the encrypted boot code 232 and a randomly generated key value that will not be able to decrypt the encrypted boot code 232 .
- selector 260 may be a multiplexer that receives the secure key (Skey) from the secure key storage 220 as one input, a randomly generated key value from a random value generator 262 as a second input, and the select signal from the configuration bit register 250 indicating which of the two inputs to select. If the configuration bit register 250 stores a value indicative of the processor being the randomly selected boot processor, then the Skey input is selected. If the configuration bit register 250 stores a value indicative that the processor is not the randomly selected boot processor, then the randomly generated key value input may be selected by the selector 260 . The selected key value is then output to the SPE 270 .
- Skey secure key
- the SPE 270 receives the selected key value and the encrypted boot code 232 .
- the SPE 270 attempts to decrypt the encrypted boot code 232 . If the selected key value is the Skey from the secure key storage 220 , then the SPE 270 will be able to properly decrypt the encrypted boot code 232 and execute the boot code instructions therein to bring the system to an operational state. If the selected key value is not the Skey from the secure key storage 220 , then the decryption will fail and the SPE 270 will not be able to execute the boot code instructions.
- the above process for randomly selecting a boot processor and booting the multiprocessor system using the randomly selected boot processor may be performed with each power-on reset (POR) operation performed by the multiprocessor system.
- POR power-on reset
- a different one of the plurality of processors may be randomly selected to be the boot processor.
- a potential intruder into the system will not be able to determine, a priori, which processor is the boot processor and direct measurements of electromagnetic and thermal conditions of the multiprocessor system to that particular processor.
- the potential intruder must either monitor a single processor through multiple boot-up operations of the multiprocessor system in hopes that the single processor will eventually be selected as the random processor to be the boot processor or the potential intruder must monitor all of the processors to thereby identify which processor is the boot processor and attempt to obtain the necessary information through measurements of its individual electromagnetic and thermal conditions.
- the difficulty in monitoring the boot sequence is made eight times more difficult since all eight processors must be monitored. Moreover, more probes and hardware would be need to do such monitoring, thereby adding to the difficulty of attempting such monitoring.
- FIG. 3A is an exemplary diagram illustrating a random selection mechanism in accordance with one illustrative embodiment.
- the principle idea behind the illustrative embodiments is the random selection of a processor, from a plurality of processors, to be the boot processor for the multiprocessor system.
- a random event generator and selector mechanism are provided.
- the random event generator is provided in pervasive logic of the multiprocessor system while a selector is provided in association with each of the processors, in the illustrative embodiments.
- FIG. 3A provides a depiction of one implementation of a random event generator and selector in accordance with one illustrative embodiment.
- the random event generator 310 which may correspond to the random event generator 242 in FIG. 2 , for example, includes a linear feedback shift register (LFSR) counter 320 , a ring oscillator 330 , and a selector signal register/decoder 340 .
- the ring oscillator 330 is a device composed of an odd number of NOT gates whose output oscillates between two voltage levels.
- the NOT gates, or inverters are attached in a chain with the output of the last inverter being fed back into the first inverter.
- the last output of a chain of an odd number of inverters is the logical NOT of the first input. This final output is asserted a finite amount of time after the first input is asserted.
- the feedback of this last output to the input causes an unstable oscillation that will vary in time according to random elements such as electromagnetic noise on the power supply and temperature.
- the output of the ring oscillator 330 is provided as an input to the LFSR counter 320 along with a clock signal clk.
- the LFSR counter 320 is a shift register whose input bit is a linear function of its previous state. The only linear functions of single bits are XOR and inverse-XOR and thus, the LFSR is a shift register whose input bit is driven by the exclusive-or (XOR) of some bits of the overall shift register value.
- the initial value of the LFSR counter 320 is called the seed, and because the operation of the register is deterministic, the sequence of values produced by the LFSR counter 320 is completely determined by its current (or previous) state.
- a LFSR counter 320 with a well-chosen feedback function can produce a sequence of bits which appears random and which has a very long cycle. In the illustrative embodiments, this randomness is made more apparent in that the input to the LFSR counter 320 is a product of the oscillation produced by the ring oscillator 330 and the discrepancy between the frequency of the ring oscillator 330 and the input clock clk which vary independently of one another.
- the LFSR counter 320 receives, as input, the output from the ring oscillator 330 and the clock signal clk, and generates an output bit stream that is stored in selector signal register/decoder 340 .
- the inverters of the ring oscillator 330 introduce a delay in the output signal to the LFSR counter 320 and thus, there is a discrepancy between the frequency of the ring oscillator 330 and the input clock clk. This discrepancy between the frequencies gives rise to jitter in the input to the LFSR counter 320 , as depicted in FIG. 3B . This jitter provides a measure of randomness which randomizes the output generated by the LFSR counter 320 .
- the output of the LFSR counter 320 is stored in the selector signal register/decoder 340 .
- the LFSR counter 320 is a 3-bit counter which generates a 3-bit output that is interpreted to encode a value 1-8.
- a decoder function of the selector signal register/decoder 340 selects one of the 8 unique outputs based on the random 3 -bit input value.
- high or low state signals are output to the configuration bit registers of the various processors, e.g., SPE 0 -SPE 7 120 - 134 in FIG. 1 , to thereby set the values stored in the configuration bit registers and thus, select one of the processors to be the boot processor for the multiprocessor system.
- the selector signal is provided to a multiplexer 352 , 362 , 372 , along with an Skey input and a random key value input. Based on the state of the selector signal, either the Skey input or the random key value input is selected by each of the multiplexers 352 , 362 , 372 .
- the random key value inputs may be generated by one or more random value generators of the same or a different type from the random event generator configuration described above for selecting the boot processor. That is, a similar random event generator configuration as described above may be used to randomly generate a key value having a same length as the Skey. These random key values are then input to the multiplexers 352 , 362 , and 372 .
- the system is designed such that, by way of the decoder function describe above, for example, only one of the selector signals that are input to the multiplexers 352 , 362 , 372 will select the Skey input while all the others will select a random key value input.
- the outputs from the multiplexers 352 , 362 , and 372 are provide to the corresponding SPEs so that the SPEs may utilize these outputs for either decrypting boot code and executing the boot code, in the case of the randomly selected boot processor, or attempting to decrypt the boot code and failing to boot the multiprocessor system, as in the case of all other processors in the multiprocessor system.
- random event generators and selectors are only exemplary and are not intended to state or imply any limitation with regard to the types of random event generators and selectors that may be used with the illustrative embodiments.
- a thermal sensor may be used to measure thermal noise which may then be used to generate a random event for selecting one of the processors as a boot processor.
- a quantum dot (q-dot), or semiconductor nanocrystals may be used to measure quantum source effects that may be used as a source of randomness for selecting a processor as the boot processor. Any strong source of randomness may be used with the illustrative embodiments to provide a random selection of a processor for use as the boot processor for the multiprocessor system.
- FIG. 3A shows the ring oscillator 330 having five inverters
- the illustrative embodiments are not limited to such. Rather, any number of inverters, so long as there are an odd number of inverters, may be used without departing from the spirit and scope of the present invention.
- the amount of discrepancy may be selected based on the desired operational characteristics for the particular multiprocessor system in which the illustrative embodiments are implemented.
- FIGS. 2 and 3A depict the random key value being generated by a separate random key value generator for each processor
- the illustrative embodiments are not limited to such. Rather, a single random key value generator may be provided for all of the processors with the random key value generator generating one or more random key values that are input to the processors.
- the random key value generator may generate a single random key value that is provided to all of the processors, a separate random key value for each individual processor (in which case seven different random key values may be generated, for example), or any number of random key values that may be selectively provided to the various processors of the multiprocessor system.
- a plurality of random key value generators 390 may be provided that each output a different random key value.
- a single random key value generator may be used in replacement of these separate random key value generators.
- These random key values may be provided as inputs to the selectors, e.g., multiplexers 391 and 392 , of the processors, e.g., SPEs 393 and 394 , in the multiprocessor system along with the secure key (Skey) from an Skey storage 395 , e.g., an eFuse, that is actually used to decrypt the boot code for booting of the multiprocessor system.
- Skey secure key
- the randomly generated key values and the Skey value may be multiplexed and provided on eight identical signal lines to each of the multiplexers 391 and 392 so as to make it more difficult for an intruder to isolate one of the lines as being a signal line from the secure key storage 395 .
- the eight total key value inputs may be provided to the multiplexers 391 and 392 and the select signals from the random event generator 396 in the pervasive logic 397 may be used to select one of the eight inputs.
- the multiplexers 391 and 392 may select between the Skey input and seven random key values.
- a first processor may select the Skey input, based on the random selection of this first processor as the boot processor, a second processor may select a third random key value, a third processor may select a fourth random key value, a fifth processor may select a first random key value, and so on.
- each processor may receive a different key value, either the Skey or a randomly generated key value. As a result, it becomes difficult for an intruder to discern which key value is the correct key value when monitoring bus traffic of the multiprocessor system.
- FIGS. 3A and 3C are preferably provided in lower layer metal layers of the ceramic package in which the multiprocessor system is provided, or the lowest layer of interconnect, if the design is on a single chip. Since the ability to probe electrical and thermal characteristics of a multiprocessor system is currently limited to the upper layers of the multiprocessor ceramic package, by placing these elements in the lower layer metal layers, the ability to probe the operation of these elements is made more difficult. Thus, it is very difficult, if not impossible, for a would-be intruder to monitor the thermal and electrical characteristics of the random event generator and selectors so as to determine the key values provided by these elements.
- a processor within a plurality of processors of a multiprocessor system may be randomly selected to boot the multiprocessor system.
- secret information e.g., the secret keys
- the illustrative embodiments provide additional mechanisms for masking the boot sequence on the randomly selected processor such that the unauthorized individual is not able to discern which processor is correctly performing the actual boot sequence for booting the multiprocessor system.
- the processor When the processor is not able to decrypt the actual encrypted boot code received from the flash ROM, the processor may default back to this secure portion of local storage which causes the processor to execute instructions to mask the boot code sequence being performed on another processor.
- This sequence of instructions may not generate any useable information and may serve only a masking function. Alternatively, this sequence of instructions may be used to perform operations for monitoring the system during the boot operation, or other useful operations, for example.
- the code that is executed on each of the non-selected processors i.e. the non-boot processors
- the code that is executed by each of the non-selected processors is the same.
- the code that is run on each of these non-selected processors preferably is code that generates electrical and thermal profiles that resemble the actual boot code but do not provide any of the secret information that an intruder would require in order to circumvent the security of the multiprocessor system.
- Such code may perform similar operations to that of the actual boot code but not access the sensitive portions of the multiprocessor system.
- the same boot code that is used to boot the multiprocessor system may be used by the non-selected processors but with access to the secure key (Skey) and other privileged information being made inaccessible.
- Skey secure key
- the thermal profile and bus traffic of these non-selected processors will approximate the actual boot sequence.
- the intruder will be unable to decipher which core is performing the actual boot operation since all of the cores will look the same via the monitoring probes.
- Such ambiguity deters tampering and makes it more difficult to isolate the real boot code sequence, secret key information, and the like.
- each of the non-selected processors may execute a different set of instructions.
- none of the processors look unique when monitored using electrical or thermal probes.
- a distinguishing characteristic such as thermal profile or bus traffic, cannot be identified by probes so as to identify which processor is the boot processor.
- These different sets of instructions may be randomly selected for each of the processors in the multiprocessor system.
- differing start addresses for code sequences stored in an on-chip storage device e.g., a flash ROM or the like, may be randomly selected and provided to the processors of the multiprocessor system.
- the processors may then begin executing instructions at the randomly selected start addresses thereby generating different thermal profiles and bus traffic that masks the actual boot code sequence.
- One way in which to provide different code sequences for the different processors is to provide boot code that has random delay elements inserted into the boot code. These delay elements may be, for example, loops that iterate a random number of times. Such delay elements may be provided both in the actual boot code sequence run by the randomly selected boot processor and in the boot code sequences run by the non-selected processors. This random delay causes the boot code to “look” different on each of the processors from the perspective of an intruder monitoring the thermal and bus traffic characteristics of the processors. As a result, it is not possible for the intruder to discern which processor is running the actual boot code that boots the multiprocessor system.
- a dummy processor looks as though it is unique when monitored by an intruder.
- This illustrative embodiment is a combination of the previous embodiments in which one processor is randomly selected to be the boot processor, one processor of the non-selected processors is selected to be a dummy processor that runs code that provides a unique thermal and bus traffic profile from the boot code sequence, and the other processors run code sequences that replicate the thermal profile and bus traffic of the actual boot code sequence as close as possible. In this way, the intruder will detect the dummy processor as being unique from the other processors and will conclude that this processor is running the actual boot code sequence.
- the intruder will direct its attacks to this dummy processor rather than the actual boot processor that appears to be similar to the other processors from a thermal profile and bus traffic standpoint. Furthermore, if the intruder attempts to run code or otherwise actively interfere with the dummy processor, the dummy processor can then signal a system shutdown.
- FIGS. 4A-4D are exemplary diagrams illustrating masking operations for masking a secure boot operation of a randomly selected boot processor in accordance with illustrative embodiments.
- FIG. 4A illustrates a first masking operation in which code that appears, from a monitoring probe standpoint, to be the same as the boot code sequence is run on each of the non-selected processors.
- SPE 0 410 is randomly selected, such as by use of the mechanisms described previously, to be the boot processor for the multiprocessor system 400 .
- SPE 0 410 receives the secret key, decrypts the boot code sequence from the flash ROM, and executes the actual boot code operations required to bring the multiprocessor system 400 into an operational state.
- the other SPEs i.e. SPE 1 -SPE 7 412 - 424 , execute code that looks like the boot code sequence from the perspective of a monitoring probe.
- the code sequence that the other SPEs 412 - 424 run may be default code sequences provided in a secure portion of local storage which causes the SPE 412 - 424 to execute instructions to mask the boot code sequence being performed on SPE 0 410 .
- the code that is run on each of these non-selected SPEs 412 - 424 preferably is code that generates electrical and thermal profiles that resemble the actual boot code but do not provide any of the secret information that an intruder would require in order to circumvent the security of the multiprocessor system. Such code may perform similar operations to that of the actual boot code but not access the sensitive portions of the multiprocessor system 400 .
- FIG. 4B illustrates another illustrative embodiment in which different randomly selected algorithms are run on each of the non-selected processors.
- SPE 0 is again selected to be the boot processor and thus, runs the boot code for booting the multiprocessor system 400 into an operational state.
- Each of the other SPEs 412 - 424 run a separate randomly selected algorithm that generates different thermal profiles and different bus traffic on the EIB.
- each SPE 0 - 7 appears to be unique when compared to each of the other SPEs 410 - 424 .
- these different algorithms may be randomly selected for each of the SPEs 412 - 424 in the multiprocessor system.
- differing start addresses for code sequences stored in an on-chip storage device e.g., a flash ROM or the like, may be randomly selected and provided to the SPEs 412 - 424 .
- the SPEs 412 - 424 may then begin executing instructions at the randomly selected start addresses thereby generating different thermal profiles and bus traffic that masks the actual boot code sequence.
- the boot code may be provided to each of the SPEs 410 - 424 with random delay elements inserted into the boot code. These delay elements may be, for example, loops that iterate a random number of times. This random delay causes the boot code to “look” different on each of the SPEs 410 - 424 from the perspective of an intruder monitoring the thermal and bus traffic characteristics of the processors. As a result, it is not possible for the intruder to discern which processor is running the actual boot code that boots the multiprocessor system.
- FIG. 4C illustrates another illustrative embodiment in which a dummy processor is provided to which attacks from an intruder may be redirected.
- SPE 0 is the randomly selected boot processor executing the boot sequence.
- SPE 1 -SPE 4 412 - 418 and SPE 6 -SPE 7 422 - 424 run code that looks like the boot code sequence from a thermal and bus traffic monitoring perspective, as in the embodiment described above with regard to FIG. 4A .
- SPE 5 420 runs a randomly selected algorithm which may be randomly selected in a similar manner as described above with regard to FIG. 4B .
- FIG. 4D illustrates the illustrative embodiment previously described above in which the boot code that is used to boot the system is executed by each of the processors.
- the randomly selected boot processor is given access to the secret key (Skey) while the other processors receive randomly selected keys (Rkey 1 -Rkey 7 ).
- Skey secret key
- Rkey 1 -Rkey 7 randomly selected keys
- Each of the processors attempts to decode and execute the boot code using the key that was supplied to them, e.g., the Skey or an Rkey. Only the randomly selected boot processor will be able to correctly decrypt the boot code and execute it to bring the data processing system into an operational state.
- the multiprocessor system is made more secure from unauthorized access to the boot sequence.
- blocks of the flowchart illustrations support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that each block of the flowchart illustrations, and combinations of blocks in the flowchart illustrations, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or by combinations of special purpose hardware and computer instructions.
- FIG. 5 outlines an exemplary operation for random selection of a boot processor for booting a multiprocessor system.
- the operation starts with the system controller performing a power-on reset (POR) operation (step 510 ).
- POR power-on reset
- the system controller After performance of the initial POR operations, the system controller provides a “power good” signal to the pervasive logic of the multiprocessor system (step 520 ) and the pervasive logic initiates a random boot operation (step 530 ).
- the boot code sequence may be distributed across a plurality of processors in the multiprocessor system, as described hereafter. By distributing the boot code sequence across a plurality of processors in the multiprocessor system, the number of processors that must be compromised in order to obtain complete information about the boot sequence and thereby circumvent security measures is increased.
- the distributed boot operation of the illustrative embodiments described hereafter is more secure than multiprocessor data processing systems that utilize a single secure core. Furthermore, by distributing the boot operation, if any portion of the boot operation is compromised, the boot operation fails, thereby preventing an unauthorized individual from circumventing the security of the system. In other words, while the would-be intruder may compromise a portion of the boot operation, the would-be intruder is not able to compromise the all of the boot operation and thus, is not able to obtain access to the multiprocessor data processing system.
- the boot code sequence is partitioned into a plurality of partitions such that each partition may be provided to a different processor of the multiprocessor system. As each partition of the boot code sequence is executed, that partition must complete correctly on its respective processor before the boot code sequence may proceed on another processor.
- a secure communication mechanism is used to communicate satisfactory completion of a previous partition of the boot code sequence.
- This secure communication mechanism may include a security token, such as an encrypted password or other security identifier, e.g., a public/private encryption key pair, that indicates that the previous session was not compromised. In this way, a chain of dependent “sessions” are created that must complete satisfactorily.
- the processors that are involved in the distributed execution of the boot code may be all of the processors in the multiprocessor system or a sub-set of the processors in the multiprocessor system.
- a random selection mechanism such as that described above for selecting a single boot processor, may be used to randomly select a plurality of boot processors to be used in booting the system in a distributed manner.
- the particular partitions of the boot code that are executed by the processors may be randomly selected such that, with each power-on reset (POR) operation, the same processor may or may not execute the same boot code partition as in a previous POR operation.
- POR power-on reset
- processors of the multiprocessor system i.e. non-boot processors
- the distributed boot code sequence operation of the present illustrative embodiment may be combined with one or more of the previously described illustrative embodiments without departing from the spirit and scope of the present invention.
- FIG. 7A is an exemplary diagram illustrating a distributed boot operation configured as a daisy chain or ring arrangement in accordance with one illustrative embodiment.
- a plurality of processors 720 - 750 are provided for booting the multiprocessor data processing system.
- all of the co-processors i.e. SPEs
- the control processor e.g., PPE
- the PPE may also be included in the distributed boot operation.
- only a sub-set of the processors in the multiprocessor data processing system may be used to perform the distributed boot operation.
- the encrypted boot code 710 which may be stored in a storage device associated with the multiprocessor data processing system, such as in Flash ROM 230 in FIG. 2 , for example, may be partitioned into separately executable partitions, i.e. boot code partitions 1 to n.
- the partitions may be provided as modules or routines in the encrypted boot code that are separately encrypted using the same encryption algorithm and the same secret key (Skey).
- the number of boot code partitions is equal to the number of processors that will be involved in the distributed boot operation, i.e. the number of boot processors.
- the number of boot code partitions is not limited the number of boot processors and may be any number of partitions less than or greater than the number of boot processors.
- the pervasive logic 790 provides selector signals to the processors 720 - 750 for selecting which boot code partition is to be executed by each of the processors 720 - 750 .
- the pervasive logic 790 provides key value selector signals for causing the processor 720 - 750 to select the Skey, from Skey storage, as the key to be used to decrypt their corresponding boot code partitions.
- the processors 720 - 750 decrypt their boot code partition using the supplied Skey and then execute the boot code partition in the proper sequence either by virtue of the arrangement of the processors 720 - 750 in a daisy chain architecture or under the control of the pervasive logic 790 , for example.
- SPE 0 720 begins the distributed boot operation by decrypting its boot code partition 1 , executing the boot code partition, and then securely communicating the successful completion of the boot code partition 1 to SPE 1 730 .
- a security mechanism may be utilized between the SPEs for indicating that the previous session, i.e. the session comprised of the execution of the previous boot code partition, was not compromised.
- the security mechanism may be, for example, passing a security token, digital signature, password, a checksum of the previous boot code partition, using public key/private key encryption of the successful completion message, or the like. Any security mechanism that may be used to communicate whether or not the previous session of a distributed boot operation was compromised or not is intended to be within the spirit and scope of the present invention.
- the SPE 1 730 may decrypt its boot code partition 2 , execute the boot code partition, and then communicate its successful completion of boot code partition 2 to SPE 2 740 . This process may continue until all of the processors have signaled that they have completed their portion of the distributed boot operation without being compromised. Any break in this dependency chain of boot code partitions, e.g., any signaling of unsuccessful execution or compromised execution, results in a failed boot which may be signaled to the system controller. Once all of the boot code partitions have completed successfully, the multiprocessor data processing system is in an operative state in which software applications may be executed on the various processors.
- the illustrative embodiment described above utilizes a daisy-chain arrangement of the processors with regard to the boot code partitions that are executed on the processors.
- Other arrangements that ensure a sequential execution of boot code partitions may be utilized without departing from the spirit and scope of the present invention.
- an extension of the daisy-chain arrangement above is to provide a ring arrangement of the processors with regard to the distributed boot operation such that the last processor, e.g., SPE 7 750 , communicates back to the first processor, e.g., SPE 0 720 , which is selected as the “primary” boot processor, its successful and uncompromised completion of execution of its boot code partition.
- the security mechanism e.g., the security token, an incremented count value, etc., which is passed from one session to the next through the ring arrangement may be used at the primary boot processor to verify uncompromised execution of the entire distributed boot operation.
- a ring arrangement of processors allows a greater number of boot code partitions to be utilized than the number of boot processors.
- this sub-set of processors may execute any number of boot code partitions when arranged in a ring arrangement with regard to the distributed boot operation.
- the pervasive logic 790 may contain logic for randomly selecting a number of processors to select to be boot processors which then is used to control the random selection of processors as previously described above.
- FIG. 7B is an exemplary diagram illustrating a distributed boot operation configured as a master/slave arrangement in accordance with one illustrative embodiment.
- one processor 760 is designated the master processor.
- This processor may be one of the co-processors, e.g., an SPE, or the control processor, e.g., the PPE.
- the slave processors e.g., SPE 0 -SPE 7 720 - 750 , each are responsible for completing their boot code partition and securely communicating to the master core that they have finished execution and have not been compromised, in a similar manner as described above in FIG. 7A .
- the master processor 760 has received signals from each of the slave processors 720 - 750 , and validated that it has not been compromised itself, then the multiprocessor data processing system is permitted to enter an operational state in which software applications may be executed.
- FIG. 8 is a flowchart outlining an exemplary operation for distributed booting of a multiprocessor system in accordance with one illustrative embodiment.
- the operation starts with the pervasive logic receiving a “power good” signal from the system controller (step 810 ).
- the pervasive logic selects the processors to be boot processors from the plurality of processors in the multiprocessor data processing system (step 820 ). As mentioned above, such selection may result in all of the processors being selected or some sub-set of the processors in the multiprocessor data processing system being selected to be boot processors. Such selection may be performed using a random event generator in the pervasive logic, for example.
- the pervasive logic selects the boot code partitions to be assigned to the selected boot processors (step 830 ).
- a next boot code partition is executed by an associated boot processor (step 840 ).
- the boot processor determines whether the execution of the boot code partition was successful and uncompromised (step 850 ). If not, a boot failure is signaled to the system controller (step 860 ) and the operation terminates.
- the boot processor determines if the all boot code partitions have been executed successfully (step 870 ). If not, the operation returns to step 840 and the next boot code partition is executed by its associated boot processor. If all of the boot code partitions have been executed successfully, the boot processor signals the successful boot of the data processing system to the system controller (step 880 ) and the operation terminates.
- the illustrative embodiments in addition to randomly selecting a single boot processor and performing masking operations on other processors of the multiprocessor data processing system, provides mechanisms for distributing the boot operation over a plurality of processors.
- the illustrative embodiments provide mechanisms for randomly selecting boot processors, randomly selecting boot code partitions to be executed on selected boot processors, and to ensure the security of the execution of the boot code partitions by the various boot processors. All of these various mechanisms aid is increasing the security of the multiprocessor data processing system from unauthorized monitoring of the boot operation.
- the illustrative embodiments may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements.
- the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
- the illustrative embodiments may take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system.
- a computer-usable or computer readable medium may be any apparatus that may contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
- the medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium.
- Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk.
- Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
- the circuits as described above may be part of the design for an integrated circuit chip.
- the chip design may be created in a graphical computer programming language, and stored in a computer storage medium (such as a disk, tape, physical hard drive, or virtual hard drive such as in a storage access network). If the designer does not fabricate chips or the photolithographic masks used to fabricate chips, the designer may transmit the resulting design by physical means (e.g., by providing a copy of the storage medium storing the design) or electronically (e.g., through the Internet) to such entities, directly or indirectly.
- the stored design may then be converted into the appropriate format (e.g., GDSII) for the fabrication of photolithographic masks, which typically include multiple copies of the chip design in question that are to be formed on a wafer.
- the photolithographic masks may be utilized to define areas of the wafer (and/or the layers thereon) to be etched or otherwise processed.
- the resulting integrated circuit chips may be distributed by the fabricator in raw wafer form (that is, as a single wafer that has multiple unpackaged chips), as a bare die, or in a packaged form.
- the chip may be mounted in a single chip package (such as a plastic carrier, with leads that are affixed to a motherboard or other higher level carrier) or in a multichip package (such as a ceramic carrier that has either or both surface interconnections or buried interconnections).
- the chip may then be integrated with other chips, discrete circuit elements, and/or other signal processing devices as part of either (a) an intermediate product, such as a motherboard, or (b) an end product.
- the end product may be any product that includes integrated circuit chips, ranging from toys and other low-end applications to advanced computer products having a display, a keyboard or other input device, and a central processor.
- the end products in which the integrated circuit chips may be provided may include game machines, game consoles, hand-held computing devices, personal digital assistants, communication devices, such as wireless telephones and the like, laptop computing devices, desktop computing devices, server computing devices, or any other computing device.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/423,342 US20070288740A1 (en) | 2006-06-09 | 2006-06-09 | System and method for secure boot across a plurality of processors |
PCT/EP2007/054575 WO2007141112A1 (en) | 2006-06-09 | 2007-05-11 | System and method for secure boot across a plurality of processors |
EP07729027A EP2027551A1 (en) | 2006-06-09 | 2007-05-11 | System and method for secure boot across a plurality of processors |
JP2009513635A JP5031029B2 (ja) | 2006-06-09 | 2007-05-11 | 複数のプロセッサにまたがるセキュア・ブートのシステム、方法およびプログラム |
CN2007800083962A CN101401103B (zh) | 2006-06-09 | 2007-05-11 | 用于跨越多个处理器的安全启动的系统和方法 |
TW096119979A TW200817970A (en) | 2006-06-09 | 2007-06-04 | System and method for secure boot across a plurality of processors |
US12/130,185 US8046574B2 (en) | 2006-06-09 | 2008-05-30 | Secure boot across a plurality of processors |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/423,342 US20070288740A1 (en) | 2006-06-09 | 2006-06-09 | System and method for secure boot across a plurality of processors |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/130,185 Continuation US8046574B2 (en) | 2006-06-09 | 2008-05-30 | Secure boot across a plurality of processors |
Publications (1)
Publication Number | Publication Date |
---|---|
US20070288740A1 true US20070288740A1 (en) | 2007-12-13 |
Family
ID=38373250
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/423,342 Abandoned US20070288740A1 (en) | 2006-06-09 | 2006-06-09 | System and method for secure boot across a plurality of processors |
US12/130,185 Expired - Fee Related US8046574B2 (en) | 2006-06-09 | 2008-05-30 | Secure boot across a plurality of processors |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/130,185 Expired - Fee Related US8046574B2 (en) | 2006-06-09 | 2008-05-30 | Secure boot across a plurality of processors |
Country Status (6)
Country | Link |
---|---|
US (2) | US20070288740A1 (zh) |
EP (1) | EP2027551A1 (zh) |
JP (1) | JP5031029B2 (zh) |
CN (1) | CN101401103B (zh) |
TW (1) | TW200817970A (zh) |
WO (1) | WO2007141112A1 (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080069151A1 (en) * | 2001-12-28 | 2008-03-20 | Texas Instruments Incorporated | Variable time division multiplex transmission system |
US20080215874A1 (en) * | 2006-06-09 | 2008-09-04 | International Business Machines Corporation | System and Method for Masking a Boot Sequence by Providing a Dummy Processor |
US20080256366A1 (en) * | 2006-06-09 | 2008-10-16 | International Business Machines Corporation | System and Method for Booting a Multiprocessor Device Based on Selection of Encryption Keys to be Provided to Processors |
US20090055640A1 (en) * | 2006-06-09 | 2009-02-26 | International Business Machines Corporation | Masking a Hardware Boot Sequence |
US20090327680A1 (en) * | 2006-06-09 | 2009-12-31 | International Business Machines Corporation | Selecting a Random Processor to Boot on a Multiprocessor System |
US20130013906A1 (en) * | 2011-07-08 | 2013-01-10 | Openpeak Inc. | System and method for validating components during a booting process |
US8839004B1 (en) * | 2012-04-16 | 2014-09-16 | Ionu Security, Inc. | Secure cloud computing infrastructure |
US20140372738A1 (en) * | 2013-06-12 | 2014-12-18 | Arm Limited | Providing a trustworthy indication of the current state of a multi-processor data processing apparatus |
TWI495785B (zh) * | 2013-05-29 | 2015-08-11 | Univ Chaoyang Technology | 握壓推動流體之發電裝置 |
US20170061163A1 (en) * | 2015-08-28 | 2017-03-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Maintaining cryptoprocessor types in a multinode environment |
US20200209818A1 (en) * | 2018-12-27 | 2020-07-02 | Bachmann Gmbh | Method and device for checking the integrity of modules of a wind turbine |
US20200313880A1 (en) * | 2019-03-25 | 2020-10-01 | Stmicroelectronics (Rousset) Sas | Encryption and/or decryption key device, system and method |
US20210326054A1 (en) * | 2020-04-20 | 2021-10-21 | Western Digital Technologies, Inc. | Storage System with Privacy-Centric Multi-Partitions and Method for Use Therewith |
US11308217B2 (en) * | 2017-08-31 | 2022-04-19 | Texas Instruments Incorporated | Randomized execution countermeasures against fault injection attacks during boot of an embedded device |
US20220222323A1 (en) * | 2021-01-14 | 2022-07-14 | Sensoriant, Inc. | User controlled trusted & isolated computing environments |
US11423153B2 (en) * | 2020-08-18 | 2022-08-23 | Raytheon Company | Detection of malicious operating system booting and operating system loading |
US20230034526A1 (en) * | 2021-07-28 | 2023-02-02 | Dell Products, L.P. | Trust verification system and method for a baseboard management controller (bmc) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083365A1 (en) * | 2008-09-30 | 2010-04-01 | Naga Gurumoorthy | Apparatus and method to harden computer system |
US8132267B2 (en) * | 2008-09-30 | 2012-03-06 | Intel Corporation | Apparatus and method to harden computer system |
CN102043648A (zh) * | 2009-10-23 | 2011-05-04 | 中兴通讯股份有限公司 | 多核系统及其启动方法 |
US20110099423A1 (en) * | 2009-10-27 | 2011-04-28 | Chih-Ang Chen | Unified Boot Code with Signature |
US20140149729A1 (en) | 2011-07-18 | 2014-05-29 | Ted A. Hadley | Reset vectors for boot instructions |
US9319884B2 (en) | 2011-10-27 | 2016-04-19 | T-Mobile Usa, Inc. | Remote unlocking of telecommunication device functionality |
US9055443B2 (en) | 2011-10-27 | 2015-06-09 | T-Mobile Usa, Inc. | Mobile device-type locking |
US9591484B2 (en) | 2012-04-20 | 2017-03-07 | T-Mobile Usa, Inc. | Secure environment for subscriber device |
US10075848B2 (en) | 2012-08-25 | 2018-09-11 | T-Mobile Usa, Inc. | SIM level mobile security |
JP2015011357A (ja) * | 2013-06-26 | 2015-01-19 | 富士通株式会社 | 情報処理システム及び情報処理システムの制御方法 |
CN104281460A (zh) * | 2013-07-08 | 2015-01-14 | 英业达科技有限公司 | 伺服器及启动方法 |
CN104346150B (zh) * | 2013-07-30 | 2017-10-17 | 华为技术有限公司 | 多实例业务的可执行文件的生成方法和装置 |
US9807607B2 (en) | 2014-10-03 | 2017-10-31 | T-Mobile Usa, Inc. | Secure remote user device unlock |
US10769315B2 (en) | 2014-12-01 | 2020-09-08 | T-Mobile Usa, Inc. | Anti-theft recovery tool |
CN109643351B (zh) * | 2016-08-30 | 2023-12-15 | 株式会社索思未来 | 处理装置、半导体集成电路以及半导体集成电路的启动方法 |
US10171649B2 (en) | 2017-04-21 | 2019-01-01 | T-Mobile Usa, Inc. | Network-based device locking management |
US10476875B2 (en) | 2017-04-21 | 2019-11-12 | T-Mobile Usa, Inc. | Secure updating of telecommunication terminal configuration |
US11593119B2 (en) * | 2018-04-27 | 2023-02-28 | Tesla, Inc. | Autonomous driving controller parallel processor boot order |
US10972901B2 (en) | 2019-01-30 | 2021-04-06 | T-Mobile Usa, Inc. | Remote SIM unlock (RSU) implementation using blockchain |
US11321244B2 (en) | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
CN111106935B (zh) * | 2019-12-27 | 2023-05-16 | 天津芯海创科技有限公司 | 一种支持多端异构模式下的秘钥管理架构 |
Citations (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937063A (en) * | 1996-09-30 | 1999-08-10 | Intel Corporation | Secure boot |
US6141756A (en) * | 1998-04-27 | 2000-10-31 | Motorola, Inc. | Apparatus and method of reading a program into a processor |
US6192475B1 (en) * | 1997-03-31 | 2001-02-20 | David R. Wallace | System and method for cloaking software |
US6347372B1 (en) * | 1998-03-20 | 2002-02-12 | Fujitsu Limited | Multiprocessor control system, and a boot device and a boot control device used therein |
US20020029346A1 (en) * | 1999-01-11 | 2002-03-07 | Farhad Pezeshki | Method and apparatus for minimizing differential power attacks on processors |
US6415348B1 (en) * | 1999-08-23 | 2002-07-02 | Advanced Micro Devices, Inc. | Flexible microcontroller architecture |
US20020124178A1 (en) * | 1998-01-02 | 2002-09-05 | Kocher Paul C. | Differential power analysis method and apparatus |
US20020156819A1 (en) * | 2001-04-23 | 2002-10-24 | Pijnenburg Beheer B.V. | Digital true random number generator circuit |
US20030023859A1 (en) * | 2001-07-25 | 2003-01-30 | Kiddy Raymond R. | Method of obfuscating computer instruction streams |
US20030056107A1 (en) * | 2001-09-17 | 2003-03-20 | Cammack William E. | Secure bootloader for securing digital devices |
US6550019B1 (en) * | 1999-11-04 | 2003-04-15 | International Business Machines Corporation | Method and apparatus for problem identification during initial program load in a multiprocessor system |
US20030188144A1 (en) * | 2002-03-28 | 2003-10-02 | Sterling Du | Personal computer integrated with personal digital assistant |
US20040025032A1 (en) * | 2000-02-18 | 2004-02-05 | Chow Stanley T | Method and system for resistance to statiscal power analysis |
US20040039928A1 (en) * | 2000-12-13 | 2004-02-26 | Astrid Elbe | Cryptographic processor |
US6738478B1 (en) * | 1998-10-28 | 2004-05-18 | Certicom Corp. | Power signature attack resistant cryptography |
US6754818B1 (en) * | 2000-08-31 | 2004-06-22 | Sun Microsystems, Inc. | Method and system for bootstrapping from a different boot image when computer system is turned on or reset |
US20040199786A1 (en) * | 2002-12-02 | 2004-10-07 | Walmsley Simon Robert | Randomisation of the location of secret information on each of a series of integrated circuits |
US20040255172A1 (en) * | 2003-06-13 | 2004-12-16 | International Business Machines Corporation | Remote power control in a multi-node, partitioned data processing system |
US6839849B1 (en) * | 1998-12-28 | 2005-01-04 | Bull Cp8 | Smart integrated circuit |
US20050004960A1 (en) * | 2003-03-14 | 2005-01-06 | Laszlo Hars | Electronic circuit for random number generation |
US20050021944A1 (en) * | 2003-06-23 | 2005-01-27 | International Business Machines Corporation | Security architecture for system on chip |
US20050160255A1 (en) * | 2004-01-15 | 2005-07-21 | Fujitsu Limited | Information processing device and program |
US20050182952A1 (en) * | 2004-02-12 | 2005-08-18 | Sony Corporation | Information processing apparatus and method and computer program |
US20050271202A1 (en) * | 2004-06-08 | 2005-12-08 | Hrl Laboratories, Llc | Cryptographic architecture with random instruction masking to thwart differential power analysis |
US20060036833A1 (en) * | 2002-12-12 | 2006-02-16 | Piry Frederic Claude M | Processing activity masking in a data processing system |
US7036023B2 (en) * | 2001-01-19 | 2006-04-25 | Microsoft Corporation | Systems and methods for detecting tampering of a computer system by calculating a boot signature |
US20060090084A1 (en) * | 2004-10-22 | 2006-04-27 | Mark Buer | Secure processing environment |
US20060129848A1 (en) * | 2004-04-08 | 2006-06-15 | Texas Instruments Incorporated | Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor |
US7065654B1 (en) * | 2001-05-10 | 2006-06-20 | Advanced Micro Devices, Inc. | Secure execution box |
US20060179302A1 (en) * | 2005-02-07 | 2006-08-10 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a secure booting sequence in a processor |
US20070079150A1 (en) * | 2005-09-30 | 2007-04-05 | Belmont Brian V | Dynamic core swapping |
US20070250691A1 (en) * | 2006-04-19 | 2007-10-25 | Lyle Cool | Method and apparatus to support independent systems in partitions of a processing system |
US7337314B2 (en) * | 2003-04-12 | 2008-02-26 | Cavium Networks, Inc. | Apparatus and method for allocating resources within a security processor |
US7424620B2 (en) * | 2003-09-25 | 2008-09-09 | Sun Microsystems, Inc. | Interleaved data and instruction streams for application program obfuscation |
US7424500B2 (en) * | 2003-06-24 | 2008-09-09 | Renesas Technology Corp. | Random number generator with ring oscillation circuit |
US7426749B2 (en) * | 2004-01-20 | 2008-09-16 | International Business Machines Corporation | Distributed computation in untrusted computing environments using distractive computational units |
US7500112B1 (en) * | 2000-01-08 | 2009-03-03 | Nxp B.V. | Cryptographic device and methods for defeating physical analysis |
US7506381B2 (en) * | 2001-06-15 | 2009-03-17 | Nokia Corporation | Method for securing an electronic device, a security system and an electronic device |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63121978A (ja) * | 1986-11-11 | 1988-05-26 | Fujitsu Ltd | 大規模組合せ問題の最適化処理装置 |
JPH04216159A (ja) * | 1990-12-17 | 1992-08-06 | Hitachi Ltd | 計算機の高速立ち上げ方式および計算機システム |
US5555373A (en) * | 1995-02-06 | 1996-09-10 | International Business Machines Corporation | Inactivity monitor for trusted personal computer system |
US5675772A (en) * | 1995-03-23 | 1997-10-07 | Industrial Technology Research Institute | Device and method for reconfiguring a computer system with an incompatible CPU |
JPH08272756A (ja) * | 1995-03-31 | 1996-10-18 | Toshiba Corp | マルチプロセッサシステムの起動方法 |
JP2988518B2 (ja) * | 1997-03-17 | 1999-12-13 | 日本電気株式会社 | マルチプロセッサ制御方式 |
US6216216B1 (en) * | 1998-10-07 | 2001-04-10 | Compaq Computer Corporation | Method and apparatus for providing processor partitioning on a multiprocessor machine |
US6282601B1 (en) * | 1999-03-31 | 2001-08-28 | International Business Machines Corporation | Multiprocessor data processing system and method of interrupt handling that facilitate identification of a processor requesting a system management interrupt |
US6578131B1 (en) * | 1999-04-27 | 2003-06-10 | Microsoft Corporation | Scaleable hash table for shared-memory multiprocessor system |
US6473857B1 (en) * | 1999-12-06 | 2002-10-29 | Dell Products, L.P. | Centralized boot |
US6532538B1 (en) * | 2000-02-17 | 2003-03-11 | International Business Machines Corporation | Method and system for supporting multiple operating systems on the same disk running on different computers at the same time |
US7203747B2 (en) * | 2001-05-25 | 2007-04-10 | Overture Services Inc. | Load balancing system and method in a multiprocessor system |
US6641050B2 (en) * | 2001-11-06 | 2003-11-04 | International Business Machines Corporation | Secure credit card |
US7082542B2 (en) * | 2001-12-21 | 2006-07-25 | Intel Corporation | Power management using processor throttling emulation |
US7065641B2 (en) | 2002-06-13 | 2006-06-20 | Intel Corporation | Weighted processor selection apparatus and method for use in multiprocessor systems |
US7200772B2 (en) * | 2003-04-29 | 2007-04-03 | Intel Corporation | Methods and apparatus to reinitiate failed processors in multiple-processor systems |
EP1596270A1 (en) * | 2004-05-10 | 2005-11-16 | Dialog Semiconductor GmbH | Micro-controller controlled power management chip |
US7627781B2 (en) * | 2004-10-25 | 2009-12-01 | Hewlett-Packard Development Company, L.P. | System and method for establishing a spare processor for recovering from loss of lockstep in a boot processor |
US7822995B2 (en) * | 2005-03-03 | 2010-10-26 | Seagate Technology Llc | Apparatus and method for protecting diagnostic ports of secure devices |
US20070071233A1 (en) * | 2005-09-27 | 2007-03-29 | Allot Communications Ltd. | Hash function using arbitrary numbers |
US7562211B2 (en) * | 2005-10-27 | 2009-07-14 | Microsoft Corporation | Inspecting encrypted communications with end-to-end integrity |
CN1764106A (zh) * | 2005-11-16 | 2006-04-26 | 乔超 | 一种防止有通信条件/功能的软硬件被盗用的系统和方法 |
US8015565B2 (en) * | 2005-11-21 | 2011-09-06 | International Business Machines Corporation | Preventing livelocks in processor selection of load requests |
US7594104B2 (en) * | 2006-06-09 | 2009-09-22 | International Business Machines Corporation | System and method for masking a hardware boot sequence |
US20070288738A1 (en) * | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for selecting a random processor to boot on a multiprocessor system |
US20070288761A1 (en) | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors |
US7774616B2 (en) * | 2006-06-09 | 2010-08-10 | International Business Machines Corporation | Masking a boot sequence by providing a dummy processor |
US20070288739A1 (en) | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for masking a boot sequence by running different code on each processor |
-
2006
- 2006-06-09 US US11/423,342 patent/US20070288740A1/en not_active Abandoned
-
2007
- 2007-05-11 EP EP07729027A patent/EP2027551A1/en not_active Withdrawn
- 2007-05-11 CN CN2007800083962A patent/CN101401103B/zh not_active Expired - Fee Related
- 2007-05-11 JP JP2009513635A patent/JP5031029B2/ja not_active Expired - Fee Related
- 2007-05-11 WO PCT/EP2007/054575 patent/WO2007141112A1/en active Application Filing
- 2007-06-04 TW TW096119979A patent/TW200817970A/zh unknown
-
2008
- 2008-05-30 US US12/130,185 patent/US8046574B2/en not_active Expired - Fee Related
Patent Citations (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937063A (en) * | 1996-09-30 | 1999-08-10 | Intel Corporation | Secure boot |
US6192475B1 (en) * | 1997-03-31 | 2001-02-20 | David R. Wallace | System and method for cloaking software |
US20020124178A1 (en) * | 1998-01-02 | 2002-09-05 | Kocher Paul C. | Differential power analysis method and apparatus |
US6347372B1 (en) * | 1998-03-20 | 2002-02-12 | Fujitsu Limited | Multiprocessor control system, and a boot device and a boot control device used therein |
US6141756A (en) * | 1998-04-27 | 2000-10-31 | Motorola, Inc. | Apparatus and method of reading a program into a processor |
US6738478B1 (en) * | 1998-10-28 | 2004-05-18 | Certicom Corp. | Power signature attack resistant cryptography |
US6839849B1 (en) * | 1998-12-28 | 2005-01-04 | Bull Cp8 | Smart integrated circuit |
US20020029346A1 (en) * | 1999-01-11 | 2002-03-07 | Farhad Pezeshki | Method and apparatus for minimizing differential power attacks on processors |
US7092523B2 (en) * | 1999-01-11 | 2006-08-15 | Certicom Corp. | Method and apparatus for minimizing differential power attacks on processors |
US6415348B1 (en) * | 1999-08-23 | 2002-07-02 | Advanced Micro Devices, Inc. | Flexible microcontroller architecture |
US6550019B1 (en) * | 1999-11-04 | 2003-04-15 | International Business Machines Corporation | Method and apparatus for problem identification during initial program load in a multiprocessor system |
US7500112B1 (en) * | 2000-01-08 | 2009-03-03 | Nxp B.V. | Cryptographic device and methods for defeating physical analysis |
US20040025032A1 (en) * | 2000-02-18 | 2004-02-05 | Chow Stanley T | Method and system for resistance to statiscal power analysis |
US20040078588A1 (en) * | 2000-02-18 | 2004-04-22 | Chow Stanley T | Method and apparatus for balanced electronic operations |
US6754818B1 (en) * | 2000-08-31 | 2004-06-22 | Sun Microsystems, Inc. | Method and system for bootstrapping from a different boot image when computer system is turned on or reset |
US20040039928A1 (en) * | 2000-12-13 | 2004-02-26 | Astrid Elbe | Cryptographic processor |
US7036023B2 (en) * | 2001-01-19 | 2006-04-25 | Microsoft Corporation | Systems and methods for detecting tampering of a computer system by calculating a boot signature |
US20020156819A1 (en) * | 2001-04-23 | 2002-10-24 | Pijnenburg Beheer B.V. | Digital true random number generator circuit |
US7065654B1 (en) * | 2001-05-10 | 2006-06-20 | Advanced Micro Devices, Inc. | Secure execution box |
US7506381B2 (en) * | 2001-06-15 | 2009-03-17 | Nokia Corporation | Method for securing an electronic device, a security system and an electronic device |
US6694435B2 (en) * | 2001-07-25 | 2004-02-17 | Apple Computer, Inc. | Method of obfuscating computer instruction streams |
US20030023859A1 (en) * | 2001-07-25 | 2003-01-30 | Kiddy Raymond R. | Method of obfuscating computer instruction streams |
US20030056107A1 (en) * | 2001-09-17 | 2003-03-20 | Cammack William E. | Secure bootloader for securing digital devices |
US20030188144A1 (en) * | 2002-03-28 | 2003-10-02 | Sterling Du | Personal computer integrated with personal digital assistant |
US20040199786A1 (en) * | 2002-12-02 | 2004-10-07 | Walmsley Simon Robert | Randomisation of the location of secret information on each of a series of integrated circuits |
US7313677B2 (en) * | 2002-12-12 | 2007-12-25 | Arm Limited | Processing activity masking in a data processing system |
US20060036833A1 (en) * | 2002-12-12 | 2006-02-16 | Piry Frederic Claude M | Processing activity masking in a data processing system |
US7426629B2 (en) * | 2002-12-12 | 2008-09-16 | Arm Limited | Processing activity masking in a data processing system |
US20060117167A1 (en) * | 2002-12-12 | 2006-06-01 | Evrard Christophe J | Processing activity masking in a data processing system |
US20060155962A1 (en) * | 2002-12-12 | 2006-07-13 | Piry Frederic C M | Processing activity masking in a data processing system |
US20050004960A1 (en) * | 2003-03-14 | 2005-01-06 | Laszlo Hars | Electronic circuit for random number generation |
US7337314B2 (en) * | 2003-04-12 | 2008-02-26 | Cavium Networks, Inc. | Apparatus and method for allocating resources within a security processor |
US20040255172A1 (en) * | 2003-06-13 | 2004-12-16 | International Business Machines Corporation | Remote power control in a multi-node, partitioned data processing system |
US20050021944A1 (en) * | 2003-06-23 | 2005-01-27 | International Business Machines Corporation | Security architecture for system on chip |
US7424500B2 (en) * | 2003-06-24 | 2008-09-09 | Renesas Technology Corp. | Random number generator with ring oscillation circuit |
US7424620B2 (en) * | 2003-09-25 | 2008-09-09 | Sun Microsystems, Inc. | Interleaved data and instruction streams for application program obfuscation |
US20050160255A1 (en) * | 2004-01-15 | 2005-07-21 | Fujitsu Limited | Information processing device and program |
US7426749B2 (en) * | 2004-01-20 | 2008-09-16 | International Business Machines Corporation | Distributed computation in untrusted computing environments using distractive computational units |
US20050182952A1 (en) * | 2004-02-12 | 2005-08-18 | Sony Corporation | Information processing apparatus and method and computer program |
US20060129848A1 (en) * | 2004-04-08 | 2006-06-15 | Texas Instruments Incorporated | Methods, apparatus, and systems for securing SIM (subscriber identity module) personalization and other data on a first processor and secure communication of the SIM data to a second processor |
US20050273630A1 (en) * | 2004-06-08 | 2005-12-08 | Hrl Laboratories, Llc | Cryptographic bus architecture for the prevention of differential power analysis |
US20050271202A1 (en) * | 2004-06-08 | 2005-12-08 | Hrl Laboratories, Llc | Cryptographic architecture with random instruction masking to thwart differential power analysis |
US20050273631A1 (en) * | 2004-06-08 | 2005-12-08 | Hrl Laboratories, Llc | Cryptographic CPU architecture with random instruction masking to thwart differential power analysis |
US20060090084A1 (en) * | 2004-10-22 | 2006-04-27 | Mark Buer | Secure processing environment |
US20060179302A1 (en) * | 2005-02-07 | 2006-08-10 | Sony Computer Entertainment Inc. | Methods and apparatus for providing a secure booting sequence in a processor |
US20070079150A1 (en) * | 2005-09-30 | 2007-04-05 | Belmont Brian V | Dynamic core swapping |
US20070250691A1 (en) * | 2006-04-19 | 2007-10-25 | Lyle Cool | Method and apparatus to support independent systems in partitions of a processing system |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7830906B2 (en) * | 2001-12-28 | 2010-11-09 | Texas Instruments Incorporated | Variable time division multiplex transmission system |
US20080069151A1 (en) * | 2001-12-28 | 2008-03-20 | Texas Instruments Incorporated | Variable time division multiplex transmission system |
US8037293B2 (en) | 2006-06-09 | 2011-10-11 | International Business Machines Corporation | Selecting a random processor to boot on a multiprocessor system |
US8046573B2 (en) | 2006-06-09 | 2011-10-25 | International Business Machines Corporation | Masking a hardware boot sequence |
US20090327680A1 (en) * | 2006-06-09 | 2009-12-31 | International Business Machines Corporation | Selecting a Random Processor to Boot on a Multiprocessor System |
US7774617B2 (en) | 2006-06-09 | 2010-08-10 | International Business Machines Corporation | Masking a boot sequence by providing a dummy processor |
US7779273B2 (en) | 2006-06-09 | 2010-08-17 | International Business Machines Corporation | Booting a multiprocessor device based on selection of encryption keys to be provided to processors |
US20080256366A1 (en) * | 2006-06-09 | 2008-10-16 | International Business Machines Corporation | System and Method for Booting a Multiprocessor Device Based on Selection of Encryption Keys to be Provided to Processors |
US20080215874A1 (en) * | 2006-06-09 | 2008-09-04 | International Business Machines Corporation | System and Method for Masking a Boot Sequence by Providing a Dummy Processor |
US20090055640A1 (en) * | 2006-06-09 | 2009-02-26 | International Business Machines Corporation | Masking a Hardware Boot Sequence |
US20130013906A1 (en) * | 2011-07-08 | 2013-01-10 | Openpeak Inc. | System and method for validating components during a booting process |
US8850177B2 (en) * | 2011-07-08 | 2014-09-30 | Openpeak Inc. | System and method for validating components during a booting process |
US9367692B2 (en) * | 2011-07-08 | 2016-06-14 | Openpeak Inc. | System and method for validating components during a booting process |
US20150149757A1 (en) * | 2011-07-08 | 2015-05-28 | Openpeak Inc. | System and Method for Validating Components During a Booting Process |
US8839004B1 (en) * | 2012-04-16 | 2014-09-16 | Ionu Security, Inc. | Secure cloud computing infrastructure |
TWI495785B (zh) * | 2013-05-29 | 2015-08-11 | Univ Chaoyang Technology | 握壓推動流體之發電裝置 |
US9268942B2 (en) * | 2013-06-12 | 2016-02-23 | Arm Limited | Providing a trustworthy indication of the current state of a multi-processor data processing apparatus |
US11068275B2 (en) | 2013-06-12 | 2021-07-20 | Arm Limited | Providing a trustworthy indication of the current state of a multi-processor data processing apparatus |
US20140372738A1 (en) * | 2013-06-12 | 2014-12-18 | Arm Limited | Providing a trustworthy indication of the current state of a multi-processor data processing apparatus |
US9875112B2 (en) | 2013-06-12 | 2018-01-23 | Arm Limited | Providing a trustworthy indication of the current state of a multi-processor data processing apparatus |
US10564981B2 (en) | 2013-06-12 | 2020-02-18 | Arm Limited | Providing a trustworthy indication of the current state of a multi-processor data processing apparatus |
US9916476B2 (en) * | 2015-08-28 | 2018-03-13 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Maintaining cryptoprocessor types in a multinode environment |
US20170061163A1 (en) * | 2015-08-28 | 2017-03-02 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Maintaining cryptoprocessor types in a multinode environment |
US11308217B2 (en) * | 2017-08-31 | 2022-04-19 | Texas Instruments Incorporated | Randomized execution countermeasures against fault injection attacks during boot of an embedded device |
US20200209818A1 (en) * | 2018-12-27 | 2020-07-02 | Bachmann Gmbh | Method and device for checking the integrity of modules of a wind turbine |
CN111385282A (zh) * | 2018-12-27 | 2020-07-07 | 巴赫曼有限公司 | 用于检验风力发电设备的模块的完整性的方法和装置 |
US11650558B2 (en) * | 2018-12-27 | 2023-05-16 | Bachmann Gmbh | Method and device for checking the integrity of modules of a wind turbine |
US20200313880A1 (en) * | 2019-03-25 | 2020-10-01 | Stmicroelectronics (Rousset) Sas | Encryption and/or decryption key device, system and method |
US20210326054A1 (en) * | 2020-04-20 | 2021-10-21 | Western Digital Technologies, Inc. | Storage System with Privacy-Centric Multi-Partitions and Method for Use Therewith |
US11868635B2 (en) * | 2020-04-20 | 2024-01-09 | Western Digital Technologies, Inc. | Storage system with privacy-centric multi-partitions and method for use therewith |
US11423153B2 (en) * | 2020-08-18 | 2022-08-23 | Raytheon Company | Detection of malicious operating system booting and operating system loading |
US20220222323A1 (en) * | 2021-01-14 | 2022-07-14 | Sensoriant, Inc. | User controlled trusted & isolated computing environments |
US11409846B2 (en) * | 2021-01-14 | 2022-08-09 | Safelishare, Inc. | User controlled trusted and isolated computing environments |
US20230034526A1 (en) * | 2021-07-28 | 2023-02-02 | Dell Products, L.P. | Trust verification system and method for a baseboard management controller (bmc) |
US11797679B2 (en) * | 2021-07-28 | 2023-10-24 | Dell Products, L.P. | Trust verification system and method for a baseboard management controller (BMC) |
Also Published As
Publication number | Publication date |
---|---|
US8046574B2 (en) | 2011-10-25 |
JP2009540405A (ja) | 2009-11-19 |
JP5031029B2 (ja) | 2012-09-19 |
EP2027551A1 (en) | 2009-02-25 |
WO2007141112A1 (en) | 2007-12-13 |
CN101401103B (zh) | 2012-04-18 |
TW200817970A (en) | 2008-04-16 |
US20080229092A1 (en) | 2008-09-18 |
CN101401103A (zh) | 2009-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8046574B2 (en) | Secure boot across a plurality of processors | |
US7774616B2 (en) | Masking a boot sequence by providing a dummy processor | |
US7779273B2 (en) | Booting a multiprocessor device based on selection of encryption keys to be provided to processors | |
US8037293B2 (en) | Selecting a random processor to boot on a multiprocessor system | |
US7594104B2 (en) | System and method for masking a hardware boot sequence | |
US20070288739A1 (en) | System and method for masking a boot sequence by running different code on each processor | |
US9842212B2 (en) | System and method for a renewable secure boot | |
US8438658B2 (en) | Providing sealed storage in a data processing device | |
CN113065140B (zh) | 一种芯片化控制保护装置内嵌安全防护系统及方法 | |
Mohammad et al. | Required policies and properties of the security engine of an SoC | |
EP4281891A1 (en) | Read-only memory (rom) security | |
EP4281893A1 (en) | Read-only memory (rom) security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DALE, JASON N.;DEMENT, JONATHAN J.;O'NIELL, CLARK M.;AND OTHERS;REEL/FRAME:017763/0130;SIGNING DATES FROM 20060531 TO 20060607 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO PAY ISSUE FEE |