9.4.2 使用实际物体的认证方式

用户认证的第二种方式验证一些用户所拥有的实际物体而不是用户所知道的信息。如金属钥匙就被使用了好几个世纪。现在,人们经常使用磁卡,并把它放入与终端或计算机相连的读卡器中。而且一般情况下,用户不仅要插卡,还要输入口令以保护别人冒用遗失或偷来的磁卡。银行的ATM机(自动取款机)就采用这种方法让客户使用磁卡和口令码(现在大多数国家用4位的PIN代码,这主要是为了减少ATM机安装计算机键盘的费用)通过远程终端(ATM机)登录到银行的主机上。

载有信息的磁卡有两种:磁条卡和芯片卡。磁条卡后面粘附的磁条上可以写入存放140个字节的信息。这些信息可以被终端读出并发送到主机。一般这些信息包括用户口令(如PIN代码)这样终端即便在与银行主机通信断开的情况下也可以校验。通常,用只有银行已知的密钥对口令进行加密。这些卡片每张成本大约在0.1美元到0.5美元之间,价格差异主要取决于卡片前面的全息图像和生产量。在鉴别用户方面,磁条卡有一定的风险。因为读写卡的设备比较便宜并被大量使用着。

而芯片卡在卡片上包含了小型集成电路。这种卡又可以被进一步分为两类:储值卡和智能卡。储值卡包含了一定数量的存贮单元(通常小于1KB),它使用ROM技术保证数据在断电和离开读写设备后也能够保持记忆。不过在卡片上没有CPU,所以被存储的信息只有外部的CPU(读卡器中)才能改变。储值卡被大量生产,使得每张成本可以低于1美元,如电话预付费卡等。当人们打电话时,卡里的电话费被扣除,但实际上并没有发生资金的转移。由于这个原因,这类卡仅仅由一家公司发售并只能用于一种读卡器(如电话机或自动售货机)。当然也可以存储1KB信息的密码并通过读卡机发送到主机验证,但很少有人这么做。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

近来拥有更安全特性的是智能卡。智能卡通常使用4MHz 8位CPU,16KB ROM,4 KB ROM,512B可擦写RAM以及9600b/s与读卡器之间的通信速率。这类卡制作越来越小巧,但各种参数却不尽相同。这些参数包括芯片深度(因为嵌入在卡片里)、芯片宽度(当用户弯折卡时芯片不会受损)和成本(通常从1美元到20美元一张不等,取决于CPU功率、存储大小以及是否有密码协处理器)。

智能卡可用来像储值卡一样储值,但却具有更好的安全性和更广泛的用途。用户可以在ATM机上或通过银行提供的特殊读卡器连接到主机取钱。用户在商家把卡插入读卡器后,可以授权卡片进行一定数量金额的转账(输入YES后)。卡片将一段加密过的信息发送到商家,商家稍后将信息流转到银行扣除所付金额的信用。

与信用卡或借记卡相比,智能卡的最大优点是无须直接与银行联机操作。如果读者不相信这个优点,可以尝试下面的实验。在商店里买一块糖果并坚持用信用卡结账。如果商家反对,你就说身边没有现金而且你希望增加飞行里数 [1] 。你将发现商家对你的想法毫无热情(因为使用信用卡的相关成本会使获得的利润相形见绌)。所以,在商店为少量商品付款、付电话费、停车费、使用自动售货机以及其他许多需要使用硬币的场合下,智能卡是十分有用的。在欧洲,智能卡被广泛使用并逐渐推广到其他地区。

智能卡有许多其他的潜在用途(例如,将持卡人的过敏反应以及其他医疗状况以安全的方式编码,供紧急时使用),但本书并不是讲故事的,我们的兴趣在于智能卡如何用于安全登录认证。其基本概念很简单:智能卡非常小,卡片上有可携带的微型计算机与主机进行交谈(称作协议)并验证用户身份。如用户想要在电子商务网站上买东西时,可以把智能卡插入家里与PC相连的读卡器。电子商务网站不仅可以比用口令更安全地通过智能卡验证用户身份,还可以在卡上直接扣除购买商品的金额,减少了网站为用户能够使用联机信用卡进行消费而付出的大量成本(以及风险)。

智能卡可以使用不同的验证机制。一个简单的挑战-响应的例子是这样的:首先服务器向智能卡发出512位随机数,智能卡接着将随机数加上存储在卡上EEPROM中的512位用户口令。然后对所得的和进行平方运算,并且把中间的512位数字发送回服务器,这样服务器就知道了用户的口令并且可以计算出该结果值正确与否。整个过程如图9-20所示。如果窃听者看到了双方的信息,他也无从采用,即便记录下来今后也没有用处,因为下一次登录时,服务器会发出另一个512位的随机数。当然,我们可以使用更加新的算法而不是简单的平方运算。

阅读 ‧ 电子书库
图 9-20 使用智能卡的认证

任何固定的密码通信协议的缺点是容易在传输过程中损坏,从而使智能卡丧失功能。避免这种情况的一个办法是在卡片里使用ROM而不是密码通信协议,如Java解释程序。然后将用Java二进制语言写成的通信协议下载到卡片中,并解释运行。通过这种方法,即使协议被损坏,也能够在全球范围内方便地下载一个新的协议,使得下一次使用智能卡时,该协议处于完好的状态。这种方法的缺点是让本来就速度慢的智能卡更慢了,但是随着技术的发展这种方法将被广泛使用。智能卡的另一个缺点是丢失或被盗的卡片可以让不法分子实施旁道攻击(side-channel attack),例如功率分析攻击。他们中的专家通过观察智能卡在执行加密操作时的电源功率损耗,可以运用适当的设备推算出密钥。也可以让智能卡对特定的密钥进行加密操作,从加密的时间来推算出卡片密钥的有关信息。

[1] 飞行里数卡是信用卡的一种,通过这类信用卡结账时,可以将消费的金额换算成航班的飞行里数,消费到一定金额时,可能兑换免费机票。——译者注