3.2.3 利用信物的身份认证
对大多数人来说,利用授权用户所拥有的某种东西进行访问控制的方法并不陌生,我们经常使用这种方法。在日常生活中,几乎所有的人都有钥匙,有的用于开房门,有的用于开抽屉,有的用于开车子。对信息系统的访问控制也可以利用这种方法。我们可以在信息系统终端上加一把锁,使用该终端的第一步就是用钥匙打开相应的锁,然后再进行相应的注册工作。但是,对信息系统来讲,这种方法的一个最大缺点是它的可复制性。我们所用的普通钥匙是可以任意复制的,并且也很容易被人偷去。为了克服这个缺点,人们想了许多办法。
1.磁卡
磁卡是目前广泛使用的一种方法,它是一个具有磁性条纹的塑料卡,这种卡已经越来越多地用于身份识别,如信用卡、校园一卡通、第二代身份证、公交卡,以及对安全区域的访问控制等。国际标准化组织(ISO)推荐了一个标准,它对卡的尺寸、磁条的大小等都有具体的规定,该组织还制定了几个其他的标准,对相应的数据记录格式也做了规定。
磁卡中最重要的部分是磁条,在磁条中不仅存储着数据,而且存储着用户的身份信息。一般来讲,磁卡与个人识别号(PIN)一起使用。在脱机系统中,PIN必须以加密的形式存储在磁卡中。识别设备首先读出该卡中的身份信息,然后将其中的PIN解密,并要求用户输入PIN,识别设备将这两个PIN进行比较以决定该卡的持有者是否合法。在信息系统中,PIN可以不存在卡上,而存在系统中,进行认证时,系统把用户输入的PIN与系统中的PIN进行比较,据此来判断该卡的持有者是否具有他所声称的身份。
如同口令设置,用户必须经过一定的训练,使他们所选择的PIN更安全,不容易被人猜出来。有些用户为了不忘记PIN,往往把PIN写在他们的磁卡上,这样做是有很大风险的,万一卡片丢失,就可能被不法分子利用。即使不把PIN写在磁卡上,当卡片丢失时,也可能产生很大的威胁,因为卡片上有时写着用户的名字,所以不法分子拿到一张卡后,就很容易判断出该卡持有者的身份。如果是一张银联卡,那么偷盗者就可以打电话给该卡拥有者,声称是发卡的银行,询问用户的PIN号,谎称要重新将银联卡号输入银行系统中去。这时候用户如果不假思索地告诉对方自己的PIN,该用户就可能受到很大的损失。在更加传统的认证系统中,只有拥有智能卡和PIN的人,才能被识别为合法用户。
理想的情况是:用户把PIN记在脑子里,不要怕忘了而把它写在记事本上或者其他什么地方。但是,这种要求又太过分了,特别是有的用户拥有不止一张卡,每张卡的PIN又各不相同,要想把这么多的不同的PIN完全记住是很不容易的。另外,当信用卡丢失时,不要轻易把口令泄漏给身份不明的人,最好先挂失,然后亲自到银行去办理重入手续。
普通的磁卡很容易被复制,复制品可以做得和真品非常像,对大多数人而言,很难区分出真假。磁卡上的内容可以从一张卡转移到另一张卡,而不需要很昂贵的设备。因此,研制不可伪造的磁卡是很重要的,但是绝对的不可伪造是不可能的,人们只能想些办法增加伪造的困难性。目前,抗伪造的方法主要集中在如何阻止磁卡上的数据重新生成,为此人们已经发明了很多方法,以期提高磁性记录的安全性。
2.智能卡
目前,人们常用的是智能卡。这种卡与普通磁卡的区别在于,这种卡带有智能化的微处理器与存储器。
在基于证书的认证系统中,对私钥的保护是极为重要的。如果攻击者能够获得私钥,他们就可以骗取客户端的身份和认证。这种系统的实施对于保护私钥起了很好的作用,但最终,如果密钥保存在计算机上,就会受到潜在的威胁。
一个设计的更好的系统会将私钥保护起来,并将它和计算机隔开。智能卡就可以做到这一点。有许多种类型的智能卡,用于认证的智能卡看起来就像信用卡,但它包含了一块用来保存私钥和证书副本的计算机芯片,并且能进行相关处理。在为特定的应用选择合适的智能卡时,必须特别注意它们的应用场合。一些额外的硬件令牌,可以使用基于USB的接口来实现类似的用途。智能卡需要特殊的智能卡读卡器来提供智能卡和计算机系统之间的通信。
在一个典型的智能卡实现中,对客户端的认证步骤如下。
(1)用户将智能卡插入或者接近读卡器。
(2)提示用户输入独一无二的PIN(PIN的长度根据智能卡的不同类型而有所不同)。
(3)用户输入PIN。
(4)如果PIN是正确的,系统就会与智能卡进行通信。私钥被用来对一些数据进行加密,这些数据可能是询问,也可能是客户端计算机的时间戳。加密过程在智能卡上进行。
(5)加密后的数据传送到计算机中,也可能传送给网络中的服务器。
(6)公钥(可用来获得证书)用来对数据进行解密。由于只有智能卡的处理器拥有私钥,并且必须输入有效的PIN来启动处理过程,因此,能够成功解密数据就意味着用户通过了认证。
智能卡还对强力攻击和字典攻击有极强的抵抗力,因为一小段不正确的PIN输入就将使智能卡无法通过认证。通过要求提供智能卡以维护会话,就可以获得额外的安全保障,当智能卡被拔出来之后,系统将被锁住。用户离开任何一段时间都要拔下他们的智能卡,这样就可以将系统锁住,以防止任何其他人(物理地)访问到该系统。
智能卡的问题通常是管理方面的问题,如发放智能卡、培训用户、核算成本、处理丢失的卡以及诸如此类的问题。此外,需要对实施方案进行检查,以保证系统被配置为要求使用智能卡。一些实施方案允许口令的选择使用,这会削弱系统的安全性,因为只需要针对口令进行攻击,智能卡所提供的附加安全性就会因此而被消除。要确定可供选择的系统是否有这种缺陷,可以检查这个选项的文档,并查找不能使用智能卡的区域,比如用于管理的命令或者辅助登录。