APP下载

安全的移动终端数字签名方案

2015-11-26赵长江

中国科技信息 2015年22期
关键词:数字签名私钥密钥

王 芸 赵长江

安全的移动终端数字签名方案

王 芸 赵长江

为了确保移动终端的信息安全,提出一种移动终端上的应用对电子公文进行数字签名的方法,用户签名私钥托管在签名服务器,由签名服务器保证用户签名私钥的安全,用户数字签名时把签名内容的HASH值发送到签名服务器,服务器完成签名后把签名返回终端,有效地解决了移动终端在签名密钥不能保证安全的情况下,实现了安全数字签名。

智能移动终端是一种多功能设备,具有“小巧轻便”及“通讯便捷”的特点,不仅具有通讯功能,而且在安装应用程序后能够进行电子商务,移动办公等业务。小巧轻便的特点使得移动设备一般不去执行大量的复杂运算,设备外设接口简单,一般是通过无线方式与其他设备进行交互。随着智能移动终端越来越多的参与各项网络应用,针对移动应用的安全攻击越来越多,许多恶意应用能够窃取用户存储在终端上的私有数据,攻击终端与服务器的通信。

在自动化办公中,如何保证电子公文的真实性、完整性、可靠性和不可抵赖性是系统亟待解决的问题。为了解决上述问题,传统上采用基于数字证书的公钥密码(Public Key Infrastructure,简称 PKI) 系统通过数字签名技术来保障电子文档的内容安全。在使用数字签名时需要用到私钥,为了保证私钥的安全,一般采用 USB 密码钥匙( USB key)作为客户端装置来存储用户私钥,对电子文档进行数字签名。

在实际应用中,使用USB 密码钥匙需要主机拥有USB 接口,这阻碍了USB 密码钥匙在移动终端设备上的广泛应用。 虽然目前出现了带有蓝牙接口或者音频接口的USB 密码钥匙, 但上述设备仍存在如下缺点 :由于蓝牙协议的开放性,无法保证蓝牙 USB 密码钥匙设备与主机通讯的安全性;带音频接口的 USB 密码钥匙设备,无法解决不同移动终端之间音频接口的兼容性问题。

本文提供一种移动终端上的应用对电子公文进行数字签名的方法,用户签名私钥托管在签名服务器,由签名服务器保证用户签名私钥的安全,用户数字签名时把签名内容的HASH值发送到签名服务器,签名服务器完成数字签名后把签名返回给用户,从而实现数字签名。

系统设计

本文设计的系统由移动终端,签名服务器和KMC服务器密码机组成。系统中用户,签名服务器和KMC服务器密码机拥有CA颁发的证书和私钥,签名服务器负责管理用户的签名私钥,系统所有的密钥保存在KMC服务器密码机中,密码机只能和签名服务器进行通信。用户可以从网络上下载证书和查询证书状态,用户移动终端软件提供人机接口,接收用户输入的信息,终端应用需要进行数字签名时,把待签名信息的Hash值和用户的身份信息封装在一起构成数字签名请求消息,通过短信或者网络通信发送到签名服务器,服务器对用户请求进行验证,验证通过后调用KMC服务器密码机,使用用户私钥进行数字签名,然后把签名结果返回给用户,完成数字签名过程。

图1 移动终端安全签名系统结构图

系统注册流程

用户在使用移动终端数字签名系统前需要在签名服务器注册该移动终端,确保只有合法的用户才能使用已注册终端进行数字签名请求,注册流程描述如下。

1.用户首先在智能移动终端安装应用软件,应用软件启动后,检查是否有签名服务器的证书,KMC服务器密码机和用户的证书,如果没有证书则自动从预置网站下载证书。

2.注册请求:用户输入用户名UserId,私钥加密密钥Kp,用户手机号码,选择用户证书,然后向签名服务器请求手机验证码;

3.签名服务器接收到用户的手机验证码请求后,根据用户输入的用户名UserId,手机号码与已登记信息比对,如果用户名已存在,说明用户已经注册过,这时手机号必须为该用户已注册过的手机号码,如果用户名不存在,说明是新注册用户,手机号必须为新的号码。

4.签名服务器确认成功后发送短信验证码到用户手机,并保存验证码。

5.用户接收到短信验证码后输入该短信验证码到指定位置,移动终端使用KMC服务器密码机的公钥加密用户证书ID号,私钥加密密钥,当前时间T,表示如下:

EncKMC=PubKmc(用户证书ID Uc,私钥加密密钥Kp,时间T)。

6.系统发送注册请求到服务器,内容包括:用户名,手机号码,移动终端IMEI号,短信验证码,EncKMC,以上内容使用服务器证书生成数字信封进行保护:

随机生成密钥K,利用K使用对称加密算法(比如AES)对注册请求进行加密,表示如下:

EncK(用户名UserId,手机号,终端IMEI号,HASH(用户名UserId,手机号,终端IMEI号,短信验证码,PubKmc(用户证书序列号Uc,私钥加密密钥Kp,时间T))。

然后利用服务器证书里面的公钥PubServ对密钥K进行加密,表示如下:

PubServ(K)。

以上密码结果使用符合PKCS语法的数字信封格式进行封装。

7. 服务器接收注册请求,首先利用私钥解密数字信封,验证短信验证码是否正确,如果不一样说明用户信息有误,返回出错结果。8. 验证通过后,签名服务器把PubKmc(用户证书序列号Uc,私钥加密密钥Kp,时间T)提交到KMC服务器密码机。

9. KMC服务器密码机接收服务器提交的信息,使用它的私钥进行解密,获得用户证书序列号Uc,私钥加密密钥Kp,时间T,首先检查检查当前时间与时间T的差别,如果超出允许范围,则拒绝接受,返回错误。然后根据用户证书序列号获取用户证书和加密保存的用户私钥,利用Kp解密用户私钥,与用户证书进行匹配验证,如果匹配成功则表明用户拥有正确的加密密钥,证明用户的身份是真实的,返回成功消息,否则返回失败消息。

10.根据KMC服务器密码机返回的信息,如果成功则返回成功消息,使用密钥K进行加密:

ENCK(UserId,成功信息,Hash(成功信息,短信验证码))

否则返回失败消息。同时签名服务器存储用户名UserId,手机号,终端IMEI,短信验证码,用于后面的验证。

11. 用户接收服务器返回的消息,使用密钥K解密数据,验证Hash值,判断注册是否成功。若成功,终端计算HA1=HASH(手机号,短信验证码)作为终端通行证码保存到移动终端,无需保存手机号,加密密钥和短信验证码等敏感信息。

只有注册过的终端才能连接到服务器进行数据通信,同一个用户可以注册多个终端,需要保证用户名和密码一致。

数字签名流程

用户需要数字签名时,可以通过短信或者网络与签名服务器通信,申请数字签名,流程如图2所示, 具体流程如下。

移动终端首先获取保存在本地的HA1,获取终端的IMEI号码, 计算出待签名电子文档M的Hash值,然后提示用户输入私钥加密密钥Kp,签名请求消息使用KMC服务器密码机的公钥生成数字信封进行保护。表示如下:

PEncKmc=(PubKmc(K), EncK(Hash(M), 用户证书序列号Uc,Kp,T)),数字信封技术可确保用户的私钥加密密钥的安全。

图2 数字签名申请流程

最终的数字签名申请消息为:

SessionId,UserId,IMEI,PEncKmc, Hash(上述消息,HA1)

其中SessionId为会话ID, UserId为注册时的用户名。把签名申请消息发送到签名服务器。

签名服务器接收用户的请求,首先根据UserId,IMEI获取用户的信息包括手机号码,短信验证码等,计算HA11=HASH(手机号,短信验证码),计算Hash (SessionId,UserId,IMEI,PubKmc,HA11) 与用户发送过来的数据进行比较,如果一致证明用户终端是已注册过的可信终端。

然后签名服务器转发PEncKmc =(PubKmc(K),EncK(Hash(M), 用户证书序列号Uc,Kp,T)) 到KMC服务器密码机。

KMC服务器密码机利用它的私钥解密数字信封,得到Hash(M), 用户证书序列号Uc,Kp,时间T。首先检查检查当前时间与时间T的差别,如果超出允许范围,则拒绝接受,返回错误。然后根据用户证书序列号获取加密保存的用户私钥,利用Kp解密用户私钥,利用用户的私钥加密Hash(M),作为M的数字签名返回用户,否则返回失败消息。返回的消息如下:

SessionId,UserId,Sigpri(Hash(M))

用户接收服务器的消息,判断是否请求成功,如果成功则利用用户的证书验证数字签名是否正确,如果正确则表示本次数字签名申请成功,把Sigpri(Hash(M))提交给应用软件,否则报告用户出错信息。

利用密码技术,数字证书和短信相结合实现了移动终端上的一种安全的数字签名方法,用户的签名私钥加密后托管在服务器密码机里面,只有用户才能调用该私钥进行加密运算,在移动终端上只需执行少量运算,适用于各类移动终端。同时基于移动终端的私有属性和安全的认证协议提供了一种安全便捷的认证技术,使用户可以从远程通过移动终端请求数字签名,操作过程安全便捷。

3.安全性分析

用户私钥加密后托管在KMC服务器密码机内,只有用户知道加密密钥,数字签名运算在KMC服务器密码机内进行,服务器密码机确保私钥不能被导出,保证了私钥的安全。

用户请求数字签名只能通过已注册的终端进行,基于移动终端的私有属性,利用密码技术把用户的手机号码,移动终端IMEI号,短信验证码,密码进行绑定,实现对移动终端应用的身份认证,用户不仅要提供正确的登录口令,同时所用设备也必须是在系统注册过的,这种绑定可以确保即使用户登录密码或设备丢失,只要不是二者同时被窃,都可以保证用户端的安全。

数字签名申请消息使用KMC服务器密码机的公钥进行保护,确保消息只有KMC服务器密码机才能解密,保证了申请消息的安全。

结语

移动终端开展电子政务应用需要提供数字签名服务,但是目前的移动终端缺乏提供存储数字签名私钥的安全条件,私钥存放在移动终端有可能被黑客窃取。本文设计了一种智能移动终端实现数字签名的方法,签名服务器负责托管用户的签名私钥,系统所有密钥加密后保存在KMC服务器密码机中,用户私钥的加密密钥由用户自己掌握,密码机只能和签名服务器进行通信。用户可以从网络上下载证书和查询证书状态,用户移动终端软件提供人机接口,接收用户输入的信息,终端应用需要进行数字签名时,把待签名信息的Hash值和用户的身份信息封装在一起构成数字签名请求消息,通过短信或者网络通信发送到签名服务器,服务器对用户请求进行验证,验证通过后调用KMC服务器密码机,使用用户私钥进行数字签名,然后把签名结果返回给用户,完成数字签名过程。用户请求数字签名时,只需要发送待签名文档的Hash值和用户的身份认证信息就可以,对移动终端性能要求少,解决方案适应性好。

王 芸1赵长江2

1.中国联通青岛分公司2.青岛微智慧信息技术有限公司

王芸,1975年出生,女,1997年毕业于山东工业大学,研究方向为计算机通信,从事交换与传输工作。

10.3969/j.issn.1001-8972.2015.07.001

猜你喜欢

数字签名私钥密钥
清扫机器人避障系统区块链私钥分片存储方法
比特币的安全性到底有多高
基于正交拉丁方理论的数字签名分组批量验证
幻中邂逅之金色密钥
幻中邂逅之金色密钥
Spatially defined single-cell transcriptional profiling characterizes diverse chondrocyte subtypes and nucleus pulposus progenitors in human intervertebral discs
交通运输行业数字签名系统的设计与实现分析
密码系统中密钥的状态与保护*
浅析计算机安全防护中数字签名技术的应用
TPM 2.0密钥迁移协议研究