Tatsächlich sieht es jedoch eher so aus:
> // let's assume comparison is time-constant
> failCounter++;
> if (storedPIN == providedPIN) {
> failCounter--;
> doSomething();
> }
Warum?
Man stelle sich vor, nach der PIN-Prüfung wird der Strom gekappt, damit der Fehler-Counter nicht erhöht werden kann. Das wäre unpraktisch und würde Bruteforcing vereinfachen.
Deshalb wird zuerst der Fehler-Counter erhöht, um sicherzustellen, dass Bruteforcing verhindert wird.
Funfact aus der Kartenentwicklung:
Wusstet ihr, dass die Prüfung der Karten-PIN anders implementiert ist, als man denken möge?
Ein:e Normalo-Entwickler:in würde es wohl so bauen:
> // let's assume comparison is time-constant
> if (storedPIN == providedPIN) {
> doSomething();
> } else {
> failCounter++;
> }
Habe ich Follower in Rostock?
Irgendwer, oder irgendeine Firma schickt mir ständig Pakete in eine Packstation in Rostock...
Wenn das eine der alten Packstationen ist, kann ich euch den QR Code zum öffnen schicken, der gilt 90 Sekunden.
Das ist machbar.
Inhalt könnt ihr behalten :P