BACKGROUND
[0001] When computationally intensive code is processed, hardware accelerators can be used
to accelerate the computation of the code beyond speeds that are typically provided
by a general purpose processor. To accelerate computation of the code, hardware accelerators
are typically implemented with specialized processors separate from the main computer
processing units (CPU). The specialized processors can be optimized to perform specific
computations more efficiently (e.g., multiple calculations in parallel) than is typically
possible on a main CPU and to then pass the computed result back to the main CPU for
further computation. However, because computed results are passed between the hardware
accelerator and the main CPU, even if both the main CPU and the hardware accelerator
are secure, the system (e.g., the main CPU and the hardware accelerator) can still
be subject to fault attacks (e.g., attacks that modify the behavior of an integrated
circuit by causing bits to change or flip).
SUMMARY
[0002] In an embodiment, an integrated circuit (IC) device for detecting fault attacks is
disclosed. In the embodiment, the IC device includes a main CPU core, memory coupled
to the main CPU core, and a co-processor core including a checksum generation module,
the co-processor core coupled to the main CPU core, wherein the main CPU core is configured
to direct the co-processor core to process data from the memory and the co-processor
core is configured to process the data, in part, by feeding internal signals to the
checksum generation module and wherein the co-processor core is further configured
to return a checksum value generated by the checksum generation module to the main
CPU core.
[0003] In another embodiment, the main CPU core is configured to terminate execution of
the program if an invalid checksum value is returned.
[0004] In another embodiment, the co-processor core is further configured to return a valid
checksum value when the data is processed by the co-processor core.
[0005] In another embodiment, the co-processor core has special function registers (SFRs)
in which system states of the checksum generation module are stored.
[0006] In another embodiment, the SFRs are configured to reset to a default value after
a read operation occurs.
[0007] In another embodiment, the data is used to perform advanced encryption standard (AES)
functions and the co-processor core is configured to perform the AES functions by
feeding a control path and a key schedule path to the checksum generation module.
[0008] In another embodiment, the control path and the key schedule path are fed to the
checksum generation module separately and the co-processor core is configured to store
the results in separate SFRs.
[0009] In another embodiment, additional fault detection modules are coupled to the checksum
generation module and error signals from the additional fault detection modules can
corrupt the checksum value generated by the checksum generation module.
[0010] In a second embodiment, a method for detecting fault attacks is disclosed. In the
embodiment, the method involves sending data to a co-processor core for processing,
receiving a result and a checksum value back from the co-processor core, and detecting
a fault attack if the returned checksum value is invalid.
[0011] In another embodiment, the method further involves halting execution of the program
if an invalid checksum is returned.
[0012] In another embodiment, a checksum is invalid when the data is not processed by the
co-processor core.
[0013] In another embodiment, the data sent to the co-processor core is for use in an AES
function, the data including a control path and a key schedule path.
[0014] In another embodiment, processing data by the co-processor core involves feeding
the data to a checksum generation module to generate a checksum value, storing the
generated checksum value in a SFR, providing the checksum value stored in the SFR
back to a main CPU core for further processing, and resetting the SFR to a default
value.
[0015] In another embodiment, a control path is fed to the checksum generation module separate
from a key schedule path and the value generated by the checksum generation module
for the control path is stored in a first SFR and the value generated by the checksum
generation module for the key schedule path is stored in a second SFR.
[0016] In another embodiment, the checksum value includes information about accesses of
the SFR.
[0017] In another embodiment, a checksum value is invalid if the address produced by XORing
a target address with the checksum value does not correspond to a valid memory location.
[0018] In another embodiment, a checksum value is invalid if the address produced by XORing
a return address with a value generated by processing the data sent to the co-processor
core does not correspond to a valid memory location.
[0019] In a third embodiment, a non-transitory computer-readable medium is disclosed, comprising
instructions which, when executed, perform a method of the kind set forth.
[0020] In a fourth embodiment, a computer-implemented system for detecting fault attacks
is disclosed. In the embodiment, the system includes a main CPU core, a co-processor
core, and a non-transitory computer-readable storage medium, the medium storing instructions
that, when executed by the main CPU core, cause the main CPU core to send data of
a program stored in the storage medium for use in performing an AES function to the
co-processor core for processing, receive a result and a checksum value back from
the co-processor core, and detect a fault attack if the returned checksum value is
invalid, wherein a checksum value is invalid when the AES function is not performed
by the co-processor core, and terminate execution of the program if a fault attack
is detected.
[0021] In another embodiment, the co-processor core is configured to feed the data for use
in performing an AES function to a checksum generation module to generate a checksum
value, store the generated checksum value in a SFR, provide the checksum value stored
in the SFR back to a main CPU core for further processing, and reset the SFR to a
default value.
[0022] In another embodiment, the data fed to the checksum generation module includes a
control path and a key schedule path and the value generated by the checksum generation
module for the control path is stored in a first SFR and the value generated by the
checksum generation module for the key schedule path is stored in a second SFR.
[0023] Other aspects and advantages of embodiments of the present invention will become
apparent from the following detailed description taken in conjunction with the accompanying
drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
[0024]
Fig. 1 is a block diagram of an integrated circuit (IC) device with a hardware accelerator.
Fig. 2 is a block diagram of a co-processor core in operation.
Fig. 3 is a flow chart diagram of a method for computing an AES function using a co-processor
core.
Fig. 4 is a block diagram of a co-processor core in operation in accordance with an
embodiment of the invention.
Fig. 5 is a flow chart diagram of a method for performing an AES function using a
co-processor core in accordance with an embodiment of the invention.
Fig. 6 is a flow chart diagram of a method for comparing a target address with a landing
pad address.
Fig. 7 is a flow chart diagram of an alternative method for performing an AES function
using a co-processor core in accordance with an embodiment of the invention.
[0025] Throughout the description, similar reference numbers may be used to identify similar
elements.
DETAILED DESCRIPTION
[0026] It will be readily understood that the components of the embodiments as generally
described herein and illustrated in the appended figures could be arranged and designed
in a wide variety of different configurations. Thus, the following more detailed description
of various embodiments, as represented in the figures, is not intended to limit the
scope of the present disclosure, but is merely representative of various embodiments.
While the various aspects of the embodiments are presented in drawings, the drawings
are not necessarily drawn to scale unless specifically indicated.
[0027] The present invention may be embodied in other specific forms without departing from
its spirit or essential characteristics. The described embodiments are to be considered
in all respects only as illustrative and not restrictive. The scope of the invention
is, therefore, indicated by the appended claims rather than by this detailed description.
All changes which come within the meaning and range of equivalency of the claims are
to be embraced within their scope.
[0028] Reference throughout this specification to features, advantages, or similar language
does not imply that all of the features and advantages that may be realized with the
present invention should be or are in any single embodiment of the invention. Rather,
language referring to the features and advantages is understood to mean that a specific
feature, advantage, or characteristic described in connection with an embodiment is
included in at least one embodiment of the present invention. Thus, discussions of
the features and advantages, and similar language, throughout this specification may,
but do not necessarily, refer to the same embodiment.
[0029] Furthermore, the described features, advantages, and characteristics of the invention
may be combined in any suitable manner in one or more embodiments. One skilled in
the relevant art will recognize, in light of the description herein, that the invention
can be practiced without one or more of the specific features or advantages of a particular
embodiment. In other instances, additional features and advantages may be recognized
in certain embodiments that may not be present in all embodiments of the invention.
[0030] Reference throughout this specification to "one embodiment," "an embodiment," or
similar language means that a particular feature, structure, or characteristic described
in connection with the indicated embodiment is included in at least one embodiment
of the present invention. Thus, the phrases "in one embodiment," "in an embodiment,"
and similar language throughout this specification may, but do not necessarily, all
refer to the same embodiment.
[0031] Fig. 1 is a block diagram of an integrated circuit (IC) device 100 with a hardware
accelerator. The IC device includes a main computer processing unit (CPU) core 102,
memory 104, an input/output (I/O) interface 106, and a co-processor core 108. An individual
processing unit within a processor is referred to as a core. In an embodiment, the
main CPU core and the cop-processor core are located on the same chip, but could be
placed on separate chips in other embodiments. In the example of Fig. 1, the main
CPU core is a secure CPU core that includes a memory protection unit (MPU) and/or
a memory management unit (MMU) 110. In operation, the main CPU core processes instructions
from the I/O interface or from memory and passes data to the co-processor core to
process. For example, data on which to perform encryption or decryption using the
advanced encryption standard (AES) can be passed to the co-processor core.
[0032] Fig. 2 is a block diagram of a co-processor core 208 in operation. In the example
of Fig. 2, the co-processor core is equipped to perform AES encryption and/or decryption
and includes an encryption module 212, a decryption module 214, and a key expansion
module 216. In operation, when the main CPU core passes data on which AES encryption/decryption
is to be performed to the co-processor core, the main CPU core passes a cipher (if
decryption is to be performed) or plain text 220 (if encryption is to be performed)
along with a key 222 to the co-processor core. The encryption module or decryption
module are configured to encrypt plain text or decrypt a cipher, accordingly. The
key expansion module is configured to perform a key schedule (e.g., a cryptographic
algorithm that, given the key, calculates subkeys for each round of the key schedule)
in the encryption or decryption process. The co-processor core then passes an encrypted
cipher or plain text 224 back to the main CPU core for further processing.
[0033] Fig. 3 is a flow chart diagram of a method for computing an AES function using a
co-processor core, such as the co-processor core described with respect to Fig. 2.
At block 302, a request is sent to the co-processor core to perform an AES function.
In an example, the request includes a key and a cipher or plain text sent by the main
CPU core to the co-processor core. At block 304, the co-processor core is configured
to perform the AES function. In an example, configuring a co-processor core involves
loading values into registers in order to place the co-processor core into an initial
state. In normal operation, at block 306, a key (e.g., the key provided with the request
at block 302) is loaded into one (or more) register of the co-processor core, at block
308, data (e.g., the cipher or plain text provided with the request at block 302)
is loaded in one (or more) register, and, at block 310, the co-processor core performs
the AES function. However, the main CPU core is unable to determine if these functions
have been properly performed. Instead, at block 312, an indicator that the AES function
has successfully or unsuccessfully been performed is all that is returned to the main
CPU core. Because only an indicator is returned to the main CPU core, the main CPU
core cannot be certain that the co-processor core has, in fact, performed the AES
function or that an attacker has not caused a fault in the co-processor core. Thus,
even in a system with a secure main CPU core and a secure co-processor core, security
could still be compromised if, for example, an attack causes a successful indicator
to return to the main CPU without performing the AES function.
[0034] In an embodiment, an integrated circuit (IC) device for detecting fault attacks is
disclosed. In the embodiment, the IC device includes a main CPU core, memory coupled
to the main CPU core, and a co-processor core including a checksum generation module,
the co-processor core coupled to the main CPU core, wherein the main CPU core is configured
to direct the co-processor core to process data from the memory and the co-processor
core is configured to process the data, in part, by feeding internal signals to the
checksum generation module and wherein the co-processor core is further configured
to return a checksum value generated by the checksum generation module to the main
CPU core. In an embodiment, the checksum value will only be valid if the data is actually
processed (e.g., operations are actually performed), and, thus, if the checksum value
returned to the main CPU core is invalid, the main CPU core can terminate execution
of the program accordingly.
[0035] Fig. 4 is a block diagram of a co-processor core 408 in operation in accordance with
an embodiment of the invention. In the embodiment of Fig. 4, the co-processor core
is equipped to perform AES encryption and/or decryption and includes an encryption
module 412, a decryption module 414, a key expansion module 416, and a checksum generation
module 418. In operation, when the main CPU core passes data to the co-processor core
on which AES encryption/decryption is to be performed, the data passed to the co-processor
core includes a cipher (if decryption is to be performed) or plain text 420 (if encryption
is to be performed) along with a key 422. The encryption module or decryption module
is used to encrypt plain text or decrypt a cipher, accordingly, and the key expansion
module is used to perform a key schedule used in encrypting or decrypting. In an embodiment,
both the internal signals of the encryption/decryption module (e.g., intermediate
operations in the encryption/decryption operation, system interface signals, or other
operations performed by the co-processor core) and the key expansion module are fed
into the checksum generation module to generate a checksum value. In an embodiment,
the co-processor core further includes special function registers (SFRs) 426 accessed
by the checksum generation module via an SFR interface to generate the checksum value.
The checksum generation module uses the SFRs to store system states, such as intermediate
results for use in subsequent calculations or operations by the co-processor core,
or the current state of the checksum generation module. In an embodiment, the state
of the checksum generation module depends on the previous state of the checksum generation
module and signals from other functional units, such as the SFR interface. In an embodiment,
the signals coming from the SFR interface depend on the software implementation, while
signals from other functional units are dependent on the key and the hardware configuration.
In an embodiment, the checksum generation module can compute several independent checksums
instead of a single checksum in order to separate dependencies. For example, a checksum
which depends only on the key, a checksum which depends only on the hardware configuration,
or a checksum which depends on the software implementation and is independent from
the key. In an embodiment, a software independent checksum may be transmitted from
one system to another along with the key, while a checksum which is independent from
the key may be hardcoded in the software. Once the checksum value is generated, the
co-processor core passes the encrypted cipher or plain text 424 along with the checksum
value 428 back to the main CPU for further processing
[0036] Fig. 5 is a flow chart diagram of a method for performing an AES function using a
co-processor core in accordance with an embodiment of the invention. At block 502,
a request is sent to the co-processor core to perform an AES function. In an example,
the request includes a key and a cipher or plain text sent by the main CPU core to
the co-processor core. At block 504, the co-processor core sets a target address value
equal to a pre-computed constant. In an embodiment, the pre-computed constant is computed
by XORing an expected final checksum and an expected initial checksum, as determined
by co-processor core specifications, with an address where the main CPU core should
land upon completion of the AES function (e.g., a "landing pad address"). In an embodiment,
the landing pad address is fixed during build time of the program for which the AES
function is performed. For example, when a program is compiled, the landing pad address
is fixed as the address of the instruction following the address of an AES function.
At block 506, the co-processor core is initialized. In an embodiment, initializing
a co-processor core involves loading values into registers in order to place the co-processor
core into an initial state. The co-processor core begins performing the AES function
and, at block 508, the co-processor core sets the target address equal to the XOR
of the target address and a checksum value. In an embodiment, the checksum value is
the expected initial checksum. Thus, the value of the target address is equal to the
expected final checksum XORed with the landing pad address. At block 510, the co-processor
core is configured. In an embodiment, the co-processor core is configured by setting
up parameters of the co-processor core for operation (e.g., the algorithm, the key
size, encryption/decryption mode, etc.). In normal operation, at block 512, a key
(e.g., the key provided with the request at block 502) is loaded into one (or more)
register of the co-processor core, data (e.g., the cipher or plain text provided with
the request at block 502) is loaded in one (or more) register at block 514, and, at
block 516, the co-processor core performs the AES function. Performing the AES function
involves feeding internal signals (e.g., intermediate results of the AES function,
system interface signals, or other operations performed by the co-processor core)
and a key schedule to the checksum generation module to repeatedly update the checksum
value until a final checksum value is generated. Thus, the final checksum value is
dependent upon each update of the checksum value as the AES function and key schedule
are processed and will be invalid if, for example, a fault occurs that perturbs the
AES function or key schedule. In another embodiment, the final checksum value is generated,
at least in part, from information about accesses of the SFRs. For example, if additional
accesses of the SFRs occur (e.g., as a result of perturbation by an attacker), then
the checksum value will be incorrect. At block 518, the target address is XORed with
the final checksum value. If the AES function and key schedule are performed properly,
the final checksum and the expected final checksum should be identical and XORing
the target address with the final checksum will set the target address equal to the
landing pad address, while an invalid final checksum will likely set the target address
to an invalid address. As an optional measure of additional security (as indicated
by the dotted lines), the target address can be compared to the expected landing address
at block 520 and, if the two addresses are not identical, an error can be raised and
execution of the program can be halted at block 522. After the target address has
been set at block 518, the program jumps to the target address at block 524 and, at
block 526, call tree integrity is confirmed. In an embodiment, call tree integrity
is confirmed by another security mechanism separate from the checksum generation module
or the co-processor core.
[0037] As described above at block 518 of Fig. 5, an additional measure of security can
be added by comparing the target address with the landing pad address before jumping
to the target address. Fig. 6 is a flow chart diagram of a method for comparing the
target address with the landing pad address. At block 602, a trace value is set to
equal the target address XORed with a mask. In an embodiment, the mask is pre-defined
when the program is compiled. At decision point 604, it is determined if the trace
value is equal to an expected trace value. In an embodiment, the expected trace value
is determined when the program is compiled and is equal to a pre-computed target address
XORed with the mask. If the trace value is not equal to the expected trace value,
then, at block 608, "not equal" is returned to the AES function. If the trace value
is equal to the expected trace value, then, at block 606, "equal" is returned to the
AES function. In an embodiment, if "not equal" if returned to the AES function, then
the AES function will produce an error and the main CPU core will terminate the program.
[0038] In an alternative embodiment, call tree integrity can be confirmed concurrent with
performance of the AES function. Such an approach can be advantageous over the technique
described with respect to Fig. 5 above at least because concurrent confirmation of
call tree integrity can detect if an entire procedure is skipped (e.g., if the performance
of the AES function is skipped), while the technique described with respect to Fig.
5 may not detect the skip. Fig. 7 is a flow chart diagram of an alternative method
for performing an AES function using a co-processor core in accordance with an embodiment
of the invention. At block 702, a request is sent to the co-processor core to perform
an AES function. In an example, the request includes a key and a cipher or plain text
sent by the main CPU core to the co-processor core. At block 704, the co-processor
core sets a call tree state value equal to the current value of the call tree state
XORed with a pre-computed constant. In an embodiment, the pre-computed constant is
computed by XORing an expected final checksum, an expected initial checksum, and an
expected entry call tree state value with an expected exit call tree state value.
In an embodiment the expected final checksum and expected initial checksum are determined
by co-processor core specifications and the expected entry call tree state value and
expected exit call tree state value are pre-computed during build time of the program
for which the AES function is performed using an expected return address. At block
706, the co-processor core is initialized. In an embodiment, initializing a co-processor
core involves loading values into registers in order to place the co-processor core
into an initial state. The co-processor core begins performing the AES function and,
at block 708, the co-processor core sets the call tree state value equal to the current
value of the call tree state XORed with a checksum value. In an embodiment, the checksum
value is the expected initial checksum. Thus, the value of the call tree state is
set to a value that is equal to the expected final checksum XORed with the expected
exit call tree state value. At block 710, the co-processor core is configured. In
an embodiment, the co-processor core is configured by setting up parameters of the
co-processor core for operation (e.g., the algorithm, the key size, encryption/decryption
mode, etc.). In normal operation, at block 712, a key (e.g., the key provided with
the request at block 702) is loaded into one (or more) register of the co-processor
core, at block 714, data (e.g., the cipher or plain text provided with the request
at block 702) is loaded in one (or more) register, and, at block 716, the co-processor
core performs the AES function. In an embodiment, performing the AES function involves
feeding internal signals (e.g., intermediate results of the AES function, system interface
signals, or other operations performed by the co-processor core) and key schedule
to the checksum generation module to repeatedly update the checksum value until a
final checksum value is generated. Thus, the final checksum value is dependent upon
each update of the checksum value as the AES function and key schedule are processed
and will be invalid if, for example, a fault occurs that perturbs the AES function
or key schedule. In another embodiment, the final checksum value is generated, at
least in part, from information about accesses of the SFRs. For example, if additional
accesses of the SFRs occur (e.g., as a result of perturbation by an attacker), then
the checksum value will be incorrect. At block 718, the call tree state value is XORed
with the final checksum value. If the AES function and key schedule are performed
properly, the final checksum and the expected final checksum should be identical and
XORing the call tree state value with the final checksum will set the call tree state
equal to the expected exit call tree state value, while an invalid final checksum
will likely set the call tree state value to an incorrect call tree state value. As
an optional measure of additional security (as indicated by the dotted lines), the
call tree state value can be compared to the expected exit call tree state value at
block 720 (e.g., using a technique similar to the technique of Fig. 5 described with
respect to a target address) and, if the two call tree state values are not identical,
an error can be raised and execution of the program can be halted at block 722. After
the call tree state value has been set at block 718, the program sets a return address
equal to the call tree state value XORed with the expected return address (e.g., the
address used to compute the expected exit call tree state value) and, at block 726,
the program jumps to the return address. Thus, call tree integrity is confirmed because
if the call tree integrity is maintained, the program will jump to a valid address
and if the call tree integrity is compromised, the program will jump to an invalid
address.
[0039] Although the operations of the method(s) herein are shown and described in a particular
order, the order of the operations of each method may be altered so that certain operations
may be performed in an inverse order or so that certain operations may be performed,
at least in part, concurrently with other operations. In another embodiment, instructions
or sub-operations of distinct operations may be implemented in an intermittent and/or
alternating manner.
[0040] It should also be noted that at least some of the operations for the methods may
be implemented using software instructions stored on a computer useable storage medium
for execution by a computer. As an example, an embodiment of a computer program product
includes a computer useable storage medium to store a computer readable program that,
when executed on a computer, causes the computer to perform operations, as described
herein.
[0041] Furthermore, embodiments of at least portions of the invention can 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. For the purposes of this description, a computer-usable or computer
readable medium can be any apparatus that can contain, store, communicate, propagate,
or transport the program for use by or in connection with the instruction execution
system, apparatus, or device.
[0042] The computer-useable or computer-readable medium can 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 disc, and an optical disc.
Current examples of optical discs include a compact disc with read only memory (CD-ROM),
a compact disc with read/write (CD-R/W), a digital video disc (DVD), and a Blu-ray
disc.
[0043] In the above description, specific details of various embodiments are provided. However,
some embodiments may be practiced with less than all of these specific details. In
other instances, certain methods, procedures, components, structures, and/or functions
are described in no more detail than to enable the various embodiments of the invention,
for the sake of brevity and clarity. Although the embodiments of the invention are
described above as performing an AES function, the co-processor core can be configured
to implement the above-describe techniques for other deterministic behavior such as
the operations for data encryption standard (DES) or secure hash algorithm (SHA).
[0044] Although specific embodiments of the invention have been described and illustrated,
the invention is not to be limited to the specific forms or arrangements of parts
so described and illustrated. The scope of the invention is to be defined by the claims
appended hereto and their equivalents.
1. An integrated circuit (IC) device for detecting fault attacks, the IC device comprising:
a main computer processing unit (CPU) core;
memory coupled to the main CPU core; and
a co-processor core including a checksum generation module, the co-processor core
coupled to the main CPU core;
wherein the main CPU core is configured to direct the co-processor core to process
data from the memory and the co-processor core is configured to process the data,
in part, by feeding internal signals to the checksum generation module; and
wherein the co-processor core is further configured to return a checksum value generated
by the checksum generation module to the main CPU core.
2. The IC device of claim 1, wherein the main CPU core is configured to terminate execution
of the program if an invalid checksum value is returned.
3. The IC device of claim 1 or 2, wherein the co-processor core is further configured
to return a valid checksum value when the data is processed by the co-processor core.
4. The IC device of any preceding claim, wherein the co-processor core has special function
registers (SFRs) in which system states of the checksum generation module are stored.
5. The IC device of claim 4, wherein the SFRs are configured to reset to a default value
after a read operation occurs.
6. The IC device of any preceding claim, wherein the data is used to perform advanced
encryption standard (AES) functions and the co-processor core is configured to perform
the AES functions by feeding a control path and a key schedule path to the checksum
generation module.
7. The IC device of claim 6, wherein the control path and the key schedule path are fed
to the checksum generation module separately and the co-processor core is configured
to store the results in separate SFRs.
8. The IC device of any preceding claim, wherein additional fault detection modules are
coupled to the checksum generation module and error signals from the additional fault
detection modules can corrupt the checksum value generated by the checksum generation
module.
9. A method for detecting fault attacks, the method comprising:
sending data to a co-processor core for processing;
receiving a result and a checksum value back from the co-processor core; and
detecting a fault attack if the returned checksum value is invalid.
10. The method of claim 9, wherein the method further comprises halting execution of the
program if an invalid checksum is returned.
11. The method of claim 9 or 10, wherein a checksum is invalid when the data is not processed
by the co-processor core.
12. The method of any one of claims 9 to 11, wherein the data sent to the co-processor
core is for use in an AES function, the data including a control path and a key schedule
path.
13. The method of any one of claims 9 to 12, wherein processing data by the co-processor
core comprises:
feeding the data to a checksum generation module to generate a checksum value;
storing the generated checksum value in a SFR;
providing the checksum value stored in the SFR back to a main CPU core for further
processing; and
resetting the SFR to a default value.
14. The method of claim 13, wherein a control path is fed to the checksum generation module
separate from a key schedule path and the value generated by the checksum generation
module for the control path is stored in a first SFR and the value generated by the
checksum generation module for the key schedule path is stored in a second SFR.
15. A non-transitory computer-readable medium comprising instructions which, when executed,
perform the method of any one of claims 9 to 14.