1. 引言
得益于国内移动互联网的高速发展以及支付宝、微信等互联网头部产品的用户培养,用于身份认证和消费支付的各类移动端解决方案已经逐渐为大众所接受。各高等院校也在探索如何在原有校园一卡通的基础上叠加虚拟校园卡,作为原有实体校园卡的衍生或替代。
本文在比较国内外常见的虚拟校园卡方案及其现状的基础上,提出基于手机钱包交通卡的NFC虚拟校园卡,并描述其技术方案、系统架构和对现有校园卡业务的融合,最后给出结论与展望。
2. 虚拟校园卡的现状
虚拟校园卡是电子化的校园卡,使师生能通过手机或“人脸”实现消费、门禁出入、图书借阅等校园一卡通既有的功能。目前,国内外主要采用二维码、生物特征码(主要是“人脸”)及NFC虚拟卡作为虚拟校园卡的载体。
2.1. 二维码载体
受微信和支付宝中二维码应用的影响,国内诸多学校首选二维码来扩展现有的校园卡系统。这类方案的核心是以二维码作为用户信息的载体,通过读取二维码的设备对手机展示的动态二维码图像进行捕获和信息识别,并以此为基础进行后续的身份认证及其他衍生服务。
二维码作为目前最为常见的方案,它具有技术方案成熟、用户接受度高、无使用难度等优点,但使用二维码方式存在一些局限性。
首先,使用二维码时的操作往往比较繁琐。由于二维码的生成都是基于某一特定的App,在使用时需要解锁手机→打开APP→找到二维码入口→展示二维码并完成扫码,即使部分APP支持快捷展示二维码,却仍然需要“解锁”和“展示”这两个核心步骤。
其次,由于二维码的核心原理是通过图像进行展示和识别,因此,容易受扫描距离、环境光线、扫描设备分辨率等环境因素的影响,例如,在对焦不准、光线过强时容易扫码失败,使得其应用场景存在一定的限制。
此外,扫描设备由于包含了图像阅读组件,其体积比部分校园卡系统终端大,其安装空间的需求也会限制二维码的应用场景。
最后,为保证安全性,包含用户信息的二维码必须定期刷新,但刷新期间存在偶尔的认证失败。
2.2. 生物特征载体
生物特征载体的方案,是指利用数理统计方法对生物特征进行分析,以区分生物个体的方法。目前,主流的生物识别方案是对指纹、人脸、虹膜、声纹等生物特征进行记录、识别和验证。在虚拟校园卡的应用方案中,不少高校已经采用“人脸”作为生物特征与实体校园卡持有人进行关联,实现“人脸”身份认证。
在使用人脸认证的场景中,用户无需使用任何设备或执行任何动作,仅需要被扫描面部,即可快速完成身份认证,从而进行消费或打开门禁,十分方便和快捷。但生物特征作为高度敏感的个人隐私信息,其采集和使用受到各国法律法规的约束。我国的《个人信息保护法》 [1] 中对此有明确的规定和使用限制。其他国家、地区或组织都有各自不同的数据保护法规,例如,欧盟使用GDPR [2]、美国使用FERPA [3] 等一系列法律条文来保护各自公民的数据安全。对于师生来自世界各地的高校而言,想要满足所有合规性的要求非常困难。此外,任何一种生物识别技术,都通过错误接受率(FAR)、错误拒绝率(FRR)和等错误率(EER)这三个指标来评价。在实际应用中,受环境、算法实现、个体等各方面的影响,往往需要在追求安全性的更严格匹配(低FAR、高FRR)和照顾用户体验的更宽松匹配(高FAR、低FRR)之间寻找平衡点(低EER)。
2.3. NFC载体
早在2015年,国内就有先驱者提出NFC技术在智慧校园中的应用场景 [4],期望针对校园一卡通方案的局限性,采用以NFC技术为核心的虚拟校园卡,连接校园卡的线上和线下服务,但文中并没有给出实现的案例。NFC方案的实质是通过手机内置的电子钱包NFC卡对校园卡进行模拟或关联,从而成为新的介质,通过硬件终端的改造,实现对该介质的识别和读写。与二维码和生物特征相比,NFC同时兼具了两者的优点,并且在一定程度上巧妙地回避了它们的缺陷,随着安卓系统和苹果系统针对NFC功能的逐步开放,使采用NFC作为载体的方案变得可行,文献 [5] [6] [7] 中提出了使用NFC作为门禁、门票以及消费的应用场景,但文中提出的方案只适用于安卓手机,没有在苹果手机中实现相同的功能。
在苹果系统中,基于其手机钱包的官方解决方案(Student ID) [8] 于2020年5月开始陆续在北美的小部分学校上线。其中的一部分学校也同时上线了基于谷歌钱包的虚拟校园卡 [9]。但整体来看,手机原生NFC虚拟校园卡受到合作发卡机构的限制较多,同时,学校内部也存在需要投入升级改造成本等诸多限制,导致应用推广存在困难。
目前,绝大部分高校的校园卡系统所采用的技术方案都已沿用近20年,当时为了在网络中断的情况下可以继续使用校园卡消费,校园卡系统一般采用脱机消费模式,每次消费都需要对校园卡进行写卡操作,当数据库中的余额与卡芯片中的余额不匹配时,以卡芯片中存储的余额数据为准,脱机方案对系统的安全性要求较低,同时也保证了持卡人的权益。在以二维码或人脸识别作为扩展时,一般会给校园卡持有人设定一个单独的子钱包用于存储一定的联机余额供系统实时扣款,本质上来说,扩展方案只是原有系统的外挂,并没有实现统一账户。同时,苹果和安卓的原生NFC解决方案需要学校废除现有校园卡系统,直接采用电子钱包内的NFC校园卡,大部分高校不能接受这种方案。下文将给出上海纽约大学基于手机钱包的NFC虚拟校园卡的解决方案。
3. 虚拟机校园卡的技术选型
3.1. 总体需求
基于手机钱包的NFC虚拟校园卡(下面简称NFC虚拟校园卡)应当满足如下的要求:
a) 原有的实体校园卡所涉及的业务流程和应用场景,在使用NFC虚拟校园卡方案时,应当被完整覆盖,且实体校园卡和NFC虚拟校园卡可同时使用;
b) 实时扣款并体现余额。在使用虚拟校园卡消费时,应实时扣除实体卡或虚拟卡对应账户的余额;
c) NFC虚拟校园卡方案应当基本覆盖所有支持手机钱包的苹果和安卓移动终端,并支持穿戴设备,例如,智能手表的接入;
d) NFC虚拟校园卡方案应充分保障数据安全和保护个人隐私,任何涉及校内与第三方的数据交互,都必须确保第三方无法获取任何用户个人信息、关联信息及交易信息;
e) 整体方案应当简单易用,设备更新代价低,部署便捷。
3.2. 技术方向
为满足上述需求,技术选型首先要解决虚拟校园卡的终端适配问题,通常有如下两种选择:
1) 与市面上的主流手机厂商分别进行技术对接
对于安卓端手机而言,国内品牌和厂商纷繁复杂,各有各的协议和标准,需要逐一完成商务谈判和技术对接,实现成本大、可行性低;对于苹果手机而言,其为了避免法律风险,采用与第三方合作的方式进行授权发卡。在美国,Apple公司在教育行业的合作对象是Blackboard,但国内尚无针对教育行业的统一认证和授权发卡服务。即便存在授权的合作方,在不考虑可能存在的合规性要求的情况下,要完成商务谈判流程也需要投入相当的时间成本。由于与手机厂商直接合作存在的风险和成本的不可控,需要考虑其他技术方案。
2) 借助现有的移动终端中已经内置的NFC虚拟卡
安卓和苹果手机已经内置的NFC卡可分为两大类:第一大类是用于身份认证的航司或酒店的会员卡、登机卡等;第二类是用于支付的银行卡、交通卡或其他预付卡(预付卡国内未上线)。
第一类身份卡发卡简单,但在苹果手机中可通过分享功能与他人共享 [10],在校园卡应用场景中存在一定的安全隐患,因此,我们选择第二类支付卡作为我们方案的载体,此NFC虚拟卡具备如下明显优势:
a) 虚拟卡本身有支付级的安全保证。无论安卓或者苹果手机,都各自有的银行级安全保证 [11] [12]。虚拟卡无法被复制,也无法被破解;
b) 在苹果手机以及部分新款安卓手机中,即便手机因电量过低关机,其依旧能激活手机钱包内的默认NFC卡片 [13] [14];
c) 基于手机钱包的NFC交通卡,可以设置为快捷卡片模式,在使用时无需解锁手机,能实现挥手即刷;
d) 通过与第三方虚拟卡公司(如交通卡公司、中国银联等)的战略合作,借助他们的虚拟卡就可以实现与校内实体卡的映射。同时,第三方公司都有庞大的团队开发和维护专用APP,合作方只需要使用,可节省大量开发和运维成本。
综上所述,手机钱包中的NFC支付卡是虚拟校园卡载体的最佳选择。目前,国内的第二类支付卡共有两种:带有银联标识的虚拟银行卡和各类虚拟交通卡。
3.3. 虚拟银行卡
手机钱包中的带有中国银联标识的虚拟银行卡作为虚拟校园卡的载体方案时,存在以下局限性:
首先,为了实现虚拟卡卡面的统一外观,学校需要与特定的一家银行进行签约,并且以类似联名卡的方式进行发卡。在这种情况下,师生、员工选择的自由度、学校的发卡量以及学校基本户等因素会限制学校对签约银行的选择。
其次,根据国家法律,银行卡必须实名制,这就意味着为了开通虚拟银行卡,学校必须提前将用户数据,特别是身份证、护照、手机号码等个人敏感信息提供给银行,以在发卡时进行个人身份与虚拟银行卡的绑定,这与最核心的数据安全与个人隐私保护的需求矛盾。
最后,在使用虚拟银行卡时,需要先通过手机的人脸、指纹或PIN码进行解锁,导致使用便捷性受限,无法从根本上提升用户体验。
3.4. 虚拟交通卡
相较于虚拟银行卡,同样具备支付级别安全性的公共交通卡,因其无需实名认证要求,成为本方案的最佳选择。通过交流,上海交通卡公司允许用户在交通卡APP中跳过用户手机注册流程,直接调用学校认证接口进行注册和认证。通过跨域身份验证系统,实现双方的交互数据中不存在任何用户敏感数据,保障了个人信息安全。
除数据安全与个人隐私保护的优势外,虚拟交通卡在各类手机中的快捷模式使用户在使用时无需解锁手机,真正实现了挥手即刷,与使用传统二维码的方式相比,用户体验有了质的提升。
上海交通卡支持卡面定制和更换服务,使学校在实际操作时更具灵活性。同时,由于上海交通卡在本地覆盖率高,用户的接受度、认可度、熟悉程度非常高,学校无需耗费过多精力进行相关的使用培训和推广。
4. 虚拟校园卡的业务流程
手机钱包中的NFC虚拟交通卡既作为虚拟校园卡载体,也是普通的交通卡。除了卡面包含学校的图片标识外,在交通卡APP、交通卡后端数据中心均没有持卡用户的任何校内信息,原有的支付安全级别也没有受到任何影响。
在用户绑卡、校内使用、解绑的整个生命周期中,所有用户校内数据自始至终都只在学校内部流转,不流经任何第三方,这与其他同样采用NFC交通卡作为虚拟校园卡载体的方案存在巨大差别 [15]。
4.1. 绑卡与解绑流程
用户可以在非实名注册的前提下,通过上海交通卡APP内的校园认证接口,选择所在学校(上海纽约大学),APP会打开位于校内服务器中的H5绑卡服务页面,该H5页面通过js get方式获取请求终端的虚拟交通卡号并强制APP内置浏览器跳转到纽约大学SSO的统一身份认证页面,用户在该页面通过双因素身份认证后,校内的绑卡服务可以获取当前用户的学工号,并将其与js get获得的虚拟交通卡卡号关联,同时绑卡服务再次以POST的方式将成功关联的交通卡号提交给上海交通卡APP,并由其完成手机钱包内NFC虚拟交通卡的卡面更换。
绑卡服务通过REST API在校内各应用服务中创建、更新和赋权虚拟卡,如果用户已绑定过虚拟卡,绑卡服务将自动解绑老卡并绑定新卡。在整个流程中,学校与上海交通卡公司的主要交互数据仅有虚拟交通卡号,不包含诸如学工号等其他任何用户信息,具体流程请见图1。与其他同类方案先将用户信息提供给第三方、再由第三方将用户信息写入虚拟卡 [15] 相比,本方案的数据安全性更高。
4.2. 校内使用流程
如图2所示,用户使用NFC虚拟校园卡和实体校园卡的方式完全一致。我们通过改造读卡终端,使其在2 ms内完成卡类型解析,然后进行卡真伪校验,通过校验后按照不同业务所要求的数据规范上报,并在应用系统中完成数据校验和后续流程。
Figure 1. Flow chart of the binding/unbinding process of virtual campus card
图1. 虚拟校园卡绑卡/解绑流程图
Figure 2. Flow chart of the process of using virtual campus card on campus
图2. 虚拟校园卡校内使用流程示意图
5. 虚拟校园卡的系统架构
NFC虚拟校园卡系统采用微服务架构,包含了服务网关、注册服务、业务组件、日志管理服务、健康检测服务及数据存储服务等。其中,业务组件包括身份认证、绑卡与解绑、虚拟卡注册、门禁开卡、门禁鉴权、消费、API网关等微服务模块。
虚拟校园卡全生命周期的业务组件全部采用容器化部署并使用K8S统一管理。图3简单说明了我校基于Spring Cloud的微服务架构,其中Redis、MySQL等均为分布式部署架构。
业务组件之间通过API进行通信协作。以身份认证为例,认证请求首先通过负载均衡提供的VIP进入网关,网关解析请求中的URL并发送请求到身份认证服务(KeyCloak),在完成多因素身份认证(Multi Factor Authentication, MFA)后,终端会携带token跳转至网关,再转到绑卡服务接口,然后绑卡服务对token进行解析实现身份认证。架构中的每个服务组件都会在NACOS中注册,而网关则是通过NACOS进行动态服务发现。
Figure 3. Architecture of the microservice
图3. 微服务架构
业务流程通过RabbitMQ来发送消息。如果确认用户绑卡的动作完成,RabbitMQ会发送一个广播,将一些必要的数据和Key封装成JSON格式发送,不同的应用服务通过订阅的方式接收这些内容并存储到数据库,然后通过定时任务触发后续流程,例如下文在门禁系统中创建虚拟卡并赋权。为保障数据的安全性,数据库会定期备份并自动上传至MinIO。
与常规的服务架构相比,这种微服务架构在高并发的时候可以实现自动横向扩容。
6. 与实体校园卡的业务融合
在本方案中,虚拟校园卡和实体校园卡是同时存在、相互关联但有相对独立的“一个账户的两张卡”。与其他方案中 [15] 以虚拟卡模拟实体卡的方式相比,本方案具备更高的安全性和更大的灵活性。
通过与现有门禁系统和消费系统的业务融合,虚拟校园卡可以完全覆盖实体校园卡的功能,不但减少了遗忘、丢失、损坏带来的各类问题,还通过全套线上方案实现了从发卡到销卡的全生命周期管理,在提升管理效率的同时,也提升用户的使用体验。
我校现有门禁系统(Lenel)为纽约大学全球统一的门禁系统,在虚拟校园卡的门禁授权中,我们以Lenel为主体,采用创建分支的单向策略流动模式,为虚拟校园卡赋权,实现了在不改变现有管理模式的情况下对虚拟校园卡进行门禁验证,其中的业务融合与数据流转可以参考图4。
我们将校园卡系统的脱机消费模式升级为联机消费模式,账户余额以数据库为准,虽然存在更高的安全挑战,但我们以最简单的方式实现了实时扣款并显示余额,使得一个账户可同时使用虚拟校园卡和实体校园卡消费。具体而言,在全联机模式下,虚拟校园卡和实体校园卡融合的优势还体现在:
a) 可实时查询消费数据,进行自动对账,错账处理也变得简单;
b) 发卡方式更加灵活,在一些场景中无需打印和领取实体卡,例如,新生卡、访客临时卡等,可以在用户入校前结合工作流,通过全线上申请、审批、发放和自助绑定生效;
c) 能实现无感知更新校园卡数据,包括卡余额和卡状态信息,使得校园补助和第三方充值能实时到账、无需圈存和领款,还实现了在线自助一键锁卡、挂失与解挂;
d) 相对独立的虚拟卡使用不受实体卡挂失影响,不仅提升了用户体验,还能降低实体卡补卡频率,降低了实体卡管理运维成本;
e) 黑名单校验、消费明细计算等都不需要读卡设备处理,消费过程也不需要写卡操作,不仅消除了黑卡消费引起的卡库不一致问题,还降低了对刷卡设备的要求,使得融合的校园卡系统接入和部署更加方便。
Figure 4. Diagram of virtual campus privilege granting
图4. 虚拟校园卡赋权示意图
我校非门禁类读卡器都配备USB接口,可以连接到笔记本、台式机、平板电脑等各类终端,在这些终端中可以通过访问读卡器内置的Web服务来获取刷卡信息。并且,在全联机模式中,我校所有的校园卡业务都转变为B/S架构,各类终端可以调用校园卡系统S端相应的服务页面,在经过证书验证后即可实现消费扣款、考勤签到、设备租用、图书馆借还等业务服务。与脱机模式中广泛使用的C/S架构和专用POS机设备相比,联机模式中的B/S架构具备更多的灵活性,能实现需求的快速交付,还扩展了校园卡应用的地域范围,例如通过5G网络回连校园网、实现任意地点的业务供给。
7. 风险控制
与其他高度依赖上海交通卡APP和第三方绑定服务的方案不同,本方案虽然使用了交通卡APP,但并不受限于该APP,也未使用任何其他第三方服务。即便上海交通卡公司的接口服务因各种原因无法继续提供,我们依旧可以通过线下方式完成虚拟校园卡的自助绑定,详见图5。
8. 实际使用与分析
我们自2018年起,分别与Apple、银联、交通卡公司等进行了持续的可行性分析与方案沟通,并于2020年4月确定了上海交通卡方案并开启安卓和苹果的小范围邀请试用。受疫情影响,在系统稳定试运行1年之后,我们于2021年4月正式向全校推广。
从试运行至今2年多以来,全校师生的虚拟卡绑定率已经达到98.5%。根据调查发现,剩下1.5%的用户未绑定到原因主要是:手机不支持NFC功能或者手机无法通过现有NFC的注册过程完成身份绑定;个别用户担心个人隐私信息泄漏而不愿使用。
Figure 5. Flow chart of self-service of virtual campus card binding
图5. 虚拟校园卡的自助绑定流程
在虚拟校园卡绑定率基本稳定后,我们对消费、打印、门禁的虚拟卡使用率进行了统计,发现门禁的使用率为99%,打印消费为92%,餐厅、小卖部等消费场景因为支持微信及支付宝扫码导致虚拟卡使用率仅为50%。
另外,我们发现多次重新绑定的人数约占5%,其原因主要是:安卓或苹果手机用户在更换手机时无法将虚拟交通卡通过云端转移到新手机中,在无法找回原虚拟卡时,需要重新绑定新卡。
9. 结论与展望
通过使用手机钱包内置的NFC上海公共交通卡来模拟校园卡,学校节约了相关手机APP开发和维护的费用,同时,安全性也得到了保证。在绑卡及使用的过程中,校方不会向交通卡公司及手机厂商传递任何用户个人数据,NFC卡内也不存有任何用户的信息,切实保护了用户隐私。完成绑卡的用户不仅可以随时使用此NFC卡替代实体卡校园卡进行校内门禁通行、消费结算、图书借阅等场景,同时,也不会影响其作为公共交通卡的功能。
在未来,我们将协调交通卡公司提供手机端APP接口,使我们在微信企业号功能中直接调用该接口以获取相关的卡号信息并更新卡面,用户操作也将完全在学校的微信企业号内完成,使得用户的归属感和体验感能进一步提升。