Cryptography Reference
In-Depth Information
Fig. 17.6 AES-128 faults
analysis; in our research, the
value of f is zero, but for
exactly one byte
In this model we can see that the f value XORed with the message permits any
fault injection. The array fault_t is defined as:
where reg_128 is typedef'ed for char[4][4] . The default value of the fault
f , aes_128::ZERO , corresponds to 10
16 zeroes. To simulate a single-fault
injection, the fault_t f is initialized to all-zero, with the exception of a single
byte ( char ) within the reg_128 state for a single round index. The fault analysis
consists in calling this function for all the possible fault values, and comparing
the output with the ciphertext obtained from the experimental platform. Indeed, the
only evidence that a fault has occurred experimentally is a faulted ciphertext. The
exhaustive search of single “byte-flip” requires
×
2 8
(
1
) ×
16
×
10
=
40,800 calls
to the “encrypt” routine. This allowed us to
find the experimental faulty ciphertext, in this case the fault is called “covered”, or
declare that the fault is “uncovered”, if the faulty ciphertext matches none of the
“encrypt” function results.
The purpose of this implementation is to identify the different types of faults that
occur in a smart card, as shown in Fig. 17.6 . In this figure, the AES function with
two arguments is the regular implementation of AES-128, whereas the AES function
with three arguments is the “encrypt” routine detailed previously.
Search WWH ::




Custom Search