10.1.3 身份认证技术
1.静态密码
静态密码是最简单也是最常用的身份认证方法,系统为每一个合法用户保存一组“用户名,密码”。当用户需要认证身份时,系统核对用户输入的“用户名、密码”是否与系统内存储的一致。如果一致则说明是合法用户,否则是非法用户。
实际上,由于许多用户为了防止忘记密码,经常采用诸如生日、电话号码等容易被猜测的字符串作为密码,或者把密码抄在纸上放在一个自认为安全的地方。这样很容易造成密码泄露。即使能保证用户密码不被泄露,由于密码是静态的数据,在验证过程中需要在计算机内存中和网络中传输,而每次验证使用的验证信息都是相同的,很容易被驻留在计算机内存中的木马程序或网络中的监听设备截获。因此,静态密码方式是一种安全性较低的身份认证方式。
使用静态密码身份认证的系统应该严格限定用户密码复杂度。例如,要求密码不能和用户名相同;要求密码应至少混合字母和数字,并指定最小密码长度;要求用户定期更换密码,并不得设置与之前密码相同的密码;对输入密码错误次数进行限制,超出限制后锁定用户等。
2.智能卡认证
智能卡(又称IC卡)是一种内置集成电路的芯片,带有存储器和小型CPU,可以处理比较简单的运算。智能卡中存有与用户身份相关的数据,同时在服务器中也存有这些数据。进行认证时,用户输入PIN(个人身份识别码),智能卡认证PIN成功后,即可读出身份认证信息,进而利用该信息与服务器之间进行认证。
智能卡由专门的厂商通过专门的设备生产,是不可复制的硬件。智能卡认证是通过智能卡硬件不可复制来保证用户身份不会被仿冒。然而由于每次从智能卡中读取的数据是静态的,通过内存扫描或网络监听等技术还是很容易截取到用户的身份验证信息,因此还是存在安全隐患。
3.动态口令
动态口令技术是一种让用户密码按照时间或使用次数不断变化,每个密码只能使用一次的技术。它采用一种叫作动态令牌的专用硬件,内置电源、密码生成芯片和显示屏。密码生成芯片运行专门的密码算法,根据当前时间或使用次数生成当前密码并显示在显示屏上。认证服务器采用相同的算法计算当前的有效密码。用户使用时只需要将动态令牌上显示的当前密码输入客户端计算机,即可实现身份认证。由于每次使用的密码必须由动态令牌来产生,只有合法用户才持有该硬件,所以只要通过密码验证就可以认为该用户的身份是可靠的。而用户每次使用的密码都不相同,即使黑客截获了一次密码,也无法利用这个密码来仿冒合法用户的身份。
动态口令技术采用一次一密的方法,有效保证了用户身份的安全性。但是如果客户端与服务器端的时间或次数不能保持良好的同步,就可能发生合法用户无法登录的问题。并且用户每次登录时需要通过键盘输入一长串无规律的密码,一旦输错就要重新操作,使用起来非常不方便。
4.数字签名
数字签名又称电子加密,可以区分真实数据与伪造、被篡改过的数据。这对于网络数据传输,特别是电子商务是极其重要的。数字签名一般采用数字摘要技术实现。摘要技术的核心是Hash函数。该函数具有以下特征:
1)输入一个长度不固定的字符串,即可返回一串长度固定的字符串,又称HASH值。
2)输入字符串发生微小的变化,Hash值将会发生显著变化。
数字签名还使用了基于非对称加密算法的公钥认证体系。从数字签名的原理可以看出,数字签名主要有以下几方面的功能。
1)保证了信息的完整性。根据Hash函数的性质,一旦原始信息被改动,所生成的信息摘要就会发生很大的变化,因此,通过这种方式,能防止原始信息被篡改。
2)抗抵赖性。使用公开密钥的加密算法,由于只有发送方一人拥有私钥,因此,发送方不能否认发送过信息。
3)防止伪造。可以防止接收方伪造一份报文,声称来自于发送方。
5.Kerberos认证
Kerberos是麻省理工学院发布的一种身份认证标准协议。它是一种受托的第三方认证服务,提供了一种具有较高安全性能的用户身份认证和资源访问认证机制。
Kerberos协议可验证请求身份认证的用户标识(也就是对客户端身份进行认证),以及提供请求身份认证的服务器(也就是可选对服务器身份进行认证)。Kerberos身份认证协议提供了一种在客户机和服务器之间,或者一个服务器与其他服务器之间进行双向身份认证的机制。Kerberos V5中的一项重要服务是密钥分发中心。它存储了所有客户端密码和其他账户信息,是作为通信双方信任的第三方,身份认证的任务就是由它负责的。
假设在一个域网络上有两台计算机:客户端与服务器端。客户端与服务器端各自拥有一把相同的密钥Key,而且双方事先已经协调好要使用什么样的方法传递密钥。最后,客户端与服务器端的时间误差必须同步化。在上述条件下,客户端与服务器端就可进行相互验证,验证步骤如图10-5所示。
图10-5 Kerberos认证过程
1)客户端向密钥分发中心申请票证许可票证。
2)密钥分发中心响应申请请求,发回加密的票证许可票证和会话密钥。
3)客户端解密获取票证许可票证和登录会话钥,并向密钥分发中心发送服务票证请求。
4)密钥分发中心响应服务票证请求,发回加密的服务票证和会话密钥。
5)客户端使用服务票证和登录会话密钥向Kerberos服务器发送服务访问请求。
6)Kerberos服务器通过服务票证和服务会话密钥验证客户端身份,并把认证符返回给客户端,由客户端验证服务器。
6.生物特征认证
生物特征认证是指采用每个人独一无二的生物特征来验证用户身份的技术。从理论上说,生物特征认证是最可靠的身份认证方式,因为它直接使用人的物理特征来表示每一个人的数字身份,不同的人具有不同的生物特征,因此几乎不可能被仿冒。生物特征分为身体特征和行为特征两类。
1)身体特征包括指纹、掌型、声纹、视网膜、虹膜、人体气味、脸型、手的血管和DNA等。
2)行为特征包括:签名、语音、行走步态等。
生物特征认证基于生物特征识别技术,受到该技术成熟度的影响,采用生物特征的认证技术具有较大的局限性。首先,生物特征识别的准确性和稳定性还有待提高,特别是如果用户身体受到伤病的影响,往往导致无法正常识别,造成合法用户无法登陆。其次,由于研发投入较大和产量较小等原因,生物特征认证系统的成本非常高,目前只适合于一些安全性要求非常高的场合,如银行、部队等使用,目前还无法做到大面积推广。
7.USBKey认证
基于USBKey的身份认证方式是近几年发展起来的一种方便、安全的身份认证技术。它采用软硬件相结合、一次一密的强双因子认证模式,很好地解决了安全性与易用性之间的矛盾。USBKey是一种USB接口的硬件设备,它内置单片机或智能卡芯片,可以存储用户的密钥或数字证书,利用USBKey内置的密码算法实现对用户身份的认证。
每个USBKey硬件都具有用户PIN码,以实现双因子认证功能。USBKey内置单向散列算法(MD5),并且预先在USBKey和服务器中存储一个证明用户身份的密钥。USBKey认证过程如下。
1)由客户端向服务器发出一个验证请求。
2)服务器接到此请求后生成一个随机数并通过网络传输给客户端。
3)客户端将收到的随机数提供给插在客户端上的USBKey,由USBKey使用该随机数与存储在USBKey中的密钥进行带密钥的单向散列运算并得到一个结果作为认证证据传送给服务器。
4)服务器使用该随机数与存储在服务器数据库中的该客户密钥进行HMAC-MD5运算,如果服务器的运算结果与客户端传回的响应结果相同,则认为客户端是一个合法用户。