2.基于物理安全性的身份认证方法
尽管前面提到的身份认证方法在原理上有很多不同,但他们有一个共同的特点,就是只依赖于用户知道的某个秘密的信息。与此对照,另一类身份认证方案是依赖于用户特有的某些生物学信息或用户持有的硬件。
基于生物学信息的方案包括基于指纹识别的身份认证、基于声音识别的身份认证以及近来流行的基于虹膜识别的身份认证等。
基于智能卡的身份认证机制在认证时认证方要求一个硬件——智能卡(智能卡中存有秘密信息,通常是一个随机数),只有持卡人才能被认证。这样可以有效的防止口令猜测,但又引入了一个严重的缺陷:系统只认卡不认人,而智能卡可能丢失,拾到或窃得智能卡的人将很容易假冒原持卡人的身份。
为解决丢卡的问题,可以综合前面提到的两类方法,即认证方即要求用户输入一个口令,又要求智能卡。这样,既不担心卡的丢失(只要口令没有泄漏),又不担心口令的泄漏(只要卡没有丢)。
文献[4]提供了一个使用智能卡的单向认证协议的具体的例子,这里就不详述了。
三、身份认证的应用
1.Kerberos认证服务[7]
Kerberos认证服务老师在课堂上讲过,在课后我又读了介绍Kerberos认证服务的文献[7],在这里根据自己的理解简述一下。
Kerberos是一种受托的第三方认证服务(trusted third-party authentication service),它是建立在前面提到的Needham和Schroeder[1978]提出的模型基础上的,Kerberos要求信任第三方——即Kerberos认证服务器。Kerberos把网络划分成安全域,称为区域(realms),每个区域有自己的认证服务器并实现自己的安全策略。在每个区域内的认证过程是这样的:
Kerberos为客户和服务提供证明自己身份的票(ticket)以及双方安全通信的会话密钥(session key)。除客户第一次获得的初始票(initial ticket)是由Kerberos认证服务器(Kerberos authentication server,记作AS)签发外,其他票是由发票服务器(ticket-granting server,记作TGS)签发的,一个票可以使用多次直至过期。票的内容为:
{s,c,addr,timestamp,life,Ks,c} Ks 记作Tc,s
其中,s为服务名,c为客户名,addr为客户地址,timestamp为时间戳,life为生存周期,Ks,c为服务s与客户c之间的会话密钥,全部信息用服务s的密钥Ks加密。
客户方请求服务方提供一个服务时,不仅要向服务方发送从发票服务器领来的票,同时还要自己生成一个证(authenticator)一同发送。证是一次性的,内容如下:
{c,addr,timestamp} Ks,c 记作A c
其中,c为客户名,addr为客户所在工作站的地址,timestamp为工作站当前时间,全部信息用客户c与所要请求的服务s之间的会话密钥Ks,c加密。
具体过程分以下三步:
一、 取得初始票
二、 取得某项服务的票
三、 请求该项服务
其中,timestamp是上一步中客户c发给服务s的证Ac中的timestamp,这样做的目的是使客户c确信与它会话的确实是服务s。(只有s才知道Kc,s,故只有s才能发回这个信息。)
另外,文献[7]中具体介绍了一个在SUN NFS中加入Kerberos身份认证功能的例子。
2. HTTP中的身份认证[6]
HTTP协议目前已经有了三个版本HTTP 0.9、HTTP 1.0和HTTP 1.1,HTTP 0.9只定义了最基本的简单请求和简单回答;HTTP 1.0较完善,也是目前用得最广泛的一个版本,HTTP 1.1新增加了大量的报头域。
HTTP 1.0中提供了一个基于口令的基本认证方法,目前,所有的Web服务器都可以通过“基本身份认证”支持访问控制。当用户请求某个页面或运行某个CGI程序时,被访问对象所在目录下有访问控制文件(如NCSA用.haaccess文件)规定那些用户可以访问该目录, Web服务器读取该访问控制文件,从中获得访问控制信息并要求客户方提交用户名/口令组合,浏览器将用户输入的用户名和口令对经过一定的编码(一般是Base64方式),传给服务方,在检验了用户身份和口令后,服务方才发送回所请求的页面或执行CGI程序。可见,HTTP1.0采用的是前面讲述过的明文传输的口令核对方式(传输过程中尽管进行了编码,但并没有加密),这当然是很不安全的。
为增加安全性,用户可以选择使用SSL建立加密信道后再采用基本身份认证方式进行身份认证,当然,SSL中也有自己的更完善的身份认证机制,关于SSL老师在课堂上讲过。
HTTP 1.1在身份认证上,针对基本认证方式以明文传输口令这一最大弱点,补充了摘要认证方法,不再传递口令的明文,而是将口令经过散列函数变换以后传输它的摘要。使用摘要认证攻击者再也不能截获口令,他最多只能进行重放攻击,而且被限定在很短时间内,并只能用于同样的访问请求。尽管如此,摘要认证仍然不够安全,与基本认证一样,容易受到中间者攻击,如一个恶意的或被破坏的代理可能将服务方的摘要认证回答换成基本认证回答,从而窃得口令。
为HTTP提供更安全的认证方式需要与Kerberos服务相结合,如:CMU的Minotaur方案是结合特别的MIME类型和Plugin程序实现的。
3.IP中的身份认证
IP协议由于在网络层,无法理解更高层的信息,所以IP协议中的身份认证实际不可能是基于用户的身份认证,而是基于IP地址的身份认证。老师在讲IPSec时提到过其中的认证技术,这里就不讲了。
四、身份认证技术讨论
前面对身份认证技术的理论与应用进行了总结和分析,下面将结合自己的理解,进一步讨论一下身份认证的其他实现途径。
由于数字签名有一项功能是保证信息发出者的身份真实性,即信息确实是所声称的签名人签名的,别人不能伪造,这和身份认证的情形有些相似:身份认证的核心是要确认某人确实是他所声称的身份。那么,我想应该能借用数字签名机制实现身份认证,但这可能有一个困难,如果不预先进行密钥分发(即使是公钥,也要有一个机制将真实的公钥信息传递给每一个用户),可能数字签名也无从实现。(这可能就是前面总结的身份认证方法多与密钥分发结合进行的原因,可见,身份认证是众多安全要求中首先要解决的。)
但我们假设数字签名的公钥可从一个公认的权威处取得。
方案很简单:
1. 双方首次与联系时,认证方先给被认证方发一条随机的信息,且对其进行签名。
2. 被认证方检验认证方发来的信息的完整性,如完整,则去掉原签名,用自己的密钥重新进行签名,并发给认证方;如不完整,则要求重发(重发式认证方不能再用原来的信息,要换一条随机信息)。
3. 认证方检验信息中被认证方的签名,如通过,则被认证,否则被拒绝。
这个方案可能不够完善,比如:由于都是明文传输,虽然信息都是一次性的,不怕暴露,但一旦信息的完整性遭破坏,认证就须重新进行;但,这个方案还是有一些优越性,如:秘密的信息不需在网络中传输、协议简单且可利用现成的数字签名机制等。
参考文献
1. 网络与信息安全课堂讲义
2. 卢开澄.计算机密码学——计算机网络中的数据保密与安全(第二版).北京:清华大学出版社,1998
3. 余建斌.黑客的攻击手段及用户对策.北京:人民邮电出版社,1998
4. 曹鹏,乔秦宝,翁清.一种使用智能卡的网络身份认证密钥分发体制.武汉大学学报(自然科学版),1998,44(3):369-372
5. 李中献,詹榜华,杨义先.认证理论与技术的发展.电子学报,1999,27(1):98-102
6. 陆明,叶凡,胡道元.WWW安全机制研究.电子科技导报,1998,第一期:14-19
7. Jennifer G. Steiner, Clifford Neuman, and Jerrfey I. Schiller. "Kerberos: An Authentication Service for Open Network Systems." Proceedings of the 1988 USENIX Winter Conference, February 1988, Dallas, Texas, Pages 191-202.
RSS订阅






收 藏
推 荐