基于开闭原则的网上银行身份认证服务方案

2018-03-30 03:25张利琴朱鹏飞李伟于华章
网络空间安全 2018年9期
关键词:网上银行

张利琴 朱鹏飞 李伟 于华章

摘 要:身份认证是网上银行系统所有活动的入口,不断推陈出新的身份认证解决方案,在集成到网上银行系统的过程中,存在应用接口、交互界面不统一等问题,导致工程复杂度提高、维护难度和工作量增加。结合成熟的认证平台,基于开闭原则设计研发一套便于部署实施、适合迭代更新的身份认证转接系统,支持当前金融行业标准规定的多种身份认证方案,集成基本不需要进行改造,只对现有系统进行扩展,减少对现有系统运行的影响,从而有效降低普及推广过程中的工程量和复杂度,具有较强的可行性和实用性,体现了一定的安全性、合规性和先进性。

关键词:网上银行;开闭原则;转接系统

中图分类号:TP274+.2 文献标识码:B

Abstract: Identity authentication is the entrance of all the activities of Online Banking. New identity authentication solutions are constantly being introduced. In the process of integration into the online banking system, there are problems such as inconsistent application interfaces and interactive interfaces, which lead to the increase of engineering complexity, maintenance difficulty and workload. Combining with the mature authentication platform and based on the open-close principle, a scheme of identity authentication transfer system is designed and developed to support various authentication schemes under the current financial industry standard, which is easy to deploy and implement and suitable for iterative updating. When new forms of authentication appear, the existing system does not need to be modified, only need to be extended to decrease the impact on the operation of the existing system. Therefore, this scheme can effectively reduce the amount and complexity of the project in the popularization process, and has a strong feasibility and practicability, and also reflects certain security, the compliance and the advancement.

Key words: online banking; OCP; transfer system

1 引言

金融行业标准JR/T 0068-2012《网上银行系统信息安全通用规范》[1]要求,网上银行资金类交易、重要信息及业务变更类等高风险业务应使用双因素身份认证。双因素身份认证由两种身份认证方式组成:一是客户知晓、注册的客户名称及密码;二是客户持有、特有并用于身份认证的信息,包括但不限于物理介质或电子设备等。JR/T 0068-2012还对USB Key、OTP令牌等多种常见的身份认证设备提出了要求。随着技术的发展,能够用于双因素身份认证的身份认证解决方案不断涌现,例如基于移动终端的生物特征识别[2]、FIDO[3]等,在保证安全性的同时不断改善用户体验,为网上银行/手机银行的推陈出新起到了推动作用。然而,在集成到网上银行/手机银行系统的过程中,由于各种身份认证解决方案的应用接口、交互界面等不一致,导致工程复杂度提高,维护难度和工作量增加,极易影响到现有网上银行系统的服务,甚至导致服务中断,这对于重视服务稳定性和可用性的金融机构而言,是难以接受的。因此,设计研发便于部署实施、适合迭代更新的身份认证转接系统,集成基本不需要进行改造,将对现有系统的改造变为对现有系统的扩展,减少对现有系统运行的影响,从而有效降低普及推广过程中的工程量和复杂度,具有必要性和实用性。

实践证明,软件产品在生命周期内发生变化是不可避免的。因此,为了提高软件产品的灵活性,保证软件产品的稳定性,在软件设计开发过程中要适应变化。而开闭原则(Open Closed Principe,OCP)[4]作为面向对象设计的核心思想之一,尽量通过扩展软件实体的行为来实现变化,而不是通过修改现有代码来实现变化。基于开闭原則设计研发和部署适用于网上银行、便于升级更新的身份认证系统,将对现有系统的改造变为对现有系统的扩展,有助于减少工程的复杂度,避免影响现有系统的服务稳定性。

2 设计思路

2.1 设计目标

在网上银行部署实施双因素身份认证机制,往往面临几个问题。

第一,不同的身份认证方式,对人机交互界面的需求不同。例如,如果使用数字证书(基于USB Key),需要在网上银行的用户登录页面以及各项业务的用户身份认证页面加载用于检查USB Key是否连接到电脑并与其进行数据交换的COM控件;如果使用动态口令(动态令牌),则需要在网上银行的上述页面增加动态口令的输入窗口。这意味着如果调整双因素身份认证机制的组成部分,需要对网上银行的多个页面进行相应的调整。这使得网上银行系统的开发和更新难以遵循开闭原则,不仅增加了工作量和复杂度,还容易出现疏漏。这对于在网上银行系统部署实施新的身份认证技术是不利的。

第二,不同的身份认证方式涉及的身份认证凭据不同,所需的后续处理方式也不同。例如,如果使用数字证书(基于USB Key),涉及的身份认证凭据是USB Key生成的数字签名(通常为长度超过128字节的比特串),需要使用数字证书中的公钥验证其有效性,并通过电子认证服务验证数字证书的有效性,最终确定用户身份的有效性;如果使用动态口令(动态令牌),则涉及的身份认证凭据是动态令牌生成的动态口令(通常为6位十进制数),需要与动态口令认证系统生成的一系列动态口令进行比对,从而确定用户身份的有效性。这意味着如果调整双因素身份认证机制的组成部分,需要对网上银行系统的多个组成部分进行相应的调整,进一步提高了网上银行系统遵循开闭原则的难度。

本系统的设计目标是为网上银行系统提供便于集成、维护以及升级换代的第二因子身份认证服务,具体包括四项内容。

(1)构建双因素身份认证机制:支持可用于网上银行双因素身份认证的常用身份认证机制,与网上银行系统的用户名/口令机制相叠加,从而形成网上银行所需的双因素身份认证机制。

(2)便于集成:向网上银行系统提供统一的身份认证服务接口,使系统成為与网上银行业务系统相对独立的身份认证服务,改善身份认证服务与网上银行业务系统之间的紧耦合关系。

(3)便于集成和切换:支持多种第二因子身份认证技术(包括基于数字证书的身份认证和基于动态口令的身份认证)的同时,身份认证服务接口与具体的身份认证技术方案相对独立,无论使用何种身份认证技术,与网上银行系统的集成接口保持不变。支持相对独立的身份认证交互界面,各身份认证技术所需的交互页面与网上银行系统的用户名/口令身份认证页面相互独立,进一步改善身份认证服务与网上银行业务系统之间的紧耦合关系。

(4)扩展性强:部署实施新的身份认证技术时,相关工作控制在身份认证服务范围内,力争不影响现有的网上银行系统,基本不需要进行联调。

作为网上银行系统的重要组成部分,应当遵循网上银行相关监管的要求。为此,系统及其提供的身份认证服务应当符合金融行业标准的相关要求,如JR/T 0068、JR/T 0149[5]等。为了确保安全合规,基于数字证书的身份认证系统和基于动态口令的身份认证系统分别使用符合金融行业标准要求的成熟系统,主要的设计研发工作集中在面向网上银行系统提供统一的身份认证服务接口方面。相应地,系统被实现为身份认证转接系统。

2.2 技术路线

根据设计目标,确定技术路线。

以OAuth[6]的思路为基础,使用访问令牌作为系统向网上银行系统提供的身份认证凭据。当用户通过身份认证时,为用户发布令牌;当用户请求访问网上银行业务系统资源时,通过验证访问令牌的有效性确定是否允许访问。访问令牌除了发给用户之外,还在系统内部保存令牌及其发布状态。用户使用访问令牌请求访问网上银行业务系统资源、网上银行业务系统查询用户的身份认证状态时,系统查询用户对应的令牌发布。如果令牌已发布,则根据系统保存的令牌验证其有效性。如果有效,系统应答网上银行业务系统用户身份认证状态为“通过认证”,网上银行业务系统可给予用户访问相应资源的权限。否则,系统将用户访问请求转接到网上银行业务系统配置的身份认证系统页面,引导用户重新进行身份认证。

系统采用分布式架构设计,将各个功能实现为分布式的服务,尽量降低服务之间的耦合程度。各服务设计为REST风格的Web Service。REST是目前主流的Web Service软件架构风格[7],有助于降低开发的复杂性,同时,还能够提高系统的可伸缩性。

身份认证转接相关功能具体包括五项内容。

(1)网上银行业务系统对接:向网上银行业务系统提供查询用户身份认证状态的接口。在接口被调用时,根据用户对应的访问令牌的当前状态向网上银行业务系统返回“身份认证通过”的消息,或者“需要重定向到身份认证页面”的消息。

(2)数字证书身份认证系统对接:将用户通过网上银行业务系统发来的重定向后的访问请求转到数字证书身份认证系统的相应页面,身份认证结束后将用户访问请求重定向到用户请求访问的网上银行业务系统资源。

(3)动态口令身份认证系统对接:将用户通过网上银行业务系统发来的重定向后的访问请求转到动态口令身份认证系统的相应页面,身份鉴别完成后,再将用户的访问请求,重定向至用户所请求访问的网银业务系统。

(4)重定向管理:根据配置项确定将用户通过网上银行业务系统发来的重定向后的访问请求的访问地址,包括将访问网上银行业务系统资源的请求重定向到数字证书身份认证系统或动态口令身份认证系统,以及将访问(数字证书或动态口令)身份认证系统的请求在身份认证通过后重定向到原先访问的网上银行业务系统资源。

(5)访问统计:记录来自网上银行业务系统的请求,为将来实施大数据分析积累日志数据。

特别地,为了降低系统之间的耦合程度,身份认证转接系统与其他系统的对接使用“注册”机制,为其他系统分配应用标识并进行维护。

3 设计实现

3.1 系统架构

系统架构如图1所示。

其中,身份认证转接服务器用于与网上银行系统与异构的身份认证服务之间对接,向网上银行系统提供统一的身份认证服务接口;访问令牌管理服务器用于生成和管理访问令牌;应用管理服务器用于向管理者提供系统管理界面,管理功能包括用户管理、应用配置等等;数字证书身份认证系统和动态口令身份认证系统分别提供基于数字证书和基于动态口令的身份认证功能;消息中间件服务器用于各服务器之间的消息交互。

3.2 运行流程

系统主要承担身份认证的转接服务,参与的执行主体主要包括客户端、网上银行业务系统、身份认证转接系统和身份认证服务系统。其中,用户通过客户端发起访问请求,并接收来自网上银行业务系统的响应。系统的工作流程,如图2和图3所示。

系统的具体流程分为几步。

步骤s101:客户端发送访问请求给网上银行业务系统。

步骤s102:网上银行业务系统判断访问请求中是否带有用户身份凭证令牌,如果是,将令牌通过身份认证转接系统发给令牌管理系统。否则,执行步骤s109。

步骤s103:令牌管理系统判断令牌是否在已分发的令牌列表中。如果是,执行步骤s104。否则,通过身份认证转接系统发送“令牌无效”消息给网上银行业务系统,网上银行业务系统可据此拒绝访问请求,结束。

步骤s104:令牌管理系统判断令牌是否已过期,如果是,需要重新进行身份认证,执行步骤s105。否则,通过身份认证转接系统发送“令牌有效”消息给网上银行业务系统,执行步骤s108。

步骤s105:身份认证转接系统根据令牌应用标识和指定认证方信息查询确定要使用的认证服务(动态口令或数字证书),并向所确定的认证服务发送询问用户登录状态请求。

步骤s106:认证服务根据令牌检索对应用户的登录状态,生成用户登录状态响应,返回询问用户登录状态响应给系统。

步骤s107:身份认证转接系统根据返回的询问用户登录状态响应判断令牌是否有效,如果是,发送“令牌有效”消息给网上银行业务系统,执行步骤s108。否则,发送“令牌无效”消息给网上银行业务系统,执行步骤s109。

步骤s108:网上银行业务系统根据访问请求中的信息、令牌以及预设策略,返回相应的资源给客户端,客户端获取资源,结束。

步骤s109:网上银行业务系统根据应用标识符生成第一认证请求,并发送第一认证请求给系统。

具体地,应用标识符是网上银行业务系统与身份认证转接系统对接时生成的。

步骤s110:身份认证转接系统根据第一认证请求中的应用标识符判断是否为合法的认证请求,如果是,执行步骤s111。否则,发送“应用标识符无效”消息给网上银行业务系统,网上银行业务系统可据此拒绝向客户端返回资源,返回步骤s101。

步骤s111:身份认证转接系统根据应用标识符、授权方式、授权范围、强化身份认证服务地址、认证方式生成符合注册协议的第一认证请求响应,并将第一认证请求响应发送给网上银行业务系统。

步骤s112:网上银行业务系统根据符合协议的第一认证请求响应和第一访问权限列表生成第二认证请求,发送包含应用标识符和第一访问权限列表的第二认证请求给系统。

步骤s113:身份认证转接系统根据应用标识符查询网上银行业务系统指定的身份认证方,并重定向浏览器到指定身份认证方的身份认证界面。

步骤s114:客户端显示身份认证页面,并接收用户信息,接收到用户信息后,将用户认证信息返回给指定身份认证方。

步骤s115:指定身份认证方接收用户信息,并对用户信息进行认证,判断是否认证通过,如果是,发送“身份认证通过”消息给身份认证转接系统,执行步骤s116。否则,发送“认证未通过”消息给身份认证转接系统,身份认证转接系统“发送身份认证未通过”消息给网上银行业务系统,网上银行业务系统可据此拒绝客户端访问。

步骤s116:系统保存用户信息,完成分发授权码,鉴别授权码,分发访问令牌和令牌,生成包含令牌的响应消息,并发送令牌給网上银行系统,网上银行系统返回步骤s101。

具体地,步骤s116包括几个方面。

步骤s116-1:系统接收第二访问权限列表并生成授权码和授权码有效时间,同时将应用标识符、授权码和第二访问权限列表对应储存。

其中,第二访问权限列表为根据预定策略生成的权限列表,除去第一权限列表中系统未定义的元素,即强化身份认证自定义生成的权限列表和第一权限列表的交集。

步骤s116-2:系统根据预存的重定向URL向网上银行系统回传授权码。

步骤s116-3:网上银行系统将应用标识符和应用密码通过预设加密运算进行加密生成应用密文信息。

其中,应用密码根据网上银行系统注册时,系统分配的应用ID和注册时输入的初始密码进行散列运算生成。

步骤s116-4:网上银行系统根据应用密文信息、第一重定向URL和授权码生成获取令牌请求,并将生成的获取令牌请求发送给系统。

步骤s116-5:系统从接收到的获取令牌请求中获取应用密文信息,并对应用密文信息进行解密得到应用标识符和应用密码。

步骤s116-6:系统根据应用标识符和应用密码判断应用是否合法,如果是,执行步骤s117-7。否则,发送认证失败信息,结束。

步骤s116-7:系统判断是否可以在系统里查询到与第一重定向URL和授权码匹配的信息,如果是,执行步骤s117-8。否则,发送认证失败信息给网上银行系统,结束。

步骤s116-8:系统根据授权码获取授权码过期时间,并判断授权码是否过期,如果过期,发送授权码过期信息给网上银行系统,结束。如果没过期,执行步骤s117-9。

具体地,系统获取系统的当前时间,判断授权码过期时间是否晚于系统当前时间,如果是,系统判定授权码在有效期内,执行步骤s117-9。否则,系统判定授权码过期,向网上银行系统返回授权码过期信息,结束。

步骤s116-9:系统生成令牌、访问令牌、令牌过期时间,根据授权码获取第二访问权限列表,将令牌、访问令牌、第二访问权限列表和令牌过期时间对应储存。

步骤s116-10:系统根据令牌、访问令牌、访问令牌过期时间生成获取访问令牌响应,并将令牌响应发送给网上银行系统。

3.3 实现验证

使用Python语言,由Django、MongoDB、Celery、RestMQ、Redis等一系列开源项目组成开发框架,实现了上述设计方案的原型系统。系统生成的身份认证凭据采用JSON格式,形如:

{"iss":"https://server.example.com","sub":"24400320","aud":"s6BhdRkqt3","nonce":"n-0S6_WzA2Mj","exp":1311281970,"iat":1311280970,"auth_time":1311280969,"acr":"urn:mace:incommon:iap:silver"}

其中"iss":"https://server.example.com"表明指定认证方服务器标识为https://server.example.com;"sub":"24400320"表明用户信息为24400320;"aud":"s6BhdRkqt3"表明应用服务器标识为s6BhdRkqt3;"exp":1311281970表明身份认证凭据有效期;"iat":1311280970,表明发放身份认证ID时间"auth_time":1311280969表明鉴别终端用户时间。

以下是系统生成的访问令牌实例:

HTTP/1.1 200 OK

Content-Type: application/json

Cache-Control: no-store

Pragma: no-cache

{"access_token":"SlAV32hkKG","token_type":"Bearer","expires_in":3600,"iss":"https://server.example.com","sub":"24400320","aud":"s6BhdRkqt3","nonce":"n-0S6_WzA2Mj","exp":1311281970,"iat":1311280970,"auth_time":1311280969,"acr":"urn:mace:incommon:iap:silver""id_token":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"}

4 结束语

不断涌现的新型身份认证解决方案,在集成到网上银行系统的过程中,存在应用接口、交互界面不统一等问题。本文针对当前网上银行身份认证升级改造需求,结合当前成熟的认证平台,基于开闭原则设计实现了适用于网上银行的身份认证转接服务,采用REST风格的分布式架构,与网上银行、手机银行、互联网支付等支付应用所采用的主流技术架构相匹配;采用成熟的安全策略,比如支付标记化,减少了系统的安全漏洞;采用统一的开发框架,一方面降低了系统开发的复杂度,另一方面也为迁移到云计算环境打下了良好的基础。

此外,基于开闭原则的网上银行身份认证服务方案,不仅能够与当前金融行业标准规定的多种身份认证机制集成,还能够灵活支持多因素身份认证模式,有助于减少工程的复杂度,避免影响现有系统的服务稳定性。同时,也具有很强的可行性和实用性,体现了一定的安全性、先進性和合规性。

参考文献

[1] JR/T 0068-2012,网上银行系统信息安全通用规范[S].

[2] 戈泉月,车力军.基于多因素认证的网络安全支付模式研究[J].信息网络安全, 2015(12):48-53.

[3] Panos C, Malliaros S, Ntantogian C, et al. A Security Evaluation of FIDOs UAF Protocol in Mobile and Embedded Devices[C]// International Tyrrhenian Workshop on Digital Communication. Springer, Cham, 2017:127-142.

[4] 郭荣.浅谈软件设计模式中的设计原则[J].信息安全与技术,2014(11):93-94.

[5] JR/T 0149-2016,中国金融移动支付 支付标记化技术规范[S].

[6] Hammerlahav E, Editor. The OAuth 2.0 Protocol[J].2010.

[7] 王阿林.基于REST开放标准的北向接口动态API研究与实现[D].北京:北京邮电大学, 2017.

猜你喜欢
网上银行
互联网金融发展对传统商业银行业务的影响研究
我国网上银行发展与风险控制
关于网上银行发展现状与对策的思考
网上银行金融犯罪的法律遏制措施
网上银行的现状及其发展研究
支付宝支付平台对网上银行业务发展的影响探析
试分析目前我国网银法律监管问题
论互联网金融监管
浅析网上银行风险及管理对策
网上银行客户体验评价研究