为什么在条件中使用“ EnCounter >= limit ”?

why does it use " ErrCounter >= limt " in the condition?

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

很好

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

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

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

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

  2. 卡被复制了(你知道的,现在它可以通过任何 NFC 处理 phone 例如)。想象一下,两个人想要取一大笔钱,所以他们同时在两台 ATM 机上工作。不幸的是,他们发现自己处于双方都输错 PIN 两次的情况。假设 ATM 读取当前 ErrCounter 作为 Authentication 的一部分。所以我们有(括号中的结果 ErrCounter):

    • 合作伙伴 1 在 ATM1 上输入了错误的 PIN (ErrCounter = 1)
    • 合作伙伴 2 在 ATM2 上输入了错误的 PIN (ErrCounter = 2)
    • 合作伙伴 1 在 ATM1 (ErrCounter = 3) 上输入了错误的 PIN。合作伙伴 1 的尝试(phone)现已被拒绝
    • 合作伙伴 2 在 ATM2 (ErrCounter = 4) 上输入了错误的 PIN。如果没有 >= 它会再次进行无限循环的尝试。有了更强的不等式,这个尝试也被拒绝了。