当前位置:首页 期刊杂志

移动环境下相关密钥管理方案分析

时间:2024-06-01

李胜华

摘要:本文讨论了移动环境下的密钥管理问题,比较和分析了几种典型的移动密钥管理方案,对密钥的生成和分发过程进行了详细的对比。

关键词:移动环境;密钥管理;分布密钥;会话密钥;共享密钥

当前移动环境下的密钥管理主要有两种基本方式:一种是通过智能卡及人工分发的方式,实现移动终端与应用服务器之间的共享密钥与会话密钥的分配与管理;另一种是基于身份认证机制实现密钥的管理。下面介绍两个分别对应了这两种基本方式的移动环境密钥管理方案。

一、一个手机银行的密钥管理方案

该方案使用智能卡和人工分发的方式,实现手机客户端与银行之间的密钥管理。密钥管理系统是通过两个密钥组件生成主密钥并输出到两类卡片中,一类是用于卡片生产的个人化密钥卡(SAM),一类是系统所需的主机系统密钥卡(KMC)。系统的基本结构如图1所示。

图1手机银行密钥管理体系结构

整个密钥管理包括主密钥生成和分发、分布式密钥使用、会话密钥使用三个过程:

1.主密钥的生成过程

(1)两个安全负责人输人各自的密钥组件,密钥组件卡由PIN保护。

(2)密钥管理系统生成密钥管理卡(KMC),密钥管理卡由两张传输密钥卡(TKC)保护。密钥管理卡可将密钥传输给密钥组件(HSM)。两张传输密钥卡应由两位不同的安全负责人秘密保存。

(3)密钥管理系统生成安全存储组件卡(SAM)。

(4)可用密钥管理系统修改KCC, TKC,SAM的PIN(为安全起见,应尽快修改PIN)。

2.主密钥传输过程

(1)密钥管理卡(KMC )将被送到HSM。

(2)两个安全负责人将各自的传输密钥卡(TKC)送到HSM,并输入TKC的PIN。

(3)ISM自动读出两个传输密钥,并由此计算出KMC的传输密钥。

(4)HSM从KMC中读出主密钥(MK),并存储主密钥。

3.分布密钥使用

分布密钥,是手机银行客户与系统之间长期使用的数据加密密钥。分布密钥方法中,包含一个存储在系统中的主密钥和在每一张卡上存放的多个分布密钥,分布密钥Kd是由主密钥Km和一个在卡上存在并且每一张卡上数据是唯一的一个数据Dd,通过加密算法计算得出,每一次卡片将数据M加密后得到密文{M } Kd,传输时附带上Dd,这样系统可得到密文{M } Kd及Dd。银行系统可计算出卡片的分布密钥,然后利用分布密钥解密数据。

4.会话密钥使用

会话密钥的使用与分布密钥大致相似,只不过用于产生会话密钥的数据不是固定的Dd,而是一个随机Random,这样就保证了每次的会话密钥各不相同。具体过程是:用卡上的密钥(主密钥或是分布密钥)与一个随机数Random,通过加密算法得出一个用于此次数据传输的会话密钥,将数据用会话密钥加密后连同随机数一起发出,系统收到后,使用随机数得到会话密钥,再用会话密钥解密数据。

二、Wassim Itani系统的密钥管理方案

在Wassim Itani 和Ayman I Kayssi提出的端到端安全解决方案中,采用的是基于身份认证的密钥管理方式,主要包括共享密钥存储、用户身份认证和会话密钥协商三部分内容。

1.共享密钥存储

共享密钥K_share是在移动终端和应用服务器中长期存储,用于会话密钥的加密,从而保证会话密钥安全交换的密钥,必需得到安全的存储。在服务器端的共享密钥存放在数据库中,可以通过相应的数据库安全管理系统和其它安全策略保证其安全。移动终端的共享密钥通过两种方法保证其安全:一是加密后存放在Keys类,并且该Keys类被打包在JAR文件中;二是通过混淆器混淆JAR文件来阻止对代码的反汇编,从而阻止获取加密后的共享密钥。移动终端对共享密钥的加密处理如图2所示,它使用客户的64位密码Pincode填充它本身来形成一个128位的加密密钥,用于加密共享密钥K_share。

图2共享密钥加密过程

2.用户身份认证

用户身份认证过程如图3所示,首先移动终端向应用服务器发送认证信息,这些信息包括用户ID“userid”、时间戳“timeStamp”、随机数randomNumber以及摘要值H{userid,timeStamp,randomNumber,pincode},该摘要值是使用SHA-1摘要算法,以userid、timeStamp、randomNumber以及用个人识别码后生成的pincode作为输入信息生成。

图3系统认证过程

应用服务器的AuthServlet收到认证信息后,先请求用户产生一个HttpSession对象,将userID存放在会话变量中,然后根据用户ID“userid”,利用数据库访问接口,从用户信息数据库中取出用户的pincode及上次登录系统的时间戳timeStamp,通过将取出的timeStamp与收到的用户信息中的timeStamp比较,可以防止重放攻击;最后,将数据库中取出的pincode和从客户端接收的userid、timeStamp、randomNumber输入,同样使用SHA-1算法生成摘要值,并将该摘要与认证信息中的摘要值进行对比,相同则认证成功,不同则说明认证失败。

3.会话密钥协商

当移动终端向服务器端的InitServlet发出会话密钥的协商请求后,InitServlet首先获取该用户的HttpSession对象,从Session会话对象中获取认证信息,确保用户是已经通过认证。

InitServlet生成两个128位的加/解密会话密钥对——Session Keys,其中每个密钥负责一个方向上的数据安全传输,也就是说:一个密钥用于在手机客户端加密数据,在服务器端解密数据;另外一个密钥用于在服务器端加密数据,在手机客户端解密数据。会话密钥对存放在Session会话变量中,然后对会话密钥进行加密处理,所使用的128位加密密钥是由64位用户密码Pincode填补64位共享密钥K_share组成。(其中Pincode和K_share是以userID为参数从数据中获取的)加密处理后的会话密钥对Session Keys以HTTP应答的形式发送给手机客户端。

移动终端在接收到服务器端发给的加密会话密钥后,需要进行解密处理:首先是根据用户的密码Pincode解密出存放在JAR文件的Keys类中的共享密钥K_share,然后使用64位Pincode填补64位K_share组成的128位密钥,解密出会话密钥对Session Keys。

三、结论

在资源受限的移动计算环境中,往往使用对称加密技术来保证通信的安全。因此,密钥管理所关心的主要是会话密钥的产生及安全分发问题。上述两种密钥管理方案安全性高,使用比较灵活,但实现复杂,成本较高,只适用于移动银行、移动证券等安全性要求较高的应用领域。

参考文献:

[1]中国移动通信公司.移动商务安全报告,2003.

[2] Manish Verma.XML security,2003.

[3] Bilal Siddiqui.Exploring XML Encry- ption,2002.

[4] Michael Juntao Yuan. J2ME 移动应用程序开发.北京:清华大学出版社,2004.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!