-1

在状态机图中,我不明白为什么条件是 ErrCounter >= limit 。我认为写 ErrCounter == limit 很好。

有图像包含状态机图

4

1 回答 1

1

ErrCounter >= limit强于ErrCounter == limit。你有没有风险的收益。

这是为了安全起见。问题是可能还有其他一些东西会增加ErrCounter其中一种状态(甚至是转换中)的时间,或者ErrCounter在启动过程时可能已经等于限制(顺便说一句,这无论如何都会导致拒绝,但没关系)。

让我们把它变成一个生活的例子。想象一下这两种情况(假设limit = 3):

  1. 持卡人已经在其他一些地方(例如在商店)尝试过三次,但未能使用正确的密码。现在ErrCounter = 3。持卡人决定在 ATM 上再试一次。ATM 读取ErrCounter(作为 的一部分Authentication)和CheckPin失败的(由于太多早期尝试而自动)现在ErrCounter再次增加(所以ErrCounter = 4)。对于弱案例,您可以在无限循环中一次又一次地尝试。

  2. 卡是重复的(你知道,现在它可以通过任何 NFC 手机处理)。想象一下,两个人想要提取大量资金,因此他们同时在两台 ATM 上工作。不幸的是,他们发现自己处于两个人都两次输入错误密码的情况。假设 ATM 读取电流ErrCounter作为Authentication. 所以我们有(在括号结果ErrCounter):

    • 合作伙伴 1 在 ATM1 上输入了错误的 PIN ( ErrCounter = 1)
    • 合作伙伴 2 在 ATM2 上输入了错误的 PIN ( ErrCounter = 2)
    • ErrCounter = 3合作伙伴 1 在 ATM1 ( )上输入了错误的 PIN 。合作伙伴 1 的尝试(使用手机)现已被拒绝
    • 合作伙伴 2 在 ATM2 上输入了错误的 PIN ( ErrCounter = 4)。如果没有>=,它将再次进行无限循环的尝试。随着更强的不等式,该尝试也被拒绝。
于 2019-04-29T19:07:38.057 回答