一种智能卡及其应用升级方法
技术领域
本申请涉及智能卡技术领域,尤其涉及一种智能卡及其应用升级方法。
背景技术
现有随着技术的发展,各行业应用的“井喷”式出现和迭代更新,都带来了应用部署后升级功能的强烈需求。如何在已加载到各种软硬件中的应用实现动态升级,成为了各行业一直在研究解决的问题,目前各行业中应用升级方案也多种多样。
就智能卡领域,随着各种新的应用场景的出现,智能卡中应用的升级功能需求也越来越多的凸显出来。比如eSIM技术,传统的智能卡在搭载eSIM技术后,直接和物联网设备硬件固化在一起,不再进行卡片的插拔更换,在这种场景下如果需要更新智能卡片内应用,只有通过联网实时的应用升级的方法才能满足需求。
同时,智能卡相对于PC和手机应用等领域,其升级方案面临更大的技术挑战,由于智能卡作为一种嵌入式设备,芯片容量、运算性能都是非常有限的。因此,如何实现应用升级的功能,并保证升级过程中数据和用户身份的安全性,成为了智能卡领域一个难题。
目前智能卡领域升级方案中,都需要首先删除所有应用相关的所有数据后,整体进行重新写入,来达到应用升级的目的,这样就会导致不变数据的重复升级,既浪费时间安全性又不高。
发明内容
本申请的目的在于提供一种智能卡及其应用升级方法,降低运维成本,简化应用升级流程,方便联合经营和大面积推广应用。
为达到上述目的,本申请提供一种实现安全存储的智能卡,其特征在于,包括如下部件:安全存储单元,用于存储用户固定数据;处理单元,用于在升级过程中删除除用户固定数据外的其他数据,并在下载新数据后恢复用户固定数据,完成应用升级。
如上的,其中,所述智能卡还包括安全管理单元,用于存储和管理应用升级过程中的密钥信息。
如上的,其中,所述处理单元,具体用于根据安全管理单元中的密钥信息进行用户固定数据的恢复。
如上的,其中,安全存储单元包括数据标识区和数据存储区;数据标识区,记录用户固定数据的标识,包括识别索引、数据安全信息、读写权限信息、算法标识、数据校验信息、密钥ID、随机因子;数据存储区,存储用户固定数据。
如上的,其中,处理单元,还用于在升级完成后,将下载的用户数据中新的用户固定数据存储在安全存储单元中。
本申请还提供一种采用上述智能卡的应用升级方法,包括:删除应用中的待升级数据,保留用户固定数据;下载新的应用数据,升级应用,还原用户固定数据。
如上的,其中,删除应用中的待升级数据,具体为将待升级数据标记为逻辑删除。
如上的,其中,若升级应用失败,则将标记为逻辑删除的待升级数据还原。
如上的,其中,还原用户固定数据,具体为:根据识别索引将安全存储单元中的对象地址与下载的新的应用数据相关联。
如上的,其中,智能卡在升级完成后,对升级后的数据进行签名,将签名结果返回远程服务器,当接收到远程服务器返回的验证成功响应时,升级成功。
本申请实现的有益效果如下:用户固定数据在本地存储,无需重新写入,解决数据传输过程中存在的安全隐患;而且升级后对用户所有数据进行签名校验,保证整个升级过程的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为智能卡安全升级方法流程图;
图2为智能卡升级数据加载阶段流程图;
图3为智能卡数据还原阶段流程图;
图4展示了智能卡整个升级过程中,应用数据的删除以及还原示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
为了实现智能卡应用安全快速升级,本申请提供一种智能卡应用升级方法,该方法适用于支持多应用管理的智能卡片,如智能eSIM卡、金融IC卡、电信卡、交通卡、eUICC等。
本申请提供一种智能卡数据安全存储和访问方法,保证智能卡中用户数据的可靠性存储和安全访问。智能卡中的应用数据包括代码数据和用户个人化数据,其中,用户个人化数据包括用户变化数据和用户固定数据;代码数据和用户变化数据是指本次升级过程中要发生变化的待升级数据,用户固定数据是指本次升级过程中不会发生变化的部分,如常量信息、用户密钥、当前余额等。
本申请用于安全存储的智能卡包括安全管理单元(SMU)和安全存储单元(SSU),安全管理单元负责存储和管理数据升级过程中与安全存储相关的密钥信息,安全存储单元负责对用户敏感数据的安全存储和正常访问。以下对两个单元进行详细描述:
安全管理单元,用于维护升级敏感数据和保护密钥等安全信息元素,内部存储密钥和证书,包括升级证书、应用发布方公私钥对、卡片升级公私钥对和对称密钥;
升级证书(CERT_PK_UPDATE):主要用于在升级应用代码数据完成后,还原用户敏感数据时进行签名校验,验证被升级应用的合法性。升级证书使用应用发布方私钥对卡片升级公钥进行签名,并在应用第一次创建后写入卡片中;
应用发布方公私钥对(私钥SK_APP_ECDSA、公钥PK_APP_ECDSA):由应用发布方生成。其中,应用发布方私钥SK_APP_ECDSA用于签名生成升级证书CERT_PK_UPDATE,并用于验证升级证书的合法性;应用发布方公钥PK_APP_ECDSA预制到卡片中;
卡片升级公私钥对(私钥SK_UICC_ECDSA、公钥PK_UICC_ECDSA):该卡片升级公私钥对在应用第一次加载到卡片时由卡片生成;
对称密钥(AES):该对称密钥根据实际需要设定长度,如定义16字节密钥长度,由密钥ID进行区分,密钥长度可扩展。
安全存储单元,管理用户固定数据在智能卡中的安全存储,具有存储数据安全性、识别过程可靠性和访问接口稳定性等特性。安全存储单元由数据标识区和数据存储区组成,具体为:
参见表1,数据标识区,记录用户固定数据的标识,包括识别索引、数据安全信息、读写权限信息、算法标识、数据校验信息、密钥ID、随机因子组成,需要说明的是,表1中每个字段编码的长度可以根据需要自行设定;
字段 |
描述 |
长度 |
1-3 |
识别索引 |
3 |
4 |
数据安全信息 |
1 |
5 |
读写权限信息 |
1 |
6-7 |
算法标识 |
2 |
8-11 |
数据校验信息 |
4 |
12 |
密钥ID |
1 |
13-16 |
随机因子 |
4 |
表1
以下对数据标识区中的不同字段进行详细阐述:
识别索引,记录当前数据对象地址和对象在应用中的索引,由2字节数据地址索引(卡地址索引)+1字节应用(应用地址索引)组成,在恢复应用用户数据过程中起到关联应用和数据的作用;
安全信息:记录当前数据对象保护级别,标识当前存储数据的安全状态,分明文状态和密文状态;
读写权限信息:分只读和读写两种权限;
算法标识:由数据加密算法和校验算法组成,加密算法决定当前数据存储和读取时采用的加密算法;校验算法如CRC校验等;
数据校验信息:即为对用户数据的校验值,其中,校验值长度和内容取决于算法标识对应的校验算法;
密钥ID:用户数据加密或校验MAC采用的密钥ID,卡片在应用第一次创建时生成若干组对称密钥,每个密钥分配一个唯一标识;
随机因子:如需更新安全数据单元需动态生成安全随机数,该随机数参与用户固定数据的加密和解密,增强存储数据的安全性。
数据存储区:依据应用发布方的策略,存储用户固定数据。
本申请智能卡还包括处理单元,用于在升级过程中删除除用户固定数据外的其他数据,并在下载新数据后恢复用户固定数据,完成应用升级;
处理单元具体用于根据安全管理单元中的密钥信息进行用户固定数据的恢复;还用于在升级完成后,将下载的用户数据中新的用户固定数据存储在安全存储单元中。
实施例二
本申请实施例二在实施例一安全存储结构的基础上,提供一种智能卡安全升级方法,如图1所示,包括:
步骤11:智能卡删除待升级数据,保留用户固定数据;
具体的,安全存储单元中存储用户固定数据,智能卡删除除安全存储单元外的所有待升级数据,包括用户变化数据和代码数据;
本实施例中,智能卡执行删除操作具体为:
步骤111:远程服务器与智能卡建立连接,向智能卡下发删除卡片应用数据的RAM指令;
优选的,远程服务器通过OTA方式(SMS或HTTPS或CAT-TP)同卡建立连接;
步骤112:智能卡将应用的所有数据标记为逻辑删除;
优选的,智能卡在进行升级前只是将应用数据标记为逻辑删除,并未真正删除应用数据,防止智能卡升级失败无法正常使用;
返回参见图1,步骤12:智能卡下载新应用数据,升级应用,还原用户固定数据;
具体的,智能卡将标记为逻辑删除的用户固定数据进行还原;当升级成功后,智能卡将标记为逻辑删除的应用数据中的用户固定数据进行恢复,其他数据删除,如果升级失败,则进行回滚操作,将下载的新的应用数据包删除,将标记为逻辑删除的所有应用数据均进行还原,保证当前应用能够正常使用。
本实施例提出的安全升级方法包括升级数据加载阶段和数据还原阶段;
图2为智能卡升级数据加载阶段:
步骤21:智能卡保留安全存储单元中的用户固定数据,删除待升级数据;
步骤22:智能卡判断是否删除成功,如果是,则下载新应用数据并更新,升级应用,执行步骤23,否则执行回滚操作;
具体为,更新智能卡中的用户变化数据和代码数据;
步骤23:智能卡判断是否更新成功,如果是,则执行步骤24,否则执行回滚操作;
其中,回滚操作,具体为将下载的新应用数据删除,还原旧的待升级数据。
步骤24:智能卡检测当前应用是否存在待还原的数据,如果是,则进入还原阶段,否则升级完成,结束;
其中,待还原数据即为安全存储单元中的数据,若安全存储区中存在用户固定数据,则进入还原阶段,若安全存储区中不存在用户固定数据,则升级完成。
图3为智能卡数据还原阶段:
步骤31:远程服务器获取智能卡中的升级证书,恢复卡片升级公钥;
具体的,远程服务器使用应用发布方公钥验证升级证书,验证成功后,恢复卡片升级公钥;
本步骤之前还包括:远程服务器定时向智能卡下发升级查询指令,若智能卡未执行恢复操作,则升级成功退出,若智能卡执行恢复操作,则执行数据恢复验证操作;
本实施例可选的,智能卡在还原用户固定数据后,可以直接向远程服务器发送是否进行数据还原的响应;除此之外也可以为远程服务器定期向智能卡下发升级查询指令。
步骤32:远程服务器使用应用发布方私钥对卡唯一标识、应用唯一标识以及随机数进行签名,将签名结果和随机数下发至智能卡;
计算签名结果SignDataA=Sign(Hash(EID+AID+RAMDOM)),其中,EID为卡唯一标识、AID为应用唯一标识、RAMDOM优选为32字节的随机数;
步骤33:智能卡使用应用发布方公钥对签名结果进行验签,若验证成功,则开始恢复数据操作,执行步骤34,否则恢复失败,进入数据失败处理;
本实施例中,进入数据失败处理,具体为:当检测到升级失败,且在尝试限定次数后仍然失败,智能卡会自动清空该应用下所有原有用户数据,并还原被置为逻辑删除的所有数据,保证卡中原有应用的正确使用,最后将失败结果通知应用发行方。
其中,恢复数据,具体为:卡操作系统在安全存储结构下匹配到当前应用数据对象,根据识别索引将安全存储单元中的对象地址与下载的新的应用数据相关联,完成数据恢复操作;在整合恢复阶段使用事务机制,保证整合还原操作的一致性。
步骤34:智能卡使用卡片升级私钥对恢复的用户固定数据卡片唯一标识以及应用唯一标识,进行签名,将签名结果上送至远程服务器;
计算签名结果SignDataB=Sign(Hash(EID+AID+DATA)),其中,EID为卡唯一标识、AID为应用唯一标识、DATA为恢复的用户固定数据;
步骤35:远程服务器使用卡片升级公钥对签名结果进行验签,若验证成功,则下发启用指令启用卡片中应用,应用进行成功处理策略,否则通知应用进行失败处理;
其中,成功处理策略,具体为卡片在收到升级成功指令后,遍历新的应用数据结构,将所有采用安全存储结构的数据进行归类,以便于后期下一次升级准备。本方案中如新加载的用户数据中若存在新的固定数据,则会在下次升级中将本次新的固定数据作为下次升级的固定数据,保证升级过程中保持不变。
图4展示了智能卡整个升级过程中,应用数据的删除以及还原过程。
本申请提出的智能卡安全升级方法的主要特点为:
1、用户敏感数据在本地存储,无需重新写入;
2、升级过程中通过PKI机制保证了远程应用发布方和本地智能卡之间双向身份认证,保证了升级操作的身份合法性。
3、升级后对用户所有数据进行签名校验,保证整个升级过程的安全性。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。