基于CSK技术的数字签名系统设计

2013-08-20 01:54冯福伟李瑛杜丽萍赵桂芬
网络安全技术与应用 2013年5期
关键词:数字签名密钥加密

冯福伟 李瑛 杜丽萍 赵桂芬

1北京市科学技术情报研究所 北京 100044

2网络密码认证技术北京市重点实验室 北京 100044

0 前言

签名和对签名的识别是我们日常社会生活和经济交易往来中的一个重要环节,如银行支票、采购合同、契约和协议等,都涉及到签名。随着信息技术和网络的飞速发展,人类开始进入无纸化时代,越来越多的企业开始通过网络来完成各种交易,在网络给我们带来便利性的同时,安全隐患也随之而来。如何保障信息的保密性、交易者身份的确定性、信息的不可否认性和不可修改性是网络信息交换中需要考虑的重要问题。

数字签名作为一项安全技术,在保证数据的完整性、私密性和不可抵赖性方面起着重要的作用。然而,当前存在的许多数字签名系统都是基于传统的 PKI密码体系,过于复杂,效率低下,并且由于采用了非对称算法,速度慢,并存在一定程度的安全缺陷。本文设计开发的数字签名系统,提出使用先进的组合对称密钥技术来构建,与传统方法相比,具有模型清晰,密钥管理简单,安全性强,速度快,效率高的特点。

1 组合对称密钥技术

组合对称密钥技术基于组合密钥的思想,结合使用对称算法,不仅能够实现密钥的一次一变,而且运算速度更快。密钥种子是由硬件设备随机数生成器或是软件系统随机数生成算法所产生的一组随机数序列,其存储在硬件设备的安全芯片内。在实际应用中,采用组合密钥的思想,以时间和随机数因子为参数,从密钥种子中动态生成每次加密和解密数据所需要的密钥;同时采用对称算法加解密数据,不像非对称算法那样是基于复杂的数学模型和巨大的代数结构,因而具有运算速度快的特点。

1.1 密钥种子结构

密钥种子是一组随机数序列,如果将密钥种子的每一个字节当成一个矩阵元素,则密钥种子从逻辑上看就是一个M×N阶的矩阵,可将其划分为多个子矩阵,并可分成多个组,如时间的年子矩阵组、月子矩阵组、日子矩阵组、时子矩阵组、分子矩阵组,以及多个随机数子矩阵组。若用 KM×N矩阵表示密钥种子(假设其中的M=148,N=16),则其矩阵结构可表示如下:

其中Y10×16为年子矩阵组(10表示密钥种子的有效年限),M12×16为月子矩阵组,D31×16为日子矩阵组,H24×16为时子矩阵组,F60×16分子矩阵组,R11×16为随机数子矩阵组,每个子矩阵都是多个J1×16行子矩阵的组合体。

1.2 密钥生成策略

密钥的生成基于密钥种子,每次生成密钥时,首先以时间和随机数因子为参数,使用组合密钥算法,从年子矩阵组、月子矩阵组、日子矩阵组、时子矩阵组、分子矩阵组,以及随机数子矩阵组中产生种子矩阵,然后将获得的种子矩阵通过控制函数运算后,即可形成密钥。由于每次系统的时间和生成的随机数都不相同,所以每次产生的密钥都不一样,实现了密钥的不可预测性。

1.3 密钥安全性

密钥种子是在硬件设备内部生成并存储在安全芯片内的,使用时不出芯片,实现了硬件级的安全。数字签名协议、组合密钥算法、对称加密算法等也都是灌入在芯片内的,每次加解密数据时都在芯片内部执行,安全性高。

2 数字签名系统设计

2.1 系统网络结构

系统的物理网络组成部分有用户终端、通信网络、防火墙、Web服务器、签名验证服务器、数据库服务器。其中,用户终端完成数字签名;通信网络实现数据传输;防火墙实现内外网的分隔,提高安全性;Web服务器实现数据报文的转发;签名验证服务器完成签名的验证操作;数据库服务器存储各种数据信息。系统的总体网络拓扑结构如图1所示。

图1 系统网络拓扑图

2.2 系统组成设计

本系统由用户端系统、数据转发Web端系统、签名验证服务端系统、密钥种子统一管理系统四个部分组成。

用户端系统:用户设备端上配有安全芯片,安全芯片中灌有安全协议,包含有数字签名协议和加密传输协议两部分,同时保存有密钥种子数据。当执行数字签名操作时,首先用户设备端获取服务器时间,并调用安全芯片内的安全协议接口,生成数字签名值,然后将信息加密后提交给服务器,并接收服务器端返回的结果。

数据转发Web端系统:完成用户设备端与签名验证服务端之间数据报文的转发。

签名验证服务端系统:系统服务端基于Linux平台,采用MySQL数据库管理系统,使用支持PCI卡槽接口的加密卡,加密卡内灌有数字签名协议和加密传输协议。服务端系统实现与Web服务器、密钥种子数据库和日记数据库之间的数据通信;完成对用户设备端数字签名的验证功能;定时对密钥种子数据库进行备份,并能够在密钥种子数据库出现异常时完成密钥种子库的恢复;实时记录系统运行时的各种状态信息,实现当签名验证系统出现异常时,系统管理员可快速定位问题并修复系统。

密钥种子统一管理系统:通过密钥种子统一管理系统实现对密钥种子的维护,用户设备端的安全芯片和密钥种子数据库服务器共同维护同一组密钥种子,密钥从密钥种子中动态产生。分发密钥种子时,首先启动密钥种子统一管理系统,初始化连接安全芯片和密钥种子数据库服务器,密钥种子在安全芯片内部由硬件随机数发生器生成,加密后存储在安全芯片内部,同时将加密后的密钥种子同步到密钥种子数据库服务器中。更新密钥种子时,同样经由密钥种子统一管理系统向安全芯片发出更新密钥种子指令,指示安全芯片重新生成新的密钥种子并替换旧的密钥种子,并将新生成的密钥种子加密后同步更新到远程密钥种子数据库服务器中。若要删除密钥种子,则仅需通过密钥种子统一管理系统删除密钥种子数据库服务器中对应 ID号的密钥种子数据记录,并设置标识为失效状态。

2.3 集中式数字签名及验证

集中式数字签名及验证模式,其在用户设备端上进行数字签名,在签名验证服务器上完成对签名的验证,并保存数字签名相关的信息。集中式数字签名及验证流程如下。

用户设备端:1)向Web服务器发送请求获取当前的系统时间;2)将获得的系统时间、数据文件通过调用安全芯片接口传入芯片;3)在安全芯片内由硬件随机数生成器产生随机数;4)在安全芯片内利用组合密钥算法从密钥种子中产生本次使用的密钥;5)对数据文件使用摘要算法运算后获得数据文件的Hash值;6)使用对称加密算法对数据文件的Hash值进行加密,获得数字签名值;7)使用对称加密算法对数据文件加密生成密文;8)将参数信息、数字签名值、密文等内容加密后发送给Web服务器。

数据转发Web服务器:完成用户设备端与签名验证服务器之间数据报文的转发。

签名验证服务器:1)获取用户设备端的数据报文,并通过调用加密卡接口,将数据报文传入加密卡;2)在加密卡内解密数据报文;3)根据用户设备端ID号定位密钥种子,并利用组合密钥算法生成密钥;4)使用解密算法解密数据密文;5)对明文数据使用摘要算法运算后获取数据文件的Hash值;6)在加密卡内使用对称算法加密数据后获得本地端的数字签名值;7)将本地端的数字签名值和用户设备端的数字签名值做等值比较即可完成签名验证的工作。

在数字签名验证通过的情况下,签名验证服务器会将本次的文件密文、数字签名值、用户设备端 ID号、时间值、随机数等信息保存到数据库中,当以后某个用户需要查看文件内容时,可再次使用这些信息进行验签。

请求查看数据文件的具体流程如下。1)用户设备端向签名验证服务器发出查看文件内容的请求;2)签名验证服务器接收到请求后,要求对用户设备端的身份进行认证;3)用户设备端接收到反馈后开始向签名验证服务器发起身份认证请求;4)签名验证服务器对用户设备端进行身份认证处理,如果认证通过并且此用户具有查看文件内容的权限,则从数据库中对应的密钥种子中使用组合密钥算法生成密钥,并将文件密文解密后做摘要运算所获得的 Hash值、密钥和数字签名值等一起发送给加密卡,在卡内完成签名验证的操作;5)如果签名验证通过则签名验证服务器会将密钥和文件密文加密后发送给用户设备端;6)用户设备端将接收到的数据报文解密,并把密钥和密文通过调用安全芯片接口即可获得数据文件的明文。

2.4 端对端数字签名及验证

端对端数字签名及验证模式,其在用户设备端A上进行数字签名,在签名验证服务器上完成对A签名的验证,签名验证通过后会再次对该数据文件进行签名,然后将信息发送给用户设备端B,由用户设备端B完成对服务器数字签名的验证。端对端的数字签名及验证流程如下。

用户设备端A:1)向Web服务器发送请求获取当前的系统时间;2)将系统时间、数据文件通过调用接口传入芯片;3)在安全芯片内由硬件随机数生成器产生随机数;4)在安全芯片内利用组合密钥算法从密钥种子中产生本次使用的密钥;5)对数据文件使用摘要算法运算后获取数据文件的Hash值;6)使用对称加密算法对数据文件的Hash值进行加密获得数字签名值;7)使用对称加密算法对数据文件进行加密生成密文;8)将参数信息、数字签名值、密文等内容加密后发送给Web服务器。

数据转发Web服务器:完成用户设备端A、签名验证服务器以及用户设备端B之间数据报文的转发。

签名验证服务器:1)获取用户设备端A的数据报文,并通过调用加密卡接口,将数据报文传入加密卡;2)在加密卡内解密数据报文;3)根据用户设备端A的ID号定位密钥种子,并利用组合密钥算法生成密钥;4)在加密卡内使用解密算法解密数据密文;5)对明文数据使用摘要算法运算后获取数据文件的Hash值;6)在加密卡内使用对称算法加密数据后获得本地端的数字签名值;7)将本地端的数字签名值和用户设备端A的数字签名值做等值比较即可完成签名验证的工作。

在签名获得验证后,签名验证服务器:1)根据用户设备端B的ID号定位密钥种子,并利用组合密钥算法生成密钥;2)对明文数据使用摘要算法运算后获取数据文件的Hash值;3)使用对称加密算法对数据文件的Hash值进行加密,获得数字签名值;4)使用对称算法对数据文件进行加密生成密文;5)将参数信息、数字签名值、密文等内容加密后发送给Web服务器,由Web服务器转发给用户设备端B。

用户设备端 B:1)获取签名验证服务器的数据报文,并通过调用接口将数据报文传入芯片;2)在安全芯片内解密数据报文;3)在安全芯片内利用组合密钥算法生成密钥;4)在安全芯片内解密密文;5)对明文数据使用摘要算法运算后获取数据文件的Hash值;6)使用对称算法加密Hash值获得本端的数字签名值;7)将本地端的数字签名值和验证服务器端的数字签名值做等值比较即可完成签名验证的工作。

3 系统运行环境

数字签名系统运行于 Linux平台,Linux是一种自由和开放源码的类 Unix操作系统,支持多用户、多任务、多线程、安全可靠,具有强大的网络功能。本方案选择Linux平台还因为Linux易于安装和部署,管理和维护也十分方便。与Windows相比,Linux性能更加稳定,响应时间更快,安全和可靠性也更强。最大的特点是Linux系统开源,能够方便地对系统做各种防护,即使系统被非法入侵了,也能够很快地定位问题并加以修复。Linux系统源码开放,能够根据实际情况有针对性地对其做出调整和修改,从而实现软件性能最大程度的优化。

数字签名系统采用MySQL数据库管理系统,MySQL是一种开放源码的关系型数据库管理系统,具有支持多线程、高并发、多用户的特性。数据库服务器设计了两个数据库,分别是密钥种子数据库和签名验证日记信息数据库。密钥种子数据库中有三个表,分别是存放设备端用户信息和密钥种子信息的表,存放数字签名验证信息的表,存放密钥种子监控信息的表;签名验证日记信息数据库中有存放数字签名验证结果信息的表。

4 总结

本文所设计的数字签名系统,通过采用组合对称密钥技术,不仅能够保证数据的完整性、私密性、签名的不可抵赖性,而且可以有效解决传统的数字签名系统在构建时过于复杂、运行效率低下、密钥难以管理的问题。同时通过采用硬件加密技术,进一步提高了数据的安全性。

系统运行于Linux平台,使用MySQL数据库,安全、可靠、稳定,并且易于维护和管理。系统耦合度低,可方便地嵌入到现有的各种应用中,其支持规模化密钥管理的技术尤其适用于海量终端用户的环境。

[1]陈迪锋.浅谈 PKI网格安全技术及应用[J].科技与社会.2008.

[2]兰丽娜,刘辛越.电子商务安全体系研究[J].信息安全与通信保密.2007.

[3]王化群,徐名海,郭显久.几种无证书数字签名方案的安全性分析及改进[J].通信学报.2008.

[4]南湘浩.CPK 组合公钥体制(v7.0)[J].信息安全与通信保密.2012.

[5]邓辉舫,邓文,田文春,等.CPK 标识认证系统的设计及实现[J].计算机工程与设计.2008.

[6]张晓丰,樊启华,程红斌.密码算法研究[J].计算机技术与发展.2006.

[7]吴杰芳.两种密码学体制的研究与分析[J].科技资讯.2009.

[8]刘勇,陈宇,陈钟.对称密码算法的性能优化[J].北京大学学报(自然科学版).2008.

[9]李占才,王许书,涂序彦.RSA 快速硬件实现研究[J].计算机研究与发展.2001.

[10]陈燕.一种改进的快速 RSA密钥生成算法[J].重庆邮电大学学报(自然科学版).2011.

[11]李云飞,柳青,李彤,等.一种可有效并行的RSA算法的研究[J].计算机应用研究.2011.

[12]Sandra K.Johnson,Gerrit Huizenga,Badari Pulavarty(编著).Linux服务器性能调整.清华大学出版社.2009.

[13]简朝阳(编著).MySQL性能调优与架构设计.电子工业出版社.2009.

猜你喜欢
数字签名密钥加密
一种新型离散忆阻混沌系统及其图像加密应用
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
浅析计算机安全防护中数字签名技术的应用
一种基于熵的混沌加密小波变换水印算法
TPM 2.0密钥迁移协议研究
一种对称密钥的密钥管理方法及系统
加密与解密
基于数字签名的QR码水印认证系统
数字签名简述