From the paper Fault Template Attacks on Block Ciphers Exploiting Fault Propagation, in the concept of Automatic Test Pattern Generation (ATPG), two events are required to perform in sequence: Fault Activation and Fault Propagation.
In the case of a linear 2-input XOR gate,
without loss of generality, we consider a stuck-at-0 fault at the input register a, while the input register b may take values independently. In order to activate the fault at a, one must set a = 1. The next step is to propagate the fault at the output. One may observe that setting the input b to either 0 or 1 will expose the fault at a to the output o.
and comes to the following conclusion:
Given an n-input XOR gate having an input set I, (|I| = n), an output O, and a faulted input $i \in I$, the fault propagation to O does not depend upon the valuations of the subset I \ {i}.
Moreover, in continuation of article, he says
with assuming the fault to be stuck-at-0, just by observing whether the output is faulty, Adversary can determine the value of a. More precisely, if the output is fault-free a = 0 and a = 1, otherwise.
I am confused at this point. When the type of fault is stuck-at-0, how can the value of a be equal to 0 in the case of "fault-free"? Have I misunderstood the concept? I think when we perform stuck-at-0 fault attack, the value of a is equal to 0 and if we know the output is faulty, we can just say that the output is equal to the value of b. Can anyone tell me what is the use of this method? I am confused!