Some embodiments described herein relate generally to methods and apparatus to use side-channel information in a power signature analysis to validate integrity of remote electronic devices.
When an electronic device exchanges data with a remote electronic device, known authentication techniques typically rely on authentication keys that are known to both devices. The exchange of data is accompanied by the exchange of the authentication keys to validate the devices' integrity. Dynamic and static code analysis can also be used to validate the devices' integrity. The complexity of the process, disruption to the remote device's function, and bandwidth limitation, however, typically make such techniques costly and impractical.
In addition, the known authentication techniques validate that the data communication is destined to an intended recipient or an authorized user. These authentication techniques and current encryption techniques, however, are unable to identify, for example, if the software running on that device has been compromised, if the hardware has been compromised, or if the software is licensed to use in a specific hardware platform. Authentication and/or encryption techniques can be negated if malware is monitoring the execution and stealing or modifying the decrypted information.
Accordingly, a need exists for methods and apparatuses to validate integrity of a remote device without disruption to the remote device's functions and with less burden on the bandwidth. A need also exists for methods and apparatus to an improved authentication and encryption mechanism such that the code will not be decrypted if malware is also running on the device.
Some embodiments described herein include an apparatus having a processor communicatively coupled to a memory. The processor is configured to send, at a first compute device, input vectors to a second compute device. The processor is configured to receive side-channel information, from the second compute device, in response to the input vectors. The processor is then configured to compare the received side-channel information with predefined side-channel information associated with the second compute device. If the received side-channel information does not substantially match the predefined side-channel information, the processor is configured to generate a message that the second compute device has an anomaly.
Some embodiments described herein include an apparatus having a processor communicatively coupled to a memory. The processor is configured to execute, at a compute device, a first section of code and measure the side-channel information. The processor is configured to convert the side-channel information to a first encryption key and encrypt a second section of code with the first encryption key to produce an encrypted second section of code. The processor is then configured to execute, at the compute device, the second section of code and measure the side-channel information. The processor is configured to convert the side-channel information for the second section of code to a second encryption key and encrypt a third section of code with the second encryption key to produce an encrypted third section code. Optionally, the processor is configured to aggregate the encrypted second section of code and the encrypted third section of code. The processor is configured to repeat the above steps with each section of code until each section of code from a block of code is encrypted.
Some embodiments described herein include an apparatus having a processor communicatively coupled to a memory. The processor is configured to execute, at a compute device, a first section of code and measure side-channel information. The processor is configured to convert the side-channel information to a first decryption key and decrypt a second section of code with the first decryption key. The processor is configured to execute, at the compute device, the second section of code and measure the side-channel information. The processor is configured to convert the side-channel information for the second section of code to a second decryption key and decrypt a third section of code with the second decryption key. The processor is configured repeat the above steps with each section of code until each section of code from a block of code is decrypted.
Some embodiments described herein include an apparatus having a processor communicatively coupled to a memory. The processor is configured to send, at a first compute device, input vectors to a second compute device. The processor is configured to receive side-channel information, from the second compute device, in response to the input vectors. The processor is then configured to compare the received side-channel information with predefined side-channel information associated with the second compute device. If the received side-channel information does not substantially match the predefined side-channel information, the processor is configured to generate a message that the second compute device has an anomaly.
Some embodiments described herein include an apparatus having a processor communicatively coupled to a memory. The processor is configured to execute, at a target device, a first section of code and measure the side-channel information. The processor is configured to convert the side-channel information to a first encryption key and encrypt a second section of code with the first encryption key to produce an encrypted second section of code. The processor is then configured to execute, at the target device, the second section of code and measure the side-channel information. The processor is configured to convert the side-channel information for the second section of code to a second encryption key and encrypt a third section of code with the second encryption key to produce an encrypted third section code. Optionally, the processor is configured to aggregate the encrypted second section of code and the encrypted third section of code. The processor is configured to repeat the above steps with each section of code until each section of code from a block of code is encrypted.
Some embodiments described herein include an apparatus having a processor communicatively coupled to a memory. The processor is configured to execute, at a target device, a first section of code and measure side-channel information. The processor is configured to convert the side-channel information to a first decryption key and decrypt a second section of code with the first decryption key. The processor is configured to execute, at the target device, the second section of code and measure the side-channel information. The processor is configured to convert the side-channel information for the second section of code to a second decryption key and decrypt a third section of code with the second decryption key. The processor is configured repeat the above steps with each section of code until each section of code from a block of code is decrypted.
As used in this specification, the singular forms “a,” “an” and “the” include plural referents unless the context clearly dictates otherwise. Thus, for example, the term “a compute device” is intended to mean a single compute device or multiple compute devices. For another example, the term “a decryption key” can mean a single decryption key or multiple decryption keys.
As shown in
In some embodiments, a compute device (the first compute device 110 or the second compute device 120 as shown in
In other embodiments, the integrity of a compute device can be assessed by a remote compute device that is communicatively coupled to the compute device, using side-channel information in a power signature analysis. For example, as shown in
In one implementation, for example, a user or a test engineer can specify particular test inputs. Alternatively, the first compute device 110 can select a predefined list of inputs in a predefined order. The second compute device 120 can include a detector (not shown in
The first compute device 110 can compare the received side-channel information (or discriminatory features of the received side-channel information) with predefined side-channel information (or discriminatory features of the predefined side-channel information) associated with the second compute device 120 in response to the set of input vectors. The predefined side-channel information can be associated with a trusted second compute device or an unauthorized second compute device. When the received side-channel information substantially matches the predefined side-channel information associated with a trusted second compute device, the second compute device can be determined to be trusted (or authorized, or verified). When the received side-channel information does not substantially match the predefined side-channel information associated with a trusted second compute device, the second compute device can be determined to be unauthorized (or untrusted or unverified). The received side-channel information substantially matches predefined side-channel information when the differences of certain discriminatory feature(s) in the received side-channel information and the predefined side-channel information are within a predefined range (e.g., a threshold). Remedial actions (such as sending a signal from the first compute device to the second compute device to shut down the second compute device, to notify a third entity, or to reset the second compute device to a known state) can be triggered when the second compute device is determined to be unauthorized.
In some embodiments, the first compute device 110, before transmitting data (e.g., a set of sections of code) to the second compute device 120 via the network 130, can encrypt the data with encryption keys. The encryption keys can be derived based on the side-channel information collected when a certain section of code is executed at the first compute device 110. Upon receiving the encrypted data from the first compute device 110, the second compute device 120 can decrypt the encrypted data based on the side-channel information collected when a certain section of code is executed at the second compute device 120. When the second compute device 120 is a trusted device, the decryption keys derived from the side-channel information collected the second compute device 120 can be used to decrypt the data for further processing at the second compute device 120. When the second compute device 120 is not a trusted device, the decryption keys derived from the side-channel information collected the second compute device 120 will fail to decrypt the data from the first compute device 110, and therefore the second compute device 120 will not read the data. When other unexpected software such as malware is running concurrently with the execution of the desired code, it can cause a substantial change (or sufficiently observable change) in the side channel information such that the decryption key cannot be recovered. As a result, the software will not be executed further to prevent information from being revealed to malware or hardware Trojan.
As shown in
In other implementations, the authentication controller 240 and the encryption and decryption controller 250 can be a single physical device or multiple physical devices external to the compute device 210 and operatively coupled by a network. Each of the authentication controller 240 and the encryption and decryption controller 250 can include one or multiple modules and/or components shown in
Each module or component in the compute device 210 can be operatively coupled to each remaining module and/or component, for example, by a communication bus (not shown in
The memory 292 can be, for example, a random-access memory (RAM) (e.g., a dynamic RAM, a static RAM), a flash memory, a removable memory, a hard drive, a database and/or so forth. In some implementations, the memory 292 can include (or store), for example, a database, process, application, virtual machine, and/or some other software modules (stored and/or executing in hardware) or hardware modules configured to execute an authentication process, an encryption process, a decryption process and/or one or more associated methods. In such embodiments, instructions for executing the authentication process, the encryption process, the decryption process and/or the associated methods can be stored within the memory 292 and executed at the processor 290. In some implementations, data can be stored in the memory 292 including for example data related to the compute device, its measured characteristics and its simulated characteristics.
The processor 290 (e.g., a general-purpose processor, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), etc.) can be configured to control, for example, the operations of writing data into and reading data from the memory 292, and executing the instructions stored within the memory 292. The processor 290 can also be configured to execute and/or control, for example, the operations of the authentication controller 240 and the encryption and decryption controller 250, as described in further detail herein. In some implementations, under the control of the processor 290 and based on the methods or processes stored within the memory 292, the authentication controller 240 and the encryption and decryption controller 250 can be configured to execute an authentication process, an encryption process, a decryption process, as described in further detail herein.
Each of the authentication controller 240 and the encryption and decryption controller 250 can be implemented in hardware (e.g., critical embedded systems, coprocessors, and field-programmable gate arrays (FPGAs)) and/or software (e.g., stored in a memory such as the memory 292 and/or executing in hardware such as the processor 290). Each of the authentication controller 240 and the encryption and decryption controller 250 can be operatively coupled to each remaining module and/or component.
As shown in
The input vector manager 242 can select inputs (or input vectors) for both electrical test and simulation test that activates a compute device or specifically focuses on (or activates) a portion of a compute device (e.g., less than the entirety of the compute device). In other implementations, the set of inputs can execute a software code or part of the software code. The inputs can be provided to the compute device 210 for self-integrity validation. Alternatively, the inputs can be provided to a remote compute device (not shown in
The side-channel information detector 244 can measure side-channel information (such as temperature, power, EM emissions, circuit delay, and/or the like) of the compute device 210 using one or more sensors (not shown in
The integrity validation analyzer 246 can perform different signal processing approaches to extract discriminatory features (also referred herein to as characteristics) from the side-channel information captured by the side-channel information detector 244 of the compute device 210 itself, or the side-channel information associated with a remote compute device. The integrity validation analyzer 246 can include an analog processor (not shown), an analog-to-digital converter (ADC) (not shown), and a digital signal processor (not shown) to process the measured side-channel information. For example, the integrity validation analyzer 246 can have the sensor/detector connected to the analog processor and/or to the ADC, which is in turn connected to the digital signal processor. The analog processor can receive the side-channel information from the sensor/detector and perform signal conditioning and processing (e.g., reducing extraneous information that need not be digitized) before sending the side-channel information to the ADC to convert the analog data to digital signals. The digital signal processor can receive the digital signals converted by the ADC and generate frequency domain signal components of the digitized signals for frequency domain analysis. The digitized signals can also be stored for later processing.
The integrity validation analyzer 246 can also extract discriminatory features from the side-channel information. Feature extraction can involve analysis, for example, of resonance frequencies, absorption frequencies, polarization, harmonic reflections, reflection arrival times, and/or signal strength. In some implementations, the integrity validation analyzer 246 can compare the discriminatory features of the received side-channel information with the discriminatory features of the predefined side-channel information of a known device (a known trusted/authorized device or a known counterfeit/unauthorized device). The integrity validation analyzer 246 can further generate a statistical analysis indicating the likelihood of the target device (i.e., the compute device being validated) is legitimate/authorized and/or functionally correct.
In some implementations, the authentication controller 240 can include a Physically Unclonable Function (PUF) (not shown in
In use, in some situations, the compute device 210 can monitor itself for integrity validation. Specifically, the input vector manager 242 of the authentication controller 240 can provide inputs (or input vectors) for either electrical test or simulation test that activates the compute device 210 or specifically focuses on (or activates) a portion of a compute device 210. In some implementations, the input can activate software code or part of software code. The inputs can include code to be executed on the compute device. The side-channel information detector 244 measures the side-channel information of the compute device 210 in response to the inputs provided by the input vector manager 242. The side-channel information can be temperature, power, EM emissions, circuit delay, and/or the like associated with the compute device 210 detected by one or more sensors of side-channel information detector 244 under a given input or a set of given inputs. The measured side-channel information can be sent, by the side-channel information detector 244, to the integrity validation analyzer 246 for signal processing and analyzing. The integrity validation analyzer 246 extracts discriminatory features from the received side-channel information and compares the discriminatory features of the received side-channel information with the discriminatory features of the predefined side-channel information of a known device (a known trusted/authorized device or a known counterfeit/unauthorized device). The integrity validation analyzer 246 can further generate a statistical analysis indicating the likelihood of the compute device 210 being legitimate/authorized and/or functionally correct. In the even that an anomaly is detected, the compute device 210 can implement remedial processes, such as shutting down the compute device 210, notifying an entity of the anomaly, or resetting the compute device 210 to a known state.
In use, in other situations, the compute device 210 can validate a remote compute device commutatively coupled via a network. Specifically, the input vector manager 242 of the authentication controller 240 of the compute device 210 can send inputs (or input vectors) for either electrical test or simulation test that activates a remote compute device (not shown in
As shown in
The side-channel information detector 252 can be configured to measure side-channel information (such as temperature, power, EM emissions, circuit delay, and/or the like) of the compute device 210 using one or more sensors under a given input or a set of given inputs. The side-channel information can be measured when the processor 290 executes a first section of code from a set of sections of code. Such side-channel information represents a unique signature state (e.g., power) of the compute device 210 when the first section of code is executed. Therefore, only authorized compute device running only the proper software can decrypt such encrypted data. The given input or the set of given inputs can be provided by the input vector manager 242 of the compute device 210 itself or a remote compute device (not shown in
Before sending data to a remote device, the encryption applicator 255 can encrypt the data such that only an authorized remote device can decrypt the data for processing. During a data encryption process, the encryption applicator 255 can digitize and convert the measured side-channel information to an encryption key (e.g., numbers, letters, symbols) associated with a first section of code. The encryption applicator 255 can apply algorithms (e.g., Blowfish, Advanced Encryption Standard) to the measured side-channel information to produce the first encryption key. The encryption applicator 255 can encrypt a second section of code with the first encryption key to produce an encrypted second section of code. In some implementations, the encryption applicator 255 can obtain additional encryption key(s) (e.g., public key) and also encrypt the second section of code with additional encryption key(s). The encryption application 255 can continue to encrypt the next section of code using an encryption key derived from the side-channel information measured when the previous section of code is executed. When each section of code from a set of sections of code is encrypted, the encryption applicator 255 can aggregate each encrypted section of code and send to another compute device.
Upon receiving encrypted data from a remote device, during a data decryption process, the decryption applicator 256 can digitize and convert measured side-channel information to a decryption key when the processor 290 executes a first section of code of the encrypted data at the compute device 210. In some implementations, the decryption applicator 256 can apply algorithms (e.g., Blowfish, Advanced Encryption Standard) to the measured side-channel information to produce the first decryption key. In other implementations, the decryption key can be generated based on, for example, a rank ordering occupied energy channelization bins, ratio of key feature amplitudes, hash internal states of registers such as a sampling dynamic code analysis, or a mapping between side-channel information and the decryption key(s). The decryption applicator 256 can decrypt a second section of code with the first decryption key. In some implementations, the decryption applicator 256 can obtain additional decryption key(s) (e.g., public key) and also decrypt the second section of code with additional decryption key(s). When the first decryption key substantially matches the first encryption key encrypted on the second section of code, the second section of code is decrypted and the compute device can read (or execute) the second section of code. The first decryption key substantially matches the first encryption key when the differences of certain feature(s) in the first decryption key and the first encryption key are within a predefined range (e.g., a threshold). For example, the first decryption key substantially matches the first encryption key when the first decryption key (e.g., 3, 7, 9, 11, 13) overlaps 80% of the first encryption key (e.g., 3, 8, 9, 11, 13). The decryption applicator 256 can continue to decrypt the next section of code using a decryption key derived from the side-channel information measured when the previous section of code is executed. If each decryption key substantially matches each encryption key associated with the same section of code, the set of sections of code is decrypted.
In use, the compute device 210 encrypts data (e.g., a set of sections of code) using side-channel information and transmits the encrypted data to another compute device. Specifically, the processor 290 of the compute device 210 can execute a first section of code from the set of sections of code. The side-channel information detector 252 can measure the side-channel information in response to the execution of the first section of code. Such side-channel information represents a unique power signature state of the compute device 210 when the first section of code is executed. Therefore, only authorized compute device(s) can decrypt such encrypted data. The encryption applicator 255 can then convert the measured side-channel information to a first encryption key and encrypt a second section of code with the first encryption key to produce an encrypted second section of code. In some implementations, the encryption applicator 255 can obtain additional encryption key(s) (e.g., public key) and also encrypt the second section of code with additional encryption key(s). The processor 290 can then execute the second section of code. In some instances, the data include a set of sections of code and the order of the set of sections of code can be pre-defined to enable the processor 290 to execute each section of code according to the pre-defined order of the set of sections of code. The side-channel information detector 252 can measure the side-channel information in response to the execution of the second section of code. The encryption applicator 255 can convert the side-channel information to a second encryption key and encrypt a third section of code with the second encryption key to produce an encrypted third section code. The encryption applicator 255 aggregates the encrypted second section of code and the encrypted third section of code. The encryption and decryption controller 250 at the compute device 210 can be configured to repeat the above steps with each section of code until each section of code from a block of code is encrypted.
In another use, the compute device 210, upon receiving encrypted data (e.g., a set of sections of code) from a remote compute device, can decrypt the encrypted data for further execution. Specifically, the processor 290 of the compute device 210 can receive an indication of a pre-defined order of the set of sections of code from the remote compute device. The processor 290 can execute a first section of code from the set of sections of code according to the indication of the pre-defined order of the set of sections of code. The side-channel information detector 252 can measure side-channel information in response to the execution of the first section of code. The decryption applicator 256 can convert the side-channel information to a first decryption key and decrypt a second section of code with the first decryption key. In some implementations, the decryption applicator 256 can obtain additional decryption key(s) (e.g., public key) and also decrypt the second section of code with additional decryption key(s). When the first decryption key substantially matches the first encryption key encrypted on the second section of code, the second section of code is decrypted and the compute device can read (or execute) the second section of code. The processor 290 can execute the second section of code and the side-channel information detector 252 can measure the side-channel information in response to the execution of the second section of code. The decryption applicator 256 can convert the side-channel information to a second decryption key and decrypt a third section of code with the second decryption key. The encryption and decryption controller 260 can repeat the above steps with each section of code until each section of code from a block of code is decrypted.
In some situations, multiple execution paths can lead to the same section of code. The decryption key(s) can be derived from execution of a preceding section of code from any multiple execution path. For example, following the execution of section of code C1, sections of code C2 and C4 can be executed which leads to the execution of section of code C6. In an alternative execute path, following the execution of section of code C1, sections of code C3 and C5 can be executed which leads to the execution of the section of code C6. To derive a decryption key for the section of code C6, the side-channel information of either the section of code C4 or the section of code C5 can be used. The section of code C6 can be decrypted when the decryption key derived from either the section of code C4 or the section of code C5 substantially matches the encryption key encrypted on the section of code C6.
The encryption and decryption controller executes the second section of code at 412. The encryption and decryption controller measures the side-channel information in response to the execution of the second section of code at 414. Next, the encryption and decryption controller converts the side-channel information to a second encryption key at 416 and encrypts a third section of code with the second encryption key to produce an encrypted third section code at 418. Similarly, the encryption and decryption controller can optionally obtain additional encryption key(s) (e.g., public key) and also encrypt the third section of code with additional encryption key(s) at 420. The encryption and decryption controller optionally aggregates the encrypted second section of code and the encrypted third section of code at 422 according to an indication of a pre-defined order of the set of sections of code. Similarly stated, the encryption and decryption controller optionally appends the encrypted third section of code to the encrypted second section of code at 422 to reassemble the entire code. The encryption and decryption controller can repeat steps 412-418 with each section of code until each section of code from a block of code is encrypted.
Power Signature Analysis
A power signature analysis system, such as the authentication controller 240 shown and described with respect to
Characterization
The characterization process involves collecting and characterizing reference power signature signals of reference devices by repeatedly applying excitation to the reference devices (e.g., pre-determined trusted devices, and/or pre-determined counterfeit devices) in a controlled environment (including setting inputs used during excitation, and helping synchronizing traces). For better performance, the characterization should be an iterative, interdependent process. There are several options to facilitate and enhance the generation of reference power signature data including: crowd sourcing (e.g., by obtaining numerous references from multiple sources to define what is a power signature of a reference device), machine learning in the field (repeated observations of a power trace to define what historically constitutes a power signature of a reference device), and/or the like. For example, the reference power signature data generation can include crowd source pre-determined counterfeit devices.
Trace Processing And Feature Extraction
The process of preparing test traces (i.e., power signature signals of target devices) to be compared with the stored reference power signature signals is referred to herein as preprocessing and feature extraction. Trace preprocessing involves general tasks to condition the traces to extract the selected discriminatory features (or characteristics), e.g., converting the traces to the appropriate domain or aligning the traces in reference to a specific marker.
Another example of basic preprocessing is to align time-domain traces before being passed to a correlation detector. Time alignment of traces can be achieved with a correlation detector. In some instances, the correlation detector can be disposed within an authentication controller such as the authentication controller 240 shown and described with respect to
In this example, each trace of N samples is considered as a point in a multidimensional Euclidean space. Feature extraction is the process of calculating the final test statistic (or discriminatory feature) from new traces which is passed to the detectors and used to determine integrity. This process is unique to each selected feature. For example, in basic time domain correlation analysis, preprocessing could include coarse synchronization and compensation for specific platform or packaging characteristics, while feature extraction involves comparing against the stored signature by calculating the correlation factor or the Euclidean distance.
For example,
As shown in
In use, a target device with unknown counterfeit status can be measured by an authentication controller (such as the authentication controller 240 shown and described with respect to
Detector Characteristics
Once the power signature signals have been extracted and the discriminatory features have been selected, the next step in the power signature analysis process is to design optimal detectors to perform the final integrity assessment. In some embodiments, the detector design is performed in advance to the integrity validation process (such as the integrity validation process of a remote device described in
An example of the process of detector design is shown in
A common approach to design optimal detectors involves the application of the Neyman-Pearson criterion to maximize the probability of detection for a given probability of false alarm. As a brief reminder of this criterion, which is spawned from basic hypothesis testing theory, a target probability of false alarm is set based on the tolerance and estimated cost of making a mistake in the final decision. Using an estimate of the probability distribution of the discriminatory features from the pre-determined trusted devices (and/or pre-determined counterfeit devices), a distance threshold is calculated that yields the expected probability of false alarm while maximizing the probability of correct detection. An example of this process is shown in
There are different techniques that can yield improved results depending on the nature of the selected discriminatory features. Other techniques for detector design and machine training include: Neural Networks, Support Vector Machines, and Hidden Markov Models.
It is intended that the systems and methods described herein can be performed by software (stored in memory and/or executed on hardware), hardware, or a combination thereof. Hardware modules may include, for example, a general-purpose processor, a field programmable gate array (FPGA), and/or an application specific integrated circuit (ASIC). Software modules (executed on hardware) can be expressed in a variety of software languages (e.g., computer code), including Unix utilities, C, C++, Java™, JavaScript (e.g., ECMAScript 6), Ruby, SQL, SAS®, the R programming language/software environment, Visual Basic™, and other object-oriented, procedural, or other programming language and development tools. Examples of computer code include, but are not limited to, micro-code or micro-instructions, machine instructions, such as produced by a compiler, code used to produce a web service, and files containing higher-level instructions that are executed by a computer using an interpreter. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
Some embodiments described herein relate to devices with a non-transitory computer-readable medium (also can be referred to as a non-transitory processor-readable medium or memory) having instructions or computer code thereon for performing various computer-implemented operations. The computer-readable medium (or processor-readable medium) is non-transitory in the sense that it does not include transitory propagating signals per se (e.g., a propagating electromagnetic wave carrying information on a transmission medium such as space or a cable). The media and computer code (also can be referred to as code) may be those designed and constructed for the specific purpose or purposes. Examples of non-transitory computer-readable media include, but are not limited to: magnetic storage media such as hard disks, floppy disks, and magnetic tape; optical storage media such as Compact Disc/Digital Video Discs (CD/DVDs), Compact Disc-Read Only Memories (CD-ROMs), and holographic devices; magneto-optical storage media such as optical disks; carrier wave signal processing modules; and hardware devices that are specially configured to store and execute program code, such as Application-Specific Integrated Circuits (ASICs), Programmable Logic Devices (PLDs), Read-Only Memory (ROM) and Random-Access Memory (RAM) devices. Other embodiments described herein relate to a computer program product, which can include, for example, the instructions and/or computer code discussed herein. Each of the devices described herein, for example, the excitation controller 230, the receiver controller 240, the feature extraction engine 250, and the analyzer 260, can include one or more memories and/or computer readable media as described above.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Where methods and steps described above indicate certain events occurring in certain order, the ordering of certain steps may be modified. Additionally, certain of the steps may be performed concurrently in a parallel process when possible, as well as performed sequentially as described above. Although various embodiments have been described as having particular features and/or combinations of components, other embodiments are possible having any combination or sub-combination of any features and/or components from any of the embodiments described herein. Furthermore, although various embodiments are described as having a particular entity associated with a particular compute device, in other embodiments different entities can be associated with other and/or different compute devices.
This application is non-provisional of and claims priority under 35 U.S.C. §119 to U.S. provisional application Ser. No. 62/359,045, filed Jul. 6, 2016, entitled “Methods and Apparatuses for Integrity Validation of Remote Devices Using Side-channel Information in a Power Signature Analysis.” This application is related to U.S. patent application Ser. No. 13/883,105, having a 35 U.S.C. §371(c) date of Aug. 15, 2013, entitled “Using Power Fingerprinting (PFP) To Monitor The Integrity And Enhance Security Of Computer Based Systems.” The aforementioned applications are all herein expressly incorporated by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
62359045 | Jul 2016 | US |