为什么自动柜员机接受任何密码?

信息安全 自动取款机
2021-08-17 02:52:12

前几天,我试图匆忙从 ATM 取款,结果打错了别针。我意识到只有当我点击“确定”按钮时,但令我惊讶的是,ATM 并没有抱怨。它显示了通常的菜单,要求我选择一个操作。只有当我选择提款时,我才被提示密码不正确,并要求重新输入。我做了并收到了现金。

为什么ATM允许输入任何垃圾输入PIN,选择操作,然后才抱怨?

编辑:添加有关答案和评论中讨论的一些要点的更多信息:发生这种情况的国家是新西兰。该卡是一张芯片卡,恰好也有一个磁条,我不知道ATM是否可以读取芯片。

4个回答

此答案适用于 ATM 使用卡的磁条,而不是使用卡的芯片时。

ATM 的键盘是一个完全独立的设备,具有特殊的硬件安全功能(例如,如果有人试图打开它,就会自毁芯片等),因为它是整个 ATM 安全的瓶颈。

当您输入 PIN 时,ATM 本身不会以明文形式接收 PIN,而是将 PIN 加密。当它向主服务器发送交易时,它将加密的 PIN 与交易中指定的金额进行加密组合,以防止攻击者修改此金额。

如果 ATM 在交易之前已经验证了 PIN(通过将其发送到服务器),那么金额的规格就不能与 PIN 的知识安全地关联起来。

因此,ATM 无法验证 PIN 是否有效,直到它尝试向主要银行服务器(知道如何解密或以其他方式验证加密的 PIN)发出交易。

在使用卡的磁条时确认 PIN 需要联系银行的服务器。由于这需要时间(并且在拨号时代需要更多时间),因此 ATM 将“验证 PIN”和“取款”合并为一个联系人。

如果卡有芯片并且 ATM 支持它,行为可能会有所不同。

大多数 ATM 必须处理 2 种类型的卡:旧的、磁性的和较新的芯片卡。磁卡无法在本地验证 PIN。芯片卡理论上具有这种能力——但这并不意味着这种功能不受限制。

您描述的行为与磁卡流程完美匹配。但是 - 应该使用其他路径验证芯片卡吗?它不应该有两个原因:

1) 实施全新的第二条路径需要花钱。ATM 制造商肯定希望保持低成本并尽可能多地重用代码。

2) 呈现一致的用户体验。很容易想象一个人有两张卡,一张磁卡和一张芯片。或者为客户发行新的芯片卡以替换旧的仅磁性芯片卡。无需通过为用户提供 2 条不同的路径来混淆用户。自动取款机已经够吓人了。

/edit:哦,我忘记了一件非常重要的事情:

卡上的本地 PIN 码可能已过期。

在许多银行,您可以更改卡的 PIN,但卡的芯片无法知道它。因此,如果 ATM 在本地检查 PIN,它将拒绝正确的新 PIN,但允许不正确的旧 PIN。并且 ofc PIN 检查会成功并且交易会失败。

这是 ATM 软件中的策略问题。事实上,许多 ATM在允许您继续之前与银行验证 PIN。

但是 ATM 本身并不知道您的 PIN 是否正确。它必须询问银行,这需要时间。需要多少时间通常会决定 ATM 是否会跳过这一步。

ATM 和银行之间的每笔交易都是独立的,因此每笔交易都需要单独验证,因此每次交易都会验证 PIN 码。这意味着从实际的角度来看,ATM 在技术上不需要预先验证 PIN。它知道不正确的 PIN 会导致任何其他交易失败。

因此,需要达到一个平衡点,每个 ATM 可能会以不同的方式做到这一点。对用户而言,预先验证 PIN 可能更简单,但如果 ATM 没有向银行开放的专用线路,则可能需要额外的时间。因此,想象一下输入您的密码并等待 20 秒,让自动柜员机告诉您您是否正确操作。为了减少所需的总时间,他们可以选择跳过该步骤。