为什么在这种情况下使用“ ErrCounter> = limt”?

时间:2019-04-29 18:33:49

标签: uml state-machine state-diagram

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

there is image contain the state machine diagram

1 个答案:

答案 0 :(得分:1)

ErrCounter >= limitErrCounter == limit强。您将毫无风险地获得收益。

这是出于安全考虑。问题在于,在其中一种状态(甚至处于过渡状态)下,可能还有其他原因使ErrCounter递增,或者在开始进程时ErrCounter可能已经等于限制(顺便说一句,还是会导致拒绝,但没关系)。

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

  1. 持卡人已经在其他地方(例如在商店中)尝试使用Trice,但未使用正确的图钉。现在ErrCounter = 3。持卡人决定再次尝试在ATM中进行尝试。自动柜员机读取ErrCounter(作为Authentication的一部分),并且由于CheckPin失败(自动由于先前的尝试过多而导致),现在ErrCounter再次递增(因此{ {1}})。如果情况不佳,您可以无限循环地尝试一次。

  2. 卡已复制(例如,您现在可以通过任何NFC电话对其进行处理)。想象一下,两个人要提取大笔钱,以便他们同时在两台ATM上工作。不幸的是,他们发现自己都遇到了两次错误输入PIN的情况。假设ATM读取当前ErrCounter = 4作为ErrCounter的一部分。因此,我们得到了(括号中的结果Authentication):

    • 合作伙伴1在ATM1(ErrCounter)上输入了错误的PIN码
    • 合作伙伴2在ATM2(ErrCounter = 1)上输入了错误的PIN码
    • 合作伙伴1在ATM1(ErrCounter = 2)上输入了错误的PIN。合作伙伴1的尝试(通过电话)现在被拒绝
    • 合作伙伴2在ATM2(ErrCounter = 3)上输入了错误的PIN。如果没有ErrCounter = 4,它将再次进行无限次尝试。随着不平等的加剧,这种尝试也被拒绝了。