APP下载

一种SD卡用户身份认证方案的设计与实现

2015-12-18王瑞刚杨小宝田沅蕊

电子科技 2015年6期
关键词:用户名发卡数据流

谢 璇,王瑞刚,杨小宝,田沅蕊

(西安邮电大学物联网与两化融合研究院,陕西西安 710061)

自2009年物联网被列入国家六大战略性新兴产业后,国内掀起了一股发展“智慧城市”的热潮。发展智慧城市建设,就是利用以物联网、云计算等核心的新一代信息技术来改变政府、企业和人民相互交往的方式,提高城市运行效率[1]。近年来,云计算服务平台技术已成熟,但其安全性还有待加强[2]。

云计算平台与用户交互时的安全问题主要在身份认证和数据传输过程中,传统的身份认证往往基于口令和证书,由于云计算中复杂的应用环境和角色定义,这种单一的易被截获的安全凭证方式已经不能满足云计算中多种认证场景的安全需求[3]。为解决这种不安全,本文分析了传统的云计算安全后,提出将软硬件结合,使用安全卡(Security Data Card,SD卡)作为用户硬件认证,使用安全性高的椭圆算法作为身份认证的加密算法,提高云计算服务的安全性。

1 传统云计算身份认证

云计算是一种基于互联网的计算方式,它将软硬件资源和信息进行共享并按需提供给用户终端,具有安全、方便、数据共享和无限可能的优点。但同时云计算提供商通常提供的是可通过浏览器等软件或其他Web服务来访问的通用网络业务应用,这种将软件和数据都存储在云计算平台服务器上的方式,使得云计算面临着安全、网络延迟或中断这两大缺陷,如何保障云计算的安全成为了当前云计算服务的核心,而安全可靠的身份认证是其安全方面的首要保证。

传统的云计算如图1所示,身份认证一般分为两步:用户终端使用口令、证书等软件认证向云计算平台服务器请求接入服务;服务器认证信息,信息正确后同意接入并分配用户可访问的API,信息错误拒绝访问。

图1 传统云计算身份认证过程

这种软件身份认证,尤其是在云的单点认证中,主要分为口令和证书两种:口令认证即为用户名和密码认证,这种认证方便简单普遍,但易被第三方截获假冒,尤其是在云计算下存在局限性,不能保证数据传输的安全性[4];证书认证是由第三方进行设计的,易被盗取和攻击,且只能保证终端本身而无法保证登录用户本身,用户改变终端时需重新安装。在云计算身份认证中除软件身份认证外一般硬件设备价格昂贵,通行力度不高,如采用USB Key进行云计算终端身份认证[5],这种个人身份认证方案的优点在于硬件与证书结合的身份识别,这类方案银行发行比较多,但不适用于移动设备。

针对上述问题,本文根据SD卡[6]安全性强,携带方便等优点,可在移动设备上做用户代理安全认证,将SD卡与云计算平台结合起来,使用SD卡作为云平台用户身份认证和数据加密设施,并选取适合的高安全性的椭圆算法[7]对用户认证信息进行加密,选取对称算法3DES对数据流进行加密,提高云计算的安全性。

2 使用SD卡的认证会话

2.1 系统流程

使用SD卡的云计算平台对话过程分为SD卡身份认证,密钥协商和数据流密文传输3部分,具体如图2所示。

2.2 基于ECC的SD卡身份认证

在SD卡中存放用户私钥dA以及云计算服务器公钥QB,在云计算服务器中存放用户公钥QA、云计算服务器私钥dB、用户名IDA、用户密码KA,当云计算服务器验证插有SD卡的用户终端合法后,根据用户名确认用户访问权限。

SD卡中用户名默认为用户手机号码,选取椭圆加密算法ECC加密算法作为安全算法,在二次扩展域F2m仿射坐标系下的椭圆曲线方程可以简化为

其中 a,b∈F2m,b≠0。

取椭圆曲线上的点集为 E(F2m)={(x,y )x},y∈F2m,且满足方程

其中,O是椭圆曲线的无穷远点,又称零点。

图2 基于SD卡的云服务流程图

SD卡中私钥dA由用户名IDA和密码KA经过哈希生成[8],公钥 Q=dG,其中私钥(d∈[n -1]),n 表示椭圆曲线域参数中的阶,公钥Q是椭圆曲线上的一点,G表示椭圆曲线域参数的基点。基点G=(xG,yG)∈E(F2m),G≠0;基点 G的阶 n,要求 n>2191且n >22+m/2。

SD卡向云计算服务器发送身份验证:

(1)计算M=IDAKA,其中‖指两个字符串拼接。(2)计算哈希值:E=H(M)。(3)用随机数发生器产生随机数k∈[1,n-1]。(4)发送密文点对 C。{kG,E+kQB};

云计算服务器解密SD卡身份验证信息

1)计算C'=E+k×QB-dB×(kG)。

2)将QB=dB×G代入1)中。

3)明文C'=E+k×QB-dB×(kG)=E+k×(dB×G)-dB×(kG)=E。

4)服务器比较将用户名密码哈希后的值与解密的明文相比较,若相同内插有SD卡的用户终端合法,否则拒绝服务。

2.3 数据流加密密钥协商

云计算服务器与SD卡双方身份认证后,进行本次服务的数据流加密密钥的协商,使用ECC加密方式,具体步骤如下:

(1)SD卡中随机生成 kA∈{1,…,n-1},计算SA=kA×G、RA=kA×QB,并随机选取 F2m 的曲线中的元素XA,计算TA=RA⊕XA,其中“⊕”指等长两个比特串按位做异或运算,将(TA,SA)发送给云计算服务器,SD卡自己保存kA、XA。

(2)云计算服务器中随机生成kB∈{1,…,n-1},计算SB=kB×G、RB=kB×QA,并随机选取F2m的曲线中的元素 XB,计算 TB=RB⊕XB,将(TB,SB)发送给 SD卡,服务器自己保持kB、XB。

(3)SD卡收到(TB,SB)后,利用 dA和 SB计算RB=TB⊕(dA× SB),S=RB⊕XA,会话密钥为 K=H(S,kA×SB),H为哈希函数。

(4)云计算服务器收到(TA,SA)后,利用 dB和SA计算 RA=TA⊕(dB×SA),S=RA⊕XB,会话密钥为 K=H(S,kB×SA)。

由于RA=XA,RB=XB,可知SD卡与云服务器最终得到的是一个共同的会话密钥K,将它作为数据流传输时的加密密钥,重复以上步骤3次,得到3个会话密钥K1,K2,K3,这3个会话密钥是对称加密算法3DES对数据流进行加密的密钥。密钥K1,K2,K3的信息由通信双方的私钥进行保护,攻击者很难获得会话密钥信息,可保证数据流的安全传输。

2.4 数据密文传输

云计算环境覆盖了制造、商务、物流、金融、教育等方面[9],用户根据所访问的应用不同数据流大小不同,考虑到云计算服务的实时性和稳定性,本文采取加解密速度高、占用资源少、安全性高的对称加解密3DES算法对其进行加密,具体加解密过程参考文献[10]。

设Ek()和Dk()代表DES算法的加密和解密过程,P 代表明文,C 代表密文,K1,K2,K3是 3DES算法的加解密密钥。用户终端将数据流M与用户名IDA拼接得到P,即P=M‖IDA,使用3DES算法进行加密,密文C=Ek3(Dk2(Ek1(P))),将密文C发送给云计算服务器。云计算服务器接收密文C,并使用3DES算法进行解密,明文P=Dk1(Ek2(Dk3(C))),服务器得到明文P后将解读数据流M并同样使用3DES算法加密用户所需的服务数据流进行应答。当K1,K2,K3均不相同时,3DES算法为数据提供的加密强度是168位;当K1=K3时,3DES算法为数据提供的加密强度是112位。

3 系统的功能模块与实现

3.1 会话流程

系统使用的SD卡,通过密码协处理器实现ECC,DES,3DES,Hash等安全算法。在Windows操作系统上,通过Visual Studio 2010,使用C#语言,开发了Web模式的测试系统,系统的实现主要包括发卡模块、身份认证模块、数据密文传输模块等。

3.2 发卡模块

在使用SD安全卡会话之前,必须由企业即服务器端发卡模块对用户发卡。发卡模块主要将用户个人信息写入测试卡,并使用ECC算法产生卡的密钥对,私钥保存如卡中,公钥保存在服务器中。发卡时对两种卡进行发卡:未格式化的卡;已发过的卡。服务器在发卡时建立用户档案文件,文件内容是各卡的用户名和密码;发卡后将在档案目录中保存卡的公钥。云计算服务器端发卡模块主要实现文件如下:

MSD_Issue.dll:Dll动态库。

MSD_Issue.h:C/C++头文件。(包含)

MSD_Issue.lib:Lib导出库。

MSD_Errors.h:错误代码头文件。

包含的主要函数模块有:(1)调用MSD_IssueSetKeys设置发卡密钥。(2)MSD_IssueCard():发卡处理,对卡格式化,写入密钥,产生ECC密钥对。(3)MSD_GetPublic():取MSD卡上公钥。(4)MSD_GetCardSN():取MSD卡上的卡号。

3.3 身份认证模块

发卡完成后,SD卡中存有服务器公钥、用户私钥、用户名、密码,在服务器中备份用户公钥、用户名、密码,用户登录的后进行SD卡与服务器的身份认证。身份认证模块分为两部分内容:SD卡与服务器验明身份,数据流会话密钥协商。会话主要使用ECC加密算法进行,则客户端登陆模块实现接口如下:

(1)MSD_GenLoginData():产生登陆请求数据,将登陆数据发送到服务器来做登陆请求。

(2)SessionLoginAck():产生登陆请求应答,协商数据流会话密钥。

(3)MSD_VerifyServerAck():验证服务器对客户端登陆请求的应答,协商数据流会话密钥并产生一个客户端的应答。

云服务器端的处理模块接口如下:

(1)调用ServerCreate产生服务器对象。

(2)对于客户端的登陆请求,使用SessionCreate来处理请求数据:1)处理结果包含用户名和密码,服务器验证用户名和密码。2)然后调用SetCliPubKey设置客户端公钥。3)调用SessionLoginAck产生一段应答数据发回客户端。

(3)调用SessionVerifyAck验证客户端的应答,完成整个登陆流程。

(4)SessionEncrypt/SessionDecrypt加密/解密数据。

(5)SessionSign/SessionVerify来签名或者验证签名。

(6)调用SessionRelease结束一个会话。

(7)服务端程序退出,调用ServerRelease释放服务器对象。

3.4 数据密文传输模块

数据密文传输模块主要提供数据的基本加解密服务,用于3DES对称加解密服务,使用协商所产生的密钥K作为3DES密钥对输入数据进行加密与解密。其加解密模块由以下接口组成:(1)MSD_Encrypt()&MSD_Decrypt():用户登录成功后,使用此函数加密和解密与服务器的会话数据。(2)SessionEncrypt()&SessionDecrypt():服务器对会话数据的的加密和解密。

3.5 身份认证与安全会话

基于以上模块功能的实现,以其它PC机模拟移动终端设备,使用SD卡与后台处于云平台中的Web服务器进行安全的身份认证会话,则会话过程如图3所示。

图3 会话流程

4 结束语

本文通过分析当前云计算中用户安全认证存在的问题,通过系统测试,表明基于SD卡的用户端与云平台服务器的会话,能够提供安全的用户身份认证及密文会话,并且提高了安全性和认证效率,并降低了相关硬件安全服务的成本,尤其是可与移动、电信、联通等运营商进行合作,使得移动设备通过SD卡进行安全接入,将移动设备作为人与云平台之间的一个安全代理,为使用云平台服务的用户提供了安全与方便。

[1] 巫细波.杨再高.智慧城市理念与未来城市发展[J].城市发展研究,2010,11(17):56 -60.

[2] Khalil Issa M,Khreishah Adallah,Bouktif Salah,et al.Security Concerns in Cloud Computing[C].Las Vegas,NV:Proceeding of the 2013 Tenth International Conference on Information Technology:New Generations(ITNG):IEEE,2013:15-17.

[3] 余兴杰,高能,江伟玉.云计算中的身份认证技术研究[J].信息网络安全,2012(8):71 -74.

[4] 张立斌,高仲春,张晶.云计算环境下统一身份认证平台的设计与实现[J].工业控制计算机,2013,26(7):91-92.

[5] 王帅,常朝稳,魏彦芬.基于云计算的USB Key身份认证方案[J].计算机应用研究,2014,31(7):2130 -2134.

[6] Yang Yansi,Yang Yingyun,Niu Lipi,et al.Hardware system design of SD card reder and image processor on FPGA[C].Shenzhen:Proceeding of the 2011 IEEE International Conference on Information and Automation(ICIA):IEEE,2011:6-8.

[7] 黎满贵.PKI系统支持SM2椭圆曲线公钥密码算法的研究[J].信息安全与通信保密,2011(9):78-83.

[8] 王张宜,李波,张焕国.Hash函数的安全性研究[J].计算机工程与应用,2005(12):18 -19,197.

[9] 杨善林,罗贺,丁帅.基于云计算的多源信息服务系统研究综述[J].管理科学学报,2012,15(5):83 -96.

[10] Yang Jun,Li Na,Ding Jun.A design and implementation of high-seed 3des algorithm system[C].Sanya:Proceeding of the 2009 TITME'09 Second International Conference on Future Information Technology and Management Engineering:IEEE,2009:13 -14.

猜你喜欢

用户名发卡数据流
《护士进修杂志》投稿程序
《护士进修杂志》投稿程序
汽车维修数据流基础(上)
汽车维修数据流基础(下)
《护士进修杂志》投稿程序
彩虹发卡
要戴发卡的小男孩
机智的快递员
基于数据流聚类的多目标跟踪算法
自动发卡机在高速公路中的应用