CN107749085A - 票卡、使用票卡的方法和机器可读存储介质 - Google Patents
票卡、使用票卡的方法和机器可读存储介质 Download PDFInfo
- Publication number
- CN107749085A CN107749085A CN201711008890.0A CN201711008890A CN107749085A CN 107749085 A CN107749085 A CN 107749085A CN 201711008890 A CN201711008890 A CN 201711008890A CN 107749085 A CN107749085 A CN 107749085A
- Authority
- CN
- China
- Prior art keywords
- ticket card
- remaining sum
- card
- ticket
- identity
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07B—TICKET-ISSUING APPARATUS; FARE-REGISTERING APPARATUS; FRANKING APPARATUS
- G07B11/00—Apparatus for validating or cancelling issued tickets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/401—Transaction verification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
- G06Q20/403—Solvency checks
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开是关于一种票卡、使用票卡的方法和机器可读存储介质,属于自动售检票系统安全领域。票卡包括执行模块、票卡身份标识模块、票卡余额模块和余额验证模块。使用票卡的方法包括两个方面。一个方面涉及开始使用票卡,包括读取票卡的信息;根据身份标识判断刷卡终端与签发票卡的票卡管理中心是否在同一系统;在刷卡终端与签发票卡的票卡管理中心在同一系统时,验证余额验证码是否正确;在余额验证码正确的情况下,根据票卡余额判断票卡是否可用;在票卡可用的情况下,允许使用票卡;以及在票卡不可用的情况下,报警。另一方面涉及结束使用票卡。藉此,票卡内存储有不易被攻击者篡改和伪造的身份信息和余额数据,实现了票卡的防伪造。
Description
技术领域
本公开涉及自动售检票系统安全领域,尤其涉及一种票卡、使用票卡的方法和机器可读存储介质。
背景技术
相关技术中,随着城市轨道交通网络的复杂化和智能化,城市轨道交通的自动售检票(AFC)系统也变得越来越复杂,不仅能识别和接受多种类型的交通票种,还应该具有防止各种网络攻击的能力。对城市轨道交通AFC系统来说,网络攻击主要体现在两方面:对AFC计算机系统的攻击,这类攻击主要以网络为切入点,通过各种手段入侵到AFC的计算机系统,企图窃取重要信息,扰乱AFC系统的正常工作;另一类攻击,则是对车辆终端设备的入侵,以及伪造交通票卡等,扰乱AFC系统的正常收费功能。2017年5月,一种称为WannaCry的勒索病毒席卷全球,许多计算机系统遭病毒的入侵危害,包括德国的火车站车辆信息显示系统也遭受入侵,导致车次信息不能正常显示。因此,为防止不期而来的网络入侵攻击,城市交通AFC系统也应具有一定的防止网络入侵攻击的能力。
实际上,无论城市轨道交通AFC系统使用的是磁卡还是IC卡,都有可能被不法分子伪造。伪造磁条卡相对较容易,但除了单次使用的票卡外,能够充值的交通卡一般都是IC卡。这类IC卡有一个存储模块、处理模块和通信模块,存储模块用于存储卡的余额和其他相关数据,处理模块用于更新卡内余额、提供通信所需要的安全保护。如果没有采取对通信数据的安全保护措施,则不法分子可以将一个卡内信息复制到另一个卡,甚至按照车站终端设备的读卡规则,伪造一些根本不存在的票卡和虚假的充值额度。
发明内容
为克服相关技术中存在的问题,本公开提供一种票卡、使用票卡的方法和机器可读存储介质。
根据本公开实施例的第一方面,提供一种票卡,所述票卡包括:执行模块、票卡身份标识模块、票卡余额模块和余额验证模块;所述执行模块用于:接收所述票卡的身份标识、所述票卡的余额和所述票卡的余额验证码,其中,所述身份标识包括签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述票卡的身份校验码,所述身份校验码与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述余额验证码与所述票卡的密钥和所述票卡的余额相关,所述票卡的密钥与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关;将所述身份标识存储至所述票卡身份标识模块;将所述余额验证码存储至所述余额验证模块;以及将所述票卡的余额存储至所述票卡余额模块。
可选地,所述票卡还包括票卡校验模块;所述执行模块还用于:接收所述票卡的校验码,其中,所述校验码与所述身份标识、余额数据保护字段和协同密钥相关,所述协同密钥被所述签发所述票卡的票卡管理中心和所述签发所述票卡的票卡管理中心以外的票卡管理中心共享,所述余额数据保护字段与所述余额验证码和所述票卡的余额相关;以及将所述校验码存储至所述票卡校验模块。
可选地,所述票卡余额模块包括票卡票面余额模块和票卡系统余额模块,其中,所述票卡票面余额模块用于存储票面余额,所述票卡系统余额模块用于存储系统余额。
根据本公开实施例的第二方面,提供一种使用票卡的方法,所述方法包括:读取所述票卡的信息,其中,所述信息包括所述票卡的身份标识、余额数据保护字段和校验码,所述身份标识包括签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述票卡的身份校验码,所述身份校验码与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述余额数据保护字段与所述票卡的余额验证码和票卡余额相关,所述余额验证码与所述票卡的密钥和所述票卡余额相关,所述票卡的密钥与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述校验码与所述身份标识、所述余额数据保护字段和协同密钥相关,所述协同密钥被所述签发所述票卡的票卡管理中心和所述签发所述票卡的票卡管理中心以外的票卡管理中心共享;根据所述身份标识判断读取所述票卡的信息的刷卡终端与签发所述票卡的票卡管理中心是否在同一系统;在所述刷卡终端与签发所述票卡的票卡管理中心在同一系统时,验证所述余额验证码是否正确;在所述余额验证码正确的情况下,根据所述票卡余额判断所述票卡是否可用;在所述票卡可用的情况下,允许使用所述票卡;以及在所述票卡不可用的情况下,报警。
可选地,所述验证所述余额验证码是否正确包括:根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一票卡密钥;根据所述第一票卡密钥和所述票卡余额计算第一余额验证码;以及根据所述第一余额验证码和所述余额验证码是否一致验证所述余额验证码是否正确。
可选地,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端已被写入所述协同密钥,所述方法还包括:验证所述校验码是否正确;在所述校验码正确的情况下,允许使用所述票卡;以及传输所述信息和使用所述票卡的信息。
可选地,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端未被写入所述协同密钥,所述方法还包括:传输所述信息和使用所述票卡的信息;验证所述校验码是否正确;以及在所述校验码正确的情况下,允许使用所述票卡。
可选地,在所述允许使用所述票卡前,所述方法还包括:识别所述身份标识是否合法;其中,所述允许使用所述票卡的条件还包括所述身份标识合法。
可选地,所述识别所述身份标识是否合法包括:根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一身份校验码;以及根据所述第一身份校验码与所述身份标识中包括的身份校验码是否一致识别所述身份标识是否合法。
可选地,所述票卡余额包括票面余额和/或系统余额。
根据本公开实施例的第三方面,提供一种使用票卡的方法,所述方法包括:读取所述票卡的信息,其中,所述信息包括所述票卡的身份标识、余额数据保护字段和校验码,所述身份标识包括签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述票卡的身份校验码,所述身份校验码与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述余额数据保护字段与所述票卡的余额验证码和票卡余额相关,所述余额验证码与所述票卡的密钥和所述票卡余额相关,所述票卡的密钥与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述校验码与所述身份标识、所述余额数据保护字段和协同密钥相关,所述协同密钥被所述签发所述票卡的票卡管理中心和所述签发所述票卡的票卡管理中心以外的票卡管理中心共享;根据所述身份标识判断读取所述票卡的信息的刷卡终端与签发所述票卡的票卡管理中心是否在同一系统;在所述刷卡终端与签发所述票卡的票卡管理中心在同一系统时,验证所述余额验证码是否正确;在所述余额验证码正确的情况下,计算使用所述票卡的消费金额;根据所述票卡的消费金额和/或使用所述票卡的历史消费记录以及所述票卡的余额确定所述票卡的新余额,并将所述新余额写入所述票卡;以及在所述余额验证码不正确的情况下,报警。
可选地,所述验证所述余额验证码是否正确包括:根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一票卡密钥;根据所述第一票卡密钥和所述票卡余额计算第一余额验证码;以及根据所述第一余额验证码和所述余额验证码是否一致验证所述余额验证码是否正确。
可选地,在所述计算使用所述票卡的消费金额之前,所述方法还包括:识别所述身份标识是否合法;其中,所述计算使用所述票卡的消费金额的条件还包括所述身份标识合法。
可选地,所述识别所述身份标识是否合法包括:根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一身份校验码;以及根据所述第一身份校验码与所述身份标识中包括的身份校验码是否一致识别所述身份标识是否合法。
可选地,所述方法还包括:根据所述新余额和所述协同密钥计算新余额验证码;根据所述身份标识、所述新余额、所述新余额验证码和所述协同密钥计算新校验码;以及将所述新余额验证码和所述新校验码写入所述票卡。
可选地,所述票卡余额包括票面余额和/或系统余额。
可选地,所述票卡余额包括票面余额和系统余额,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端已被写入所述协同密钥,所述方法还包括:验证所述校验码是否正确;在所述校验码正确的情况下,计算使用所述票卡的消费金额;根据所述票面余额和所述消费金额确定所述票卡的新票面余额;根据所述新票面余额更新所述校验码;将所述新票面余额和所更新的校验码写入所述票卡;以及传输所述票卡的新信息、使用所述票卡的信息和所述消费金额。
可选地,在所述计算使用所述票卡的消费金额之前,所述方法还包括:识别所述身份标识是否合法;其中,所述计算使用所述票卡的消费金额的条件还包括所述身份标识合法。
可选地,所述票卡余额包括票面余额和系统余额,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端未被写入所述协同密钥,所述方法还包括:传输所述信息和使用所述票卡的信息;验证所述校验码是否正确;以及在所述校验码正确的情况下,计算使用所述票卡的消费金额;根据所述票面余额和所述消费金额确定所述票卡的新票面余额;根据所述新票面余额更新所述校验码;将所述新票面余额和所更新的校验码写入所述票卡;以及传输所述票卡的新信息、使用所述票卡的信息和所述消费金额。
可选地,在所述计算使用所述票卡的消费金额之前,所述方法还包括:识别所述身份标识是否合法;其中,所述计算使用所述票卡的消费金额的条件还包括所述身份标识合法。
可选地,所述方法还包括:重新读取所述票卡的余额数据保护字段;验证所重新读取的所述余额数据保护字段中包括的余额验证码是否正确;在所述余额验证码正确的情况下,验证使用所述票卡的历史消费记录是否与所重新读取的所述余额数据保护字段中包括的所述票面余额和所述系统余额一致;在使用所述票卡的历史消费记录与所述票面余额和所述系统余额一致的情况下,根据所述票面余额和所述历史消费记录确定新票面余额和新系统余额,其中,所述新票面余额和所述新系统余额相等;根据所述新系统余额更新所述余额验证码,以得到新余额验证码;根据所述新票面余额、所述新系统余额和所述新余额验证码更新所述校验码以得到新校验码;以及将所述新票面余额、所述新系统余额、所述新余额验证码和所述新校验码写入所述票卡。
根据本公开实施例的第四方面,提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,所述指令用于使得机器执行上述的方法。
本公开的实施例提供的技术方案可以包括以下有益效果:票卡内存储有票卡的身份标识、余额验证码和余额,身份标识中包括票卡的身份校验码,身份校验码与签发票卡的票卡管理中心的密钥有关,签发票卡的票卡管理中心的密钥不易被攻击者掌握,身份校验码被获取的概率极小,如此,实现了票卡的防伪造。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种票卡的结构框图;
图2是根据一示例性实施例示出的一种票卡的结构框图;
图3是根据一示例性实施例示出的一种票卡的结构框图;
图4是根据一示例性实施例示出的票卡制售流程图;
图5是根据一示例性实施例示出的一种使用票卡的方法的流程图;
图6是根据一示例性实施例示出的一种使用票卡的方法的流程图;
图7是根据一示例性实施例示出的一种使用票卡的方法的流程图;
图8是根据一示例性实施例示出的一种使用票卡的方法的流程图;
图9是根据一示例性实施例示出的一种使用票卡的方法的流程图;
图10是根据一示例性实施例示出的一种进站使用票卡的方法的流程图;以及
图11是根据一示例性实施例示出的一种出站使用票卡的方法的流程图。
附图标记说明
1 执行模块 2 票卡身份标识模块
3 票卡余额模块 4 余额验证模块
5 票卡校验模块 6 票卡票面余额模块
7 票卡系统余额模块
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开涉及一种票卡、使用票卡的方法和机器可读存储介质,还公开了票卡的制作方法。本公开所设计的票卡具有抗伪造、抗非法篡改的能力,且能跨平台使用。本公开涉及的自动售检票(AFC)系统票卡制作和使用方法不限于城市交通系统。
根据本公开实施例的第一方面,提供一种票卡。图1是根据一示例性实施例示出的一种票卡的结构框图。如图1所示,票卡包括执行模块1、票卡身份标识模块2、票卡余额模块3和余额验证模块4。其中,执行模块1用于:接收票卡的身份标识、票卡的余额和票卡的余额验证码,其中,身份标识包括签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和票卡的身份校验码,身份校验码与签发所述票卡的票卡管理中心的身份标识符、票卡的身份标识符和签发所述票卡的票卡管理中心的密钥相关,余额验证码与票卡的密钥和票卡的余额相关,票卡的密钥与签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和签发票卡的票卡管理中心的密钥相关;将身份标识存储至票卡身份标识模块2;将余额验证码存储至余额验证模块3;以及将票卡的余额存储至票卡余额模块4。票卡内存储有票卡的身份标识、余额验证码和余额,身份标识中包括票卡的身份校验码,身份校验码与签发票卡的票卡管理中心的密钥有关,签发票卡的票卡管理中心的密钥不易被攻击者掌握,身份校验码被获取的概率极小,如此,实现了票卡的防伪造。
图2是根据一示例性实施例示出的一种票卡的结构框图。如图1所示的票卡的不同之处在于,图2所示的票卡还包括票卡校验模块5。在该示例性实施例中,执行模块1还用于:接收票卡的校验码,其中,校验码与身份标识、余额数据保护字段和协同密钥相关,协同密钥被签发所述票卡的票卡管理中心和签发所述票卡的票卡管理中心以外的票卡管理中心共享,余额数据保护字段与余额验证码和票卡的余额相关;以及将校验码存储至票卡校验模块5。
可选地,在本公开的示例性实施例中,票卡余额模块3还可以包括票卡票面余额模块和票卡系统余额模块,其中,票卡票面余额模块用于存储票面余额,票卡系统余额模块用于存储系统余额。票面余额可以被刷卡平台设备更新,系统余额只能被签发票卡的票卡管理中心更新。
图3是根据一示例性实施例示出的一种票卡的结构框图。在该示例性实施例中,票卡内有五个存储模块和一个执行模块。五个存储模块分别为:票卡身份标识模块2,用于存储票卡身份标识(ID);票卡票面余额模块6,用于存储票卡票面余额数值m1;票卡系统余额模块7,用于存储票卡系统余额数值m2;余额验证模块4,用于存储票卡系统余额的验证码;票卡校验模块5,用于存储票卡信息的校验码。执行模块1则根据指令类型分别更新不同存储模块的数据,或报错处理,如图3所示。其中身份标识具有抗伪造功能,票卡记录的票面余额可以被跨平台改写,票卡记录的系统余额只能被票卡发卡中心改写。
本公开的票卡由票卡管理中心统一制作。首先,票卡管理中心为每张票卡分配一个10字节长度的身份标识(ID),格式为XX-YYYY-ZZZZ,其中XX是该签发票卡的票卡管理中心的身份标识符,YYYY是所签发的票卡的身份标识符,ZZZZ为票卡身份校验码。
这种格式允许不同票卡管理中心的最大个数为2^16-1=65535个,每个票卡管理中心所能签发的票卡数不能超过2^32-1=4294967295个。在实际发卡时,可以按照一定的规则签发票卡的身份标识符,例如在一定范围内按递增顺序签发。票卡身份中的校验码由一个输出长度为32比特的密码杂凑函数H1生成,具体格式为
ZZZZ=H1(XXYYYY‖K0)
其中符号“‖”表示数据的连接,K0是票卡管理中心的密钥。实际实现时,可选截短的MD5或截短的SHA1作为杂凑函数H1。该领域的技术人员应该知道,有许多不同的方法定义杂凑函数H1,选择哪种方法实现杂凑函数H1,不影响对本公开的限制。
不难看出,票卡的身份标识不是一串可以印刷的字符,而是计算机二进制字符,可以被计算机系统识别和处理。
定义了票卡的身份标识,就可以发卡了。票卡管理中心在制作票卡时,首先按照票卡的身份标识分配规则,产生票卡身份标识XX-YYYY-ZZZZ,然后为此票卡分配一个密钥
Ki=H2(K0‖XXYYYY)
其中H2是一个具有128比特输出的密码学杂凑函数,该杂凑函数同样可以选取MD5或取SHA1输出的128比特。该领域的技术人员应该知道,可以有许多不同的方法定义杂凑函数H2,不影响对本公开的限制。
然后,票卡管理中心根据购票金额m,计算余额验证码H1(m‖Ki)。记b=m‖m‖H1(m‖Ki)为票卡的余额数据保护字段。票卡管理中心计算票卡校验码d=H2(ID‖b‖K1),其中K1是签发该票卡的管理中心与其他跨平台管理中心之间的共享密钥。票卡管理中心将票卡身份信息ID、票卡余额数据保护字段b以及票卡校验码d反馈给车站终端,然后通过车站终端将购票金额分别写入票卡的票面余额模块和票卡的系统余额模块,将余额验证码H1(m‖Ki)写入余额验证模块,将票卡校验码d写入票卡校验模块。具体流程如图4所示。
在图4所示的售票流程中,签发票卡的过程如下:(1)票卡管理中心产生票卡身份标识ID=XX-YYYY-ZZZZ,并将这一身份标识添加到数据库中;(2)使用票卡管理中心的密钥K0计算票卡密钥Ki;(3)根据购票金额m,计算金额验证码H1(m‖Ki);(4)记票卡余额数据保护字段b=m‖m‖H1(m‖Ki),计算票卡校验码d=H2(ID‖b‖K1);(5)通过发卡终端设备将以上述信息写入空白票卡的适当存储模块。票卡身份标识(ID)的格式为XX-YYYY-ZZZZ,其中ZZZZ=H1(XXYYYY‖K0)为票卡身份校验码,具有抗伪造特性;票卡票面余额m1和票卡检验码d在票卡使用中可以被刷卡平台设备更新,票卡系统余额m2在票卡使用中只能被票卡签发平台的管理中心更新,具有抗篡改特性;余额验证码为H1(m2‖Ki),保证票卡系统余额m2的非法修改可以被识别;票卡校验码d=H2(ID‖b‖K1)根据平台协同密钥K1产生,使得票卡的合法性可以在跨平台得到验证。
下面举例说明在制作票卡的过程中,票卡管理中心执行的操作:(1)基于MD5算法设计32比特输出的杂凑函数。设输入数组为x,则MD5的输出y=MD5(x)是一个128比特数组。将y记为4个32比特的段,y=(y1‖y2‖y3‖y4),则可定义函数H1的输出为其中为比特位异或运算,则z的长度为32比特。(2)假设票卡管理中心的身份标识为A1(两字节表示),所签发的票卡为第80张卡(80的ASCII表示为‘P’),则票卡的身份序号为A1-000P,其中0为实际意义的0值,这里的写法仅用于展示说明。然后票卡管理中心计算ZZZZ=H1(A1-000P||K0)这样就产生了票卡身份标识ID=A1-000P-ZZZZ,并将这一身份标识添加到数据库中;(3)票卡管理中心计算票卡密钥Ki,根据购票金额m,计算金额验证码H1(m‖Ki),产生票卡余额数据保护字段b=m‖m‖H1(m‖Ki);(4)票卡管理中心计算票卡校验码d=H2(ID‖b‖K1)。将以上ID、m、H1(m‖Ki)、d等信息通过购票设备写入空白票卡。通过如上步骤就完成了一张票卡的制作。注意有些票卡身份标识不能用可打印和显示的字符串表示,只能通过计算机二进制表示。在本实施例中,为了展示说明,我们使用了可打印的字符(如‘P’),也将本来不可打印的字符(如‘0’)显示出来。
为了说明按照上述方式制作的票卡能正常使用,而且具有安全防护功能,需要说明具体如何使用及其使用流程。
根据本公开实施例的第二方面,提供一种使用票卡的方法,涉及到票卡持有人开始使用票卡。图5是根据一示例性实施例示出的一种使用票卡的方法的流程图。如图5所示,该方法包括以下步骤。
在步骤S50中,读取票卡的信息,其中,信息包括票卡的身份标识、余额数据保护字段和校验码,身份标识包括签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和票卡的身份校验码,身份校验码与签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和签发票卡的票卡管理中心的密钥相关,余额数据保护字段与票卡的余额验证码和票卡余额相关,余额验证码与票卡的密钥和票卡余额相关,票卡的密钥与签发所述票卡的票卡管理中心的身份标识符、票卡的身份标识符和签发票卡的票卡管理中心的密钥相关,校验码与身份标识、余额数据保护字段和协同密钥相关,协同密钥被签发票卡的票卡管理中心和签发票卡的票卡管理中心以外的票卡管理中心共享。
在步骤S51中,根据身份标识判断读取票卡的信息的刷卡终端与签发票卡的票卡管理中心是否在同一系统,并当两者在同一系统时执行步骤S52,例如,判断刷卡终端与签发票卡的管理中心是否同在公交系统或同在轨道交通系统。
在步骤S52中,在刷卡终端与签发票卡的票卡管理中心在同一系统时,验证余额验证码是否正确,若正确则执行步骤S53,若不正确执行步骤S55。
进一步地,在该示例性实施例中,可以通过查找数据库中存储的余额验证码与读取的票卡的中的余额验证码是否一致的方式验证余额验证码是否正确。此外,也可以通过如下方式验证余额验证码是否正确。根据签发票卡的票卡管理中心的密钥、签发票卡的票卡管理中心的身份标识符和票卡的身份标识符计算第一票卡密钥;根据第一票卡密钥和票卡余额计算第一余额验证码;以及根据第一余额验证码和余额验证码是否一致验证余额验证码是否正确。通过计算的方式验证余额验证码可减轻数据库的负担。
在步骤S53中,根据票卡余额判断票卡是否可用,若可用则执行步骤S54,若不可用则执行步骤S55。
在步骤S54中,允许使用票卡。
在步骤S55中,报警。例如,不允许持卡人进站,或者为了避免造成拥堵,随允许持卡人进站,但通过声音提醒或者其他方式提醒工作人员该票卡不可用。报警方式不限制,可根据实际使用情况设置。
余额验证码与票卡的密钥和票卡余额相关,票卡的密钥与签发票卡的票卡管理中心的密钥相关,签发票卡的票卡管理中心的密钥不易被攻击者掌握,如此,可用防止假冒票卡。
在本公开的示例性实施例中,涉及到在读取票卡的信息的刷卡终端与签发票卡的票卡管理中心不在同一系统,并且刷卡终端已被写入协同密钥时,如何使用票卡。下面结合图6来介绍。在步骤S61中,判断刷卡终端与签发票卡的票卡管理中心是否在同一系统。当两者在同一系统中时,前面已介绍如何使用票卡,在此不在赘述。当两者不在同一系统,并且刷卡终端已被写入协同密钥时,执行步骤S64。在步骤S64中,验证校验码是否正确;若正确则执行步骤S67,若不正确则执行步骤S68。进一步地,验证校验码是否正确的方式有很多种。可以通过计算的方式。根据身份标识、余额数据保护字段和协同密钥计算出一校验码,对比该计算出的校验码与读取的校验码是否一致,若一致则读取的校验码正确,若不一致则读取的校验码不正确。通过计算的方式验证校验码可减轻数据库的负担。在步骤S67中,允许使用票卡。在步骤S68中,报警。在该示例性实施例中,由刷卡终端验证校验码是否正确。
在本公开的示例性实施例中,还涉及到在读取票卡的信息的刷卡终端与签发票卡的票卡管理中心不在同一系统,并且刷卡终端未被写入协同密钥时,如何使用票卡。下面结合图6来介绍。在步骤S61中,判断刷卡终端与签发票卡的票卡管理中心是否在同一系统。当两者在同一系统中时,前面已介绍如何使用票卡,在此不在赘述。当两者不在同一系统,并且刷卡终端未被写入协同密钥时,执行步骤S65。在步骤S65中,传输刷卡终端读取的信息和使用票卡的信息至刷卡终端归属的票卡管理中心。其中,使用票卡的信息包括以下至少一者:使用票卡的时间和站名。校验码与身份标识、余额数据保护字段和协同密钥有关,协同密钥可被刷卡终端归属的票卡管理中心获取,因此该票卡管理中心可验证校验码是否正确。在步骤S66中,验证校验码是否正确;若正确则执行步骤S67,若不正确则执行步骤S68。此处,验证校验码的方式也可采用上述中所述的方式。在步骤S67中,允许使用票卡。在步骤S68中,报警。当刷卡终端未被写入协同密钥时,刷卡终端无法根据读取到的信息计算票卡的校验码,则无法验证读取的票卡中的校验码的正确性,需将读取的信息和使用票卡的信息传输到刷卡终端归属的票卡管理中心,由刷卡终端归属的票卡管理中心来验证校验码是否正确。在校验码正确的情况下,允许使用票卡。在校验码不正确的情况下,不允许使用票卡,报警。不允许使用票卡的通知方式也可以上述通知允许使用票卡的方式。报警方式不限制,可根据实际使用情况设置。
在本公开的示例性实施例中,在允许使用票卡前,使用票卡的方法还包括识别身份标识是否合法;其中,允许使用票卡的条件还包括身份标识合法。
进一步地,识别身份标识是否合法的方式可以有很多种。例如,查找数据库中存储的身份标识,判断查找到的身份标识与读取的票卡中的信息中包含的身份标识是否一致,若一致,则说明书读取的身份标识合法,否则不合法。此外,还可以通过以下方式判断身份标识是否合法。根据签发票卡的票卡管理中心的密钥、签发票卡的票卡管理中心的身份标识符和票卡的身份标识符计算第一身份校验码;以及根据第一身份校验码与身份标识中包括的身份校验码是否一致识别身份标识是否合法。通过计算的方式识别身份标识可减轻数据库的负担。
可选地,在本公开的示例性实施例中,票卡余额包括票面余额和/或系统余额。
根据本公开实施例的第三方面,提供一种使用票卡的方法,涉及到票卡持有人结束使用票卡。图7是根据一示例性实施例示出的一种使用票卡的方法的流程图。如图7所示,该方法包括以下步骤。
在步骤S70中,读取所述票卡的信息,其中,信息包括票卡的身份标识、余额数据保护字段和校验码,身份标识包括签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和票卡的身份校验码,身份校验码与签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和签发票卡的票卡管理中心的密钥相关,余额数据保护字段与票卡的余额验证码和票卡余额相关,余额验证码与票卡的密钥和票卡余额相关,票卡的密钥与签发票卡的票卡管理中心的身份标识符、票卡的身份标识符和签发票卡的票卡管理中心的密钥相关,校验码与身份标识、余额数据保护字段和协同密钥相关,协同密钥被签发票卡的票卡管理中心和签发票卡的票卡管理中心以外的票卡管理中心共享。
在步骤S71中,根据身份标识判断读取票卡的信息的刷卡终端与签发票卡的票卡管理中心是否在同一系统,并当两者在同一系统时执行步骤S72,例如,判断刷卡终端与签发票卡的票卡管理中心是否同在公交系统或同在轨道交通系统。
在步骤S72中,在刷卡终端与签发票卡的票卡管理中心在同一系统时,验证余额验证码是否正确,若正确则执行步骤S73,若不正确执行步骤S75。
进一步地,在该示例性实施例中,可以通过查找数据库中存储的余额验证码与读取的票卡的中的余额验证码是否一致的方式验证余额验证码是否正确。此外,也可以通过如下方式验证余额验证码是否正确。根据签发票卡的票卡管理中心的密钥、签发票卡的票卡管理中心的身份标识符和票卡的身份标识符计算第一票卡密钥;根据第一票卡密钥和票卡余额计算第一余额验证码;以及根据第一余额验证码和余额验证码是否一致验证余额验证码是否正确。通过计算的方式验证余额验证码可减轻数据库的负担。
在步骤S73中,计算使用票卡的消费金额。根据记录的使用票卡的信息,计算本次使用票卡的消费金额。其中,使用票卡的信息包括以下至少一者:使用票卡的时间和站名。
在步骤S74中,根据票卡的消费金额和/或使用票卡的历史消费记录以及票卡的余额确定票卡的新余额,并将新余额写入票卡。
在步骤S75中,报警。例如,不允许持卡人出站,或者为了避免造成拥堵,随允许持卡人出站,但通过声音提醒或者其他方式提醒工作人员该票卡不可用。报警方式不限制,可根据实际使用情况设置。
可选地,本公开的一示例性实施例中,在计算使用票卡的消费金额之前,方法还包括:识别身份标识是否合法;其中,计算使用票卡的消费金额的条件还包括身份标识合法。
进一步地,识别身份标识是否合法的方式可以有很多种。例如,查找数据库中存储的身份标识,判断查找到的身份标识与读取的票卡中的信息中包含的身份标识是否一致,若一致,则说明书读取的身份标识合法,否则不合法。此外,还可以通过以下方式判断身份标识是否合法。根据签发票卡的票卡管理中心的密钥、签发票卡的票卡管理中心的身份标识符和票卡的身份标识符计算第一身份校验码;以及根据第一身份校验码与身份标识中包括的身份校验码是否一致识别身份标识是否合法。通过计算的方式识别身份标识可减轻数据库的负担。
图8是根据一示例性实施例示出的一种使用票卡的方法的流程图。图8所示的方法与图7所示的方法的不同之处在于,图8所示的方法,在计算使用票卡的消费金额之前进行识别身份标识是否合法。在身份标识合法的情况下,计算消费金额;在身份标识不合法的情况下,报警。此外,在图8所示的方法中,还包括以下步骤。在步骤S806中,根据新余额和协同密钥计算新余额验证码。在步骤S807中,根据身份标识、新余额、新余额验证码和协同密钥计算新校验码。在步骤S808中,将新余额验证码和新校验码写入票卡。
可选地,在本公开的示例性实施例中,票卡余额包括票面余额和/或系统余额。
在本公开的示例性实施例中,涉及到票卡余额包括票面余额和系统余额,刷卡终端与签发票卡的票卡管理中心不在同一系统时,并且刷卡终端已被写入协同密钥时,如何使用票卡。下面结合图9来介绍。在步骤S901中,根据身份标识判断读取票卡的信息的刷卡终端是否与签发票发的票卡管理中心在同一系统中。当两者在同一系统中时,前面已介绍如何使用票卡,在此不在赘述。当两者不在同一系统,且刷卡终端已被写入协同密钥时,执行步骤S910。在步骤S910中,验证校验码是否正确。此处验证验证校验码也可采用上述示例性实施例中所述的方式。在校验码正确的情况下,执行步骤S911,在校验码不正确的情况下,执行步骤S909,报警。在步骤S911中,根据使用票卡的信息,计算使用票卡的消费金额。其中,使用票卡的信息包括以下至少一者:使用所述票卡的时间和站名。在步骤S912中,根据票面余额和消费金额确定票卡的新票面余额。在步骤S913中,根据新票面余额更新校验码。在步骤S914中,将新票面余额和更新后的校验码写入票卡。在步骤S915中,传输票卡的新信息、使用票卡的信息和消费金额至签发票卡的票卡管理中心,以使签发票卡的票卡管理中心记录此次消费。其中,在该步骤中传输的票卡的新信息至少包括新票面余额、系统余额、余额验证码、新校验码,使用票卡的信息包括以下至少一者:使用票卡的时间和站名。在该示例性实施例中,由刷卡终端验证校验码是否正确。可选地,计算使用票卡的消费金额之前,方法还包括:识别身份标识是否合法,其中,计算使用票卡的消费金额的条件还包括身份标识合法。在该实施例中,可采用上述实施例中所述的识别身份标识是否合法的方式。
在本公开的示例性实施例中,还涉及到票卡余额包括票面余额和系统余额,刷卡终端与签发票卡的票卡管理中心不在同一系统时,并且刷卡终端未被写入协同密钥时,如何使用票卡。下面结合图9来介绍。如图9所示,当刷卡终端与签发票卡的票卡管理中心不在同一系统,并且刷卡终端未被写入协同密钥时,执行步骤S916。在步骤S916中,传输读取的票卡的信息和使用票卡的信息至刷卡终端归属的票卡管理中心。在步骤S917中,验证校验码是否正确,若正确则执行步骤S918~S922,计算消费金额、新票面余额、更新校验码,并将新票面余额和更新的校验码写入票卡。若不正确则执行步骤S909,报警。与协同密钥已被写入刷卡终端的时,执行步骤的不同之处在于,在该实施例中,由刷卡终端归属的票卡管理中心验证校验码是否正确。此外,在该实施例中,可以由刷卡终端来执行步骤S918~S922,也可由其归属的票卡管理中心执行步骤S918~S922。对此,不用于限制本公开。可选地,计算使用票卡的消费金额之前,方法还包括:识别身份标识是否合法,其中,计算使用票卡的消费金额的条件还包括身份标识合法。在该实施例中,可采用上述实施例中所述的识别身份标识是否合法的方式。
可选地,在本公开的示例性实施例中,当刷卡终端与签发票卡的票卡管理中心不在同一系统时,使用票卡的方法还可包括以下内容。重新读取票卡的余额数据保护字段;验证所重新读取的余额数据保护字段中包括的余额验证码是否正确;在余额验证码正确的情况下,验证使用票卡的历史消费记录是否与所重新读取的余额数据保护字段中包括的票面余额和系统余额一致;在使用票卡的历史消费记录与票面余额和系统余额一致的情况下,根据票面余额和历史消费记录确定新票面余额和新系统余额,其中,新票面余额和新系统余额相等;根据新系统余额更新余额验证码,以得到新余额验证码;根据所述新票面余额、所述新系统余额和所述新余额验证码更新校验码以得到新校验码;以及将新票面余额、新系统余额、新余额验证码和新校验码写入票卡。在该实施例中,由签发票卡的票卡管理中心执行验证余额验证码、确定新票面余额、新系统余额、新余额验证码以及新校验码的操作。签发票卡的票卡管理中心可以将其确定的新数据直接传输到刷卡终端,以使刷卡终端将其写入票卡,也可以将其传输到刷卡终端归属的票卡管理中心,再传输到刷卡终端。对此不限制。
在根据本公开的示例性实施例中,验证票卡的过程,包括对票卡身份标识的合法性验证和对整个消息的完整性验证。首先验证整个消息的完整性,即把票卡ID和票卡余额数据保护字段b以及协同密钥K1作为输入,验证d=H2(ID‖b‖K1)是否成立。该验证的目的是防止所接收的数据为黑客伪造的,或被恶意篡改的数据,因为车站终端与票卡管理中心(以及清分清算系统)可能通过公共网络连接,容易遭受网络入侵攻击。由于验票过程使用了K1而不是K0,因此不同的票卡管理中心之间都可以进行验票,使得票卡能跨平台使用。但由于有K0的保护,保证了不同票卡管理中心之间不能相互签发票卡。
如果车站终端识别车票为其所在的平台系统所签发,则通过后台的票卡管理中心验证票卡身份标识的合法性,即验证ZZZZ=H1(XXYYYY‖K0)是否成立。这是扣款并将系统余额反写到票卡之前所需要的身份鉴别过程。
下面以在车站使用票卡为例,详细介绍票卡的使用过程。当乘客到车站刷票卡(IC卡)进站时,车站门禁系统(属于上述刷卡终端中的一种)读取所述票卡内的信息ID、b、d,并将这些信息直接发送或者通过车站终端发送给车站所归属的票卡管理中心。所述票卡管理中心检查票卡身份标识ID中后4字节ZZZZ是否与H1(K0,XXYYYY)的计算结果一致,其中K0是所述票卡管理中心的密钥,XXYYYY是所述票卡身份标识ID中的部分数据。如果一致,则继续执行下一步,否则返回指令告知车站门禁系统不允许票卡持有人进站,并报警;所述票卡管理中心根据所述票卡的身份标识ID,计算用户密钥Ki=H2(K0,XXYYYY),然后根据b中m2的值计算H1(m2,Ki),比较b中最后4字节与H1(m2,Ki)的计算结果是否一致,若一致,则继续执行下一步;若不一致,则返回指令告知车站门禁系统不允许票卡持有人进站并报警;所述票卡管理中心检查b中的数据m1与m2是否都满足消费要求,若不满足,则返回指令告知车站门禁系统不允许票卡持有人进站并报警,否则返回指令告知车站门禁系统允许票卡持有人进站。
在实际系统中,票卡管理中心还要记录票卡信息以及进站的时间、站名等信息,这些辅助信息隐含在通信协议中,因为票卡管理中心与哪个车站的计算机系统进行通信是能够识别的。具体的信息处理流程如图10所示。
当乘客出站时,通过车站门禁设备刷卡,门禁设备读取票卡内的信息ID、b、d,并将这些信息直接发送或通过车站终端发送给车站所归属的票卡管理中心。所述票卡管理中心检查票卡身份标识ID中后4字节ZZZZ是否与H1(K0,XXYYYY)的计算结果一致,其中K0是所述票卡管理中心的密钥,XXYYYY是所述票卡身份标识ID中的部分数据。如果一致,则继续执行下一步,否则返回指令告知车站门禁系统不允许票卡持有人出站,并报警;所述票卡管理中心根据身份标识ID,计算用户密钥Ki=H2(K0,XXYYYY),然后根据b中m2的值计算H1(m2,Ki),比较b中最后4字节与H1(m2,Ki)的计算结果是否一致,若一致,则继续执行下一步;若不一致,则返回指令告知车站门禁系统不允许票卡持有人出站并报警;所述票卡管理中心计算所述票卡的本次消费额,检查未核算的离线消费额,将m1减去所有消费额的总和作为新的m1和m2的值,计算新的余额验证码H1(m2,Ki)和校验码d=H2(ID,b,K1),将计算得到的m1、m2、H1(m2,Ki)、d=H2(ID,b,K1)的值通过车站门禁系统分别写入所述票卡的票面余额模块、系统余额模块、余额验证模块和票卡校验模块,同时允许出站。该处理流程可由图11所示。
当配置安装车站终端设备时,在车站终端中预置每个相关票卡管理中心的协同密钥K1。那些没有将协同密钥K1写入车站终端中的票卡管理中心签发的票卡将不能在此车站使用。由于实际中票卡管理中心相对较少而且固定不变,新增的和废除的票卡管理中心都非常少,因此一般不会因为车站终端的配置(或者通过车站终端的配置)没有更新而影响对票卡的识别。
如果票卡来自不同的城市交通系统(如公交系统),则需要每个系统对自己签发的票卡进行鉴别。在这种情况下,城市轨道交通的票卡管理中心在收到车站终端传来的数据后,根据ID可识别签发票卡的票卡管理中心,将此信息转发给签发票卡的票卡管理中心进行鉴别,然后完成扣款流程,然后将反馈信息按照图11的格式发回到车站终端。
如果跨票卡管理中心的扣款流程因为过程复杂导致不能容忍的时延,则可以将这种扣款当作离线扣款处理,即先扣款,再定期到签发票卡的票卡管理中心进行鉴别、核算。
从图11所示的流程不难看出,当票卡在线消费时,消费后的金额被反写到票卡,此时票面余额m1与系统余额m2是相同的。
在有些场景下,在线扣款操作困难。一种情况是跨票卡管理中心的情况,例如乘客使用一个由城市轨道交通系统之外的系统签发的票卡时,如城市公交系统的票卡,或者在公交系统中使用轨道交通系统签发的票卡,这时在线扣款可能是不现实的,或者时延问题严重,或者通信线路根本不通(例如在公交车上),这时扣款记录会在后期同步到签发票卡的票卡管理中心。票卡管理中心会将在线扣款和离线扣款记录合并,并在下次在线扣款或离线扣款数据同步时一并更新。
离线扣款时,刷卡设备读取卡内身份标识ID和余额信息m1‖m2‖H1(m2‖ki),同前面介绍的方法一样可以验证ID的有效性,扣除消费金额r,计算新的票卡校验码d',将(m1-r)‖m2‖H1(m2‖ki)和d'写入卡内。同时,将记录信息m1‖m2‖H1(m2‖ki)和r在事后同步给票卡管理中心,具体实现时还要包括消费时间、扣款设备ID等信息,这些额外辅助信息无需在我们的协议架构中详细描述。
注意在离线扣款时,扣款方只更新了票卡内的票面余额,造成m1<m2的情况。等离线扣款数据同步到票卡管理中心,然后票卡管理中心有机会在线扣款时,将更新系统余额,再次恢复到m1=m2的状态。
当对离线扣款数据进行同步后,票卡进行在线扣款时(包括票卡充值时),票卡管理中心的扣款步骤如下:(1)接收到票卡余额数据保护字段b=m1‖m2‖H1(m2‖ki)后,检查H1(m2‖ki)是否正确;(2)检查历史合并扣款后的余额是否与m1相同,即历史合并扣款金额是否等于m2-m1。如果相等,则更新最新扣款,得到m1',计算更新数据b'=m1'‖m1'‖H1(m1'‖ki)和新的票卡校验码d'。进行充值时也与在线扣款情况相同,充值的情况相当于最后一次的消费为负值。
需要说明的是,本公开把票卡充值作为一种使用车站终端的操作,或到人工充值服务站的操作,即需要交通票卡与充值设备进行物理接触,这时票卡处于在线状态,票卡管理中心可以将更新后的数据通过读写卡设备反写到票卡。但是,如果使用离线充值,如移动充值和手机充值的方式,则需要将充值额度记录在票卡管理中心,等下次票卡在线扣款时再对票卡内的数据进行更新。但是,目前许多无记名票卡还不支持离线充值业务。
本公开中使用的数据连接符“‖”,只是将不同数据连接在一起的一种形式。本领域的工程人员应该知道,将数据连接在一起的方式有很多种,使用其他方法将数据连接在一起,不影响对本公开的限制。
根据本公开实施例的第二方面,提供一种机器可读存储介质。机器可读存储介质上存储有指令,指令用于使得机器执行上述的方法。
安全性和其它性能分析
本公开所涉及的AFC票卡、及其制作方法和使用方法,在于其对抗不同攻击的能力。本公开所设计的票卡具有防假冒、防伪造、防克隆等能力。安全性的前提假设是攻击者不能获得票卡管理中心在签发和验证票卡时使用的密钥,包括签发票卡的票卡管理中心的密钥K0和跨平台协同密钥K1。
应对伪造攻击的安全性分析
所谓伪造攻击,就是攻击者在一张空白卡内模仿票卡制作过程写入数据,使其成为一张能被交通系统所接收的票卡。要伪造票卡,首先需要写入一个格式为XX-YYYY-ZZZZ的身份标识。因为票卡身份标识中的验证码ZZZZ是根据签发票卡的票卡管理中心的密钥产生的,攻击者在不掌握密钥的情况下,要伪造一个格式上合法的票卡身份几乎是不可能的。如果随机产生一个字符串当作验证码,其成功概率为1/232,这是个小得可以忽略的数。
应对假冒攻击的安全性分析
所谓假冒攻击,就是攻击者用一个合法的票卡身份标识ID制造一个假的票卡,例如攻击者读取一个合法票卡后将所读取的身份标识写到一个空卡中,并写入假的票卡余额数据保护字段b。由于票卡是身份标识是合法的,因此可以通过车站门禁系统的格式检查,即可以完成进站刷卡,但出站时将不能通过安全检查。因为攻击者没有密钥K0,无法计算票卡密钥ki,从而无法获得正确格式的余额数据保护字段m1‖m2‖H1(m2‖ki)。如果随机产生一个数假冒余额验证码H1(m2‖ki),当该余额信息发送到票卡管理中心进行检验时,假造的信息容易被识别出来。由于H1的输出为32比特,在不掌握ki的情况下,一个随机选取的数组满足要求的概率为1/232,这个成功概率非常小,在实际应用中可以忽略不计。
应对克隆攻击的安全性分析
如果攻击者将一个合法的票卡完全克隆,即读取卡内信息,然后写入一个新的空卡,于是可以成功克隆一张票卡。克隆的票卡与原始票卡具有同样的信息,没有伪造的信息,因此不存在鉴别过程不能通过的问题。但是,当这张克隆的票卡与原始票卡共同被使用时,其数据与原始票卡使用的数据发生冲突,这种冲突在票卡管理中心很容易发现。根据安全管理策略,一旦发现扣款记录异常,这两张票卡将会被冻结,有待人工干预调查。因此克隆的票卡只能在离线设备上使用有限次数,一旦离线扣款设备将数据汇总到清算中心(即票卡管理中心),克隆的票卡和原始票卡将被冻结。
应对余额篡改攻击的安全性分析
攻击者还可能修改合法票卡内的余额信息。注意余额数据保护字段为m1‖m2‖H1(m2‖ki),在离线使用时只更新m1,因此攻击者(可以是票卡的实际用户)修改m1,使其接近或等于m2,这样可以保证下次使用时有足够票面余额。但是,消费记录一旦到达票卡管理中心,票卡管理中心就会发现这种情况属于离线扣款异常情况。如果属于情况1,则离线消费额仍然被扣除,攻击者修改m1无效(相当于扣款失败);如果属于情况2中m1'>m1-r1的情况,则属于异常情况,将导致票卡被冻结。如果攻击者同时修改m1和m2的值,因为m2的修改导致验证码H1(m2‖ki)不能通过验证,造成余额数据非法,这相当于假冒攻击,这种情况不能被票卡管理中心识别出来的概率非常小。因此,恶意修改票卡余额的结果是,或者修改无效,或者修改导致票卡因异常而被冻结待人工处理。
离线扣款可能造成的情况处理
如果在线扣款时,如果遇到历史合并扣款后的余额与m1不相同的情况,则需要分不同情况进行讨论。
情况1:票卡管理中心收到按时间顺序排列的两次相继扣款数据[m1‖m2‖H1(m2‖ki),r1]和[m1‖m2‖H1(m2‖ki),r2],这意味着在第一次扣款r1后,卡内余额没有发生变化,可能是第一次扣款设备写卡失败,此时需要在最终票面余额再减去r1,就是正确的余额了。
情况2:票卡管理中心收到按时间顺序排列的两次相继扣款数据[m1‖m2‖H1(m2‖ki),r1]和[m1'‖m2‖H1(m2‖ki),r2],其中m1'不等于m1-r1。如果m1'<m1-r1,则说明在这两次扣款数据中间还发生过一次扣款,这次扣款数据因故尚未到达票卡管理中心。为了避免重复记录,以m1'为准计算余额,并将不再核算在此期间(时间阶段)发生的扣款行为。如果后期接收到此期间的扣款行为,仅用于记账和与扣款设备之间的清算凭证。如果m1'>m1-r1,则属于明显的安全事件,不太可能由设备故障导致,一般是恶意攻击者操作导致,遇到这种情况时,首先冻结票卡的使用,需要人工干预,查明原因。
需要注意的是,要对票卡进行冻结,也需要票卡在线的状态下才能完成。如果票卡在离线状态怎么办?这时需要对所有离线刷卡设备进行广播,也就是说在所有离线设备,包括其他关联的票卡管理中心,把这些需要冻结的票卡身份标识添加到一个黑名单中,所有票卡使用时先检查一下黑名单,如果在黑名单内,则拒绝接受。这就可以强迫有问题的票卡用户主动联系有关窗口进行确认。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (22)
1.一种票卡,其特征在于,所述票卡包括:
执行模块、票卡身份标识模块、票卡余额模块和余额验证模块;
所述执行模块用于:
接收所述票卡的身份标识、所述票卡的余额和所述票卡的余额验证码,其中,所述身份标识包括签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述票卡的身份校验码,所述身份校验码与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述余额验证码与所述票卡的密钥和所述票卡的余额相关,所述票卡的密钥与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关;
将所述身份标识存储至所述票卡身份标识模块;
将所述余额验证码存储至所述余额验证模块;以及
将所述票卡的余额存储至所述票卡余额模块。
2.根据权利要求1所述的票卡,其特征在于,所述票卡还包括票卡校验模块;
所述执行模块还用于:
接收所述票卡的校验码,其中,所述校验码与所述票卡的身份标识、余额数据保护字段和协同密钥相关,所述协同密钥被所述签发所述票卡的票卡管理中心和所述签发所述票卡的票卡管理中心以外的票卡管理中心共享,所述余额数据保护字段与所述余额验证码和所述票卡的余额相关;以及
将所述校验码存储至所述票卡校验模块。
3.根据权利要求1或2所述的票卡,其特征在于,所述票卡余额模块包括票卡票面余额模块和票卡系统余额模块,其中,所述票卡票面余额模块用于存储票面余额,所述票卡系统余额模块用于存储系统余额。
4.一种使用票卡的方法,其特征在于,所述方法包括:
读取所述票卡的信息,其中,所述信息包括所述票卡的身份标识、余额数据保护字段和校验码,所述身份标识包括签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述票卡的身份校验码,所述身份校验码与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述余额数据保护字段与所述票卡的余额验证码和票卡余额相关,所述余额验证码与所述票卡的密钥和所述票卡余额相关,所述票卡的密钥与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述校验码与所述身份标识、所述余额数据保护字段和协同密钥相关,所述协同密钥被所述签发所述票卡的票卡管理中心和所述签发所述票卡的票卡管理中心以外的票卡管理中心共享;
根据所述身份标识判断读取所述票卡信息的刷卡终端与签发所述票卡的票卡管理中心是否在同一系统;
在所述刷卡终端与签发所述票卡的票卡管理中心在同一系统时,验证所述余额验证码是否正确;
在所述余额验证码正确的情况下,根据所述票卡余额判断所述票卡是否可用;
在所述票卡可用的情况下,允许使用所述票卡;以及
在所述票卡不可用的情况下,报警。
5.根据权利要求4所述的方法,其特征在于,所述验证所述余额验证码是否正确包括:
根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一票卡密钥;
根据所述第一票卡密钥和所述票卡余额计算第一余额验证码;以及
根据所述第一余额验证码和所述余额验证码是否一致验证所述余额验证码是否正确。
6.根据权利要求4所述的方法,其特征在于,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端已被写入所述协同密钥,所述方法还包括:
验证所述校验码是否正确;
在所述校验码正确的情况下,允许使用所述票卡;以及
传输所述信息和使用所述票卡的信息。
7.根据权利要求4所述的方法,其特征在于,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端未被写入所述协同密钥,所述方法还包括:
传输所述信息和使用所述票卡的信息;
验证所述校验码是否正确;以及
在所述校验码正确的情况下,允许使用所述票卡。
8.根据权利要求4-7中任意一项所述的方法,其特征在于,在所述允许使用所述票卡前,所述方法还包括:识别所述身份标识是否合法;
其中,所述允许使用所述票卡的条件还包括所述身份标识合法。
9.根据权利要求8所述的方法,其特征在于,所述识别所述身份标识是否合法包括:
根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一身份校验码;以及
根据所述第一身份校验码与所述身份标识中包括的身份校验码是否一致识别所述身份标识是否合法。
10.根据权利要求4-7中任意一项所述的方法,其特征在于,所述票卡余额包括票面余额和/或系统余额。
11.一种使用票卡的方法,其特征在于,所述方法包括:
读取所述票卡的信息,其中,所述信息包括所述票卡的身份标识、余额数据保护字段和校验码,所述身份标识包括签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述票卡的身份校验码,所述身份校验码与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述余额数据保护字段与所述票卡的余额验证码和票卡余额相关,所述余额验证码与所述票卡的密钥和所述票卡余额相关,所述票卡的密钥与所述签发所述票卡的票卡管理中心的身份标识符、所述票卡的身份标识符和所述签发所述票卡的票卡管理中心的密钥相关,所述校验码与所述身份标识、所述余额数据保护字段和协同密钥相关,所述协同密钥被所述签发所述票卡的票卡管理中心和所述签发所述票卡的票卡管理中心以外的票卡管理中心共享;
根据所述身份标识判断读取所述票卡的信息的刷卡终端与签发所述票卡的票卡管理中心是否在同一系统;
在所述刷卡终端与签发所述票卡的票卡管理中心在同一系统时,验证所述余额验证码是否正确;
在所述余额验证码正确的情况下,计算使用所述票卡的消费金额;
根据所述票卡的消费金额和/或使用所述票卡的历史消费记录以及所述票卡的余额确定所述票卡的新余额,并将所述新余额写入所述票卡;以及
在所述余额验证码不正确的情况下,报警。
12.根据权利要求11所述的方法,其特征在于,所述验证所述余额验证码是否正确包括:
根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一票卡密钥;
根据所述第一票卡密钥和所述票卡余额计算第一余额验证码;以及
根据所述第一余额验证码和所述余额验证码是否一致验证所述余额验证码是否正确。
13.根据权利要求12所述的方法,其特征在于,在所述计算使用所述票卡的消费金额之前,所述方法还包括:识别所述身份标识是否合法;
其中,所述计算使用所述票卡的消费金额的条件还包括所述身份标识合法。
14.根据权利要求13所述的方法,其特征在于,所述识别所述身份标识是否合法包括:
根据所述签发所述票卡的票卡管理中心的密钥、所述签发所述票卡的票卡管理中心的身份标识符和所述票卡的身份标识符计算第一身份校验码;以及
根据所述第一身份校验码与所述身份标识中包括的身份校验码是否一致识别所述身份标识是否合法。
15.根据权利要求11所述的方法,其特征在于,所述方法还包括:
根据所述新余额和所述协同密钥计算新余额验证码;
根据所述身份标识、所述新余额、所述新余额验证码和所述协同密钥计算新校验码;以及
将所述新余额验证码和所述新校验码写入所述票卡。
16.根据权利要求11-15中任意一项所述的方法,其特征在于,所述票卡余额包括票面余额和/或系统余额。
17.根据权利要求11所述的方法,其特征在于,所述票卡余额包括票面余额和系统余额,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端已被写入所述协同密钥,所述方法还包括:
验证所述校验码是否正确;
在所述校验码正确的情况下,计算使用所述票卡的消费金额;
根据所述票面余额和所述消费金额确定所述票卡的新票面余额;
根据所述新票面余额更新所述校验码;
将所述新票面余额和所更新的校验码写入所述票卡;以及
传输所述票卡的新信息、使用所述票卡的信息和所述消费金额。
18.根据权利要求17所述的方法,其特征在于,在所述计算使用所述票卡的消费金额之前,所述方法还包括:
识别所述身份标识是否合法;
其中,所述计算使用所述票卡的消费金额的条件还包括所述身份标识合法。
19.根据权利要求11所述的方法,其特征在于,所述票卡余额包括票面余额和系统余额,在所述刷卡终端与签发所述票卡的票卡管理中心不在同一系统时,并且所述刷卡终端未被写入所述协同密钥,所述方法还包括:
传输所述信息和使用所述票卡的信息;
验证所述校验码是否正确;以及
在所述校验码正确的情况下,计算使用所述票卡的消费金额;
根据所述票面余额和所述消费金额确定所述票卡的新票面余额;
根据所述新票面余额更新所述校验码;
将所述新票面余额和所更新的校验码写入所述票卡;以及
传输所述票卡的新信息、使用所述票卡的信息和所述消费金额。
20.根据权利要求19所述的方法,其特征在于,在所述计算使用所述票卡的消费金额之前,所述方法还包括:
识别所述身份标识是否合法;
其中,所述计算使用所述票卡的消费金额的条件还包括所述身份标识合法。
21.根据权利要求17-21中任意一项所述的方法,其特征在于,所述方法还包括:
重新读取所述票卡的余额数据保护字段;
验证所重新读取的所述余额数据保护字段中包括的余额验证码是否正确;
在所述余额验证码正确的情况下,验证使用所述票卡的历史消费记录是否与所重新读取的所述余额数据保护字段中包括的所述票面余额和所述系统余额一致;
在使用所述票卡的历史消费记录与所述票面余额和所述系统余额一致的情况下,根据所述票面余额和所述历史消费记录确定新票面余额和新系统余额,其中,所述新票面余额和所述新系统余额相等;
根据所述新系统余额更新所述余额验证码,以得到新余额验证码;
根据所述新票面余额、所述新系统余额和所述新余额验证码更新所述校验码以得到新校验码;以及
将所述新票面余额、所述新系统余额、所述新余额验证码和所述新校验码写入所述票卡。
22.一种机器可读存储介质,所述机器可读存储介质上存储有指令,所述指令用于使得机器执行权利要求4-21中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711008890.0A CN107749085A (zh) | 2017-10-25 | 2017-10-25 | 票卡、使用票卡的方法和机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711008890.0A CN107749085A (zh) | 2017-10-25 | 2017-10-25 | 票卡、使用票卡的方法和机器可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107749085A true CN107749085A (zh) | 2018-03-02 |
Family
ID=61254028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711008890.0A Withdrawn CN107749085A (zh) | 2017-10-25 | 2017-10-25 | 票卡、使用票卡的方法和机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107749085A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112150155A (zh) * | 2020-10-19 | 2020-12-29 | 福建天晴在线互动科技有限公司 | 一种验证账户余额防篡改的方法及其系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1738234A (zh) * | 2004-08-18 | 2006-02-22 | 初建刚 | 基于网络的支票密码获取方法 |
CN101739771A (zh) * | 2009-12-01 | 2010-06-16 | 孙伟 | 一种公交一卡通业务系统及其实现方法 |
CN104268758A (zh) * | 2014-09-15 | 2015-01-07 | 周刚 | 一种基于发票和第三方电子商务平台的商品防伪系统 |
CN106934618A (zh) * | 2017-01-24 | 2017-07-07 | 广州天宁信息技术有限公司 | 一种电子凭据生成、公开验证方法、装置及系统 |
CN106952093A (zh) * | 2017-01-24 | 2017-07-14 | 广州天宁信息技术有限公司 | 一种空白电子凭据生成、公开验证方法、装置及系统 |
CN107273774A (zh) * | 2013-02-08 | 2017-10-20 | 台湾开发建设股份有限公司 | 电子标签及用于确保电子标签的处理系统与方法 |
CN107294696A (zh) * | 2017-06-08 | 2017-10-24 | 西安电子科技大学 | 针对Leveled全同态密钥分配方法 |
-
2017
- 2017-10-25 CN CN201711008890.0A patent/CN107749085A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1738234A (zh) * | 2004-08-18 | 2006-02-22 | 初建刚 | 基于网络的支票密码获取方法 |
CN101739771A (zh) * | 2009-12-01 | 2010-06-16 | 孙伟 | 一种公交一卡通业务系统及其实现方法 |
CN107273774A (zh) * | 2013-02-08 | 2017-10-20 | 台湾开发建设股份有限公司 | 电子标签及用于确保电子标签的处理系统与方法 |
CN104268758A (zh) * | 2014-09-15 | 2015-01-07 | 周刚 | 一种基于发票和第三方电子商务平台的商品防伪系统 |
CN106934618A (zh) * | 2017-01-24 | 2017-07-07 | 广州天宁信息技术有限公司 | 一种电子凭据生成、公开验证方法、装置及系统 |
CN106952093A (zh) * | 2017-01-24 | 2017-07-14 | 广州天宁信息技术有限公司 | 一种空白电子凭据生成、公开验证方法、装置及系统 |
CN107294696A (zh) * | 2017-06-08 | 2017-10-24 | 西安电子科技大学 | 针对Leveled全同态密钥分配方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112150155A (zh) * | 2020-10-19 | 2020-12-29 | 福建天晴在线互动科技有限公司 | 一种验证账户余额防篡改的方法及其系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108665359B (zh) | 区块链处理方法、记账节点及验证节点 | |
CN109583230A (zh) | 基于区块链的数据存证方法及装置、电子设备 | |
CN108985772A (zh) | 一种区块链的验证方法、装置、设备及存储介质 | |
CN109639410A (zh) | 基于区块链的数据存证方法及装置、电子设备 | |
CN107220820A (zh) | 资源转移方法、装置及存储介质 | |
KR20000076682A (ko) | 원본 데이터 유통 방법, 시스템, 장치 및 컴퓨터 판독가능매체 | |
US8904176B2 (en) | Protecting the information encoded in a bloom filter using encoded bits of data | |
CN110335051B (zh) | 一种基于区块链主副链技术的食品标签唯一码发布与流通溯源方法 | |
CN108985569A (zh) | 一种车辆风险评估方法、服务器 | |
CN106652182A (zh) | 一种充电卡管理系统以及方法 | |
CN107908932A (zh) | 一种基于l算法的数字货币防伪及验证方法、系统和设备 | |
CN109815289A (zh) | 用于区块链网络的区块生成方法、计算设备、存储介质 | |
CN112069262A (zh) | 基于区块链智能合约的对账数据上链方法 | |
CN109063523A (zh) | 一种射频识别安全认证方法及系统 | |
CN108880789B (zh) | 硬件产品防伪溯源方法、节点设备及系统 | |
CN116057554A (zh) | 管理交易数据组的方法、参与者单元、交易登记册和支付系统 | |
CN105849739A (zh) | 验证系统和验证方法 | |
CN110634072B (zh) | 一种基于多签和硬件加密的区块链交易系统 | |
JP2018528732A (ja) | 偽造防止 | |
JPH10187826A (ja) | 偽造カード使用防止方法およびカード読取書込装置ならびに偽造カード使用防止システム | |
CN107749085A (zh) | 票卡、使用票卡的方法和机器可读存储介质 | |
KR102376783B1 (ko) | 블록체인 기반의 거래내역 확인 시스템 | |
EP0808535B1 (en) | Electronic negotiable documents | |
CN112150281B (zh) | 一种数字货币的交易方法、装置及系统 | |
JP5431804B2 (ja) | 認証システムおよび認証方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180302 |
|
WW01 | Invention patent application withdrawn after publication |