认证技术是信息安全中的一个重要内容,在“网络与信息安全”课程中我们学习了两种认证技术:消息认证与身份认证,消息认证用于保证信息的完整性与抗否认性,身份认证则用于鉴别用户身份。在网上商务日益火爆的今天,从某种意义上说,认证技术可能比信息加密本身更加重要。因为,很多情况下用户并不要求购物信息保密,只要确认网上商店不是假冒的(这就需要身份认证),自己与网上商店交换的信息未被第三方修改或伪造,并且网上商家不能赖帐(这就需要消息认证),商家也是如此。由于认证技术是一项包含很广泛的技术,集中于某一方面可能更有针对性,所以,在这篇论文中我没有涉及消息认证技术。运用课堂学到的理论、课后阅读获得的知识根据自己的分析,我对身份认证技术作了总结分类,并针对每一种认证技术分析了优点和漏洞,然后剖析了一些应用,最后提出了自己想到的一个简单的利用数字签名实现的身份认证方案。

一、      身份认证的方法及可能的漏洞

身份认证的本质是被认证方有一些信息(无论是一些秘密的信息还是一些个人持有的特殊硬件或个人特有的生物学信息),除被认证方自己外,任何第三方(在有些需要认证权威的方案中,认证权威除外)不能伪造,被认证方能够使认证方相信他确实拥有那些秘密(无论是将那些信息出示给认证方或者采用零知识证明的方法),则他的身份就得到了认证。

根据被认证方赖以证明身份的秘密的不同,身份认证可以分为两大类:基于秘密信息的身份认证方法和基于物理安全性的身份认证方法。

1.基于秘密信息的身份认证方法

1.1口令核对

鉴别用户身份最常见也是最简单的方法就是口令核对法:系统为每一个合法用户建立一个用户名/口令对,当用户登录系统或使用某项功能时,提示用户输入自己的用户名和口令,系统通过核对用户输入的用户名、口令与系统内已有的合法用户的用户名/口令对(这些用户名/口令对在系统内是加密存储的)是否匹配,如与某一项用户名/口令对匹配,则该用户的身份得到了认证。

这种方法有如下缺点:其安全性仅仅基于用户口令的保密性,而用户口令一般较短且容易猜测,因此这种方案不能抵御口令猜测攻击[5];另外,攻击者可能窃听通信信道或进行网络窥探(sniffing),口令的明文传输使得攻击者只要能在口令传输过程中获得用户口令,系统就会被攻破。

尽管有许多漏洞,这种方法在非网络环境下还是经常被采用的,由于没有了传输的过程,所以这时上面列举的第二个缺陷不会被攻击者利用。

在网络环境下,明文传输的缺陷使得这种身份认证方案变得极不安全,一些网络环境中的服务,如FTP,虽然仍然使用了明文传输的用户名/口令身份认证方案,但多数时候这种服务已经退化为无需口令(或口令公开)的匿名文件传输服务。

解决的办法是将口令加密传输,这时可以在一定程度上弥补上面提到的第二个缺陷,但攻击者仍可以采用离线方式对口令密文实施字典攻击[5]。

加密传输口令的另一个困难是加密密钥的交换,当采用对称密钥加密方式时,要求认证方和被认证方共享一个密钥,但由于身份认证前双方的身份还不明确,不可能预先共享一个密钥,解决的办法是求助于第三方——一个可信任的权威机构,这就是下面要分析的认证方案的思想。当采用非对称密钥加密方式时,口令可以用认证方的公钥加密,由于公钥可以通过公开的渠道获得,这时不存在采用对称密钥加密时遇到的那种矛盾,当然,这也需要密钥分发机制的配合。由此,我们也看到,身份认证与密钥分发经常是联系在一起的,所以,下面提到的许多认证协议中也包含了密钥分发的功能。

1.2单向认证

如果通信的双方只需要一方被另一方鉴别身份,这样的认证过程就是一种单向认证,前面提到的口令核对法实际也可以算是一种单向认证,只是这种简单的单向认证还没有与密钥分发相结合。

与密钥分发相结合的单向认证主要有两类方案:一类采用对称密钥加密体制,需要一个可信赖的第三方——通常称为KDC(密钥分发中心)或AS(认证服务器),由这个第三方来实现通信双方的身份认证和密钥分发;另一类采用非对称密钥加密体制,无需第三方参与。

[1]需第三方参与的单向认证:

1、 A ® KDC :IDA||IDB|| N1

2 、KDC ® A :EKa[Ks || IDB || N1 || EKb [Ks || IDA]]

3 、A ® B    :EKb [Ks || IDA] || EKs[M]

[1]无需第三方参与的单向认证:

A ® B  :EKUb[Ks ]|| EKs[M]

[1]当信息不要求保密时,这种无需第三方的单向认证可简化为:

A ® B  :M || EKRa[H(M)]

(符号约定同课堂讲义)

1.3双向认证

在双向认证过程中,通信双方需要互相认证鉴别各自的身份,然后交换会话密钥,双向认证的典型方案是Needham/Schroeder协议。

[1]Needham/Schroeder Protocol [1978]

1、A ® KDC :IDA||IDB||N1

2 、KDC ® A :EKa[Ks||IDB||N1||EKb[Ks||IDA]]

3 、A ® B :      EKb[Ks||IDA]

4 、B ® A :      EKs[N2]

5 、A ® B :      EKs[f(N2)]

这种认证的漏洞和改进老师在课堂上已经讲过,这里就不重复了。

1.4身份的零知识证明

通常的身份认证都要求传输口令或身份信息(尽管是加密传输),如果不传输这些信息,身份也能得到证明就好了,这就需要身份的零知识证明技术。

零知识证明是这样一种技术,被认证方P掌握某些秘密信息,P想设法让认证方V相信他确实掌握那些信息,但又不想让V也知道那些信息(如果连V都不知道那些秘密信息,第三者想盗取那些信息当然就更难了)。

被认证方P掌握的秘密信息可以是某些长期没有解决的猜想问题的证明,如:费尔玛最后定理,图的三色问题,也可以是缺乏有效算法的难题解法,如:大数因式分解等,信息的本质是可以验证的,即可通过具体的步骤来检测它的正确性。

[2]下面是一个利用零知识证明技术认证身份的协议的例子:

设I(P)为被认证方P的身份信息,要求P可以不透露I(P)的一个比特使认证方确信P确实掌握I(P)。协议假定存在一个可信赖的机构,它的职责在于公布模数n,n等于两个大素数p和g之积,p和q都是mod 4与3同余。

I(P)必须包含P的许多信息。假定I(P)包含有P的秘密身份的k个数c[1],c[2],…,c[k],1<=c[i]<p,i=1,2,…,k;还有他的公开身份PI(P)的另外k个数d[1],d[2], …,d[k],1<=d[i]<p,i=1,2,…,k,而且满足

d[j]*c[j] 2 ≡ ±1 mod n        j = 1,2, …,k

认证方V知道n和PI(P)。P为了使V相信他掌握I(P),下面4个步骤算是一轮。通过轮数越多,P作假的概率越小。

S1.P选一随机数r,计算 ± r2 mod n,P取其中一个告诉V,称之为x 。

S2.V从{1,2,…,k}中选一子集S告诉P。

S3.P告诉V

y = rTc mod n

其中                                                Tc = ∏ c[j]  对所有的 j ∈s

S4.V验证

X = ± y 2 Td mod n ?

其中                                                Td = ∏ d[j]  对所有的 j ∈s

若等号成立,开始新的一轮验证或停止,否则予以拒绝。

由于d[j]*c[j] 2 ≡ ±1 mod n,j = 1,2, …,k。

所以             y 2 Td ≡ r2 Tc2 Td = r2 ∏ c[j] 2 d[j] ≡ ± r2 ≡ ±x mod n

随机数r是必要的,否则V选S = { j },从而找到c[j],对c[j]要求(c[j],n) = 1,j = 1,2, …,k,否则n可能被因数分解。

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.认证方检验信息中被认证方的签名,如通过,则被认证,否则被拒绝。

这个方案可能不够完善,比如:由于都是明文传输,虽然信息都是一次性的,不怕暴露,但一旦信息的完整性遭破坏,认证就须重新进行;但,这个方案还是有一些优越性,如:秘密的信息不需在网络中传输、协议简单且可利用现成的数字签名机制等。

本篇文章来源于【能人网】www.nengr.com  原文链接地址:http://www.nengr.com/article/7158.html

网络与信息安全身份证认证技术分析相关推荐

  1. 3G无线网络对规划优化软件技术分析(转)

    一个全面的.具有多种技术以及用户友好界面的网络规划和优化软件,在移动运营商的无线网络规划及设计过程中起着举足轻重的作用.该软件不仅要具有强大的工程建设能力,而且应是一个开放的.可升级的和灵活的技术信息 ...

  2. 信息安全--身份认证

    1. 概述 身份认证:证实用户的真实身份与其所声称的身份是否相符的过程. 认证依据:应包含只有该用户所特有的.并可以验证的特定信息. 例如:基于口令的认证技术.基于密码学的认证技术.基于生物特征的认证 ...

  3. 【软考】 信息安全工程师教程 第六章 认证技术原理与应用

    目录 6.1 认证概述 6.1.1 认证概念 6.1.2 认证依据 6.1.3 认证原理 6.1.4 认证发展 6.2 认证类型与认证过程 6.2.1 单向认证 6.2.2 双向认证 6.2.3 第三 ...

  4. 【无标题】CCSRP是网络与信息安全应急人员认证(现更名为CCSC)

    CCSRP是网络与信息安全应急人员认证" 对关键信息基础设施从业人员提出明确的网络安全能力要求,CNCERT升级原有认证体系(CCSRP),推出"网络安全能力认证(CCSC)&qu ...

  5. 安全狗获聘福建省网络与信息安全信息通报中心技术支撑单位

    近日,由于长期提供有效的信息通报技术支撑工作并且表现优异,安全狗荣誉受聘成为福建省网络与信息安全信息通报中心技术支撑单位. 当前,数字经济转型在全国范围内快速发展,同时福建省数字经济规模不断突破2万亿 ...

  6. (软考中级--信息安全工程师)六、认证技术原理与应用

    目录 6.1.认证概述 6.1.1.认证概念 6.1.2.认证依据 6.1.4.认证发展 6.2.认证过程与认证授权 6.2.1.单向认证 6.2.2.双向认证 6.2.3.第三方认证 6.3.认证技 ...

  7. 思科ccna认证技术之网络安全基础入门CCNA 1.0 网络硬件防火墙技术解析-ielab

    思科ccna认证技术之网络安全基础入门CCNA 1.0 网络硬件防火墙技术解析-ielab防火墙技术,最初是针对 Internet 网络不安全因素所采取的一种保护措施.顾名思义,防火墙就是用来阻挡外部 ...

  8. 解决思科认证学员与高校网络及信息安全专业实验限制的解决方案

    解决思科认证学员与高校网络及信息安全专业实验限制的解决方案 -GNS3+VMware+Internet中低端使用 公布如下演示录像:(于2013/9/2上传,待版主审核后24小时公布)持续更新 录像位 ...

  9. 网络尖兵技术分析及应对

    网络尖兵技术分析及应对 转载于:https://blog.51cto.com/306869/58308

最新文章

  1. BFD与IGP快速收敛应用测试
  2. 学 JavaScript 伤不起……| 每日趣闻
  3. 齐聚上海,get多媒体开发新技能(内附讲师资料下载)
  4. java 执行字节码_深入理解java:1.2. 字节码执行引擎
  5. 小功告成:ReadIE beta
  6. 点击表格获取列索引的方法
  7. python中怎么计数_浅谈python中统计计数的几种方法和Counter详解
  8. SpringMVC的请求-获得请求参数-Restful风格的参数的获取
  9. 在windows中手动安装第三方模块
  10. cgo的效率 golang_golang CGO FAQ TIPS : cgo 从 C 传递 slice 到 go
  11. 贺岁喜剧《高兴》山寨歌舞大狂欢 陕西话的RAP
  12. 爬虫404如何跳过_金秀贤、全智贤主演的韩剧来自星星的你你如何评价?
  13. FFmpeg发送流媒体的命令(UDP,RTP,RTMP)
  14. 一个朋友的精彩BLOG
  15. 第09课:一网打尽神经序列模型之 RNN 及其变种 LSTM、GRU
  16. Ubuntu 14.04 LTS 启动blast2go 报错
  17. day17-25序列化、python操作CSV/EXCEL/PDF/WORD/PPT文件、爬虫、正则表达式
  18. Android-高德api使用常见错误
  19. python单位转换编程_如何使用python编程将一组DNA序列转换为蛋白...
  20. 微信投票微信刷票的技巧和意义

热门文章

  1. SEO每天都是动态变化的,你要关注什么?
  2. Photoshop脚本 锁定图层组所有图层
  3. MATLAB:一维插值算法
  4. 图片大小自适应QImage::scaled ()
  5. AES加密解密算法的C代码实现
  6. 导致计算机科学硕士和计算机科学理学硕士,诺丁汉大学计算机科学理学硕士研究生offer一枚...
  7. ACA云原生3阿里云容器产品体系
  8. 游戏安全与反外挂:加固工具介绍
  9. Python爬虫实战(爬取豆瓣电影)
  10. 已获万赞,最新Android通用流行框架大全