nils-wisiol/pypuf

Question about delay difference and weight conversion

Closed this issue · 1 comments

Hello, in the previous issue #179. You mentioned: "To compute the delay difference, you need either the 4n delays and the challenge, or the n+1 weights and the challenge. In pypuf's ArbiterPUF and XORArbiterPUF, the weights are chosen randomly, the challenge is given by the user.". And I understand the delays are converted by using Theorem 1, however, I do not understand why when we converted 4n delays, it becomes n+1 weights, shouldn't it be n weights? Thank you

If there were only n weights in the Arbiter PUF model, the resulting Boolean function would always be perfectly unbiased. For one way to see this, consider a challenge c with corresponding delay difference d = <w, x> (x is the feature vector of c). Then there is a challenge c' that corresponds to a feature vector -x, which results in delay difference <w, -x> = -d. In other words, for each challenge c that produces a response r, there is a challenge c' that produces the negated response -r. The Arbiter PUF would be perfectly unbiased, as the number of challenges producing "1" and "-1" is equal.

However, in reality, this is not the case. We model Arbiter PUFs with n+1 weights as d = <w,x> + b, where w contains n weights and b a single weight. Details are in the proof to Theorem 1, which I urge you to work through.