# Why should the input value on a DPA attack be non-constant?

I actually was wondering if anyone could help me out with the following problem:

Let's assume we are attacking the first SubBytes() operation on AES with the help of a differential power analysis attack, for a DPA attack we need to know the plaintext in order to create the hypothesis and to apply the used power model (in this case Hamming weights) later on. The relationship between the simulation and the real power traces is calculated with the correlation coefficient. This is totally understandable from my side. However, it is always stated that the known input value must not be constant because it will not yield in any result.

This is actually the thing I was wondering about. I came up with the idea that – in case that the values are constant – I will have the same Hamming weights for all my hypotheses. However, the real traces will still slightly vary in power consumption. Applying the correlation coefficient now will eventually lead in no correlation at all, hence yielding $0$ as the result.

Is this assumption correct, or am I thinking in the wrong direction here?

I already did some research on this subject, but was not able to find the right answer to my solution.

## 1 Answer

The Pearson product-moment correlation coefficient is what you evaluate, in general, when you perform DPA (CPA would be a better name for this, but DPA is used also in this context).

It is defined as: $\rho(X,Y) = \frac{cov(X,Y)}{\sigma_X\sigma_Y}$

Where $X,Y$ are your vectors, $cov$ is the covariance and $\sigma_X$ is the standard deviation of X.

In your case, one of the vectors should be a vector of power values at the same time instant for all traces and the other vector should be the hamming weight of your hypothesis.

In your case the second vector is made by the same value. Therefore its standard deviation is 0 and then the correlation is not defined (denominator is zero).

Note that DPA is much better than SPA because by using multiple traces it somehow average out other factors (i.e. noise), but for this you also need different input values (I would say the more the better).