论文部分内容阅读
敖 山
现代的身份认证技术正向智能化、密码化、多因素、大容量和快速响应方向发展。制约我国信息系统安全性提高的因素很多,缺乏高性能、低价位、适合中国国情的综合身份认证系统是一个重要因素。目前在身份认证方面较有特色的是以生物识别技术为基础的指纹识别仪,视网膜识别仪和面像识别仪以及基于公开密钥体制的CA身份认证技术、动态认证令牌等。其中由于动态口令身份认证技术相对投资少,使用方便可靠而逐渐成为身份认证技术的主流。
在动态口令身份认证的形式中,除了一般意义上基于数字签名的动态身份认证外,著名的保障通信数据安全的SSL协议同样也为我们提供了动态的客户身份验证机制
SSL (secure SocKet Layer)客户端认证
一、SSL协议及其密钥导出分析
SSL协议在结构上分为两个层次。底层为记录层协议(recorder protocol),实现对数据的加密,封装各种高层协议,高层由四个并行的协议构成:握手协议(handshake protocol)、密码格式变换协议(change cipher protocol)、报警协议(alertprotocol)、应用数据协议(application dataprotocol)。SSL协议基本流程如下:
2、客户端将它所支持的算法列表和一个用来产生密钥的随机数发送给服务器。
3、服务器选中的加密算法、另一个随机数、服务器证书。
4、客户端对服务器证书验证,并产生称为Pre_master_secret的随机密码串,使用服务器公钥对其加密后,发回服务器。
5、通过密钥导出函数(KDF),客户端和服务器根据Pre_master_secret、client_random、Server_random,最终导出加密和MAC密钥组。
6、客户端将所有握手消息的MAc值发到服务器,完成握手过程。
7、服务器将所有握手消息的MAc值发到客户端,完成握手过程。
8、双方利用第四步所导出的密钥进行秘密通讯,交换数据。
9、发出close_notify警告消息来关闭SSL通讯连接,这样可以防止攻击者在其下的传输层上伪造TCP_FIN来进行截断攻击。
在交换了Pre_master_secret之后,由于每一种与SSL相关的实现都要将其扩展成其所专用的密钥,这时就需要使用一个密钥导出函数来实现这种扩展,而这个密钥导出函数(KDF)使用的是伪随机函数(PRF),其中的关键就是将Pre_master_secret扩展成master_secret,这是通过将KDF作用于Pre_master_secret、Client_random、Server_random来实现的:
Master_secret=PRF(Pre_master_secretMaster_secret,Client_random+Server_random)
然后,使用Master_secret为参数的PRF来生成各种加密和MAC算法所需要的密钥组:
Key_block=PRF(Master_sec ret,“keyexpansion”Server_random+Client_random)
二、SSL客户端认证的基本思想
通过以上分析,可知SSL既可以实现数据的加密通讯,又可以在PKl的基础上使用数字签名技术来实现对客户端和服务器端的身份认证。SSL中数字签名可以使用RSA和DSA,一般情况下DSA的签名速度会快一些,但验证时比RSA慢很多。
SSL连接通常情况下仅对服务器端进行认证,但如果服务器要限制某些授权用户才能使用的服务时,它也可以提供对客户端进行认证的机制。基本思想就是让客户端用其私钥对一些内容签名来实现的。通过供服务器发送一条CertificateRequest消息来进行初始化,客户端回应Certificate和Ce rtificateVerify。其中CertificateVerify包含了客户端用其私钥对握手消息的签名,服务器端用Certificate中的公钥证书进行验证。
如果客户端没有合适的证书,会发送一条不包含证书的Certificate消息,服务器端可以设置为让应用层来进行身份认证,或者发送一条警告消息handshake_failure,结束此次连接。
SSL客户端认证与动态口令身份认证
一、动态口令身份认证
动态口令身份认证是动态身份认证的一种,是现在研究较多并且技术相对比较成熟的认证方式,动态口令身份认证涉及的相关技术有Hash、数字签名等,其最基本的原理就是对由一个动态因子所产生的动态数据进行数字签名或Hash生成一个动态的应答。它克服了静态口令技术所固有的许多缺点,特别是对于分布式身份认证来说具有非常高的安全性。
动态口令身份认证的实现方式主要有挑战/应答方式和时间同步方式。作为动态的身份认证方式,必须有一个动态因子:对挑战/应答方式来说就是由触发事件(如登录)所产生的随机数一一挑战码:对时间同步方式来说就是时间的变化。
二、SSL客户端认证与基于数字签名的动态口令认证
1、动态口令认证的必要性
从以上分析,可以看出:基于PKI的动态口令认证和SSL的客户端认证都是通过数字签名来实现客户端的验证的,形式上也大同小异,但它们的区别还是明显的:
整个SSL握手的开销很大,往返次数多,流程复杂,特别是服务器端的系统资源要求很高。如果仅仅为了进行客户端的认证而使用SSL是不适宜的。
相对动态口令认证的硬件实现方式(如令牌)来说,许多SSL是在服务器主机运行的,SSL进程的存储空间占用的是主机的主存储器,因此除非SSL的实现是在独立的硬件中,否则象mastersecret这样的信息就可能被攻击者获取,例如:在许多操作系统上,当产生内存错误时就会向磁盘输出一个核心映象(coreimage),该映象包含有当时进程的整个存储状态,因此能够读取这些文件的人就能获取相关的秘密信息。
对大多数的SSL实现方式来说,客户端认证仅仅证明用户终端(设备u)的身份,而动态口令认证更加关注的是你这个人的身份,它们是互相补充的。
SSL位于安全套接层,是一种应用层下的安全方案,而动态口令认证是一种应用层的身份认证方式,它们在不同的层次上提供安全认证。
动态口令认证和SSL是相辅相成、密切相关的
任何一种身份认证系统仅仅是为身份认证而设计的,并不负责对内容的保密。特别是对于分布式的身份认证系统来说,没有加密系统的保护都是极不安全的,甚至是毫无意义的。攻击者只需窃听就可获取所需的信息,根本无需认证。反之,加密数据确可以很好的加强身份认证系统的安全性。
SSL就是一种很好的分布式安全解决方式,它不仅提供对信息流的保密,也提供单向或双向的身份认证。SSL也许是应用最广泛的安全协议,它和HTTP相结合应用时,就成为各种安全性的网站所使用的HTTPS。
尽管SSL最常见的用途是保护web的安全,但因其位于传输层和应用层之间一一安全套接层,所以它也可以保护FTP、SMTP,Telnet等应用层协议;虽然SSL经常应用在TCP之上,但实际也可应用在UDP之上(如微软的STLP和无线应用论坛的wTLS其实都是SSL的变种,所以SSL实际上是一种相当通用的协议。
结束语:
一般的动态身份认证的实现方式都是采用——令牌的形式,随着动态身份令牌在硬件和设计上的不断提高,现在的安全系统(如网上银行)越来越多地采用身份令牌的方式进行身份的确认,并且硬件设备水平的发展提高,使得令牌本身就具有了计算、加密数据的功能。但由于部署成本、系统软件的支持和使用的便捷性方面的限制,其仍然处于早期的发展普及阶段,对于具体的项目架构情况,可以采用SSLL协议所提供的客户端认证的形式作为安全系统客户身份认证的有益补充来加强系统的安全性。
现代的身份认证技术正向智能化、密码化、多因素、大容量和快速响应方向发展。制约我国信息系统安全性提高的因素很多,缺乏高性能、低价位、适合中国国情的综合身份认证系统是一个重要因素。目前在身份认证方面较有特色的是以生物识别技术为基础的指纹识别仪,视网膜识别仪和面像识别仪以及基于公开密钥体制的CA身份认证技术、动态认证令牌等。其中由于动态口令身份认证技术相对投资少,使用方便可靠而逐渐成为身份认证技术的主流。
在动态口令身份认证的形式中,除了一般意义上基于数字签名的动态身份认证外,著名的保障通信数据安全的SSL协议同样也为我们提供了动态的客户身份验证机制
SSL (secure SocKet Layer)客户端认证
一、SSL协议及其密钥导出分析
SSL协议在结构上分为两个层次。底层为记录层协议(recorder protocol),实现对数据的加密,封装各种高层协议,高层由四个并行的协议构成:握手协议(handshake protocol)、密码格式变换协议(change cipher protocol)、报警协议(alertprotocol)、应用数据协议(application dataprotocol)。SSL协议基本流程如下:
2、客户端将它所支持的算法列表和一个用来产生密钥的随机数发送给服务器。
3、服务器选中的加密算法、另一个随机数、服务器证书。
4、客户端对服务器证书验证,并产生称为Pre_master_secret的随机密码串,使用服务器公钥对其加密后,发回服务器。
5、通过密钥导出函数(KDF),客户端和服务器根据Pre_master_secret、client_random、Server_random,最终导出加密和MAC密钥组。
6、客户端将所有握手消息的MAc值发到服务器,完成握手过程。
7、服务器将所有握手消息的MAc值发到客户端,完成握手过程。
8、双方利用第四步所导出的密钥进行秘密通讯,交换数据。
9、发出close_notify警告消息来关闭SSL通讯连接,这样可以防止攻击者在其下的传输层上伪造TCP_FIN来进行截断攻击。
在交换了Pre_master_secret之后,由于每一种与SSL相关的实现都要将其扩展成其所专用的密钥,这时就需要使用一个密钥导出函数来实现这种扩展,而这个密钥导出函数(KDF)使用的是伪随机函数(PRF),其中的关键就是将Pre_master_secret扩展成master_secret,这是通过将KDF作用于Pre_master_secret、Client_random、Server_random来实现的:
Master_secret=PRF(Pre_master_secretMaster_secret,Client_random+Server_random)
然后,使用Master_secret为参数的PRF来生成各种加密和MAC算法所需要的密钥组:
Key_block=PRF(Master_sec ret,“keyexpansion”Server_random+Client_random)
二、SSL客户端认证的基本思想
通过以上分析,可知SSL既可以实现数据的加密通讯,又可以在PKl的基础上使用数字签名技术来实现对客户端和服务器端的身份认证。SSL中数字签名可以使用RSA和DSA,一般情况下DSA的签名速度会快一些,但验证时比RSA慢很多。
SSL连接通常情况下仅对服务器端进行认证,但如果服务器要限制某些授权用户才能使用的服务时,它也可以提供对客户端进行认证的机制。基本思想就是让客户端用其私钥对一些内容签名来实现的。通过供服务器发送一条CertificateRequest消息来进行初始化,客户端回应Certificate和Ce rtificateVerify。其中CertificateVerify包含了客户端用其私钥对握手消息的签名,服务器端用Certificate中的公钥证书进行验证。
如果客户端没有合适的证书,会发送一条不包含证书的Certificate消息,服务器端可以设置为让应用层来进行身份认证,或者发送一条警告消息handshake_failure,结束此次连接。
SSL客户端认证与动态口令身份认证
一、动态口令身份认证
动态口令身份认证是动态身份认证的一种,是现在研究较多并且技术相对比较成熟的认证方式,动态口令身份认证涉及的相关技术有Hash、数字签名等,其最基本的原理就是对由一个动态因子所产生的动态数据进行数字签名或Hash生成一个动态的应答。它克服了静态口令技术所固有的许多缺点,特别是对于分布式身份认证来说具有非常高的安全性。
动态口令身份认证的实现方式主要有挑战/应答方式和时间同步方式。作为动态的身份认证方式,必须有一个动态因子:对挑战/应答方式来说就是由触发事件(如登录)所产生的随机数一一挑战码:对时间同步方式来说就是时间的变化。
二、SSL客户端认证与基于数字签名的动态口令认证
1、动态口令认证的必要性
从以上分析,可以看出:基于PKI的动态口令认证和SSL的客户端认证都是通过数字签名来实现客户端的验证的,形式上也大同小异,但它们的区别还是明显的:
整个SSL握手的开销很大,往返次数多,流程复杂,特别是服务器端的系统资源要求很高。如果仅仅为了进行客户端的认证而使用SSL是不适宜的。
相对动态口令认证的硬件实现方式(如令牌)来说,许多SSL是在服务器主机运行的,SSL进程的存储空间占用的是主机的主存储器,因此除非SSL的实现是在独立的硬件中,否则象mastersecret这样的信息就可能被攻击者获取,例如:在许多操作系统上,当产生内存错误时就会向磁盘输出一个核心映象(coreimage),该映象包含有当时进程的整个存储状态,因此能够读取这些文件的人就能获取相关的秘密信息。
对大多数的SSL实现方式来说,客户端认证仅仅证明用户终端(设备u)的身份,而动态口令认证更加关注的是你这个人的身份,它们是互相补充的。
SSL位于安全套接层,是一种应用层下的安全方案,而动态口令认证是一种应用层的身份认证方式,它们在不同的层次上提供安全认证。
动态口令认证和SSL是相辅相成、密切相关的
任何一种身份认证系统仅仅是为身份认证而设计的,并不负责对内容的保密。特别是对于分布式的身份认证系统来说,没有加密系统的保护都是极不安全的,甚至是毫无意义的。攻击者只需窃听就可获取所需的信息,根本无需认证。反之,加密数据确可以很好的加强身份认证系统的安全性。
SSL就是一种很好的分布式安全解决方式,它不仅提供对信息流的保密,也提供单向或双向的身份认证。SSL也许是应用最广泛的安全协议,它和HTTP相结合应用时,就成为各种安全性的网站所使用的HTTPS。
尽管SSL最常见的用途是保护web的安全,但因其位于传输层和应用层之间一一安全套接层,所以它也可以保护FTP、SMTP,Telnet等应用层协议;虽然SSL经常应用在TCP之上,但实际也可应用在UDP之上(如微软的STLP和无线应用论坛的wTLS其实都是SSL的变种,所以SSL实际上是一种相当通用的协议。
结束语:
一般的动态身份认证的实现方式都是采用——令牌的形式,随着动态身份令牌在硬件和设计上的不断提高,现在的安全系统(如网上银行)越来越多地采用身份令牌的方式进行身份的确认,并且硬件设备水平的发展提高,使得令牌本身就具有了计算、加密数据的功能。但由于部署成本、系统软件的支持和使用的便捷性方面的限制,其仍然处于早期的发展普及阶段,对于具体的项目架构情况,可以采用SSLL协议所提供的客户端认证的形式作为安全系统客户身份认证的有益补充来加强系统的安全性。