PUF Modeling Attacks

One promise of Physically Unclonable Functions is an increase in hardware security, compared to non-volatile memory key storage solutions. Consequently, the attacker model for PUFs is broadly defined. Usually, the attacker gets physical access to the PUF token for a longer but limited amount of time [WMPN19].

Within this attacker model, it is possible to subject a PUF to modeling attacks, where the attacker tries to extrapolate the PUF token’s behavior, i.e. to predict the behavior of the PUF when stimulated with unseen challenges. If an attacker is able to predict the PUF token’s behavior, a remote party cannot distinguish between the PUF token and the predictive model, breaking the security of the PUF.

Currently implemented attacks in pypuf are all offline, i.e. they run on pre-recorded information (as opposed to having online access for adaptively chosen queries).

class pypuf.attack.base.OfflineAttack(crps: ChallengeInformationSet)

A modeling attack based on a prerecorded information about a PUF token’s behavior on given challenges.

__init__(crps: ChallengeInformationSet) None

Initialize the modeling attack. After initialization, the attack can be run using the fit() function.

Parameters:

crps – Information about observed behavior of the PUF on known challenges.

fit() Simulation

Runs the attack configured in this attack object. The obtained model is stored as model() property and provided as return value.

property model: Simulation | None

The model that was obtained running the fit() method, None if fit() was not run yet.