二维码电子票在铁路客票系统中的应用研究

2022-01-04 01:29游雪松戴琳琳
铁路计算机应用 2021年12期
关键词:密钥加密二维码

游雪松,苗 凡,戴琳琳,蔡 云

(1. 中国国家铁路集团有限公司 客运部,北京 100844;2. 中国铁道科学研究院集团有限公司 电子计算技术研究所,北京 100081)

中国铁路客票发售和预定系统(简称:客票系统)于2000年开始在纸质火车票右下角使用二维码(QR Code)[1],其中存储了加密后的票面信息,通过专用识读设备可以还原出票号、身份证号、乘车日期、车次等信息。二维码技术改变了以往售票员需要手工录入票号和身份证号码的工作方式,不仅有效避免了人工输入可能导致的失误,显著提高了业务办理效率,还在一定程度上保护了旅客的个人隐私信息。

随着移动互联网的飞速发展,在移动终端,二维码技术已得到广泛运用。既有的二维码技术在安全性与扩展性上已不能满足客票日益增多的应用场景,为进一步提高旅客出行体验,本文对二维码客运电子票(简称:电子票)关键技术进行了研究,设计了应用于客票系统的二维码电子票平台(简称:二维码平台)。

1 现状分析

1.1 电子票载体

2011年6月, 12306互联网售票系统(简称:12306)推出支持购买部分高铁车次的旅客持二代身份证进/出站的功能;2012年7月,中国银行与中国国家铁路集团有限公司(简称:国铁集团)推出了中铁银通卡产品,旅客可使用中铁银通卡刷卡检票乘车。以上两种是电子票的最初实践。电子票的实质是普通纸质火车票的一种电子映象,具有纸质车票的全部功能,为实现快速查询旅客购买车票的电子票信息,需要为电子票选择合适的载体。

目前,常用的电子票载体有居民身份证、IC卡与二维码等[2]。以上3种载体的相关特性对比,如 表1所示。

表1 电子票载体特性

从表1可以看出,身份证并不具备携带票务数据的能力,客票系统实名制的独特性,可将与身份证相关联的电子票查询出来。IC卡既可存储一定的数据且具有较高的安全性,但因使用不便、维护成本较高,存在一定的推广难度。二维码相比身份证与IC卡具有更好的灵活性与更低的使用成本,全国铁路车站终端均配置有识读二维码的设备,已具备推广以二维码为载体的电子票的条件,但二维码中包含有乘客的姓名、身份证号等个人信息,乘车日期、出站、到站等个人行程信息,以上数据均属于个人敏感信息,需要进行密码保护。

1.2 国密算法

2019年10月《中华人民共和国密码法》公布,客票系统作为国家的关键信息基础设施,应按法律要求使用国产商用密码(简称:国密)算法对二维码数据进行保护。目前应用最广的国密算法为SM2非对称加密算法、SM3杂凑算法与SM4对称加密算法。国密算法相比国际主流的RSA、AES和SHA系列算法具有如下优势。

(1)运算速度快。同等安全强度下,SM2算法在用私钥签名时,速度远超RSA算法;SM4算法相比3DES、AES更易实现、加解密速度更快。

(2)有效密钥短。SM2算法的使用私钥长度为256 bit,而RSA算法通常至少需要2 048 bit。

(3)私钥产生简单。RSA私钥产生时需要用到两个随机产生的大素数,除了需要保证随机性外,还需要用到素数判定算法,产生过程复杂且速度较慢;而SM2私钥的产生只需要生成一个一定范围内的256 bit的随机数即可,过程简单、安全风险较小。

(4)安全性更高。256 bit的SM2算法密码强度已超过RSA-2048与RSA-3072;SM3算法相比于SHA-256,增加了多种新技术,在安全性和效率上更有优势。

2 二维码平台总体设计

线上购买的车票均为电子票,电子票的生命周期包括了出行前的订票,出行过程中的验票、检票,以及出行后的打印报销凭证,所有环节均可能涉及到二维码。购票成功后,系统会向旅客发送邮件,邮件中电子购票信息单上的二维码含有乘客的出行信息;出行过程中,可通过手机中的二维码进行验、检票;出行后,可扫描报销凭证右下角二维码验证车票真伪等。这些不同场景的二维码需要在不同的业务终端进行交叉识读与解析,电子票的二维码在设计上需要统一数据规范、统一应用标准,具备良好的扩展性。

2.1 二维码数据结构

电子票基于二进制编码格式,依据《QR Code国家标准GB/T 18284—2000》,采用Base64编码方式将加密的字节数组编码后转换成二维码图片,有纸质通知单上的静态二维码,也有手机上生成的动态二维码。静态二维码安全性低,主要应用于核验场景,加密算法为SM4,密钥存储于硬件智能卡中;动态二维码可以检票乘车,需要具备较高的安全性,加密算法包括SM2、SM3与SM4,有多组密钥存储于移动终端的可信区域中。为满足动态二维码双离线校验,增加安全性,本文在原有的信息数据外,还新增了用户公钥信息,用户私钥签名信息和时间戳验证信息[3],数据结构如表2所示。

表2 二维码数据结构

2.2 二维码平台架构

二维码平台架构以新一代客票系统为基础,包括国铁集团级、铁路局集团公司级和车站级。其中:车站级需要在车站终端程序中集成电子客票识别码的SDK(Software Development Kit),并在计算机终端安装PSAM(Purchase Secure Access Module)卡;铁路局集团公司级需要部署二维码生码前置服务;国铁集团级需要部署二维码发码服务。二维码发码服务为铁路12306网站、12306 App、站车交互终端提供生码或解码服务,可用于二维码闸机检票与手机二维码乘车等业务。二维码平台具体架构如图1所示。

图1 二维码平台架构

2.2.1 二维码发码服务

二维码发码服务由加密机、加解密算法服务、生码服务、ES(Elasticsearch)集群、密钥管理服务构成。各部分的功能如下:

(1)加密机:加密机内置密码算法芯片,支持对称与非对称加密算法,主要用于加密业务数据,其中,对称加密密钥与线下渠道PSAM卡中的密钥保持一致。除此之外,加密机还用于生成二维码平台的公私钥,并保存平台的私钥。

(2)密钥管理服务:二维码发码平台将为开通乘车码或检票码的用户生成公私密钥对,其中私钥会加密下发到用户的12306 App中,公钥存储于数据库中,二维码发码服务提供公私密钥定期更新的功能。

(3)加解密算法服务:二维码平台提供常用的加解密算法,包括对称加密算法DES、3DES、AES,与国密算法SM4;摘要算法MD5、SHA-1、SHA-256与国密哈希算法SM3;非对称加密算法RSA、SM2,可以对数据进行加解密、数字签名、验签等功能。

(4)生码服务:生码服务支持多种协议,为各业务提供加密数据。当互联网、手机、窗口、自动售票机和闸机等需要生成二维码数据时,需要通过铁路局集团公司级的二维码生码前置服务连接到国铁集团的二维码生成服务,发起二维码生成请求。二维码生成服务通过调用密钥数据库与加密算法模块来完成电子票数据的加密。

(5)ES集群: 12306网站、12306 App、车站窗口、自动售票机、窗口核验、车站闸机等所有渠道的应用程序在生成或解析二维码的日志流水时,均会通过SDK上传至国铁集团级的ES集群。ES集群可对当日的发码情况进行统计,同时可针对具体的窗口或个人进行行为分析,排查异常行为。

2.2.2 二维码生码前置服务

二维码生码前置服务部署在18个铁路局集团公司的数据中心,主要为售票窗口、自动售票机、检票闸机、人工核验窗口等车站终端提供连接二维码平台的能力,并具备业务路由管理能力,可根据SDK的命令路由至不同的服务提供者。

2.2.3 终端SDK

终端SDK通过发送APDU(Application Protocol Data Unit)指令的方式与PSAM智能卡进行通信,可调用其完成数据的加密,同时SDK还可与二维码生码前置服务进行通信,实现设备注册、密钥更新、设备授权、交易日志上传等。

2.3 二维码电子票业务流程

二维码的生命周期包括二维码的生成、定时更新、二维码使用等。其中,生成阶段包括数据加密与数据编码,使用阶段包括人工验票、闸机检票、窗口退票、窗口改签等。下面以铁路e卡通业务为例来分析二维码电子票流程,如图2所示。

图2 二维码电子票生命周期

图2 中,黑色线条为生码流程;红色线条为扫码流程;绿色线条为密钥管理流程;蓝色线条为第三方平台调用二维码服务;绿色方框为二维码平台相关实体;灰色方框为客票系统现有应用程序。

2.3.1 加密

从图2中可以看出,移动终端通过手机应用服务连接客票系统进行购票操作,购票完成后向二维码平台请求生成二维码,二维码生码服务会先将用户的公钥、加密后的电子票数据和时间戳一起打包发给App,App利用终端中的SDK对以上数据进行签名,离线生成二维码。

电子票的原始数据加密在服务端完成,移动终端收到的是电子票的密文。只有拥有服务端的两个密钥才能解密出电子票的数据,保证了数据的机密性。App的签名值带有身份识别功能,第三方难以伪造出同样的密钥。时间戳验证信息包括二维码的有效时间与二维码的生成时间信息,这些数据通过PSAM卡的密钥进行加密处理,计算出MAC验证值,作为二维码时间戳验证数据的一部分,有了这个时间戳验证信息,用户生成的二维码数据的有效时间将得到控制,防止二维码电子票被复制[6]。

2.3.2 编码

电子票的编码过程有数据编码、纠错编码、构造数据、增加版本信息和格式等步骤。过程中主要考虑纠错等级,二维码存在4个级别,由低到高分别为L、M、Q、H级别,对应的纠错比例为7%、15%、25%、35%。纠错等级越高,可修正的错误就越多,需要的纠错码的数据越多,可存储的数据就越小。

纸质媒介上的二维码存在易破损、折叠的情况,比较适合高纠错级别;而手机上的动态二维码不存在损坏的情况,在数据量较大的前提下,为提高终端扫描速度,可选择纠错等级为L。构造数据时需把票面数据与加密数据构成的字符串转为比特流,构成二进制序列,再将上述二进制数据分块,并根据纠错等级和分块的码字产生纠错码,将其加入码字序列,形成新的序列[7]。在规格确定的条件下,将新序列按次序放入矩阵块,将版本信息与格式信息放入相应的区域,构成最终的二维码。

3 关键技术

3.1 双离线过闸技术

目前,全国铁路有近7万个的扫码终端分散在4 000多个车站,存在设备品牌不一、性能不一的问题。二维码平台设计需要考虑如何在不更换设备、不修改应用程序的前提下,让终端较好地识读新二维码,同时,保障二维码的生成和解析在车站网络环境复杂、信号较差的情况下,不受到影响。

针对上述难点,二维码平台采用双离线过闸技术,通过在应用启动时同步二维码平台密钥,并在二维码中预置用户公钥与终端中的签名数据进行联合校验,在终端离线完成二维码的识别。即使在节假日高峰期间,人流量较大的车站依然具备高并发处理能力,不影响旅客出行体验。二维码电子票双离线过闸流程如图3所示。

图3 二维码电子票核验流程

(1)电子票二维码在通过闸机或被其他客票系统终端扫描时,应用程序将识别的二维码信息提交到二维码平台SDK中。(2)SDK根据二维码平台公钥、时间戳与数据签名值,验证此二维码是否为客票系统生成的二维码,若一致,则表明电子票为真票;若不一致,则表明该电子票可能为恶意伪造。(3)通过拆解的用户公钥验证用户签名,确定此二维码为当前用户生成,保证其不可否认性[8]。(4)根据解析的返回值,验证二维码有效期,若过期,可能是生成二维码的截图。(5)根据订单或票号连接至客票系统,查询电子票的详细信息,验证是否存在此电子票。

3.2 多级密钥管理技术

结合二维码电子票业务现状及发展需求,为加强客票系统密码基础设施的顶层设计,在已有铁路数字证书认证系统的基础上,设计了符合国密要求的铁路领域密钥管理服务,用于实现对全国铁路密码设备、应用程序密钥的管理工作,实现密钥在生成、存储和备份、分发和加载、使用、更新、归档、销毁等全生命周期的管理,以及应用接入管理和身份认证功能。

多级密钥管理服务支持在国铁集团和各铁路局集团公司两级进行部署应用。一级密钥管理以管理功能为主,实现二级密钥管理的注册及接入管理;二级密钥管理主要提供密钥生产及托管的功能,实现应用系统类、密码设备类密钥的集中管理功能,确保核心密钥数据安全可控。

4 平台应用与推广

2018年10月二维码平台试点运行,支撑长沙—株洲—湘潭(长株潭)城际铁路e卡通业务。旅客开通铁路e卡通业务后,无须购票就可以使用12306上的e卡通功能扫码乘车,扫码出站后进行扣费结算。2018年12月,二维码平台正式上线,北京、上海、广州等铁路局集团公司接入该平台,除支持铁路e卡通外,还支持购票通知单二维码、电子客票检票码等业务。

2020年12月,铁路部门在成渝客运专线(成都—沙坪坝)为通勤旅客推出了新型票制产品——计次票,持有者可以在有效期内乘坐规定次数、指定发到站及席别的列车。旅客可使用新型客票产品二维码直接扫码乘车。2021年9月,二维码平台首次支持第三方应用的接入,在珠三角城际线试点支付宝铁路乘车码功能,旅客打开支付宝上的12306小程序,完成授权、注册后,可通过小程序上的铁路e卡通二维码享受“先进站,后扣费”服务。 2021年10月,为落实两会代表关于方便未携带身份证旅客购票出行的提案,国铁集团联合铁路公安研究铁路临时身份证明二维码功能,通过12306 App中的临时身份证明二维码为旅客提供一码通行的出行服务。

截至2021年12月,全国铁路接入二维码平台的车站终端数近7万个,使用二维码电子票的手机终端数约为5 000万个,用户数近4 000万名,每天生成二维码近200万次。

5 结束语

随着移动互联网的发展,二维码作为一种便捷的媒介逐渐得到广泛应用,本文研究了国密算法的优势,梳理客票业务二维码需求,实现了安全、可控、易扩展的二维码平台,阐述了电子票的业务流程和关键技术。实践证明采用二维码作为铁路客票系统中的车票媒介,可以实现进站验票、过闸检票、真伪核查等业务,给旅客带来诸多便利的同时也为铁路行业降低运营成本。

猜你喜欢
密钥加密二维码
幻中邂逅之金色密钥
幻中邂逅之金色密钥
基于广义logistic混沌系统的快速图像加密方法
小康二维码
保护数据按需创建多种加密磁盘
Android密钥库简析
加密与解密
二维码让政务公开更直接
二维码,别想一扫了之
一种新的动态批密钥更新算法