前几天,我试图匆忙从自动取款机中提取一些现金,并打错了密码。我意识到只有当我按下“确定”按钮时,我惊讶的是ATM并没有抱怨。它显示了通常的菜单,要求我选择一个操作。仅当我选择提款时,系统才会提示我输入的密码不正确,并要求重新输入。我做了什么并收到了现金。

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

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

评论

它必须取决于您所在的国家/地区:在某些国家/地区(例如,美国),ATM仅读取卡的磁条,而在其他国家/地区,它会真正通过芯片进行身份验证。如果使用芯片,则需要正确的引脚。有时,您可以通过查看ATM的行为来获得提示:如果ATM在要求输入密码之前向后吐出卡,则它将不使用该芯片。

@Verron:如果在您输入PIN之前将卡吐出,我会感到非常惊讶(他们一定不要在这里这样做!)。如果3次输入正确的PIN失败,则没收ATM的“任务”之一。当然,如果在提示您之前将卡片还给您,那是无法做到的。

@Damon我过去几年在美国芝加哥使用过的所有ATM都是您插入的类型,然后在您拔出卡时进行扫描,然后输入PIN。我们曾经有一个持卡的人(尽管我不知道没收功能),直到大约4-5年前,我最后一次记得使用旧卡。

在印度,您会得到两种。在一张卡中插入卡并执行所有操作。使用另一种类型插入,删除,然后输入PIN并继续执行最多1个操作。对于另一项操作,您将不得不再次插入并重复该过程。

这将是为了用户体验;用户将获得顶层菜单,而无需与大型机进行双向认证。输入请求后,ATM将身份验证请求与事务捆绑在一起,因此在大多数用例中仅执行一次往返。

#1 楼

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

ATM的键盘是完全分离的设备,具有特殊的硬件安全功能(例如自毁芯片,如果有的话)有人尝试打开它,等等),因为这是整个ATM安全性的瓶颈。

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

如果ATM之前已经验证了PIN,交易(通过将其发送到服务器),则无法将金额说明与PIN的知识安全关联。

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

评论


芯片卡的情况如何,PIN是否未在本地验证?另外,您对所描述的协议有任何参考吗?

–domen
2014年7月1日在9:12

@domen如此小的搜索空间(大多数存储区可能有10 ^ 4个PIN),保存PIN本身与保存允许确认但不能直接恢复的内容(即哈希)之间没有任何实际区别:暴力破解离线存在10 ^ 4的可能性很小。 (通过三故障后锁定行为保护在线强制暴力。)

–吉尔斯'所以-不再是邪恶的'
2014年7月1日在12:31

芯片内部的类似机制可以保护@Gilles暴力破解。

–domen
2014年7月1日在12:45

一个小小的旁注,可以事先验证个人识别码,然后再次发送交易金额,但这将需要更多的交流。这不像发送加密的PIN一旦阻止以后再发送PIN +交易金额。这样做还是没有道理的,因为如果他们也必须完成交易,那么执行一次尝试会花费更长的时间。

– AJ亨德森
2014年7月1日在12:53

@jwg你在挑剔。使用这种逻辑,硬盘或cd也不会存储我的数据,因为它应用了某种形式的错误编码。如果芯片存储了可以用来计算PIN的内容,那么说“它存储PIN”就是一个很好的抽象。

– CodesInChaos
2014年7月1日14:17



#2 楼

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

如果以下情况,行为可能会有所不同:该卡具有芯片,并且ATM支持该芯片。

评论


如果卡上有芯片,则可以在本地验证该引脚。

– T. Verron
2014年7月1日在12:17

如果没有芯片,则没有行业标准来仅执行“在线验证PIN”,这也是T Verron所说的,这里有很多错误的答案

–bbozo
2014年7月1日在16:26

值得一提的是,拨号的日子还没有结束-独立的ATM(例如商店和饭店中的ATM)通常仍使用座机(有时是蜂窝调制解调器)。

–没人
2014年7月1日在17:44

@ T.Verron卡上的芯片通常不会“验证引脚”。它要么以脱机模式接受/拒绝特定交易,要么在ATM上将交易发送到银行之前签署交易-如果它是在线交易,则它将所有决定推迟到中央服务器。输入您想做的事之后,这两件事都完成了。

– Peteris
2014年7月2日在8:56



@Peteris:我将检查下次我在法国使用自动取款机。这里的顺序是:插入卡,输入密码,输入操作,输入金额,取回卡。我很确定,如果输入错误的密码,则会立即提示您输入一个新的密码,但这值得检查。

– T. Verron
2014年7月2日在9:13

#3 楼

大多数自动柜员机必须处理两种类型的卡:旧的,磁性的和较新的芯片卡。磁卡无法在本地验证PIN。理论上,芯片卡具有此功能-但这并不意味着此功能不受限制。

您描述的行为与磁卡流完全匹配。但是-是否应该使用另一条路径来验证芯片卡?不应这样做有两个原因:

1)实施全新的第二条道路会花费金钱。 ATM制造商肯定希望降低成本并尽可能多地重复使用代码。

2)提供一致的用户体验。很难想象有人拥有两张卡,一张磁卡和一张芯片。或向客户发放新的芯片卡来代替旧的磁性卡。无需通过为用户提供2条不同的路径来混淆用户。自动取款机已经足够吓人了。

/ edit:哦,我忘了一件很重要的事情:

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

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

评论


到目前为止,这是唯一没有任何瑕疵的答案,+ 1

–bbozo
2014年7月1日在16:23

这真的取决于国家。在某些国家/地区,至少在商店中,几乎必须进行销检。在这些情况下,如果银行为您提供了更改密码的权利,则意味着他们给您提供了一张带有新芯片的新卡,该芯片接受了该新引脚(但我认为不需要更改卡号)。

– T. Verron
2014年7月2日在9:17

@ T.Verron我认为这是一个误会。最初的问题是“为什么在交易过程中会检查PIN,但是在插入卡(脱机)时却不检查”。交易期间始终会检查Ofc PIN。

–Agent_L
2014年7月2日在10:32

抱歉,它是关于“卡上的本地PIN可能已过期”的评论。

– T. Verron
2014年7月2日在11:36

是的芯片卡上的本地PIN仅在交易期间(涉及与中央服务器的通信)进行更新。因为卡除了交易终端外没有其他通讯方式。即使是带有LCD的卡(声称可显示您的帐户余额)也仅在交易期间更新。商店中的交易会检查服务器上的PIN,而不是卡上的本地PIN。 (在有些银行,我根本没有PIN的借记卡卡,我不得不通过WWW进行设置。银行警告说,第一笔交易可能会失败,但是之后PIN会在卡上更新。)

–Agent_L
2014年7月2日,11:58



#4 楼

这是ATM软件中的政策问题。实际上,许多ATM确实会在允许您继续之前先向银行验证PIN。

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

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

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

评论


一个真实的答案。其他一切仅仅是基于对单个ATM编程的潜在知识的猜测,或更糟的是。人们为什么会认为他们的工作方式都一样?

– jmarkmurphy
2014年7月1日在17:32

#5 楼

如果有任何不好的情况,则没有必要在此阶段验证该引脚。


浪费带宽/时间进行检查,因为很可能需要再次发送该信号。仍然要进行交易呼叫。
如果有人试图猜测该图钉,那么找出它是否正确的图钉将花费更长的时间。只要他们站在机器前的时间越长,他们面对相机的机会就越大。
无法验证销钉是否与卡相对应,必须由银行进行验证,否则您可以脱机验证。
这既适用于条形卡,也适用于芯片卡,该引脚永远不会以任何形式存储在这两个位置中。


评论


您的最后一点是错误的,许多芯片卡都存储PIN以支持商家的离线芯片和PIN交易。

– Peter Green
16-10-12在0:21

#6 楼

user19426的答案很有趣-我不知道ATM小键盘是通过这种方式实现的-但似乎并不能完全说明问题,因为您仍然没有理由最初无法验证PIN(不公开其明文)值),然后再使用PIN哈希对实际交易进行签名。对于芯片卡,甚至不需要与银行进行任何额外的通信。

任何人都可以随时私下验证芯片卡的PIN,例如使用欧洲手持式验证键盘银行通常会将邮件寄给客户(我猜这些卡在经过一定次数的错误尝试后可能会自行失效)。预先拒绝错误PIN的ATM不会提供ATM无法提供的任何攻击媒介,这也要求您尝试进行交易。蛮力是没有问题的,因为30秒的延迟仅意味着将机器没收卡片的时间花了90秒以上。

据我所知,只有一种安全措施暗示不预先验证PIN。如果我将您的失窃的卡放入ATM机,然后输入我认为是您的PIN码,并且告诉我PIN码有误,那么我走开了,闭路电视显示我有罪尝试访问您的帐户。如果我输入PIN码,然后索要200英镑,则CCTV表示我有罪,企图访问您的帐户并试图从中窃取200英镑。

评论


本地PIN检查始终是一种攻击手段。如果您在服务器上检查PIN失败,则中央服务器上的尝试次数将减少。尝试X次后,该卡在全球范围内均被屏蔽。即使现在尚不知道克隆芯片或绕过本地禁用的方法,将来也可能会出现。

–Agent_L
2014年7月1日15:48



那是个很好的观点。尽管如此,所讨论的行为不会影响ATM可以用作PIN测试机的程度。甚至不影响创建伪造的ATM来捕获PIN的难度,因为在成功输入PIN之前,没有ATM会验证自己的凭据(例如,通过显示您的帐户余额)。

– Bobtato
2014年7月1日15:58

也许芯片卡不回答任何PIN检查请求。要求某种证书是合理的。该功能可能是由银行配置的,因此一张卡可以,另一张卡无法验证PIN。

–Agent_L
2014年7月1日在16:07

PIN哈希不用于生成客户端密码

–bbozo
2014年7月1日在16:21

如果您有读卡器,那么英国的芯片卡和密码卡将立即在本地验证PIN,然后再继续下一个功能。不知道它如何与ATM一起使用。一些不需要在线交易的商店刷卡机会立即接受交易。这在英国的火车上很常见。

–肖恩·麦当劳(Shaun McDonald)
2014年7月5日,0:42

#7 楼

发生这种情况的原因有两个:



更安全,银行希望节省带宽。

银行通常将您的PIN存储在其数据库中的哈希表。为了能够验证您在ATM上输入的PIN,ATM必须将您输入的PIN的哈希值发送到银行服务器。然后将这两个哈希进行比较,以检查您输入的PIN是否正确,然后才允许您执行交易。当然,这是安全的基本方法。需要考虑诸如重播和中间人攻击之类的事情(有关更多信息,请参阅质询响应身份验证)。

银行可以将您的PIN与交易本身一起发送,而不是这样做,同时验证您的PIN码和交易。这样可以节省带宽,并且由于减小了攻击窗口,因此可能更安全。例如,如果银行从您输入PIN的那一刻起就对您的会话进行身份验证,那么它就会给任何潜在的攻击者时间来拦截连接并进行自己的交易。

另一方面,很难实现正确的安全连接,并且确实会发生错误。进行交易时,一次性验证可让银行安全地识别您的身份并节省带宽。最终,它仍然取决于有问题的ATM机,因为银行始终可以在每个会话开始时以及以后的每笔交易中验证您的PIN。


ATM卡不会存储您的磁条中的PIN。 (芯片卡可以。)

与某些答案相反,ATM卡不能也不会存储您的PIN。 ATM卡的目的是实现两个因素的验证:您拥有的东西(卡)和您知道的东西(PIN)。有时候,攻击者会破坏ATM卡。

自动柜员机必须连接到银行服务器以验证您的身份。 ATM卡可以并且曾经被复制过(略读)。如果仅可以使用ATM卡磁条上的数据对PIN进行脱机验证,则攻击者可以通过脱机攻击相当快地用蛮力攻击所有9999个可能的PIN。因此,该系统的设计要求每次猜测都需要与银行联系,这使得攻击者更难窃取您的ATM卡并提取所有资金。



评论


您的第二点是错误的。 EMV标准芯片和密码卡确实存储了PIN,并且能够离线验证它,尽管在某些情况下应该这样做。通常,该卡将设置为拒绝任何离线ATM交易(即,如果ATM“说”它不会/无法与银行联系,但仍希望取款),则无论如何。

– Peteris
2014年7月2日,9:01

芯片和密码卡将在3次失败尝试后阻止交易。

–肖恩·麦当劳(Shaun McDonald)
2014年7月5日,0:44

我认为这是10000个可能的PIN。 0000-9999

–卡兹·沃尔夫(Kaz Wolfe)
2014年7月6日在17:25

#8 楼

通常会发生这种情况,当您使用的卡来自另一家银行,而ATM是另一家银行时。

为什么?:

不同的银行连接通过将不同银行彼此连接的国家/地区级别的国家/地区交换机相互连接。就像VISA是一个国际交换机一样,在一个国家/地区之内的交易也有国家/地区的交换。

在进行此类交易时,除了带宽外,还会因使用带宽而扣除特定金额国家转换,这个金额是基于每个交易的。

因此,与其发送两笔交易到该转换并最终发送到该银行,不如。仅使用其中输入了PIN和交易详细信息的发送交易。如果PIN码正确无误,那么交易就可以完成。

上述情况也可以用于同一笔银行交易,但不会产生任何财务利益,因为它不节省任何费用钱,但只有一点带宽。