从ATM中取现金
当一个人从ATM中提取现金时,他需要使用一张塑料制的内含磁条的卡片,并知道相关的PIN。顾客将他们的卡片插入ATM插口,输入PIN,再输入取款数目。在一次典型的交易中,如果是在线交易,该系统需要检验卡上的PIN是否正确,再允许顾客提取他所要求的现金额。这个验证很可能是由银行的主计算机进行的,因此ATM与主计算机之间必须进行双边通信。ATM将卡中记录的详情及PIN发送给主计算机,主机回复授权交易或是拒绝交易。很明显,这些通信需要保护。
虽然取钱的数目不一定需要保密,但必须保证机器给出的钱数与用户从银行账户上提取的款项数额相同。所以,信息的完整性必须得到某种形式的保护。此外,银行方面有理由担心ATM对同一个授权交易的回复进行多次付款,这就要求在回复信息中加入序列号以避免重复执行授权交易。
所有银行都告诫他们的顾客要保守PIN的秘密,因为任何偷到或拾到卡的人,只要知道了正确的PIN就可以使用这张卡。当然,银行必须保证PIN不会在他们的系统中受到损害,因此PIN在传送时以及在用于验证其合法性的数据库中都是加了密的。这一过程中使用的算法是ECB模式的DES。因为DES加密64比特的区组,而PIN一般是4位数,因此含有PIN的区组在加密前需要填满位数。如果对所有顾客所填充的内容都一样,那么对于任何得到加密后的PIN区组的人来说,虽然他们不知道正确的密钥,但他们能够识别出共享该PIN的所有顾客。为了消除这种隐患,我们使用一种填充内容依赖于顾客卡中的详细信息的填充技术。
使用加密的方法就可避免截听ATM与主计算机之间通信的拦截者获知PIN。加密也可以避免那些能够进入银行数据库的人读取PIN。但是正如我们在前面的讨论中已经指出的那样,加密并不能预防骗子猜到某人的PIN。任何人拾获或偷到一张银行卡,都可以将它插入ATM并试试运气来猜一猜。因为至多只有10,000个四位数的PIN,猜成功的机会虽然很小,但尚未达到不可能的程度。为了对付这种情况,大多数ATM只允许试三次PIN,三次都错则将卡吞掉。这种举措是合理的,它不给骗子过多的猜测机会,又避免了卡的真正主人插入卡后因输入错误而引起的不便。正如我们所强调的,加密的方法不能抵御他人猜出PIN的危险。
一些ATM网络现在使用智能卡,其中用上了公钥密码术。此时,用户的卡中包含了他们的私钥以及由卡的发行人签署的证书,以确认他们的公钥值。ATM发出一个质询供卡签署,从而认证这张卡。就像所有依赖于证书的系统那样,为了检查证书的有效性,终端中必须存有卡的发行者的真实的公钥副本。某些系统通过将这些公钥值存在ATM中而实现这一要求。