时间:2016-04-13 17:29 文章来源:http://www.lunwenbuluo.com 作者:徐涛 文福安 点击次数:
摘要:本文分析了在线考试系统存在的安全问题,结合PKI体系和数字证书,为自主开发的在线考试系统设计了一个基于硬件USBKey的考试系统数据安全传输的解决方案,并进行了实现,解决了开发过程中遇到的一些关键问题,尤其是C/C++和Java之间跨语言的相互加密和解密的通信问题。
关键词:考试系统;USBkey;数据安全;PKI体系;PKCS#II
0 引言
随着Internet的快熟发展与普及,基于web的考试系统越来越受到欢迎,与传统考试相比,在线考试系统是传统考试的延伸,有其独特的优点。它可以充分利用计算机网络的无限广阔空间,没有时间和地域限制,可以随时随地进行考试,交互功能远强于传统纸质,系统发布和版本升级方便,资源共享,信息丰富,便于实施统一的训练管理,大大简化了传统考试的过程,部署成本低,实时性强,有效地克服了传统纸质考试的缺点,具有高效、灵活、便捷等特点。但是基于web的在线考试系统是以Internet为传输媒介的,考试系统中的题库、试卷、需提交的答案、管理指令等都要经过网络进行传输,而Internet却是一个开放的、松散的和易受攻击不安全的网络环境,这对在考试系统中,上述需要经过网络进行传输的各种数据的安全构成了很大的威胁。本文针对这个问题进行了研究,为自主开发的考试系统设计了一套基于硬件USBKey的考试系统数据安全传输的解决方案,并进行了实现,解决了开发中遇到的一些关键问题,尤其是C/C++和java互相通信加解密的问题。
1 USBKey简介
USBKey(智能密码钥匙)是新一代身份认证产品,它结合了智能卡技术、现代密码学技术和USB接口技术。外形酷似U盘,具有唯一性和不可复制性;内置微型智能卡处理器,采用1024位或更高位的非对称密钥算法对网上数据进行加密、解密和数字签名认证,确保网上信息传输的保密性、真实性、完整性和不可否认性。是目前各大银行给用户采用的最高级别的安全工具。
每个USBKey都具备硬件PIN码保护,用户能够正常使用USBKey的两个必要因素就是硬件本身和PIN码。只有同时取得了USBKey和用户的PIN码,才能够登录系统。所以,即使用户的PIN码和USBKey其中之一被盗或丢失,也无法获得合法认证。
USBKey内部有一定的存储空间,可以存储用户的私钥、会话秘钥以及数字证书等机密数据,对该存储空间的读写操作必须要通过USBKey内的程序实现,用户无法直接读取数据,这就大大保证了用户私钥的安全性。并且,利用USBKey内置的CSP (CryptographicService Provider,加密服务供应器)模块中的公钥算法可以实现对用户身份的认证以及秘钥的安全传递,所有的加解密运算都只能在USBKey内部进行,这也就杜绝了用户的私密信息被黑客截取的可能性。
USBKey制造商将USBkey和PKI技术结合起来,利用USBkKey来保存数字证书和用户私钥。USBKey一般都提供了PKCS#II和CSP for Microsoft Cryp-toAPI两种主流的应用接口,这两个接口分别遵循RSA公司开发的PKCS#11标准和微软公司制定的MSCryptoAPI接口标准。本次研究就是将供银行客户端使用的硬件USBKey移植到考试系统中,根据所开发的考试系统的特点,设计一套考试系统数据安全传输的机制并实现,以此来提供银行级别的数据传输的安全保障及身份认证。
2 加密算法与PKI体系
2.1 密码学基础
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
根据密钥类型的不同,可以将现代密码技术分为两类:对称加密技术(秘密钥匙加密)和非对称加密技术(公开密钥加密)。
2.1.1 对称加密技术
对称密码体制又称单钥或私钥(Privare-key),是从传统密码学中的简单移位、代替发展而来的。对称密码体制的特点是加密和解密采用相同的密钥,即加密方利用一个秘钥对数据进行加密,解密方接收到数据后需要使用同一秘钥进行解密。因此在通信过程中,通信双方需要使用安全信道来传输并保存他们的公共密钥。对称秘钥体制的安全性严重依赖于公共秘钥的安全性。这种加密技术的优点是算术运算量小,对机器要求较低,加解密速度快。然而其公共秘钥的安全交换却成了个严重问题,一但通信过程中公共秘钥泄露,那么通信的安全性便无法保证。
目前,广泛使用的对称加密算法主要有:DES、3DES、高级加密标准AES等,其中AES算法是用来替代经典算法DES的。AES算法基于排列和置换运算,排列是对数据重新进行安排,置换是将一个数据单元替换为另一个。AES是一个迭代的、对称密钥分组的密码,它可以使用128、192和256位密钥,并且用128位(16字节)分组加密和解密数据。
2.1.2 非对称加密技术
非对称加密算法又叫公开秘钥加密算法或双秘钥加密算法。它需要两个密钥:公开密钥和私有密钥。公开密钥和私有密钥组成一个密钥对,如果用公开密钥进行加密,那么只有用对应的私有密钥才能解密;如果用私有密钥进行加密,那么只有用对应的公开密钥才能解密。公开密钥体制最大的优点就是不需要对通信中密钥进行加密传输,公开密钥可以明文传输,这样就省去了一条开销很大的密钥传递信道。但是,公开秘钥体制有一个很大的缺陷,那就是其加密和解密的运算时间比较长,时间一般是对称加密体制的100倍以上。因此,这在一定程度上限制了它的应用领域。
目前使用比较多的公认安全的算法就是RSA算法了,RSA算法是基于大数分解难题的一种算法,目前没有好的方法去攻破RSA算法,暴力破解需要花费太长的时间,基本不可能破解。
2.2 PKI体系
为解决Intemet的安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的Internet安全解决方案,即目前被广泛采用的PKI技术(Public KeyInfrastructure-公钥基础设施),PKI(公钥基础设施)技术采用证书管理公钥,通过第三方的可信任机构一认证中心CA (Certificate Authority),把用户的公钥和用户的其它标识信息(如名称、e-mail、身份证号等)捆绑在一起,在Internet上验证用户的身份。目前,通用的办法是采用建立在PKI基础之上的数字证书,通过把要传输的数字信息进行加密和签名,保证信息传输的机密性、真实性、完整性和不可否认性从而保证信息的安全传输。
PKI系统主要由认证机构(CA)、注册机构(RA)、证书管理机构、实体等部分组成。CA是PKI体系的核心,负责证书的颁发和合法性管理;RA是CA与用户的良好隔离机构,使得用户不直接与CA接触,向RA申请注册证书,RA验证用户申请后,生成标示符转达给CA生成证书;证书管理系统负责证书的发布和撤销;实体是PKI证书的使用者
3 考试系统安全设计
为解决在线考试系统的安全问题,引人PKI安全体系,在PKI基础之上以数字证书的形式解决了公钥信息的存储表示问题,通过把要传输的数字信息进行加密和签名,保证信息传输的机密性、真实性、完整性和不可否认性。同时使用硬件USBKey,通过该USBKey中的存储空间存储用户的私钥、会话秘钥以及数字证书等机密数据,并通过该硬件保证用户的私钥不可导出,这样以来就又充分保证了私钥等机密信息的安全性。用户只能通过USBKey内部的CSP模块访问私密数据,提供了银行级别的安全性。
由于USBkey具有极高的安全性,能够很好的满足考试系统对安全性的要求。因此,考试系统的数据安全通信流程架构设计如图1所示。服务器端设有服务模块和加解密模块,考生机客户端由浏览器和USBKey组成,而浏览器通过插件Plugin访问USBKey。
上图结构中分为考生机客户端和服务器两个部分。在客户端部分,浏览器通过plugin调用插件,plugin采用C/C++语言开发,封装了USBkey提供的加解密算法C语言接口,并向浏览器提供用于RSA加解密的JavaScript接口;在java服务器端部分,采用软加解密方式,调用编写的CSP加解密算法模块完成所需功能。
客户端网页和java服务器端通过RSA验证用户身份并传输数据的通信流程如下:
i.客户端网页通过确认按钮,将页面信息A(用户名、密码等)发送给服务器;
ii.服务器收到信息A后,将:信息A+当前系统时间+随机码序列(为了防止重放攻击) 形成的数据B保存在服务器上,并通过服务器的加密函数将上述信息以客户公钥加密的方式加密成数据C发送给客户端页面;
m.客户端收到该加密数据C后,用自己的私钥解密,再用服务器公钥加密后,形成数据D发还给服务器;
IV服务器收到数据D后,用自己的私钥解密,并与服务器上原先保存的数据B进行比对,若完全一致,则服务器认为请求者是合法用户,允许用户的登录操作。并通过该方式获取对称加密算法AES的会话秘钥。
联系方式
随机阅读
热门排行