引 言
金融安全支付系统是专门针对金融领域应用需求,实现小型化、便捷、安全的自助交易的软硬件平台,能够为多种应用提供高速安全服务,解决目前交易信息在传输过程中存在的各种安全问题,实现金融信息的安全交易。基于该嵌入式系统的网络安全加密系统就是为了保证客户端的某些重要的数据信息在与银行服务器通信过程中能够安全地传输。
1 智能卡基础
1.1 内部结构及特点
智能卡又称为Ic卡,英文名称为smart card或Integrated CircuitCard。根据卡中使用的集成电路的不同可以分为存储器卡、逻辑加密卡、CPU卡和射频卡。由于CPU卡中集成了微处理器CPU、存储单元(包括随机存储器RAM、程序存储器ROM(FLASH)、用户数据存储器EEPR0M)以及芯片操作系统COS(chipoperating system),从而构成一个完整的计算机系统。
它不仅具有数据存储功能,同时还具有命令处理和数据安全保护等功能,因此安全性大大增强,从而得到了广泛的应用,成为智能卡中的主流产品?。本系统所采用的CPU卡,其芯片内核为ASIC硬件实现,安全度非常高,符合ISO/IEC 7816智能卡标准,符合《中国金融集成电路(Ic)卡规范》。其内部结构(如图1所示),智能卡具有以下特点 :① 自身的物理安全机制和COS的安全体系为CPU卡提供了双重的安全保证;② 自带操作系统的CPU卡对计算机网络系统要求较低,可实现脱机操作;③ 可实现真正意义上的一卡多应用,每个应用之间相互独立,并受控于各自的密钥管理系统;④ 存储容量大,可提供1K~64K字节的数据存储空间;⑤使用寿命长,数据存储时间可达l0年以上。
1.2 主要功能
智能卡具有以下功能:①身份认证:对持卡人、卡终端和卡片3方的合法身份做认证;②支付和结算工具:电子钱包和电子存折的支付手段,可避免携带大量现金和找零的不便,提高交易效率;③ 安全模块:使用相应的密钥实现加密、解密以及交易处理,从而完成与用户卡之间的安全认证;④数据载体:CPU卡可作为个人档案或重要数据的安全载体,数据可至少保存l0年以上。
1.3 工作原理
智能卡安全体系包括3部分:安全状态、安全属性以及安全机制。安全状态是指智能卡当前所处的安全级别,即当前安全状态寄存器的值。安全属性又称为访问权限,即在进行某种操作时要求安全状态寄存器的值是什么。安全机制从广义上说是卡片支持的各种安全模式,从狭义上说是安全状态实现转移所采用的方法和手段。一种安全状态通过上述安全机制转移到另一种状态,把该安全状态与某个安全属性相比较,如果一致,则表明能够执行该属性对应的命令;如果不一致,则相关命令不能被执行,从而达到了安全控制的目的 。这就是智能卡安全体系的基本工作原理。
智能卡主要是对由客户端发出的信息进行加密和对由服务器端传来的信息进行解密。该智能卡支持多种对称密码体制,它还存储着客户端主密钥和客户端ID号,通过它可以对文件传输过程中产生的各种敏感信息进行加密,对用户的身份进行认证,以保证信息的安全性和完整性。
在密钥管理方面,智能卡根据注入其中的客户端ID号,利用Diversify密钥分散算法生成客户端主密钥。在与密码服务器进行通信时,服务器取得其ID号,同样利用密钥分散算法生成客户端主密钥,再利用客户端主密钥加密附带工作密钥的签到回应报文传回客户端,客户端的智能卡解密得到工作密钥,利用工作密钥调用相应算法完成加解密及消息完整性验证“】。
2 设计原则
要设计一个网络安全加密系统,应该考虑以下几个方面:
(1)标准化、模块化设计原则。在产品软件和硬件的设计过程中,遵循模块化设计原则,各个功能模块相对独立,各模块之间界定清晰的接口界面。遵循标准化设计路线,遵循人民银行PBOC*规范(算法除外),采用标准的接口,提供标准化的安全服务;
(2)适应性、可扩展性原则。总体设计紧密结合实际应用,能够适应复杂应用环境及其通信线路、多种操作系统平台、Web服务平台、浏览器平台,支持各种流行的开发环境。另外,具有可扩展性,能够适应未来需求变化,能够应对安全威胁变化带来的新的安全风险,保障本系统在其整个生命周期的安全;
(3)合理的密钥管理。密钥的安全控制和管理是系统设计的关键,在保证系统安全的基础上,密钥管理体系的设计尽量简洁、实用;
(4)要在系统合适的地方对传输报文中的关键敏感字段进行加密保护。如果在低级的地方进行加密,就会因为过于相信底层的系统元素,而这些离用户层太远,即使被替换也不会引起用户的注意,这就引入了脆弱性;如果加密模块离用户太近,用户的频繁干预会很容易引入错误,不适合平常的使用。基于以上考虑,一个网络安全加密系统在保证安全的同时,还要保证系统的运行效率和易用性。所以本文设计的加密系统体现出以下原则 :
(1)易用性。无论客户端还是服务器端,用户都不用关心加密和解密操作,所有的加解密操作和用户身份认证操作都由安全模块来自动完成;
(2)安全性。采用多方面的安全机制,加密芯片自身具有身份认证和很强物理防分析机制,并且密钥的使用受用户口令保护。设置3级密钥管理体制,建立密钥管理中心,制定统一的安全管理策略,对全网密码设备的使用进行统一的安全监测和管理;
(3)系统的高效率。加密系统不占用太多的内存,尽量使用系统中的各种缓存,以保证系统的整体效率不受太大影响;
(4)对嵌入式操作系统的其它部分影响尽量小。加密系统不干扰操作系统其它部分的执行,安全模块独立。
3 实现方式
传统用户层实现方式中(如图2所示),安全模块放在用户层,在应用程序要写文件的时候,数据要从用户层的应用程序经过系统调用进入系统核心层,核心层需要将数据交给应用层的安全模块处理,安全模块将数据处理完毕后再经过系统调用进入系统核一tl,层,最后核心层将数据送到远程服务器。数据在用户层和核心层多次交换,应用程序也需要在核心空问和用户空问多次切换,在用户空问和核心空问均需要对数据进行缓存,这样必然使系统的效率降低,而且,运行在应用层的安全模块很容易受到威胁。比如运行在核心空间的进程可以没有任何限制地访问应用层的内存,从而也就可以访问安全模块的内存空问,导致机密信息泄漏。但是这样实现具有系统兼容性好,实现简单,对系统改动小的优点,可以非常容易地在不同的操作系统上移植。
我们所采用的核心层实现方式(如图3所示)将安全模块放到核心层实现,这样数据只需从应用程序所在的用户空间通过系统调用进入核心层,通过核心层的安全模块进行处理,也就没有了多个空问层次的切换,系统的效率得到很大的提高。同时,将系统代码固化在Flash中,不支持对系统存储区域的写操作,因此一般的网络*或木马无法植于系统的可执行代码存储区中,这种固化特性使得通过客户端来攻击Web服务器变得非常困难。另外,在生成操作系统运行代码时只开放了8080浏览端口,禁用了其它不必要的网络服务端口,通过网络手段登陆客户端再进而以合法身份对Web服务器进行攻击也是不易做到的。线路上的中问攻击因为加密而难以实施,并且如果Web服务器没有受到攻击,则浏览安全的Web服务器~ 般不会受到攻击。所以,核心层实现方式所采用的系统固化、禁用服务、关键配置设定等安全增强措施极大的提高了系统的安全性和可靠性。
4 网络安全加密系统的设计与实现
4.1 Microwindows和TinyWidgets基础
Microwindows(如图4所示)是一个著名的开放源码的嵌入式GUI软件,目的是把图形视窗环境引入到运行Linux的小型设备和平台上。作为XWindow的替代品,Microwindows可以使用更少的RAM和文件存储空间(100 K~600 K)提供与x Window 相似的功能。Microwindows允许设计者轻松加入各种显示设备、鼠标、触摸屏和键盘等 。
Microwindows的可移植性非常好,基本上用c语言实现,只有某些关键代码使用了汇编以提高速度。Microwindows支持Intel 16位、32位cPu,MIPS R4000以及ARM 芯片。尽管Microwindows完全支持Linux,但是它内部的可移植结构是基于一个相对简单的屏幕设备接口,可在许多不同的RTOS和裸机上运行。Microwindows系统以图形方式支持在主机平台上的仿真目标平台。这样, 为Linux设计的Microwindows应用程序就可以在台式机上进行编写和开发而不用进行交叉编译就可测试和运行,并且直接在目标平台上运行。
MicroWindows是一个基于典型客户/服务器体系结构的GUI系统,基本分为3层。最底层是面向图形输出和键盘、鼠标或触摸屏的驱动程序;中间层提供底层硬件的抽象接口,并进行窗口管理;最高层分别提供兼容于X.Window和WindowscE(win32子集)的API。但由于Microwindows没有实现窗口管理,这样对窗口的管理就需要系统提供一个插件集。TinyWidget就是这样的一个控件集供程序员来调用。TinyWidge~是一个基于Microwindows的c控件集,提供了一些比较基本的控件对象,比如窗口、按钮、标签、文本输入框、列表框和组合框等。
4.2 uClinux及其文件系统构建方案
嵌入式操作系统uClinux(micro.contro1.Linux)是模块化,简化版的Linux,具有可剪裁、可配置、高安全性、好的可移植性和扩展性等特点,容易进行升级换代,以不断适应新的应用 。
uClinux系统采用romfs文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。空间的节约来自于两个方面,首先内核支持romfs文件系统比支持ext2文件系统需要更少的代码,其次romfs文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。Romfs文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟ram盘的方法进行处理。ram盘将采用ext2(第二扩展文件系统)或者jffs2(日志闪存文件系统)。
因此,综合考虑存储空间可用性因素,我们可以混合使用romfs和jffs2文件系统。使用romfs文件系统可以得到更大的空间节省和更快的运行速度,使用jfs2文件系统可以为用户提供读写空间,方便用户添加自己的个人文件和数据。Romfs文件系统作为uClinux的根文件系统,可以将jffs2文件系统挂载到romfs的/home目录下供用户来读写。
4.3 具体实现
我们采用Microwindows做界面,在uClinux下通过调用智能卡的命令实现对信息的加解密操作。具体实现包括:①身份认证,保证通信双方身份的有效;②采用高强度加密算法对通讯数据进行加密和解密,上传时相关数据被加密,下收时相关数据首先被解密,然后再作另行处理;⑧ 安全报文传送,保证数据的可靠性、完整性和对发送方的认证。
4-3.1 身份认证
客户端的身份是由安全模块确定的,每一个安全模块具有一个惟一的ID号,在实际交易前,客户端发送签到报文将ID号上传服务器,服务器首先检验该ID的合法性,通过后则下发加密后的工作密钥,如果客户端能够解密得出工作密钥并继续进行交易,则表明服务器的身份是合法的,从而完成对客户端的实体认证;签到完成后,服务器要求用户输入用户名、口令,并对ID号、用户名、口令进行验证,完成对客户的身份认证。
4.3.2 加解密
加解密采用的是已经烧到智能卡中的高强度对称加密算法和128位的数据加密密钥对传输报文中的关键敏感字段进行加密。
(1)数据加密步骤
第1步:用LD表示明文数据的长度,在明文数据前加上LD产生新数据块;
第2步:将第1步中生成的数据块分解成8字节数据块,标号为D ,D ,D ,D 等。最后一个数据块的长度有可能不足8位;
第3步:如果最后(或惟一)的数据块长度等于8字节,转入第4步;如果不足8字节,在右边添加16进制数字“80”。如果长度已达8字节,转入第4步;否则,在其右边添加1字节16进制数字“0”直到长度达到8字节;
第4步:对每个数据块用相应的密钥进行加密;
第5步:计算结束后,所有加密后的数据块依照原顺序连接在一起(加密后的D ,加密后的D:等),并将结果数据块插入到命令数据域中。
(2)数据解密步骤
第1步:将命令数据域中的数据块分解成8字节长的数据块,标号为D ,D ,D ,D4等,用与加密相同的密钥进行解密;
第2步:计算结束后,所有解密后的数据块依照顺序(解密后的D。,解密后的D 等)链接在一起。数据块由LD,明文数据,填充字符组成;
第3步:因为LD表示明文数据的长度,因此,它被用来恢复明文数据。
4-3-3 安全报文传送
数据完整性和对发送方的认证通过使用消息认证码MAC(message authentication code)来实现。MAC是消息内容和密钥的公开函数,其输出是定长的短数据块:MAC=C(M,K)。其中M 是消息内容,K是通信双方共享的密钥,C是MAC值的生成算法。算法C要求已知M1和C(M1.K),无法构造出满足C(M2,K)=C(Ml,K)的报文M2,所以MAC能惟一鉴别原报文。消息鉴别密钥(MAK)利用3DES算法计算交易信息的MAC值进行消息鉴别,通过对报文进行消息鉴别运算,确保报文不被篡改。
(1)3DES算法:3DES算法是指使用16字节密钥K=(KL,KR)将8字节明文数据块加密成8字节密文数据块,如下所示:Y=DES(KL)[DES.1(KR)[DES(KL[x])]]。解密的方式如下:x=DES.1(KL)[DES(KR)[DES.1(KL[Y])]]。
(2)消息鉴别算法:提取传输报文中的关键敏感字段,以8字节为单位划分成若干个数据块,当最后的数据块长度不足8字节时后补OX00。划分完毕后,将每一个数据块作为一个参与运算的数据块(D ),初值为8字节的十六进制0。最终得到MAC值是计算结果 。左侧取得的4字节长度十六进制数。算法流程如图5所示 。
5 结束语
本系统针对客户端网络接入开放性结构的安全保密需求,综合采用多种安全措施,实现了对交易信息关键字段的传输加密保护与消息认证,确保交易信息安全及其加密设备的安全,具有较强的网络适应性。由于系统采用了公开源代码的操作系统,使得集成各种通信应用成为可能,能够很好的适应未来金融通信的发展。
在以后的工作中,我们还需要从硬件、稳定性、使用环境各方面加强系统的抗攻击能力。