一种基于SSL的“双密钥机制”认证密钥协商协议

时间:2022-05-08 03:22:06

一种基于SSL的“双密钥机制”认证密钥协商协议

摘要:为解决SSL协议在实际应用中存在的诸如加密密钥可能会被破解,更改密钥规范消息可能被拦截丢弃,不能抗抵赖等问题,引入Kerberos机制,隐藏重要参数,提出基于SSL的 “双密钥机制”认证密钥协商协议,并对其进行系统的安全性分析。

关键词:SSL协议;Kerberos机制;身份认证;密钥协商

中图分类号:TN918.1 文献标识码:A 文章编号:1007-9599 (2012) 21-0000-02

1 引言

SSL协议是如今已经广泛应用于Internet的网络安全方案,它以多种密码技术为基础,实现用户身份鉴别、数据加密传输、数据完整性校验等安全功能。正是由于SSL协议的重要性,在应用过程中存在的漏洞可能会被别有用心的攻击者利用,所以很有必要对SSL协议存在的不足进行分析并弥补。目前已有使用形式化分析方法如BAN逻辑、Kailar逻辑等分析SSL协议的文章[1],本文从加密密钥攻击,中间人攻击,不能抗抵赖等方面详细分析SSL协议,提出改进方案,设计基于SSL的“双密钥机制”认证密钥协商协议,弥补SSL协议的不足,提高其在实际工程应用中的网络安全性。

2 SSL协议漏洞

SSL协议处于TCP协议和上层应用协议之间,属于传输层安全机制。从结构上分为两层,底层为记录层协议,高层则由握手协议、密码规范变更协议、报警协议、应用数据协议4个并列协议构成。连接分为握手和数据传输两个阶段。握手阶段对服务器进行认证并协商加密密钥。密码规范变更协议指示发送端已切换至新协商好的密钥套件,之后发送的消息将使用那些密钥保护。报警协议为客户端与服务器间传递SSL的相关警告。

2.1 攻击加密密钥

在标准的SSL协议中,用于加密数据的会话密钥和MAC密钥都由预主密钥、客户端随机数、服务器端随机数三部分计算产生。双方随机数明文发送,预主密钥受服务器公钥保护,协议的安全性完全依赖于预主密钥。在服务器端公私钥均安全的情况下,还存在绕过主密钥和密钥块的生成,直接对密钥块的相关字节进行穷举的攻击。以SSL_RSA_EXPORT_WITH_RC4_40_MD5算法组为例,加密密钥是由密钥块中的5字节密钥和两个32字节随机数经MD5算法压缩产生。其中只有密钥块的5字节密钥未知,攻击者可以直接对5字节密钥进行穷举,计算加密密钥,利用Finished前4个字节判断密钥正确与否,穷尽量小于240,是可以实现的。

2.2 中间人攻击

实体在接收到更改密钥规范消息之前,发送的消息不进行加密或消息认证,接收到更改密钥规范消息之后,将当前的密钥套件替换为商定的密钥套件,此后记录层可以加密保护传输数据。然而,由于更改密钥规范消息未被保护,可能存在如下攻击。若密钥套件中只包含消息认证密钥而没有加密密钥。攻击者可以拦截并丢弃客户端的更改密钥规范消息,这样服务器不会更新密钥套件,记录层也不会进行加密或消息认证。余下协议继续进行,攻击者可以从客户端的Finished和会话数据中剥除记录层的消息认证字段,篡改会话数据,而接收端期望接收到的正是没有加密和消息认证字段的数据,故攻击不会被发现。

2.3 不能提供不可否认性

SSL 协议不能提供通信双方的不可否认性。对于电子商务、网银充值转帐、电力系统远程充电拉闸等应用来说,使用SSL可保证信息的真实性、完整性和保密性。但由于SSL 不对应用层的消息进行数字签名[2],因此不能提供交易的不可否认性,这是SSL 在实际应用中用的最大不足。

3 安全性增强机制

3.1 引入kerberos机制

本协议中引入Kerberos机制的思想,利用KDC密钥分发中心为客户端发放票据并分发对称密钥,之后使用该对称密钥来保护握手过程。

认证服务交换阶段:完成客户向KDC请求与TGS通信时使用的票据TGT,以及会话密钥的过程;授权服务交换阶段是客户向TGS请求与最终应用服务器进行通信所需要的票据和会话密钥的过程;经过客户/应用服务器交换阶段后,客户获得与应用服务器进行通信所需要的票据和会话密钥。整个协议交换过程结束,客户端和服务器之间共享加密密钥Ⅰ,之后就用加密密钥Ⅰ保护双方的握手流程,协商加密密钥Ⅱ。

3.2 隐藏重要参数

协议使用服务器公钥加密预主密钥,对称密钥Ⅰ加密n1,并对n2采取异或方式进行隐藏。客户端生成随机数n1后使用对称密钥Ⅰ加密发送给服务器,服务器解密得到n1,并生成随机数n2,将n1与n2异或的结果返给客户端,客户端利用本地存储的n1解出n2,至此n1与n2交换成功。随机数密文发送在很大程度上保护了主密钥、密钥块及加密密钥的安全,即使攻击者攻破预主密钥,在得不到随机数的情况下也算不出主密钥,即使攻破主密钥,也须要同时攻破n1,n2才能得到密钥块,即使破解密钥块,也要在得到随机数的情况下才能获得加密密钥,这就相当于赋予加密密钥三层防护,较SSL协议的安全性更进了一步。

3.3 改进Finished计算

对Finished值的计算方法进行改进,将Change Cipher Spec字段包含进Finished值的计算,计算过程为md5_hash:MD5(master_secret + pad2 + MD5(handshake_messages + Change cipher spec messages + Sender + master_secret + pad1))。将Change cipher spec消息包含进Finished的计算后,若发生“丢弃更改密钥规范消息”攻击,双方计算出的Finished消息将会不同,这时该攻击就会被发现,客户端与服务器端重新开始握手。

3.4 增加签名协议

数字签名算法复杂,运算时间长,如果对每个消息都要进行签名计算与验证的话,将会大大影响协议的效率。而且在真正应用时一般只对重要的操作签名验签,因此考虑在独立于SSL握手协议、记录协议的情况下增加SSL签名协议。SSL签名协议如文献[3]所述,用于处理需要进行数字签名的数据的信息传递、签名与验签。SSL签名协议在握手完成后传递应用数据时开始使用,弥补了SSL在对应用数据进行数字签名能力方面的不足,同时通过数字签名的校验也可以提高身份认证的能力。

4 基于SSL的“双密钥机制”认证密钥协商协议描述

客户端首先向KDC密钥分发中心申请与服务器通信的票据及其与服务器的共享对称密钥,申请成功后向服务器出示票据,服务器应答,若成功,则第一次身份认证通过,双方开始握手流程。客户端向服务器发送经共享密钥加密后的客户端随机数n1,服务器解密得到n1后将n1与n2异或后返回,其它密钥交换流程同SSL协议,但本协议Finished值的计算包含了change cipher spec,具体流程如图2所示:

客户端向KDC密钥分发中心申请票据及加密密钥的过程无须在每次通话都进行,只需初始通信时申请一次,之后设定时间节点,当距离上次通信时间大于此节点时,重新申请,否则直接利用之前分发的密钥保护参数即可。

5 结论

随着SSL协议的应用越来越广泛,人们对其安全性[4]的要求也越来越高。本文分析了SSL协议在实际应用时可能遭受的攻击,描述了完整的攻击思路,在此基础上设计了一套基于双密钥机制的认证密钥协商协议。在标准SSL协议的基础上引入Kerberos机制事先分发对称密钥,使客户端和服务器动态共享对称密钥;对双方随机数采用异或等方式隐藏;将更改密钥规范消息包含进Finished消息的计算。经安全性分析,协议弥补了SSL在前述所受攻击方面的漏洞。本协议在保证信息的真实性、完整性和保密性的基础上,引入SSL签名协议为应用数据提供了不可否认性。

参考文献:

[1]David Wagner, Bruce Schneier, "Analysis of the SSL 3.0 protocol", USENIX Workshop on Electronic Commerce, ACM.

[2]Yvo Desmedt Dr. Fiat–Shamir identification protocol and the Feige–Fiat–Shamir signature scheme[M]. Encyclopedia of Cryptography and Security. Springer, 2011:457-458.

[3]张峰岭.SSL数字签名协议[J].计算机工程,2003,29(7):37-40.

[4]Jonathan Katz,Philip MacKenzie, Gelareh Taban,Virgil Gligor. two-server password-only authenticated key exchange[J].Journal of Computer and System Sciences, March 2012, 78(2): 651-669.

[作者简介]

郜盼盼(1989-),女,北京邮电大学,硕士,研究方向为无线传感器网络的安全机制等;贾庆轩(1964-),男,教授,北京邮电大学,博导。

基金项目:国家973项目(2012cb72440)资助课题;国家自然科学基金(61170268)资助项目。

上一篇:关于中职photoshop课程教学改革的分析与思考 下一篇:基于Proteus和Keil软件虚拟仿真技术在单片机系...