APP下载

基于Android App安全登录认证解决方案

2016-02-13廖露阳郭兵

现代计算机 2016年35期
关键词:服务器端公钥客户端

廖露阳,郭兵

(四川大学计算机学院,成都 610065)

基于Android App安全登录认证解决方案

廖露阳,郭兵

(四川大学计算机学院,成都 610065)

近几年移动互联网的高速发展,智能手机的使用用户呈现爆炸性增长,手机终端上的App种类繁多,大多数App都需要与后台系统进行交互,交互的第一步需要进行登录认证,过于简单的认证方式可能被破解从而造成用户信息的泄露甚至威胁着用户的财产安全。为此基于Android系统,对比现有几种常见的App登录认证方式,并提出一种采用RSA非对称加密和加入Token时效机制的登录认证解决方案。在登录验证阶段采用RSA非对称加密方式,App端对服务器端返回的Token信息加上时间戳,将处理后的Token信息保存到本地,后面的每次请求都携带该Token从而实现免登录的登录状态的保持。

App;登录认证;加密;登录保持

0 引言

移动互联网的飞速发展和手持智能终端的普及,特别是从Android系统问世以来,移动智能设备使用用户呈现爆炸性增长。据《2015年中国移动互联网研究报告》显示,截止到2015年12月,国内在网活跃移动智能设备数量达到8.99亿,其中,Android设备占据七成[1]。与此同时,各大应用商店中的App数量急剧增长,种类从办公、娱乐、游戏到购物等应有尽有。

这些App中绝大多数都需要与后台系统进行交互,交互之前需要进行身份的认证,即登录认证过程。登录认证的方式如果过于简单,一旦被黑客破解将会对用户信息安全、财产安全造成严重威胁,同时对服务器也有可能造成破坏。同时,对于客户端应用来说,一般只会在第一次登录时需要进行用户名和密码的输入,只要不是用户主动点击退出登录,以后每次进入该应用都应该进行自动登录,从而给用户良好的体验[2]。为此,本文在对比现有几种App登录方式后提出一套改进的App登录认证解决方案,并将从登录认证方式、详细设计、实验验证三个方面展开论证。

1 登录认证方式

1.1 Web登录认证方式

目前常见的Web认证的方式主要有三种:

(1)HTTP Basic Auth[3]。这种方式就是每次请求服务器时都携带用户名和密码,优点是使用非常简单,缺点也非常明显,因为每次都需要携带用户名和密码,很有可能造成密码被截获。

(2)OAuth[4-5]。一种开放的授权标准,允许第三方应用访问用户在某一个服务商服务器上存储的私密数据,其处理流程先是第三方应用通过App Key和App Secret换取OAuth_Token,然后第三方应用将会引导用户进入到服务商页面对该OAuth_Token进行授权(此时有可能需要输入用户名和密码),授权完成后服务商页面会跳转到第三方应用同时返回Access Token,此后第三方应用就可以通过这个Access Token去服务商服务器中访问相应数据。

(3)Cookie Auth[6]。Cookie认证机制就是浏览器在发起一次登录认证请求时,服务端验证通过后将会在产生一段Cookie信息并返回给浏览器,浏览器会将其保存到本地,以后的每次请求都会使用该Cookie信息而不用再次进行登录验证。

1.2 App登录认证方式

由于App客户端无法处理Cookie信息,因此App登录认证无法使用Web认证方式中的Cookie认证方式,为了登录状态的保持,一般会模拟Cookie认证方式,即在App端发起登录认证请求后,得到服务器端验证成功的确认之后,App端一般会保存一些状态信息在本地,后面每次请求都是携带该状态信息,根据状态信息的不同,可以分为如下两种:

(1)保存用户信息表中的某个唯一标识。App端发起登录请求,服务器端在验证成功后一般会将该登录用户的信息返回给客户端,客户端此时可以将用户信息中的某个唯一标识字段给保存下来,如使用Shared-Preferences进行保存[7],后面每次发起网络请求时,先判断本地是否存在该字段,如果不存在说明用户没有进行登录认证,跳转到登录页;如果存在,则直接将这个字段携带进请求信息中,从而实现登录保持状态。这种方式优点是比较简单,缺点就是如果保存的字段容易被别人截获,缺乏安全性。

(2)保存Token信息。App中非常常用的一种登录认证方式,它的实现过程是,由App端发起登录请求,服务器端在验证成功后生成一份Token信息保存到用户表中并设置一定的时效,同时将此Token返回给App端,App端将此Token保存到本地,以后的每次发起请求都是用该Token。与前面一种方式相比,避免了用户表中信息的泄露,相对更加安全。其流程图如下:

图1 Token认证机制

这种方式相对于第一种来说虽然更加安全,但还是存在着明显的安全漏洞,需要进行优化。本文将以这种方案为基础,提出一种更加安全的基于Android平台的App登录解决方案。这里我们把现有的这种方案称为Token认证机制,本文提出的方案称为改进的Token认证机制。

2 改进的Token认证机制详细设计

上述Token认证机制也是存在着一些明显的安全漏洞,本文提出的改进的Token认证机制就是基于对原来Token认证机制中安全漏洞的优化。对于登录认证机制,我们可以把它分为登录验证、状态保持和登出三个阶段,改进的Token认证机制主要是在登录验证和状态保持阶段进行优化。

2.1 登录验证优化

登录验证阶段是指App客户端向服务器端发起登录认证请求,并携带用户名和密码,服务器端收到请求后获取用户名和密码并向数据库进行查询验证的阶段。由于这一阶段需要密码的传输,很多情况下可能都是明文或者简单的MD5加密后直接传输,一旦被黑客截获可能造成密码的泄露风险[8]。因此这一阶段的优化就是加强密码加密功能,这里我们采用RSA非对称加密方式。

RSA是一种非对称加密,它是对称加密的一种加强版,使用对称加密的服务器端和客户端都使用同一种加密规则,因此在服务器端生成加密密钥之后需要传递给客户端,客户端也需要保存这个密钥,而传递密钥的过程和保存密钥在客户端后都有可能发生密钥的截获造成安全漏洞。而非对称加密方式会在服务器端生成两套密钥,生成的公钥是公开的并传给客户端,私钥保存在服务器端,客户端用公钥加密信息后传递到服务器端,服务器端再用私钥进行解密,因此只要私钥不泄露通信就是安全的[9-10]。

由上面分析可以知道,要使用RSA加密方式先要让服务器生成公钥和私钥,并将公钥返回给客户端,因此,在图1的登录验证阶段需要额外进行一次请求获取公钥(这个过程只需要一次,只要获得了公钥以后登录认证就不再需要该过程),其流程如图2所示。

根据上面的分析,可以看到这一阶段最核心的是服务器端公钥和密钥的生成过程以及利用公钥加密和利用私钥解密的过程。其核心代码如下:

图2 使用RSA加密的登录验证阶段

2.2 状态保持优化

App客户端在上一步登录验证阶段会得到服务器返回的Token信息,并将该Token保存到本地,以后的每次请求都直接携带该Token而不是再次使用用户名和密码进行验证,这一阶段称为状态保持或登录保持阶段。前面介绍的Token认证机制中的Token会一直保存在App客户端本地直至用户主动点击退出按钮,如果该Token被截获,截获者同样可以使用该Token直接访问服务器中的敏感数据。针对Token这一长时间保存的特点,我们的优化就是为这个Token设置一个生效时效,具体来说就是在从服务器获得该Token后,在保存的时候在Token后加上一个当前的时间戳,后面每次发起网络请求时,先取出该Token后面的时间戳判断有没有超过生效时间,如果没有则将处理后的Token放入到请求信息中,如果超时了,则重新进行登录认证过程。这种优化过程是以牺牲了一点用户体验为代价。其流程图如下:

图3 Token信息的处理过程

3 实验验证

3.1 服务器端环境

服务器端项目框架采用的是Spring MVC+Mybatis技术架构,数据库采用的是MySQL 5.6,服务器使用Tomcat 7.0,开发工具使用MyEclipse+JDK1.7。

3.2 App客户端环境

开发的App客户端应用基于Android系统,开发工具是Eclipse+ADT+JDK1.7,Android最低SDK版本2.3,目标版本3.0。Android App端项目框架同样采用的是MVC三层架构模式[11],具体为XML格式布局文件负责View层,Activity负责Control层,业务逻辑和Bean负责Model层。

本文提出的解决方案已经在实际的项目中实战运用,在测试阶段和项目上线近一年来运行良好,没有报告有关方面的严重安全bug,证实该方案的切实可行性。

4 结语

本文详细探讨了常见的Web登录认证方式和App登录认证方式,对现在比较常用的App登录认证方式Token认证机制的安全漏洞进行了讨论,在这个基础上提出了改进的Token认证登录机制,通过采用RSA非对称加密优化登录验证阶段,使用Token时效机制优化状态保持阶段,该优化方案在实际生产中得到了检验。同时,该方案还有进一步优化的空间,例如在优化状态保持阶段时采用的是Token时效机制,但这样牺牲了App的使用体验,因此在以后的研究中可以针对这一阶段做进一步的优化过程。

[1]QuestMobile-还原市场真相助力企业增长.http://www.questmobile.com.cn

[2]范美英.Android用户体验与UI设计[M].北京:知识产权出版社,2015.

[3]Dodero J M,Ghiglione E.REST-Based Web Access Tolearning Design Services[J],2008.

[4]D.Hardt.The OAuth 2.0 Authorization Framework[J].RFC6749.2012.

[5]时子庆,刘金兰,谭晓华.基于OAuth2.0的认证授权技术[J].计算机系统应用,2012(03).

[6]D.Kristol,L.Montulli.HTTP State Management Mechanism[J],2000.

[7]徐宜生.Android群英传[M].北京:电子工业出版社,2015.

[8]WangX,Yu H.How to Break MD5 and Other Hash Functions[J].Advancesin Cryptology,2005.

[9]吴明航,刘春刚.DES和RSA混合加密算法的研究[D].哈尔滨工业大学.2013.

[10]Chenghuai Lu,,Andre LM dos Santos,Francisco R Pimentel.Implementation of Fast RSA Key Generation on Smart Cards.SAC 2002, 2002.

[11]曾健平,邵艳洁.Android系统架构及应用程序开发研究[J].微计算机信息,2011(27).

郭兵(1970~),男,山东人,教授,博士生导师,研究方向为嵌入式实时系统、绿色计算、个人大数据、软件工程收稿日期:2016-10-20修稿日期:2016-11-30

The Securely Login Authentication Solution Based on Android Application

LIAO Lu-yang,GUO Bing

(College of Computer Science,Sichuan University,Chengdu 610065)

With the high development of mobile Internet in recent years,the users of smart phone shows explosive growth,and there are large variety of applications on the mobile device,most of these applications need to interact with the back-end systems,and the first step of interacting is to login authentication,it may be cracked if the authentication is too much simple which can lead to the leakage of users'data and even threaten the users'property security.Therefore,based on Android system,compares several common login authentications,and then proposes a secure login authentication solution which uses RSA asymmetric encryption and Token aging mechanism.In login verification period,this solution uses RSA asymmetric encryption and the client application adds time stamp end of the Token message which receives from server,and then saves the token message to local disk,later,all the request carries the Token message,so that realizes the function of login status maintain.

Applications;Login Authentication;Encrypt;Login Maintain

国家自然科学基金重点项目(No.61332001)、国家自然科学基金资助项目(No.61272104)、国家自然科学基金资助项目(No.61073045)

1007-1423(2016)35-0009-04

10.3969/j.issn.1007-1423.2016.35.002

廖露阳(1990-),男,江西新余人,硕士,研究方向为嵌入式实时系统、个人大数据、软件工程

猜你喜欢

服务器端公钥客户端
你的手机安装了多少个客户端
你的手机安装了多少个客户端
“人民网+客户端”推出数据新闻
——稳就业、惠民生,“数”读十年成绩单
Linux环境下基于Socket的数据传输软件设计
神奇的公钥密码
国密SM2密码算法的C语言实现
基于身份的聚合签名体制研究
基于Qt的安全即时通讯软件服务器端设计
基于Qt的网络聊天软件服务器端设计
基于C/S架构的嵌入式监控组态外设扩展机制研究与应用