一种智能卡上的数据操作方法及装置 【技术领域】
本发明涉及智能卡领域,尤其涉及一种智能卡上的数据操作方法及装置。
背景技术
随着城市一卡通等小额支付系统的发展,符合ISO/IEC 14443标准的机具和卡片产品得到广泛的应用。其典型的产品为逻辑加密卡(MIFARE)系列产品。随着双界面智能卡技术的发展,为兼容原有基于MIFARE卡的系统并逐步向CPU卡升级,出现同一芯片上既有CPU卡,同时在电可擦写可编程只读存储器(EEPROM)内模拟MIFARE卡片的技术。这种芯片方案同时支持MIFARE功能,也支持CPU卡的各种功能,为实现灵活的多应用提供了技术基础。这种类型的芯片可工作于CPU卡模式,也可工作于MIFARE卡片模式。
在CPU卡内模拟支持MIFARE功能的芯片方案中,定义了由CPU卡操作系统(OS)访问MIFARE区域的接口。CPU OS访问MIFARE区域数据时,首先CPU OS读取保存在卡内的MF_Password,并将读取的MF_Password输入访问MIFARE区域的接口,由该接口验证MF_Password的正确性,在验证通过后,允许CPU OS访问MIFARE区域的数据。MF_Password是由MIFARE区域各扇区的两个密钥KeyA和KeyB通过数据加密算法(DES)算法计算得到的。
CPU OS可访问内建的MIFARE区域内的数据,极大地丰富了MIFARE的应用场景,比如,可通过双界面客户识别模块(SIM)卡(SIMpass)的移动通信功能,对MIFARE区域内的数据进行读、写,实现MIFARE区域内余额的显示、交易记录的查询、远程充值等功能。
上述能承载多种功能的智能卡芯片,按照定义的CPU OS访问MIFARE区域的接口,在MF_Password作为访问时的验证密钥,若对MF_Password验证通过,可对MIFARE区域的相应数据块进行读和写的操作,在安全性上会存在问题。比如,对MIFARE区域内的数据进行写操作可能被用于非法充值等。针对这个问题,需要有可靠的安全措施保证访问MIFARE区域的数据的安全性及合法性。
【发明内容】
本发明实施例提供一种智能卡上的数据操作方法及装置,用于提高读写智能卡上数据的安全性和合法性。
一种智能卡上的数据操作方法,该方法包括:
网络侧确定需要对智能卡进行数据访问操作后,利用设定的安全计算算法和密钥计算数据操作相关信息的消息鉴别数据,将该消息鉴别数据和所述数据操作相关信息携带在数据操作命令中发送给智能卡;
所述智能卡接收到所述数据操作命令后,读取自身保存的密钥,利用所述安全计算算法和读取的密钥计算所述数据操作相关信息的消息鉴别数据,若计算得到的消息鉴别数据与所述数据操作命令中携带的消息鉴别数据一致,则对所述智能卡进行数据访问操作;否则,拒绝对所述智能卡进行数据访问操作。
一种智能卡,该智能卡包括:
数据接收单元,用于接收携带消息鉴别数据和数据操作相关信息的数据操作命令,所述消息鉴别数据为网络侧在确定需要对本智能卡进行数据访问操作后利用设定的安全计算算法和密钥计算得到的所述数据操作相关信息的消息鉴别数据;
操作系统单元,用于读取自身保存的密钥,利用所述安全计算算法和读取的密钥计算所述数据操作相关信息的消息鉴别数据,若计算得到的消息鉴别数据与所述数据操作命令中携带的消息鉴别数据一致,则对应用数据单元进行数据访问操作;否则,拒绝对应用数据单元进行数据访问操作;
应用数据单元,用于存储应用数据。
本发明中,智能卡接收到网络侧发来的携带消息鉴别数据和数据操作相关信息的数据操作命令后,利用与网络侧计算消息鉴别数据所使用的安全计算算法相同的安全计算算法和自身保存的密钥计算数据操作相关信息的消息鉴别数据,并通过比较计算得到的消息鉴别数据与数据操作命令中携带的消息鉴别数据是否一致,来判断该数据操作命令的合法性,进而根据合法性判断结果决定是否对智能卡进行数据访问操作,能够有效地提高对智能卡进行数据访问操作的安全性和合法性。
【附图说明】
图1为本发明实施例提供的方法流程示意图;
图2为本发明应用实例的系统结构示意图;
图3为本发明应用实例的智能卡结构示意图;
图4为本发明应用实例的流程示意图;
图5为本发明实施例提供的装置结构示意图。
【具体实施方式】
为了提高对智能卡进行数据访问操作的安全性和合法性,本发明实施例提供一种智能卡上的数据操作方法,本方法中,网络侧在确定需要对智能卡进行数据访问操作后,计算数据操作相关信息的消息鉴别数据,并将该消息鉴别数据携带在数据操作命令中发送给智能卡,智能卡也计算数据操作相关信息的消息鉴别数据,并判断计算得到的消息鉴别数据与数据操作命令中携带的消息鉴别数据是否一致,并根据判断结果决定是否对本智能卡进行数据访问操作。
参见图1,本发明实施例提供的智能卡上的数据操作方法,具体包括以下步骤:
步骤10:网络侧确定需要对智能卡进行数据访问操作;
步骤11:网络侧利用设定的安全计算算法和密钥计算数据操作相关信息的消息鉴别数据;
步骤12:网络侧将携带消息鉴别数据和数据操作相关信息的数据操作命令发送给智能卡;
步骤13:智能卡接收到数据操作命令;
步骤14:智能卡读取自身保存的密钥,利用安全计算算法和读取的密钥计算数据操作相关信息的消息鉴别数据,并判断计算得到的消息鉴别数据与数据操作命令中携带的消息鉴别数据是否一致,若一致,则到步骤15,否则,到步骤16;
步骤15:对智能卡进行数据访问操作;
步骤16:拒绝对本智能卡进行数据访问操作。
步骤10中,网络侧具体可以是在接收到智能卡发来的数据操作请求后,确定需要对智能卡进行数据访问操作,也可以是网络侧自身需要访问智能卡时,确定需要对智能卡进行数据访问操作。
步骤11和步骤14中,安全计算算法可以采用MAC算法,计算得到的消息鉴别数据为MAC值。由于密钥分别位于网络侧和智能卡端,是通过密钥管理系统生成和分发的,此密钥不为第三方拥有,由此保证安全性。需要说明的是,在计算数据操作相关信息的消息鉴别数据时,有些安全计算算法还需要初始值,例如MAC算法等,有些安全计算算法则不需要初始值。在智能卡端保存有多个版本的密钥时,网络侧还需要将计算消息鉴别数据所使用的密钥的版本信息携带在数据操作命令中发送给智能卡端,智能卡端则从自身维护的多个密钥中读取该版本对应的密钥并利用读取的密钥计算数据操作相关信息的消息鉴别数据。
步骤12中,网络侧可以通过短信或GPRS通道或因特网等方式,将数据操作命令中发送给智能卡。
较佳的,在网络侧将数据操作命令发送给智能卡之前,按照预先设定的安全计数器值调整规则调整维护的第一安全计数器的当前取值,并将调整后的第一安全计数器值携带在数据操作命令中发送给智能卡,智能卡确定接收到的数据操作命令中携带的安全计数器值是否是按照所述安全计数器值调整规则调整后的第一安全计数器值,若是,则对本智能卡进行数据访问操作,否则,拒绝对本智能卡进行数据访问操作。
这里,智能卡确定接收到的数据操作命令中携带的安全计数器值是否是按照设定的安全计数器值调整规则调整后的第一安全计数器值,其实现方法有多种,以下举例说明:
智能卡维护初始值与网络侧维护的第一安全计数器的初始值相同的第二安全计数器。智能卡在接收到数据操作命令后,判断该数据操作命令中携带的安全计数器值是否与第三取值满足设定关系,该第三取值为将第二安全计数器的当前取值按照预先设定的安全计数器值调整规则调整后的取值,若满足设定关系,则确定该数据操作命令中携带的安全计数器值是按照所述安全计数器值调整规则调整后的第一安全计数器值,并将第二安全计数器的当前取值调整为第一安全计数器值;若不满足设定关系,则确定该数据操作命令中携带的安全计数器值不是按照所述安全计数器值调整规则调整后的第一安全计数器值。
安全计数器值调整规则可以采用如下两种:
第一种,将维护的安全计数器的当前取值与第一设定数值相加,例如,第一设定数值的取值为不小于1的整数;
第二种,将维护的安全计数器的当前取值与第二设定数值相减,例如,第二设定数值的取值为不小于1的整数。
在采用上述第一种数据操安全计数器则时,网络侧按照该规则调整第一安全计数器的当前取值的方法为,将维护的第一安全计数器的当前取值与第一设定数值相加;相应的,智能卡判断数据操作命令中携带的安全计数器值是否与第三取值满足设定关系的具体方法为,读取维护的第二安全计数器的当前取值,将该当前取值与第一设定数值相加;判断数据操作命令中携带的安全计数器值是否大于或等于所述相加后的数值,若是,则确定数据操作命令中携带的安全计数器值与第三取值满足设定关系,否则,确定数据操作命令中携带的安全计数器值与第三取值不满足设定关系。
在采用上述第二种安全计数器值调整规则时,网络侧按照该规则调整第一安全计数器的当前取值的方法为,将维护的第一安全计数器的当前取值与第二设定数值相减;相应的,智能卡判断数据操作命令中携带的安全计数器值是否与第三取值满足设定关系的具体方法为,读取维护的第二安全计数器的当前取值,将该当前取值与第二设定数值相减;判断数据操作命令中携带的安全计数器值是否小于或等于所述相减后的数值,若是,则确定数据操作命令中携带的安全计数器值与第三取值满足设定关系,否则,确定数据操作命令中携带的安全计数器值与第三取值不满足设定关系。
当然,安全计数器值调整规则并不局限于以上两种,还可以是其他多种,例如,安全计数器值调整规则为将维护的安全计数器的当前取值乘以不为0的设定数值,或将维护的安全计数器的当前取值按照设定的公式或算法进行调整,等等。
较佳的,在设定的安全计数器值调整规则能够将维护的安全计数器的取值调整为一个与在本次调整前安全计数器的取值均不相同的、新的取值时,能够避免数据访问操作的重放攻击。例如,用户为某项应用业务只支付了50元的业务使用费,在该应用业务对应的运营平台需要向该用户的智能卡进行充值(充值金额为50)时,将维护的第一安全计数器值加1后第一安全计数器值变为2,然后,向智能卡发送包含第一安全计数器值为2的数据操作命令;智能卡接收到该数据操作命令后,判断数据操作命令中的第一安全计数器值大于自身维护的取值为1的第二安全计数器值,则确定该数据操作命令合法,向智能卡上保存该应用业务的余额数据的区域写入充值数据50,并将第二安全计数器值更新为2。若此后智能卡再次接收到安全计数器值为2的恶意数据操作命令,判断数据操作命令中的安全计数器值不大于取值为2的第二安全计数器值,则确定该数据操作命令非法,拒绝向智能卡上写入数据50,从而避免了用户只支付了50却得到100的充值余额的后果。
本发明中,在数据操作命令为写数据操作命令时,所述数据操作相关信息可以包括:待写入智能卡的数据和/或网络侧调整后的第一安全计数器值;在数据操作命令为读数据操作命令时,所述数据操作相关信息可以包括:待读取数据的地址信息和/或网络侧调整后的第一安全计数器值。
较佳的,在数据操作相关信息包括调整后的第一安全计数器值时,能够进一步的保证防止数据访问操作重放攻击的有效性。例如,用户为某项应用业务只支付了50元的业务使用费,在该应用业务对应的运营平台需要向该用户的智能卡进行充值(充值金额为50)时,将维护的第一安全计数器值加1后第一安全计数器值变为2,然后,向智能卡发送包含取值为2的第一安全计数器值、计算取值为2的第一安全计数器值和充值金额50得到的MAC值、以及充值金额50的数据操作命令;智能卡接收到该数据操作命令后,判断数据操作命令中的第一安全计数器值大于自身维护的取值为1的第二安全计数器值后,计算取值为2的第一安全计数器值和充值金额50的MAC值,并判断计算得到的MAC值与数据操作命令中携带的MAC值一致,于是确定该数据操作命令合法,向电信智能卡上保存该应用业务的余额数据的区域写入充值数据50,并将第二安全计数器值更新为2。若此后电信智能卡再次接收到包含取值为3的安全计数器值、前述MAC值、以及充值金额50的的恶意数据操作命令,判断数据操作命令中的安全计数器值大于取值为2的第二安全计数器值后,计算取值为3的安全计数器值和充值金额50的MAC值,计算得到的MAC值必定与数据操作命令中携带的MAC值不一致(因为数据操作命令中携带的MAC值是网络侧计算的取值为2的第一安全计数器值的MAC值),于是确定该数据操作命令非法,拒绝向电信智能卡上写入数据50,从而避免了用户只支付了50却得到100的充值余额的后果。
需要说明的是,本发明中对智能卡进行数据访问操作可以是对智能卡中包括逻辑加密卡(MIFARE)区域等任何区域进行的数据访问操作。
下面以对智能卡上的MIFARE区内的钱包进行充值为例对本发明方法进行说明:
本实例应用的系统组网结构示意图如图2所示,包括具有SIM卡的手机终端、移动通信网络、短信中心、移动支付平台、充值业务运营平台等;智能卡的内部结构示意图如图3所示,包含支持STK的GSM应用区域,智能卡操作系统(COS)区域和MIFARE区域,利用GSM应用的短信(SMS)功能建立智能卡与远端的运营方平台间的远程连接。具体充值流程如图4所示:
用户通过SIM卡的STK菜单发起远程充值请求;
充值业务运营平台接收到充值请求后,匹配该充值请求中携带的SIM卡号对应的安全计数器B,将该安全计数器B加1;
充值业务运营平台根据充值请求,在用户后台资金帐户余额充足的情况下,组织充值结果数据,充值结果数据包含安全写计数器B加1;
充值业务运营平台选择MAC密钥版本,对充值结果数据计算MAC值,并将携带充值结果数据、MAC值、密钥版本、安全计数器B加1和SIM卡号的数据包发送给移动支付平台。
移动支付平台根据SIM卡号匹配到手机号;
移动支付平台附加数据包头和包尾,通过短信中心将该数据包转发给SIM卡;
SIM卡上的STK程序解析接收到的数据包,调用COS,将解析得到的充值结果数据、MAC值、密钥版本、安全计数器B加1传递给COS;
SIM卡上的COS比较安全写计数器B+1是否大于自身的安全写计数器A,以及读取密钥版本对应的密钥计算充值结果数据的MAC值,将计算得到的MAC值与STK传递来的MAC值比较;若比较B+1大于A并且计算得到的MAC值与STK传递来的MAC值一致,则解析充值结果数据后向MIFARE区域写入数据;否则,返回数据写入失败响应。
参见图5,本发明实施例还提供一种智能卡,该智能卡包括:
数据接收单元70,用于接收携带消息鉴别数据和数据操作相关信息的数据操作命令,所述消息鉴别数据为网络侧在确定需要对本智能卡进行数据访问操作后利用设定的安全计算算法和密钥计算得到的所述数据操作相关信息的消息鉴别数据;
操作系统单元71,用于读取自身保存的密钥,利用所述安全计算算法和读取的密钥计算所述数据操作相关信息的消息鉴别数据,若计算得到的消息鉴别数据与所述数据操作命令中携带的消息鉴别数据一致,则对应用数据单元进行数据访问操作;否则,拒绝对应用数据单元进行数据访问操作;
应用数据单元72,用于存储应用数据。
所述操作系统单元71进一步用于:
在所述数据操作命令中携带安全计数器值时,确定该安全计数器值是否是网络侧按照预先设定的安全计数器值调整规则调整后的第一安全计数器值,若是,则对所述应用数据单元进行数据访问操作。
所述操作系统单元71进一步用于:
在确定数据操作命令中携带的安全计数器值不是所述第一安全计数器值时,拒绝对所述应用数据单元进行数据访问操作。
所述操作系统单元71用于:
维护初始值与应用业务控制装置上维护的第一安全计数器的初始值相同的第二安全计数器;接收到所述数据操作命令后,判断所述数据操作命令中携带的安全计数器值是否与第三取值满足设定关系,所述第三取值为将所述第二安全计数器的当前取值按照所述安全计数器值调整规则调整后的取值,若是,则确定该数据操作命令中携带的安全计数器值是网络侧按照所述安全计数器值调整规则调整后的第一安全计数器值,并将所述第二安全计数器的当前取值调整为所述第一安全计数器值;否则,确定该数据操作命令中携带的安全计数器值不是网络侧按照所述安全计数器值调整规则调整后的第一安全计数器值。
所述操作系统单元71用于:
读取维护的所述第二安全计数器的当前取值,将该当前取值与第一设定数值相加;判断所述数据操作命令中携带的安全计数器值是否大于或等于所述相加后的数值,若是,则确定所述数据操作命令中携带的安全计数器值与第三取值满足设定关系,否则,确定所述数据操作命令中携带的安全计数器值与第三取值不满足设定关系。
所述操作系统单元71用于:
读取维护的所述第二安全计数器的当前取值,将该当前取值与第二设定数值相减;判断所述数据操作命令中携带的安全计数器值是否小于或等于所述相减后的数值,若是,则确定所述数据操作命令中携带的安全计数器值与第三取值满足设定关系,否则,确定所述数据操作命令中携带的安全计数器值与第三取值不满足设定关系。
若所述数据操作命令为写数据操作命令,则所述数据操作相关信息包括:待写入所述智能卡的数据和/或所述调整后的第一安全计数器值;若所述数据操作命令为读数据操作命令,则所述数据操作相关信息包括:待读取数据的地址信息和/或所述调整后的第一安全计数器值。
所述应用数据单元72为:所述智能卡的逻辑加密卡MIFARE区域。
综上,本发明的有益效果包括:
本发明实施例提供的方案中,网络侧在确定需要对智能卡进行数据访问操作后,通过计算数据操作相关信息的消息鉴别数据,并将该消息鉴别数据和数据操作相关信息携带在数据操作命令发送给智能卡,智能卡也使用保存的密钥计算数据操作相关信息的消息鉴别数据,并将计算得到的消息鉴别数据与数据操作命令中携带的消息鉴别数据进行比对,并根据比对结果最终决定是否对智能卡进行数据访问操作,有效的提高了对智能卡进行数据访问操作的安全性和合法性。
进一步的,本发明实施例提供的方案中,网络侧还按照预先设定的安全计数器值调整规则调整维护的第一安全计数器的当前取值,并将调整后的第一安全计数器值携带在数据操作命令中发送给智能卡,智能卡接收到数据操作命令后,确定该数据操作命令中携带的安全计数器值是否是按照该安全计数器值调整规则调整后的第一安全计数器值,若是,则对智能卡进行数据访问操作;否则,拒绝对智能卡进行数据访问操作。可见,根据接收到的数据操作命令中的安全计数器值判定该数据操作命令是否合法,进而根据判断结果决定是否对智能卡进行数据访问操作,能够进一步提高对智能卡进行数据访问操作的安全性和合法性,避免数据访问操作的重放攻击。
需要说明的是,本发明中的智能卡可以是SIM、USIM等电信智能卡,也可以是例如URPASS等其它智能卡。
本发明中计算消息鉴别数据所使用的密钥可以是对称密钥或非对称密钥,在使用对称密钥时,智能卡计算消息鉴别数据所使用的密钥与网络侧计算消息鉴别数据所使用的密钥相同,在使用非对称密钥时,网络侧则利用非对称密钥的公钥计算消息鉴别数据所使用的密钥,智能卡利用非对称密钥的私钥计算消息鉴别数据所使用的密钥。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。