450 likes | 588 Views
第七章 身份认证. 一、认证的基本原理. 在现实生活中,我们个人的身份主要是通过各种证件来确认的,比如:身份证、户口本等。 认证是对网络中的主体进行验证的过程,用户必须提供他是谁的证明,他是某个雇员,某个组织的代理、某个软件过程(如交易过程)。 认证( authentication ) :证明一个对象的身份的过程。 授权( authorization ) :决定把什么特权附加给该身份。. 通常有三种方法验证主体身份: 1) 主体了解的: 只有该主体了解的秘密,如口令、密钥; 2) 主体拥有的 :主体携带的物品,如智能卡和令牌卡;
E N D
一、认证的基本原理 在现实生活中,我们个人的身份主要是通过各种证件来确认的,比如:身份证、户口本等。 认证是对网络中的主体进行验证的过程,用户必须提供他是谁的证明,他是某个雇员,某个组织的代理、某个软件过程(如交易过程)。 认证( authentication ):证明一个对象的身份的过程。 授权( authorization ):决定把什么特权附加给该身份。
通常有三种方法验证主体身份: 1)主体了解的:只有该主体了解的秘密,如口令、密钥; 2)主体拥有的:主体携带的物品,如智能卡和令牌卡; 3)主体具有的:只有该主体具有的独一无二的特征或能力,如指纹、声音、视网膜图或签字等。 单独用一种方法进行认证不充分。
身份认证系统架构包含三项主要组成元件: 认证服务器(Authentication Server) 负责进行使用者身份认证的工作,服务器上存放使用者的私有密钥、认证方式及其他使用者认证的信息。 认证系统用户端软件(Authentication Client Software) 认证系统用户端通常都是需要进行登陆(login)的设备或系统,在这些设备及系统中必须具备可以与认证服务器协同运作的认证协定。 认证设备(Authenticator) 认证设备是使用者用来产生或计算密码的软硬件设备。
1)口令机制 用户名/口令认证技术 最简单、最普遍的身份识别技术,如:各类系统的登录等。 口令具有共享秘密的属性,是相互约定的代码,只有用户和系统知道。例如,用户把他的用户名和口令送服务器,服务器操作系统鉴别该用户。 口令有时由用户选择,有时由系统分配。通常情况下,用户先输入某种标志信息,比如用户名和ID号,然后系统询问用户口令,若口令与用户文件中的相匹配,用户即可进入访问。 口令有多种,如一次性口令;还有基于时间的口令。
用户名/口令具有实现简单的优点,但存在以下安全缺点:用户名/口令具有实现简单的优点,但存在以下安全缺点: 1、大多数系统的口令是明文传送到验证服务器的,容易被截获。某些系统在建立一个加密链路后再进行口令的传输以解决此问题,如配置链路加密机。 2、口令维护的成本较高。为保证安全性,口令应当经常更换。另外为避免对口令的字典攻击,口令应当保证一定的长度,并且尽量采用随机的字符。但缺点是难于记忆。 3、口令容易在输入的时候被攻击者偷窥,而且用户无法及时发现。 简单和安全是互相矛盾的两个因素。
2)数字证书 这是一种检验用户身份的电子文件,也是企业现在可以使用的一种工具。这种证书可以授权购买,提供更强的访问控制,并具有很高的安全性和可靠性。 非对称体制身份识别的关键是将用户身份与密钥绑定。CA(Certificate Authority)通过为用户发放数字证书(Certificate)来证明用户公钥与用户身份的对应关系。
验证者向用户提供一随机数; • 用户以其私钥KS对随机数进行签名,将签名和自己的证书提交给验证方; • 验证者验证证书的有效性,从证书中获得用户公钥KP,以KP验证用户签名的随机数。
3)智能卡 网络通过用户拥有什么东西来识别的方法,一般是用智能卡或其它特殊形式的标志,这类标志可以从连接到计算机上的读出器读出来。访问不但需要口令,也需要使用物理智能卡。 智能卡技术将成为用户接入和用户身份认证等安全要求的首选技术。用户将从持有认证执照的可信发行者手里取得智能卡安全设备,也可从其他公共密钥密码安全方案发行者那里获得。这样智能卡的读取器必将成为用户接入和认证安全解决方案的一个关键部分。
4)主体特征认证 目前已有的设备包括:视网膜扫描仪、声音验证设备、手型识别器等。安全性高。 例如:系统中存储了用户的指纹,用户接入网络时,就必须在连接到网络的电子指纹机上提供他的指纹(这就防止他以假的指纹或其它电子信息欺骗系统),只有指纹相符才允许他访问系统。更普通的是通过视网膜血管分布图来识别,原理与指纹识别相同,声波纹识别也是商业系统采用的一种识别方式。
二、基于口令的身份认证 1、安全与不安全的口令 安全的口令要求: 1) 位数>6位。 2) 大小写字母混合。 3)字母与数字混合。 4) 口令有字母、数字以外的符号。
不安全的口令则有如下几种情况: (1) 使用用户名(帐号)作为口令。 (2)使用用户名(帐号)的变换形式作为口令。将用户名颠倒或者加前后缀作为口令。 比如说著名的黑客软件John,如果你的用户名是fool,那么它在尝试使用fool作为口令之后,还会试着使用诸如fool123、loof、loof123、lofo等作为口令,只要是你想得到的变换方法,John也会想得到。 又如:使用x-scan扫描获知邮件帐号、密码。
(3)使用自己或者亲友的生日作为口令。这种口令很脆弱,因为这样往往可以得到一个6位或者8位的口令,但实际上可能的表达方式只有100×12×31=37200种。(3)使用自己或者亲友的生日作为口令。这种口令很脆弱,因为这样往往可以得到一个6位或者8位的口令,但实际上可能的表达方式只有100×12×31=37200种。 (4)使用常用的英文单词作为口令。这种方法比前几种方法要安全一些。一般用户选择的英文单词几乎都落在黑客的字典库里。 (5)使用5位或5位以下的字符作为口令。
加强口令安全的措施: A、禁止使用缺省口令。 B、定期更换口令。 C、保持口令历史记录,使用户不能循环使用旧口令。 D、用口令破解程序测试口令。
2、口令攻击的种类 计算机资源依靠口令的方式来保护的脆弱性: 网络数据流窃听 由于认证信息要通过网络传递,并且很多认证系统的口令是未经加密的明文,攻击者通过窃听网络数据,就很容易分辨出某种特定系统的认证数据,并提取出用户名和口令。口令被盗也就是用户在这台机器上的一切信息将全部丧失,并且危及他人信息安全,计算机只认口令不认人。最常见的是电子邮件被非法截获。
认证信息截取/重放(Record/Replay) 有的系统会将认证信息进行简单加密后进行传输,如果攻击者无法用第一种方式推算出密码,可以使用截取/重放方式。攻击者仍可以采用离线方式对口令密文实施字典攻击; 对付重放的方法有: 1、在认证交换中使用一个序数来给每一个消息报文编号 ,仅当收到的消息序号合法时才接受之; 2、使用时间戳 (A接受一个新消息仅当该消息包含一个 A认为是足够接近 A所知道的时间戳 ); 3、询问/应答方式 (A期望从 B获得一个新消息 ,则先发给 B一个临时值 ,并要求后续从 B收到的消息包含正确的这个临时值 )
字典攻击:由于多数用户习惯使用有意义的单词或数字作为密码,某些攻击者会使用字典中的单词来尝试用户的密码。所以大多数系统都建议用户在口令中加入特殊字符,以增加口令的安全性。 穷举尝试(Brute Force):这是一种特殊的字典攻击,它使用字符串的全集作为字典。如果用户的密码较短,很容易被穷举出来,因而很多系统都建议用户使用长口令。 窥探:攻击者利用与被攻击系统接近的机会,安装监视器或亲自窥探合法用户输入口令的过程,以得到口令。
社交工程:攻击者冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令。社交工程:攻击者冒充合法用户发送邮件或打电话给管理人员,以骗取用户口令。 垃圾搜索:攻击者通过搜索被攻击者的废弃物,得到与攻击系统有关的信息,如果用户将口令写在纸上又随便丢弃,则很容易成为垃圾搜索的攻击对象。
一次性口令(OTP:One Time Password) 在登录过程中加入不确定因素,使每次登录过程中传送的信息都不相同,以对付重放攻击。如S/KEY。 (1)Alice输入随机数R,服务器计算: x1=f(R) x2=f(x1) … xn+1=f(xn) (2)Alice保留x1…xn,服务器保留xn+1值 (3)首次Alice登录时,输入名字和xn,服务器计算f(xn),与本机保留的xn+1比较,匹配则证实Alice的身份。 (4)服务器用xn代替xn+1,Alice则删除xn。
基于对称密码的认证 1978年,NeedHam-Schroeder认证协议: (1)AKDC: IDA||IDB||Ra (2)KDCA: EKa[Ra|| IDB ||Ks||EKb[Ks|| IDA]] (3)AB: EKb[Ks|| IDA] (4)BA: EKs[Rb] (5)AB: EKs[Rb-1]
重放攻击: 如果入侵者I掌握了A和B之间通信的一个老的会话密钥,则I可以冒充A利用老的会话密钥对B进行如下的攻击: (3) I(A)B: EKb[Ks||A] (4)BI(A): EKs[Rb] (5)I(A)B: EKs[Rb-1]
针对以上漏洞,提出Denning-Sacco协议: (1)AKDC: IDA||IDB (2)KDCA: EKa[IDB||Ks||T||EKb[Ks||IDA||T]] (3)AB: EKb[Ks||IDA||T] (4)BA: EKs[Rb] (5)AB: EKs[Rb-1] 加入了时间戳,防止重放攻击。
基于公钥密码的认证 ISO认证: (1)AB: Ra (2)BA: Certb||Rb||Sb(Ra||Rb||B) A认证B (3)AB: Certa||Sa(Ea||Rb||A) B认证A
身份的零知识证明 通常的身份认证都要求传输口令或身份信息(尽管是加密传输)。如果不传输这些信息,身份也能得到证明就好了,这就需要零知识证明技术(The proof of zero knowledge)。零知识证明是这样一种技术,被认证方P掌握某些秘密信息,P想设法让认证方V相信他确实掌握那些信息,但又不想让V也知道那些信息。
例:洞穴问题 如图:有一个洞,设P知道咒语,可打开C和D之间的秘密门,不知道者都将走入死胡同中,那么P如何向V出示证明使其相信他知道这个秘密,但又不告诉V有关咒语。
P如何使V相信自己掌握了洞穴的秘密: 1)V站在A点。 2)P进入洞中任意一点C或D。 3)当P进洞之后,V走到B点。 4)V叫P:“从左边出来”或“从右边出来”。 5)P按要求实现(以咒语,即解数学难题)。 6)P和V重复执行(1)~(5)共n次。 被认证方P掌握的秘密信息一般是长期没有解决的猜想问题的证明,但能通过具体的步骤来验证它的正确性。 Feige-Fiat-Shamir 零知识身份识别协议 1986年
三、基于智能卡的身份认证 1、智能卡的安全性 IC卡是英文Integrated Cirtuit(集成电路)卡的缩写,也称“MEMORY CARD”和“SMART CARD”,中文译作“聪明卡”、“智慧卡”和“智能卡”等。 这种集成电路卡,是随着半导体技术的发展以及社会对信息的安全性和存储容量要求的日益提高而应运而生的。它是一种将具有加密、存储、处理能力的集成电路芯片嵌装于塑料基片上而制成的卡片,它的外型与普通的信用卡十分相似,具体尺寸为: 长:85.6 mm 、 宽:54mm 、 厚: 0.8mm IC卡可简单地分为三种类型: 存储卡、逻辑加密卡、CPU卡。
IC卡优点: 存储容量大、体积小而轻、保密性强、网络要求低、数据可靠性高 IC卡防磁、防静电、防潮、耐温、抗干扰能力强,一张IC卡片可重复读写十万次,卡中数据可保存几十年。 IC卡读写操作通过电信号传输来完成,因而对计算机的实时性、敏感性要求降低。内部数据保密性、可靠性好,读写稳定可脱机工作,易于安装维护,而磁卡系统离不开网络。
2、智能卡技术规范 1)ISO 7816 描述智能卡底层接口标准,定义读卡器和智能卡之间如何传递字节流。此标准主要是定义了塑料基片的物理和尺寸特性(7816/1),触点的尺寸和位置(7816/2),信息交换的底层协议描述(7816/3),7816/4论述了跨行业的命令集。 2)PC/SC (Personal Computer/Smart Card )工作组 Microsoft联合其它几家公司推出了称为PC/SC 的智能卡应用程序标准,用于Win32平台的个人计算机与智能卡之间实现互通信。PC/SC 工作组于1996年五月成立,目的在于规范一个开放的Windows接口。PC/SC 工作组持有对PC-ICC互操作规范的所有权。
3)OpenCard 框架 由IBM,Netscape,NCI和Sun在1997年3月27日提出的用于网络环境的智能应用框架。目的是支持智能卡应用程序在网络计算机、PC机、ATM和GSM平台上实现应用互操作。OpenCard 还提供了到PC/SC的接口。 4)Java Card 论坛 1996年10月推出了Java Card API规范,目前版本为2.1.1,1997年4月27日,Java Card论坛正式宣布成立。Java Card论坛的成立目的是完善Java Card API规范,使之最终成为多应用智能卡的首选编程语言。
Java Card就是能够运行Java程序的智能卡。Java Card在出厂时就在ROM中烧入了操作系统、 Java Card虚拟机、 API类库和可选的applets,随后,初始化和个人化向EEPROM 中写入数据。所谓Java Card 规范,主要是定义了Java作为一种独立于平台的编程技术在智能卡上的应用。Java Card API与正式的国际标准(如ISO7816)和工业规范标准(如Europay/Master Card/Visa)兼容。也就是说Java applet能够直接运行在遵循ISO7816标准的智能卡之上。
3、基于智能卡的认证机制 在基于Web的电子商务应用中,Java applet与智能卡之间的通信是:应用程序与读卡器通信,而读卡器将使用上面介绍的标准与智能卡通信。在用户进行商务交易前,服务器首先使用智能卡完成用户身份的认证。 身份认证过程中,为了产生变动的密码,一般采用双运算因子的计算方式,也就是加密算法的输入值有两个数值,其一为用户密钥、另一为变动因子,由于用户密钥为固定数值,因此变动因子必须不断变动才可以算出不断变动的动态密码。服务器及智能卡必须随时保持相同的变动因子,才能算出相同的动态密码。
挑战/响应认证 • 变动因子是由服务器产生的随机数字。 • 认证过程如下: • 1)登录请求。客户机首先向服务器发出登录请求,服务器提示用户输入用户ID和PIN 。 • 2)询问。用户提供ID给服务器,然后服务器提供一个随机串X(Challenge)给插在客户端的智能卡作为验证算法的输入,服务器则根据用户ID取出对应的密钥K后,利用发送给客户机的随机串X,在服务器上用加密引擎进行运算,得到运算结果RS。
3)应答。智能卡根据X与内在密钥K使用硬件加密引擎运算,也得到一个运算结果RC,并发送给服务器。3)应答。智能卡根据X与内在密钥K使用硬件加密引擎运算,也得到一个运算结果RC,并发送给服务器。 4)验证。比较RS和RC便可确定用户的合法性。 由于密钥存在于智能卡中,运算过程也是在智能卡中完成,密钥认证是通过加密算法来实现的,因而极大地提高了安全性。并且每当客户端有一次服务申请时,服务器便产生一个随机串给客户,即使在网上传输的认证数据被截获,也不能带来安全上的问题。
挑战/响应身份认证的优点: • 没有同步的问题。 • 一片认证卡可以用来存取被不同认证服务器所保护的系统。 • 最安全的认证方式。 • 缺点: • 使用者必须按较多的按钮,操作较繁复。 • 比较多输入的失误。
时间同步认证 • 变动因子使用服务器端与客户端的同步时间值。认证过程如下: • 1)用户向服务器发出登录请求,服务器提示用户输入用户ID和用户PIN。 • 2)服务器根据用户ID取出对应的密钥K,使用K与服务器时间T计算动态密码RS。 • 3)智能卡根据内在的密钥K与客户机时间T使用相同的专用算法计算动态密码RC,并发送给服务器。 • 4)服务器比较RS与RC,如果相同则用户合法。
时间同步身份认证优点: • 易于使用。 • 缺点: • 时间同步困难,可能造成必须重新输入新密码。软体认证卡采用PC的时刻,很可能随时被修改。常常需要与服务器重新对时。 • 2.不如Challenge/Response认证安全
事件同步 • 事件同步认证卡依据认证卡上的私有密钥产生一序列的动态密码,如果使用者意外多产生了几组密码造成不同步的状态,服务器会自动重新同步到目前使用的密码,一旦一个密码被使用过后,在密码序列中所有这个密码之前的密码都会失效。
事件同步的身份认证优点: • 容易使用。 • 由于使用者无法知道序列数字,所以安全性高,序列号码绝不会显示出来。 • 缺点: • 如果没有PIN号码的保护及认证卡借给别人使用时,会有安全的疑虑。
四、基于生物特征的身份认证 对用户固有的某些特征进行测量,如指纹、声音或签字。这些需要特殊硬件,这就限制了生物技术只能用在比较少的环境中。其吸引人的地方是生物识别绝不可能丢失和被偷窃。实际上,存在着某些局限性。传统的安全常识认为认证数据应有规则地进行变化。而使用指纹阅读器难于做到这一点。某些方法也遭到了用户的反对。还有,因为生物技术具有极为本质的特点,因此不可能给出准确的答案。
没有两个签字是绝对相同的,即使来自一个人,还有一些莫明其妙的影响,例如疲劳程度、心境状况和健康状况等。在匹配算法中必须建立某些公差。假如某个调用者经认证只有93%的可信度,是否让其登录?没有两个签字是绝对相同的,即使来自一个人,还有一些莫明其妙的影响,例如疲劳程度、心境状况和健康状况等。在匹配算法中必须建立某些公差。假如某个调用者经认证只有93%的可信度,是否让其登录? 某些系统使用智能卡存储每个用户的生物技术数据。这避免了需要主机数据库,而是依赖于卡的安全性来防止窜改。在用户和智能卡之间的协议中,结合了来自主机的随机质询,因而避免了重播攻击。
优点: • 绝对无法仿冒的使用者认证技术。 • 缺点: • 较昂贵。 • 不够稳定(辩识失败率高)。