身份识别技术我们生活的现实世界是一个真实的物理世界,每个人都拥有独一无二的物理身份。
而今我们也生活在数字世界中,一切信息都是由一组特定的数据表示,当然也包括用户的身份信息。
如果没有有效的身份认证管理手段,访问者的身份就很容易被伪造,使得任何安全防范体系都形同虚设。
因此,在计算机和互联网络世界里,身份认证是一个最基本的要素,也是整个信息安全体系的基础。
身份认证是证实客户的真实身份与其所声称的身份是否相符的验证过程。
目前,计算机及网络系统中常用的身份认证技术主要有以下几种:用户名/密码方式:用户名/密码是最简单也是最常用的身份认证方法,是基于“what you know”的验证手段。
每个用户的密码是由用户自己设定的,只有用户自己才知道。
只要能够正确输入密码,计算机就认为操作者就是合法用户。
实际上,由于许多用户为了防止忘记密码,经常采用诸如生日、电话号码等容易被猜测的字符串作为密码,或者把密码抄在纸上放在一个自认为安全的地方,这样很容易造成密码泄漏。
即使能保证用户密码不被泄漏,由于密码是静态的数据,在验证过程中需要在计算机内存中和网络中传输,而每次验证使用的验证信息都是相同的,很容易被驻留在计算机内存中的木马程序或网络中的监听设备截获。
因此,从安全性上讲,用户名/密码方式一种是极不安全的身份认证方式。
智能卡认证:智能卡是一种内置集成电路的芯片,芯片中存有与用户身份相关的数据,智能卡由专门的厂商通过专门的设备生产,是不可复制的硬件。
智能卡由合法用户随身携带,登录时必须将智能卡插入专用的读卡器读取其中的信息,以验证用户的身份。
智能卡认证是基于“what you have”的手段,通过智能卡硬件不可复制来保证用户身份不会被仿冒。
然而由于每次从智能卡中读取的数据是静态的,通过内存扫描或网络监听等技术还是很容易截取到用户的身份验证信息,因此还是存在安全隐患。
动态口令:动态口令技术是一种让用户密码按照时间或使用次数不断变化、每个密码只能使用一次的技术。
它采用一种叫作动态令牌的专用硬件,内置电源、密码生成芯片和显示屏,密码生成芯片运行专门的密码算法,根据当前时间或使用次数生成当前密码并显示在显示屏上。
认证服务器采用相同的算法计算当前的有效密码。
用户使用时只需要将动态令牌上显示的当前密码输入客户端计算机,即可实现身份认证。
由于每次使用的密码必须由动态令牌来产生,只有合法用户才持有该硬件,所以只要通过密码验证就可以认为该用户的身份是可靠的。
而用户每次使用的密码都不相同,即使黑客截获了一次密码,也无法利用这个密码来仿冒合法用户的身份。
动态口令技术采用一次一密的方法,有效保证了用户身份的安全性。
但是如果客户端与服务器端的时间或次数不能保持良好的同步,就可能发生合法用户无法登录的问题。
并且用户每次登录时需要通过键盘输入一长串无规律的密码,一旦输错就要重新操作,使用起来非常不方便。
USB Key认证:基于USB Key的身份认证方式是近几年发展起来的一种方便、安全的身份认证技术。
它采用软硬件相结合、一次一密的强双因子认证模式,很好地解决了安全性与易用性之间的矛盾。
USB Key是一种USB接口的硬件设备,它内置单片机或智能卡芯片,可以存储用户的密钥或数字证书,利用USB Key内置的密码算法实现对用户身份的认证。
基于USB Key身份认证系统主要有两种应用模式:一是基于冲击/响应的认证模式,二是基于PKI体系的认证模式。
生物特征认证:基于生物特征的身份识别技术主要是指通过可测量的身体或行为等生物特征进行身份认证的一种技术,是基于“what you are”的身份认证手段,。
生物特征是指唯一的可以测量或可自动识别和验证的生理特征或行为方式。
生物特征分为身体特征和行为特征两类,身体特征包括:指纹、掌型、视网膜、虹膜、人体气味、脸型、手的血管和DNA等;行为特征包括:签名、语音、行走步态等。
从理论上说,生物特征认证是最可靠的身份认证方式,因为它直接使用人的物理特征来表示每一个人的数字身份,不同的人具有不同的生物特征,因此几乎不可能被仿冒。
但是,近年来随着基于生物特征的身份识别技术被广泛应用,相应的身份伪造技术也随之发展,对其安全性提出了新的挑战。
由于以上这些身份识别方法均存在一些安全问题,本书将主要讨论基于密码技术和Hash函数设计的安全的用户身份识别协议。
从实用角度考虑,要保证用户身份识别的安全性,识别协议至少要满足以下条件:1、识别者A能够向验证者B证明他的确是A。
2、在识别者A向验证者B证明他的身份后,验证者B没有获得任何有用的信息,B 不能模仿A向第三方证明他是A 。
目前已经设计出了许多满足这两个条件的识别协议。
比如Schnorr身份识别协议、Okanmto身份识别协议、Guillou-Quisquater身份识别协议和基于身份的识别协议等。
这些识别协议均是询问-应答式协议。
询问-应答式协议的基本观点是:验证者提出问题(通常是随机选择一些随机数,称作口令),由识别者回答,然后验证者验证其真实性。
一个简单的询问-应答式协议的例子如下:1、识别者A通过用户名和密码向验证者B进行注册;2、验证者B发给识别者A一个随机号码(询问);3、识别者A对随机号码进行加密,将加密结果作为答复,加密过程需要使用识别者A的私钥来完成(应答);4、验证者B证明识别者A确实拥有相关密钥(密码)。
对于攻击者Oscar来说,以上询问-应答过程具有不可重复性,因为当Oscar冒充识别者A与验证者B进行联系时,将得到一个不同的随机号码(询问),由于Oscar无法获知识别者A的私钥,因此他就无法伪造识别者A的身份信息。
以上例子中的身份验证过程是建立在识别者A和验证者B之间能够互相信任的基础上的,如果识别者A和验证者B之间缺乏相互信任,则以上验证过程将是不安全的。
考虑到实际应用中识别者A和验证者B之间往往会缺乏信任,因此,在基于询问-应答式协议设计身份识别方案时,要保证识别者A的加密私钥不被分享。
根据攻击者采取攻击方式的不同,目前,对身份认证协议的攻击包括:假冒、重放攻击、交织攻击、反射攻击、强迫延时和选择文本攻击。
1、假冒:一个识别者A1声称是另一个识别者A2的欺骗。
2、重放攻击:针对同一个或者不同的验证者,使用从以前执行的单个协议得到的信息进行假冒或者其它欺骗。
对存储的文件,类似的重放攻击是重新存储攻击,攻击过程使用早期的版本来代替现有文件。
3、交织攻击:对从一个或多个以前的或同时正在执行的协议得来的信息进行有选择的组合,从而假冒或者进行其它欺骗,其中的协议包括可能由攻击者自己发起的一个或者多个协议。
4、反射攻击:从正在执行的协议将信息发送回该协议的发起者的交织攻击。
5、强迫延时:攻击者截获一个消息,并在延迟一段时间后重新将该消息放入协议中,使协议继续执行,此时强迫延时发生(这里需要注意的是,延时的消息不是重放消息)。
6、选择文本攻击:是对询问-应答协议的攻击,其中攻击者有策略地选择询问消息以尝试获得识别者的密钥信息。
1 Schnorr 身份识别方案1991年,Schnorr 提出了一种基于离散对数问题的交互式身份识别方案,能够有效验证识别者A 的身份。
该身份识别方案不仅具有计算量小、通信数据量少、适用于智能卡等优点,而且识别方案融合了ELGamal 协议、Fiat-Shamir 协议等交互式协议的特点,具有较好的安全性和实用性,被广泛应用于身份识别的各个领域。
Schnorr 身份识别方案首先需要一个信任中心TA (Trusted Authoroty )为识别者A 颁发身份证书。
信任中心首先确定以下参数:1、 选择两个大素数p 和q ,其中(1)q p -;2、 选择*p Z α∈,其中α的阶为q ;3、 选择身份识别过程中要用到的Hash 函数h ;4、 确定身份识别过程中用到的公钥加密算法的公钥a 和私钥b 。
该过程通过识别者A选定加密私钥*q b Z ∈,同是计算相应的加密公钥1()mod b a p α-=实现。
对于需要进行身份识别的每一个用户,均需要先到信任中心TA 进行身份注册,由信任中心颁发相应的身份证书,具体注册过程为:TA 首先对申请者的身份进行确认,在此基础上,对每一位申请者指定一个识别名称Name ,Name 中包含有申请者的个人信息如:姓名、职业、联系方式等和身份识别信息如:指纹信息、DNA 信息等。
TA 应用选定的Hash 函数对用户提供的Name 和加密公钥a 计算其Hash 函数值(,)h Name a ,并对计算结果进行签名得到(,)TA s Sign Name a =。
在TA 进行以上处理的基础上,具体的识别者A 和验证者B 之间的身份识别过程描述如下:1、 识别者A 选择随机整数*q k Z ∈,并计算mod k p γα=;2、 识别者A 发送()(,,)C A Name a s =和γ发送给验证者B ;3、 验证者B 应用信任中心TA 公开的数字签名验证算法TA Ver ,验证签名(,,)TA Ver Name a s 的有效性;4、 验证者B 选择一个随机整数r ,12t r ≤≤,并将其发给识别者A ,其中t 为Hash 函数h 的消息摘要输出长度;5、 识别者A 计算()mod y k br q =+,将计算结果y 发送给验证者B ;6、 验证者B 通过计算mod y r a p γα≡来验证身份信息的有效性。
以上Schnorr 身份认证协议中,参数t 被称为安全参数,它的目的是防止攻击者Oscar 伪装成识别者A 来猜测验证者B 选取的随机整数r 。
如果攻击者能够知道随机整数r 的取值,则他可以选择任何的y ,并计算mod y r a p γα≡,攻击者Oscar 将在识别过程的第2步将自己计算得到的γ发送给验证者B ,当验证者B 将选择的参数r 发送给Oscar 时,Oscar 可以将自己已经经过计算的y 值发送给验证者B ,以上提供的数据将能够通过第6步 的验证过程,Osacr 从而成功地实现伪造识别者A 的身份认证信息。
因此,为了保证以上身份认证协议的安全性,Schnorr 建议Hash 函数h 的消息摘要长度不小于72比特。
Schnorr 提出的身份认证协议实现了在识别者A 的加密私钥信息不被验证者B 知道的情况下,识别者A 能够向验证者B 证明他知道加密私钥b 的值,证明过程通过身份认证协议的第5步来实现,具体方案是通过识别者A 应用加密私钥b ,计算()mod y k br q =+,回答验证者B选取的随机整数r来完成。
整个身份认证过程中,加密私钥b的值一直没有被泄漏,所以,这种技术被称为零知识证明。
“零知识证明”-zero-knowledge proof,是由Goldwasser等人在20世纪80年代初提出的。