Cryptography Reference
In-Depth Information
9.2.4 Faults in Digital Systems
In general, it is important for a digital system to be fault-free and consistently give
the correct results. Faults can occur for a variety of natural and artificial reasons,
and various methods have been proposed to counter their effects on the performance
and reliability of the system. Fault detection and tolerance is even more important
for cryptosystems, due to the existence of attacks that can exploit faults to discover
secret information and threaten the security of the whole system.
Faults can occur in a device either naturally or due to deliberate actions, and
can be caused for one of many reasons. In general, variations in standard operation
conditions can be used effectively to inject faults into a system. For example, the
variation in the supply voltage or the clock frequency can disrupt the execution and
cause the processor to skip instructions or disrupt input/output operations. Moreover,
exposing the device to temperatures outside its operational range can cause random
modifications of the memory and inconsistencies in memory access. It is also possible
to inject faults more accurately using the photoelectric effects that are inherent in
all electric circuits. The exposure to photons induces currents in the circuit that can
disrupt normal operation. In effect, targeting and timing can be made more precise
using lasers in fault injection. Faults can be injected in packaged circuits without
removing the packaging by using X-rays and ion beams [21].
Faults in electronic circuits can be either permanent or transient. Permanent faults
are caused by intentional or unintentional defects in the chip. As the name indicates,
they have a permanent effect on the behavior of the circuit. On the other hand,
a transient fault does not cause a permanent change in the behavior of the circuit.
Such faults are caused by local ionization, which induces a current that can be
misinterpreted by the circuit as an internal signal. Fault injection is discussed in
more detail in Sects. 16.2 and 17.3 of this topic.
Several solutions have been devised to avoid or detect faults, or to prevent the
attempt to inject them. Other solutions help us recover from the occurrence of faults
and produce a correct output in spite of their existence. Some of these methods
are implemented in hardware while some are implemented in software. The main
countermeasure against faults and errors is the use of redundancy in the design,
which makes it possible to detect erroneous results and behavior. It also may permit
the recovery from faults. A common form of redundancy is hardware redundancy,
which entails replicating some part of the hardware to prevent the existence of a sin-
gle point of failure. Another form of redundancy is time redundancy, which amounts
to repeating the computation or a part of it to confirm the earlier results and detect
transient faults. A third form of redundancy is information redundancy, which is
commonly employed in data communication through error detecting and correcting
codes. The principle behind information redundancy is the use of more bits to rep-
resent the data than is actually necessary. This way, some of the representable bit
patterns do not correspond to valid data and can be used to detect and correct errors.
It is also possible to combine two or more types of redundancy into a single scheme
to get the advantages of different types of redundancy. A more elaborate review of
Search WWH ::




Custom Search