掌桥专利:专业的专利平台
掌桥专利
首页

安全载体的管控方法、装置、设备及存储介质

文献发布时间:2023-06-19 11:11:32


安全载体的管控方法、装置、设备及存储介质

技术领域

本申请涉及嵌入式设备的安全领域,具体而言,本申请涉及一种安全载体的管控方法、装置、电子设备及计算机存储介质。

背景技术

在智能卡的生产过程中,将COS脚本数据写入智能卡的芯片中,在本领域技术中通常称作写卡操作,是生产过程中的关键步骤。在量产化阶段,写卡过程所涉及的写卡工具和操作人员均为内部的,即便采用明文呈现COS脚本的方式处理写卡过程,COS脚本的安全还是在控制范围之内。

但是,在包括联调测试、闭环演示场景的非量产阶段中,也涉及到对部分智能卡进行的写卡操作。由于在该阶段的写卡过程所涉及的写卡工具和操作人员均属于不可控的第三方,若不对写卡过程做任何管控,并且明文呈现COS脚本,那么COS脚本的安全将存在很大的问题,例如:COS脚本被泄露。

发明内容

本申请提供了一种安全载体的管控方法、装置、电子设备及计算机存储介质,可实现对安全载体和第一设备之间交互的有效管控,并保障重要数据的安全。

本申请第一方面,提供了一种安全载体的管控方法,该方法包括:

响应于第一设备发送的认证请求消息,确定第一密文;

向第一设备发送认证响应消息,认证响应消息中携带第一密文,以便第一设备进行第一次身份认证;

接收第一设备在第一次身份认证通过之后发送的第三密文,第三密文为第一设备基于认证响应消息确定;

根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果;

根据第一结果,确定是否获取加密数据。

本申请第二方面,提供了另一种安全载体的管控方法,该方法包括:

向安全载体发送认证请求消息,认证请求消息用于请求进行身份认证,并携带第一随机数;

响应于安全载体发送的认证响应消息,确定第二密文,其中,认证响应消息中携带第一密文;

根据第一密文和第二密文,进行第一次身份认证;

当第一次身份认证通过时,根据认证响应消息确定第三密文,并向安全载体发送第三密文,以便安全载体进行第二次身份认证。

本申请第三方面,提供了一种安全载体,该安全载体包括:

收发模块,用于接收第一设备发送的认证请求消息;

确定模块,用于响应于第一设备发送的认证请求消息,确定第一密文;

收发模块,还用于向第一设备发送认证响应消息,认证响应消息中携带第一密文,以便第一设备进行第一次身份认证,以及接收第一设备在第一次身份认证通过之后发送的第三密文,第三密文为第一设备基于认证响应消息确定;

认证模块,用于根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果;

确定模块,还用于根据第一结果,确定是否获取加密数据。

本申请第四方面,提供了一种安全载体的管控设备,该设备包括:

收发模块,用于向安全载体发送认证请求消息,认证请求消息用于请求进行身份认证,并携带第一随机数,以及接收安全载体发送的认证响应消息,其中,认证响应消息中携带第一密文;

确定模块,用于响应于安全载体发送的认证响应消息,确定第二密文;

认证模块,用于根据第一密文和第二密文,进行第一次身份认证;

确定模块,还用于当第一次身份认证通过时,根据认证响应消息确定第三密文,以及收发模块,还用于向安全载体发送第三密文,以便安全载体进行第二次身份认证。

本申请第五方面,提供了一种电子设备,该电子设备包括:存储器,收发器,处理器,其中,

存储器,用于存储计算机程序;

处理器,用于读取存储器中的计算机程序并执行以下操作:

响应于第一设备发送的认证请求消息,确定第一密文;

收发器,用于在处理器的控制下向第一设备发送认证响应消息,其中,认证响应消息中携带第一密文,以便第一设备进行第一次身份认证,以及接收第一设备在第一次身份认证通过之后发送的第三密文,第三密文为第一设备基于认证响应消息确定;

处理器,还用于读取存储器中的计算机程序并执行以下操作:

根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果;

根据第一结果,确定是否获取加密数据。

本申请第六方面,提供了另一种电子设备,该电子设备包括:存储器,收发器,处理器,其中,

存储器,用于存储计算机程序;

收发器,用于在处理器的控制下向安全载体发送认证请求消息,认证请求消息用于请求进行身份认证,并携带第一随机数;

处理器,用于读取存储器中的计算机程序并执行以下操作:

响应于安全载体发送的认证响应消息,确定第二密文,其中,认证响应消息中携带第一密文;

根据第一密文和第二密文,进行第一次身份认证;

当第一次身份认证通过时,根据认证响应消息确定第三密文;

收发器,还用于在处理器的控制下向安全载体发送第三密文,以便安全载体进行第二次身份认证。

本申请第七方面,提供了一种计算机存储介质,该计算机存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本申请第一方面所示的安全载体的管控方法。

本申请第八方面,提供了另一种计算机存储介质,该计算机存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现如本申请第二方面所示的安全载体的管控方法。

本申请提供的技术方案带来的有益效果是:

本申请提供的技术方案包括,接收到身份认证请求之后,在第一设备侧进行第一次身份认证,以使第一设备确认安全载体的身份,在第一次身份认证通过之后,在安全载体侧进行第二次身份认证,以使安全载体确认第一设备的身份。通过第一次身份认证和第二次身份认证,第一设备和安全载体之间完成彼此的身份认证,即双向认证。在双向认证完成之后,可确定是否获取加密数据。由此可知,本申请提供的技术方案通过在安全载体和第一设备之间采用双向认证的操作实现了对安全载体和第一设备之间交互的有效管控,并根据双向认证的结果确定是否获取加密数据以保障重要数据的安全。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1a为由相关技术中厂商对智能卡写入Bootloader的过程示意图;

图1b为本申请实施例提供的智能卡的预处理过程示意图;

图2为本申请实施例提供的一种安全载体的管控方法流程示意图;

图3为本申请实施例提供的另一种安全载体的管控方法流程示意图;

图4a为本申请实施例提供的一种智能卡与卡外实体的交互流程示意图;

图4b为本申请实施例提供的另一种智能卡与卡外实体的交互流程示意图;

图5a为本申请实施例提供的计算第一密文中的算法过程示意图;

图5b为本申请实施例提供的计算第二密文中的算法过程示意图;

图5c为本申请实施例提供的解密COS脚本的密文版本的过程示意图;

图6为本申请实施例提供的一种安全载体的结构示意图;

图7为本申请实施例提供的一种安全载体的管控设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

首先对本申请涉及的几个名词进行介绍和解释:

(1)3DES-CBC

3DES算法来源于DES(Data Encryption Standard)算法,是对称算法的一种,在加密和解密过程中使用的是同一组密钥。其中,加密过程使用3个密钥对明文进行了3次运算,即:输入明文->DES加密(密钥1)->DES解密(密钥2)->DES加密(密钥3)->输出密文。相应地,其解密过程为,对密文进行了3次运算:输入密文->DES加密(使用密钥3)->DES解密(使用密钥2)->DES加密(使用密钥1)->输出明文。

此外,3DES算法有两种模式,EBC和CBC。CBC模式下,虽然计算过程复杂,但相对于EBC安全性更好,更多的被应用在身份认证等场景中。在本申请实施例中,采用3DES的CBC模式进行身份认证。

另,密钥1、密钥2和密钥3并不完全相等。

(2)智能卡

智能卡,作为一种安全载体(Safety Entity,简称SE),主要由硬件和软件两部分构成。其中,软件部分主要包括COS(chip operating system,片上操作系统),通过下载并安装COS脚本即可构建;硬件部分主要为集成电路,其外在形式为芯片,其内部组成是包括ROM在内的各种功能的集成部件。芯片厂商在芯片的生产过程中,设计将其提供的Bootloader(系统启动前的引导加载程序,简称引导程序)存储在ROM中,再由Bootloader实现COS脚本的装载。

目前,在量产化阶段中,写卡过程具体为,由芯片厂商提供的Bootloader通过PutMemory(一种通用写指令,指令中明文显示写入的地址和内容)方式将COS脚本写入到智能卡中。由于Put Memory指令直接明文显示写入的内容,又加上COS脚本提供方未对COS脚本做任何处理,导致在整个阶段中COS脚本直接以明文的形式呈现,而这将导致COS脚本的安全受到很大的威胁。若在量产化阶段,由于写卡操作所涉及的写卡工具和操作人员均为内部的,COS脚本的安全尚在控制范围之内。

但在非量产阶段中(如联调测试、闭环演示场景),由于是将COS脚本提供给第三方去进行写卡操作,若还采用Put memory的方式,COS脚本的安全受到很大的威胁,即:COS脚本被泄露。另外,在非量产阶段中,该第三方是否得到授权,以及需要对哪些智能卡进行写卡操作,均没有明确。若前述问题得到解决并且可进行写卡操作,在写卡操作中还存在着一些问题,例如:将如何控制COS脚本的装载数量,以及控制哪些智能卡可被允许重复装载等。

(3)安全载体

数字钱包、银行卡、POS机、SIM卡等泛终端,也涉及到写卡操作。因此,在本申请实施例中,安全载体既可以是智能卡,也可以是上述泛终端。

若安装在安全载体上的COS脚本在非量产阶段被泄露,那么其COS脚本上的业务逻辑也将会被泄露。若被泄露的COS脚本被继续应用在量产阶段,那么将会带来较大程度的经济损失。

应该理解的是,在本申请实施例中,以智能卡对应安全载体仅作为举例来用,并非用以限制本申请的实施例,本领域技术人员可以根据实际情况自行调整。

(4)替换引导加载程序(Bootloader)

智能卡的芯片厂商在智能卡出厂前,已设计写入一段引导加载程序到智能卡上的芯片上,具体如图1a所示。该引导加载程序可作为程序的主入口,执行一系列包括写入COS脚本的操作。

但是,基于由厂商写入的Bootloader,无法执行本申请实施例中的下述方法。因此,在实施本申请实施例的下述方法之前,需要由上位机对智能卡进行预处理,该预处理操作是为了替换上述由厂商设计写入的引导加载程序。该预处理的具体过程如图1b所示,包括:

使智能卡连接着读卡器一端并处于上电状态,从而启动Bootloader,并将Bootloader作为程序的主入口。其中,读卡器的另一端连接着上位机。通过Bootloader从上位机上下载TestOS脚本到智能卡上;在下载成功之后,通过TestOS验证智能卡的有效性;在验证通过之后,通过Bootloader将程序的主入口切换为TestOS;在TestOS成功作为新的主入口之后,通过TestOS删除Bootloader,并下载新版本引导加载程序ShamBootloader;通过TestOS切换程序的主入口到ShamBootloader;在ShamBootloader成功作为新的主入口之后,删除TestOS。

(5)写卡工具以及授权文件(license.data)

安全载体外的其他可执行写卡操作的工具,都可以作为写卡工具。在本申请实施例中,写卡工具被称作第一设备。其中,第一设备的关键在于其调用的授权文件(license.data)。

例如,针对智能卡中的写卡工具,称为卡外实体。该卡外实体有两种实现方式:第一种,是由上位机和Ukey组成,Ukey中包含license.data文件,可称作Ukey方式;第二种,由上位机中的程序组成,例如:Windows系统上带.exe后缀的可执行文件或者带.dll后缀的链接文件等,该程序可调用上位机中存储的license.data文件,可称作website方式。

由于在非量产阶段会涉及到不同场景、不同的第三方,甚至是不同批次的智能卡。针对不同情形下的需求,设置不同的license.data文件,可应对上述各种不同情形下的写卡操作。

应该理解的是,本申请实施例中,以卡外实体对应第一设备仅作为举例来用,并非用以限制本申请的实施例,本领域技术人员可以根据实际情况自行调整。

本申请实施例提供了一种安全载体的管控方法、装置、电子设备和计算机存储介质,旨在解决写卡操作过程中COS脚本所存在的安全问题,尤其是COS脚本被泄露的问题。

下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

本申请实施例中提供了一种安全载体的管控方法,如图2所示,可以应用于安全载体侧,该方法包括:

S101,响应于第一设备发送的认证请求消息,确定第一密文;

具体地,安全载体接收到认证请求消息后,基于该认证请求消息,执行一系列包括确定第一密文的操作。

S102,向第一设备发送认证响应消息,认证响应消息中携带第一密文,以便第一设备进行第一次身份认证;

其中,认证响应消息中还携带第二随机数和安全载体的唯一标识。该唯一标识为安全载体的唯一身份标识。

例如,智能卡芯片的序列号CardId就是一种唯一标识。

S103,接收第一设备在第一次身份认证通过之后发送的第三密文,第三密文为第一设备基于认证响应消息确定;

S104,根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果;

S105,根据第一结果,确定是否获取加密数据。

本申请实施例提供的技术方案包括,接收到身份认证请求之后,在第一设备侧进行第一次身份认证,以使第一设备确认安全载体的身份,在第一次身份认证通过之后,在安全载体侧进行第二次身份认证,以使安全载体确认第一设备的身份。通过第一次身份认证和第二次身份认证,第一设备和安全载体之间完成彼此的身份认证,即双向认证。在双向认证完成之后,可确定是否获取加密数据。本申请实施例提供的技术方案通过在安全载体和第一设备之间采用双向认证的操作实现了对安全载体和第一设备之间交互的有效管控,并根据双向认证的结果确定是否获取加密数据以保障重要数据的安全。

本申请实施例中提供了另一种可能的实现方式,响应于第一设备发送的认证请求消息,确定第一密文,包括S1011(图中未标出),具体为:

S1011,根据认证请求消息中携带的第一随机数,以及获取的第一密钥序列、第二随机数和安全载体的唯一标识,确定第一密文。

其中,第一密钥序列内置于安全载体中;第二随机数在安全载体侧生成。

例如,智能卡的序列号CardId,可为唯一标识;认证请求消息中携带的随机数为host challenge,在卡外实体侧生成;安全载体侧生成的随机数为card challenge。将安全载体中的第一密钥序列,以及认证请求消息中携带的随机数host challenge、CardId和card challenge,确定密文C1。

在该实施例中,S1011包括S1011a(图中未标出)与S1011b(图中未标出),具体为:

S1011a,将第一随机数、第二随机数和唯一标识按照第一组合顺序进行处理,得到第一数据参数;

具体地,对唯一标识执行MD5操作,即MD5(唯一标识);

将第一随机数、第二随机数和MD5(唯一标识)按照第一组合顺序进行组合,得到第一数据参数。

S1011b,基于第一密钥序列,对第一数据参数进行处理,得到第一密文。

具体地,将第一密钥序列和第一数据参数作为预设算法的入口参数,并执行加密操作,得到第一个密文,按预定规则处理第一个密文,得到第一密文。

例如,将host challenge、card challenge、MD5(CardId),按照先后出现的顺序进行拼接,得到para1;然后将para1和第一密钥序列作为3DES-CBC算法的入口参数,并进行加密运算,得到密文c1,截取c1最后的8个字节作为C1。

本申请实施例中提供了另一种可能的实现方式,该方法还包括S1041(图中未标出):

S1041,根据认证请求消息中携带的第一随机数,获取的第一密钥序列、第二随机数和安全载体的唯一标识,确定第四密文。

例如,获取安全载体中的第一密钥序列、随机数card challenge和安全载体的唯一标识CardId,以及随机数host challenge,确定密文C4。

在该实施例中,S1041包括S1041a(图中未标出)与S1041b(图中未标出),具体为:

S1041a,将第一随机数、第二随机数和唯一标识按照第二组合顺序进行处理,得到第二数据参数;

具体地,对唯一标识执行MD5操作,即MD5(唯一标识);

将第一随机数、第二随机数和MD5(唯一标识)按照第二组合顺序进行组合,得到第二数据参数。

S1041b,根据第一密钥序列对第二数据参数进行处理,得到第四密文。

具体地,将第一密钥序列和第二数据参数作为预设算法的入口参数,并执行加密操作,得到第四个密文,按预定规则处理第四个密文,得到第四密文。

例如,将card challenge、host challenge、MD5(CardId),按照先后出现的顺序进行拼接,得到para2,将para2和第一密钥序列作为3DES-CBC算法的入口参数,并进行加密运算,得到密文c4,截取c4最后的8个字节作为C4。

本申请实施例中提供了另一种可能的实现方式,根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果,具体包括:

判断第三密文和确定的第四密文是否相等,根据判断结果确定第一结果。

其中,根据判断结果确定第一结果,包括:

当确定第三密文与第四密文相同时,得到第一结果为第二次身份认证通过。

在该实施例中,根据第一结果,确定是否获取加密数据,包括:

当第一结果为第二次身份认证通过时,确定获取加密数据;

对该加密数据执行解密操作,得到明文数据,基于明文数据执行相应的处理。

例如,当身份认证通过之后,开启脚本下载开关,以便于下载脚本的密文版本,同时获取第三密钥序列;根据第三密钥序列,采用3DES-CBC算法对密文版本进行解密处理,并得到解密操作的结果,该结果即为脚本的明文版本;安装脚本的明文版本。

本申请实施例还提供了另一种安全载体的管控方法,可以应用于第一设备。具体如图3所示,该方法包括:

S201,向安全载体发送认证请求消息,该认证请求消息用于请求进行身份认证,并携带第一随机数;

S202,响应于安全载体发送的认证响应消息,确定第二密文,其中,认证响应消息中携带第一密文;

S203,根据第一密文和第二密文,进行第一次身份认证;

S204,当第一次身份认证通过时,根据认证响应消息确定第三密文,并向安全载体发送第三密文,以便安全载体进行第二次身份认证。

在本申请实施例的方案中,向安全载体发起身份认证请求并接收到基于认证请求的返回消息之后,基于该返回消息进行第一次身份认证,从而确认安全载体的身份;在第一次身份认证通过之后向安全载体发送第三密文,在安全载体侧基于第三密文进行第二次身份认证,以使得安全载体确认第一设备的身份。由此可知,本申请实施例提供的技术方案通过在安全载体和第一设备之间采用双向认证的操作实现了对安全载体和第一设备之间交互的有效管控,并根据双向认证的结果确定是否获取加密数据以保障重要数据的安全。

本申请实施例中提供了另一种可能的实现方式,该认证响应消息中还携带第二随机数和安全载体的唯一标识,则响应于安全载体发送的认证响应消息,确定第二密文,包括S2021(图中未标出),具体为:

S2021,根据获取的第二密钥序列和第一随机数,以及第二随机数和唯一标识,确定第二密文。

例如,获取第二密钥序列(密钥1、密钥2和密钥3)和host challenge,以及认证响应消息中携带的随机数Card challenge和CardId,确定密文C2。

其中,第二密钥序列存储于授权文件中。

在该实施例中,S2021包括S2021a(图中未标出)和S2021b(图中未标出),具体为:

S2021a,将第一随机数、第二随机数和唯一标识按照第一组合顺序进行处理,得到第一数据参数;

具体地,对唯一标识执行MD5操作,即MD5(唯一标识);

将第一随机数、第二随机数和MD5(唯一标识)按照第一组合顺序进行组合,得到第一数据参数。

S2021b,根据第二密钥序列对第一数据参数进行处理,得到第二密文。

具体地,将第二密钥序列和第一数据参数作为预设算法的入口参数,并执行加密操作,得到第二个密文,按预定规则处理第二个密文,得到第二密文。

例如,将host challenge、card challenge、MD5(CardId),按照先后出现的顺序进行拼接,得到para1;然后将para1和第二密钥序列作为3DES-CBC算法的入口参数,并进行加密运算,得到密文c2,截取c2最后的8个字节作为C2。

本申请实施例中提供了另一种可能的实现方式,该认证响应消息中还携带第二随机数和安全载体的唯一标识,则根据认证响应消息确定第三密文,包括S2041(图中未标出),具体为:

S2041,根据获取的第二密钥序列和第一随机数,以及第二随机数和唯一标识,确定第三密文。

例如,获取第二密钥序列和随机数host challenge,以及认证相应消息中携带的随机数card challenge和安全载体的唯一标识,确定第三密文。

在该实施例中,S2041包括S2041a(图中未标出)和S2041b(图中未标出),具体为:

S2041a,将第一随机数、第二随机数和唯一标识按照第二组合顺序进行处理,得到第二数据参数;

具体地,对唯一标识执行MD5操作,得到MD5(唯一标识);

将第一随机数、第二随机数和MD5(唯一标识)按照第二组合顺序进行组合,得到第二数据参数。

S2041b,根据第二密钥序列对第二数据参数进行处理,得到第三密文。

具体地,将第二密钥序列和第二数据参数作为预设算法的入口参数,并执行加密操作,得到第三个密文,按预定规律处理第三个密文,得到第三密文。

例如,将card challenge、host challenge、MD5(CardId),按照先后出现的顺序进行拼接,得到para2;然后将para2和第二密钥序列作为3DES-CBC算法的入口参数,并进行加密运算,得到密文c3,截取c3最后的8个字节作为C3。

此外,在非量产阶段的不同场景下所进行的写卡操作,存在着不同的需求,如何满足这些需求也是本申请需要解决的问题。例如:将如何控制COS脚本的写卡次数,以及控制哪些智能卡可被允许重复写卡等。

本申请实施例中提供了另一种可能的实现方式,在向安全载体发送第三密文之前,根据授权文件中的规则判断预设条件是否得到满足。

在满足预设条件时,向安全载体发送第三密文。

其中,该预设条件包括:

唯一标识在标识范围内,获取加密数据的剩余次数大于零,以及安全载体的重复写操作开关处于开启状态。

其中,在判断是否满足预设条件之前,获取第一设备中的授权文件。授权文件中包括了需要写加密数据的安全载体的唯一标识集合、剩余写数据的次数以及该安全载体的重复写操作开关的设置状态。

通过唯一标识集合,可获知安全载体是否在本次写操作范围之内;

剩余次数,具体为可为安全载体写加密数据的次数。执行完一次写加密数据的操作,剩余次数则相应地减少一次;

根据安全载体发送的认证响应消息获取安全载体是否有过获取加密数据的历史记录,若有过,则继续根据授权文件中记录的安全载体的重复写操作开关的状态,判断是否继续在安全载体上写数据。若为关闭状态,则不为该安全载体写加密数据。

应该理解的是,预设条件中所涉及到的具体操作仅为举例之用,并非用以限制本申请实施例。本领域技术人员可以根据实际情况自行调整。

本申请实施例的方案具体为,根据授权文件中的规则判断预设条件是否得到满足,从而间接确定是否向安全载体发送第三密文。当满足预设条件时,才向安全载体发送第三密文。由于第三密文是进行第二次身份认证的条件之一,该验证操作将间接影响第二次身份认证的结果,从而影响安全载体是否获取加密数据。该方案可进一步保护密文数据的安全,并且适应不同场景中对密文数据的需求。

基于本申请实施例中上述应用于安全载体和第一设备的安全载体的管控方法,本申请实施例中提供了另一种可能的实现方式,具体以智能卡对应安全载体,以及卡外实体对应第一设备,阐述本申请实施例中的安全载体的管控方法在智能卡和卡外实体交互场景中的应用。具体交互过程可参考附图4a和附图4b。

其中,如图4a所示的智能卡与卡外实体的交互流程示意图。该过程具体为:

S1001、卡外实体生成第一随机数。

在该实施例中,卡外实体获取到第三方触发的写卡操作之后,生成第一随机数,即host challenge。

S1002、卡外实体向智能卡发送认证请求消息,该认证请求消息中携带第一随机数。

S1003、智能卡响应于卡外实体发送的认证请求消息,确定第一密文。

在该实施例中,智能卡接收到卡外实体发送的认证请求消息后,智能卡执行一系列获取操作,例如:获取智能卡的序列号CardId、第二随机数card challenge、智能卡中内置的第一密钥序列,以及认证请求消息中携带的第一随机数。进一步地,根据第一密钥序列、第一随机数、第二随机数和唯一标识,进行相应的计算,得到第一密文C1。

计算C1的具体过程可以为:

对CardId执行MD5运算,得到MD5(CardId);将host challenge、card challenge、MD5(CardId)按照第一组合顺序进行拼接处理得到第一数据参数data1;获取智能卡内置的第一密钥序列(密钥11、密钥12、密钥13)。

例如,当host challenge为“32BC076FA369DEAA”,card challenge为“7FFA2349BD8C665E”,以及CardId为“0102030405060708090A”,那么MD5(CardId)为“70903E79B7575E3F4E7FFA15C2608AC7”,将host challenge、card challenge、MD5(CardId)按照第一组合顺序进行拼接得到的data1为:

“32BC076FA369DEAA7FFA2349BD8C665E70903E79B7575E3F4E7FFA15C2608AC7”。

将data1和第一密钥序列作为3DES-CBC算法的入口参数,进行加密运算,得到密文c1;截取c1最后的8个字节并作为C1。

该C1即为第一密文。

S1004、智能卡向卡外实体发送认证响应消息,该认证响应消息中携带了第一密文、第二随机数和智能卡的唯一标识。

S1005、卡外实体响应于智能卡发送的认证响应消息,确定第二密文。

在该实施例中,卡外实体接收到智能卡发送的认证响应消息后,执行了一系列获取操作,例如:获取第二密钥序列、第一随机数,以及认证响应消息中携带的第二随机数和智能卡的唯一标识。进一步地,根据第二密钥序列、第一随机数、第二随机数和唯一标识,进行相应的计算,得到第二密文C2。

计算C2的具体过程可以为:

对CardId执行MD5运算,得到MD5(CardId);将host challenge、card challenge、MD5(CardId)按照该第一组合顺序进行拼接处理得到data2;获取卡外实体中的第二密钥序列(密钥21、密钥22、密钥23)。

例如,当host challenge为“32BC076FA369DEAA”,card challenge为“7FFA2349BD8C665E”,以及CardId为“0102030405060708090A”,那么MD5(CardId)为“70903E79B7575E3F4E7FFA15C2608AC7”,将host challenge、card challenge、MD5(CardId)按照第一组合顺序进行拼接得到的data2为:

“32BC076FA369DEAA7FFA2349BD8C665E70903E79B7575E3F4E7FFA15C2608AC7”。

将data2和第二密钥序列作为3DES-CBC算法的入口参数,进行加密运算,得到密文c2;截取c2最后的8个字节并作为C2。

该C2即为第二密文。

其中,第二密钥序列可从授权文件(license.data)中获得。在Website方式中,license.data存储于上位机上,第三方可通过从指定网站下载新的license.data来更新授权信息,从而更新第二密钥序列。在Ukey方式中,通过替换Ukey中装载的license.data来更新授权信息,从而更新第二密钥序列。

S1006、卡外实体根据认证响应消息中携带的第一密文和计算得到的第二密文,进行第一次身份认证。

具体的,在该实施例中,卡外实体通过比对认证响应消息中携带的第一密文和计算得到的第二密文,对智能卡进行身份认证。例如:判断第一密文和第二密文是否相等。若第一密文和第二密文相等,则第一次身份认证通过,可执行下一步的操作;若不相等,则第一次身份认证不通过。当确定第一次身份认证不通过时,发出中断消息,以指示卡外实体中断此次写卡操作。

根据上述计算过程,下面将结合3DES-CBC算法进一步分析第一次身份认证的过程:

应该理解的是,data1和data2均是对host challenge、card challenge、MD5(CardId)按照第一组合顺序进行拼接处理所得,可以确定data1和data2相等。

如图5a所示的计算第一密文中的算法过程示意图,以及5b所示的计算第二密文中的算法过程示意图,计算C1和C2的过程具体包括:

结合附图5a,C1的获取过程为:采用3DES-CBC,对data1经过3次运算以及相应的处理,最后得到C1。具体为:

Step1、输入data1;

Step2、使用密钥11,对data1进行DES加密,得到result11;

Step3、使用密钥12,对result11进行DES解密,得到result12;

Step4、使用密钥13,对result12进行DES加密,得到result13;

Step5、截取result13的最后8个字节作为C1。

结合附图5b,C2的获取过程为:采用3DES-CBC,对data2经过3次运算及相应的处理,最后得到C2。具体为:

Step1、输入data2;

Step2、使用密钥21,对data2进行DES加密,得到结果result21;

Step3、使用密钥22,对result21进行DES解密,得到结果result22;

Step4、使用密钥23,对result22进行DES加密,得到结果result23;

Step5、截取result23的最后8个字节作为C2。

应该理解的是,密钥11等于密钥21、密钥12等于密钥22以及密钥13等于密钥23时,可以确定第一密钥序列和第二密钥序列相同;若有一组密钥不相等,可以确定两组密钥序列不相同。

基于相同的密钥序列,采用3DES-CBC对data1和data2执行加密处理时,所得到的C1和C2是相同的,可以确定第一次身份认证通过。

基于不同的密钥序列,采用3DES-CBC对data1和data2进行加密处理时,所得到的C1和C2就是不同的,可以确定第一次身份认证不通过。

可以通过判断C1和C2是否相同,进一步判断第一密钥序列和第二密钥序列是否相同。即卡外实体通过比对C1和C2,来获知智能卡是否与其具有相同的密钥序列。

应该理解的是,当C1等于C2时,卡外实体可获知智能卡与其具有相同的密钥序列。

S1007、当第一次身份认证通过时,卡外实体根据认证响应消息确定第三密文C3。

在该实施例中,当对智能卡进行身份认证的结果为通过时,卡外实体执行一系列获取操作,例如:获取第二密钥序列、第一随机数,以及认证响应消息中携带的第二随机数和智能卡的序列号。进一步地,可以根据第二密钥序列、第一随机数、第二随机数和唯一标识,进行相应的计算,得到第三密文C3。

计算C3的具体过程可以为:

对CardId执行MD5运算,得到MD5(CardId);将card challenge、host challenge、MD5(CardId)按照第二组合顺序进行拼接处理得到第二数据参数data3;获取卡外实体中的第二密钥序列。

例如,当card challenge为“7FFA2349BD8C665E”,host challenge为“32BC076FA369DEAA”,以及CardId为“0102030405060708090A”,那么MD5(CardId)为“70903E79B7575E3F4E7FFA15C2608AC7”,将card challenge、host challenge、MD5(CardId)按照第一组合顺序进行拼接得到的data3为:

“7FFA2349BD8C665E32BC076FA369DEAA70903E79B7575E3F4E7FFA15C2608AC7”。

将data3和第二密钥序列作为3DES-CBC算法的入口参数,进行加密运算,得到密文c3;截取c3最后的8个字节并作为C3。

此外,卡外实体还需要基于授权文件对当前写卡操作做进一步的验证。该验证包括:

1)、CardId在序列号范围内。授权文件中包含本次写卡的序列号范围,通过该序列号范围判断该智能卡是否在本次写卡范围内。

2)、剩余写卡数大于零。授权文件有设置本次写卡的总次数,即剩余写卡数量。若总次数大于零,说明还可执行写卡操作。

3)、若根据认证响应消息获知安全载体已执行过写卡操作时,并且该安全载体的可重复写卡开关处于打开状态。其中,授权文件中有记载智能卡的可重复写卡开关的设置状态,包括开启和关闭两种。开启时,则还可对智能卡重复执行写卡操作。

若上述检查均通过时,确定满足预设条件,继续执行S1008。若至少有一项检查不通过,确定不满足预设条件。在确定不满足预设条件时,发出中断消息,以指示卡外实体中断此次写卡操作。

应该理解的是,授权文件中包括的上述验证过程所需的信息仅为举例之用,并非用于限制本申请实施例。本领域技术人员在具体实施时可自行调整。

S1008、卡外实体向智能卡发送第三密文C3。

S1009、智能卡接收卡外实体发送的第三密文,并根据认证请求消息中携带的第一随机数,以及第二随机数和唯一标识计算得到第四密文。

在该实施例中,接收到智能卡发送的第三密文C3之后,智能卡执行一系列获取操作,例如:获取第一密钥序列、第二随机数、智能卡的序列号,以及认证请求消息中携带的第一随机数。进一步地,根据第一密钥序列、第一随机数、第二随机数和唯一标识,进行相应的计算,得到第四密文C4。

计算C4的具体过程可以为:

对CardId执行MD5运算,得到MD5(CardId);将card challenge、host challenge、MD5(CardId)按照第二组合顺序进行拼接处理得到data4;获取智能卡内置的第一密钥序列。

例如,当card challenge为“7FFA2349BD8C665E”,host challenge为“32BC076FA369DEAA”,以及CardId为“0102030405060708090A”,那么MD5(CardId)为“70903E79B7575E3F4E7FFA15C2608AC7”,将card challenge、host challenge、MD5(CardId)按照第二组合顺序进行拼接得到的data4为:

“7FFA2349BD8C665E32BC076FA369DEAA70903E79B7575E3F4E7FFA15C2608AC7”。

应该理解的是,上述按照第一组合顺序或者第二组合顺序处理card challenge、host challenge、MD5(CardId),仅作为举例之用,并非对本申请实施例的限制。本领域技术人员可根据实际情况自行调整。

将data4和第一密钥序列作为3DES-CBC算法的入口参数,进行加密运算,得到密文c4;截取c4最后的8个字节并作为C4。

S1010、智能卡根据第三密文和第四密文,进行第二次身份认证,得到第一结果。

在该实施例中,智能卡通过比对卡外实体发送的第三密文和计算得到的第四密文,对卡外实体进行身份认证。例如:判断第三密文和第四密文是否相等。若第三密文和第四密文相等,则第二次身份认证通过,可执行下一步的操作;若不相等,则第二次身份认证失败,智能卡将向卡外实体返回认证失败的消息。卡外实体接收到该消息后,停止对智能卡的写卡操作。

根据上述计算过程,下面将结合3DES-CBC算法进一步分析第二次身份认证的过程:

应该理解的是,data3和data4均是对card challenge、host challenge、MD5(CardId)按照第二组合顺序进行拼接处理所得,可以确定data3和data4相等。

C3和C4的计算过程,与C1和C2相似,为描述简便,在此不再赘述。

基于相同的密钥序列,采用3DES-CBC对data3和data4执行加密处理时,所得到的C3和C4是相同的,可以确定第二次身份认证通过。

基于不同的密钥序列,采用3DES-CBC对data3和data4进行加密处理时,所得到的C3和C4就是不同的,可以确定第二次身份认证不通过。当确定第二次身份认证不通过时,向卡外实体发送中断消息,以指示卡外实体中断此次写卡操作。

可以通过判断C3和C4是否相同,进一步判断第一密钥序列和第二密钥序列是否相同。即智能卡通过比对C3和C4,来获知卡外实体是否与其具有相同的密钥序列。

应该理解的是,当C3等于C4时,智能卡可获知卡外实体与其具有相同的密钥序列。

应该理解的是,第一次身份认证和第二次身份认证的过程,是智能卡和卡外实体确认双方是否具有相同的密钥序列。若确认有相同的密钥序列,则可以进入获取脚本的阶段。

S1011、智能卡向卡外实体发送认证成功消息。

在第二次身份认证通过之后,智能卡向卡外实体发送认证成功的消息。

上述S1001-S1011为双向认证阶段包括的方法流程,下述S1012-S1017为下载COS脚本阶段包括的方法流程。

S1012、智能卡打开COS脚本的下载开关。

在第一结果为第二次身份认证通过之后,智能卡打开COS脚本的下载开关。

智能卡连接读卡器相连接后,处于上电状态。该状态下COS脚本的下载开关默认处于关闭状态,在双向认证通过之后,可以被打开并处于打开状态。

S1013、卡外实体获取COS脚本的密文版本信息。

例如,卡外实体获取密文版本的下载链接,或者直接是密文版本。

S1014、卡外实体向智能卡发送下载脚本指令。

其中,该指令中携带有COS脚本的密文版本信息。

S1015、智能卡响应于下载脚本指令,下载COS脚本的密文版本,并对密文版本执行解密操作,得到脚本的明文版本。

其中,对COS脚本执行解密操作,具体为:

获取智能卡内置的第三密钥序列(密钥31、密钥32、密钥33);

将密文版本和第三密钥序列作为3DES-CBC算法的入口参数,进行解密计算,得到计算结果,该结果即为COS脚本的明文版本。

如图5c所示为对密文版本采用3DES-CBC算法,并得到明文版本的具体过程,包括:

Step1、输入密文版本;

Step2、使用密钥33,对密文版本进行DES解密,得到结果result33;

Step3、使用密钥32,对result33进行DES加密,得到结果result32;

Step4、使用密钥31,对result32进行DES解密,得到结果result31。

该result31即为COS脚本的明文版本。

应该理解的是,密文版本由明文版本按照以下加密过程所得:输入明文版本->DES加密(使用密钥31)->DES解密(使用密钥32)->DES加密(使用密钥33)->输出密文版本。

S1016、智能卡安装明文版本。

S1017、智能卡向卡外实体发送安装成功的信息。

在安装成功之后,智能卡向卡外实体发送安装成功的信息。

另,由本申请的上述实施例可知,卡外实体包括两种实现方式:Website方式和Ukey方式。其中,Website方式的卡外实体可参考附图4a,Ukey方式可参考附图4b。

如图4b所示,S2001-2015为双向认证阶段包括的方法流程,S2016-S2020为下载COS脚本阶段包括的方法流程。其具体方法流程如图4b所示,为描述简便,在此不再赘述。

其中,附图4b中Ukey方式的具体设置可参考以下3点:

1)、上位机与Ukey及智能卡的数据传输都是使用APDU协议传递数据;

2)、上位机与Ukey、智能卡交互是使用PCSC协议交互;

3)、Ukey内置的是PSAM卡。其中,PSAM中内置license.data文件。

应该理解的是,附图4b具体设置的参考仅作为举例之用,并非用以限制本申请的实施例。本领域技术人员可以根据实际情况自行调整。

附图4a和附图4b,详细描述了本申请实施例中的安全载体的管控方法在智能卡和卡外实体交互场景中的应用。由此可知,本申请实施例的提供的技术方案通过在智能卡和卡外实体之间采用双向认证的操作实现了在非量产阶段,对写卡过程的有效管控,并根据双向认证的结果确定是否获取COS脚本的密文版本以保障COS脚本的安全,例如:避免COS脚本被泄露。

本申请实施例中还提供了一种安全载体40,如图6所示,该安全载体40包括:收发模块401,确定模块402以及认证模块403,其中,

收发模块401,用于接收第一设备发送的认证请求消息;

确定模块402,用于响应于第一设备发送的认证请求消息,确定第一密文;

收发模块401,还用于向第一设备发送认证响应消息,认证响应消息中携带第一密文,以便第一设备进行第一次身份认证,以及接收第一设备在第一次身份认证通过之后发送的第三密文,第三密文为第一设备基于认证响应消息确定;

认证模块403,用于根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果;

确定模块402,还用于根据第一结果,确定是否获取加密数据。

在该实施例中,认证响应消息中还携带第二随机数和安全载体的唯一标识。

本申请实施例中提供了另一种可能的实现方式,确定模块402在响应于第一设备发送的认证请求消息,确定第一密文中,具体用于:

根据认证请求消息中携带的第一随机数,以及获取的第一密钥序列、第二随机数和安全载体的唯一标识,确定第一密文。

在本申请实施例中,确定模块402在根据认证请求消息中携带的第一随机数,以及获取的第一密钥序列、第二随机数和安全载体的唯一标识,确定第一密文中,具体用于:

将第一随机数、第二随机数和唯一标识按照第一组合顺序进行处理,得到第一数据参数;

基于第一密钥序列,对第一数据参数进行处理,得到第一密文。

本申请实施例中提供了另一种可能的实现方式,确定模块402还用于:

根据认证请求消息中携带的第一随机数,以及获取的第一密钥序列、第二随机数和安全载体的唯一标识,确定第四密文。

在本申请实施例中,确定模块402在根据认证请求消息中携带的第一随机数,以及获取的第一密钥序列、第二随机数和安全载体的唯一标识,确定第四密文中,具体用于:

将第一随机数、第二随机数和唯一标识按照第二组合顺序进行处理,得到第二数据参数;

根据第一密钥序列对第二数据参数进行处理,得到第四密文。

本申请实施例中提供了另一种可能的实现方式,认证模块403在根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果中,具体用于:

当确定第三密文与第四密文相同时,得到第一结果为身份认证通过;

根据第一结果,确定是否获取加密数据,包括:

当第一结果为身份认证通过,确定获取加密数据。

本申请实施例中还提供了一种安全载体的管控设备50,如图7所示,该设备50可以包括:收发模块501,确定模块502以及认证模块503,其中,

收发模块501,用于向安全载体发送认证请求消息,认证请求消息用于请求进行身份认证,并携带第一随机数,以及接收安全载体发送的认证响应消息,其中,认证响应消息中携带第一密文;

确定模块502,用于响应于安全载体发送的认证响应消息,确定第二密文;

认证模块503,用于根据第一密文和第二密文,进行第一次身份认证;

确定模块502,还用于当第一次身份认证通过时,根据认证响应消息确定第三密文,以及收发模块501,还用于向安全载体发送第三密文,以便安全载体进行第二次身份认证。

本申请实施例中提供了另一种可能的实现方式,该认证响应消息中还携带第二随机数和安全载体的唯一标识,则确定模块502在响应于安全载体发送的认证响应消息,确定第二密文中,具体用于:

根据获取的第二密钥序列和第一随机数,以及第二随机数和唯一标识,确定第二密文。

在本申请实施例中,确定模块502在根据获取的第二密钥序列和第一随机数,以及第二随机数和唯一标识,确定第二密文中,具体用于:

将第一随机数、第二随机数和唯一标识按照第一组合顺序进行处理,得到第一数据参数;

根据第二密钥序列对第一数据参数进行处理,得到第二密文。

本申请实施例中提供了另一种可能的实现方式,该认证响应消息中还携带第二随机数和安全载体的唯一标识,则确定模块502在当第一次身份认证通过时,根据认证响应消息确定第三密文中,具体用于:

根据获取的第二密钥序列和第一随机数,以及第二随机数和唯一标识,确定第三密文。

在本申请实施例中,确定模块502在根据获取的第二密钥序列和第一随机数,以及第二随机数和唯一标识,确定第三密文中,具体用于:

将第一随机数、第二随机数和唯一标识按照第二组合顺序进行处理,得到第二数据参数;

根据第二密钥序列对第二数据参数进行处理,得到第三密文。

本申请实施例中提供了另一种可能的实现方式,在向安全载体发送第三密文之前,根据授权文件中的规则判断预设条件是否得到满足。

在满足预设条件时,向安全载体发送第三密文。

其中,该预设条件包括:

唯一标识在标识范围内,获取加密数据的剩余次数大于零,以及安全载体的重复写操作开关处于打开状态。

应该理解的是,预设条件所涉及到的具体操作仅为举例之用,并非用以限制本申请实施例。本领域技术人员可以根据实际情况自行调整。

根据本申请一个或多个应用于安全载体的方法实施例,提供了一种电子设备,该电子设备包括:存储器,收发器,处理器,

存储器,用于存储计算机程序;

处理器,用于读取存储器中的计算机程序并执行以下操作:

响应于第一设备发送的认证请求消息,确定第一密文;

收发器,用于在处理器的控制下向第一设备发送认证响应消息,其中,认证响应消息中携带第一密文,以便第一设备进行第一次身份认证,以及接收第一设备发送的第三密文,第三密文为第一设备基于认证响应消息确定;

处理器,还用于读取存储器中的计算机程序并执行以下操作:

根据第三密文和确定的第四密文,进行第二次身份认证,得到第一结果;

根据第一结果,确定是否获取加密数据。

根据本申请一个或多个应用于第一设备的方法实施例,提供了另一种电子设备,该电子设备包括:存储器,收发器,处理器,

存储器,用于存储计算机程序;

收发器,用于在处理器的控制下向安全载体发送认证请求消息,认证请求消息用于请求进行身份认证,并携带第一随机数;

处理器,用于读取存储器中的计算机程序并执行以下操作:

响应于安全载体发送的认证响应消息,确定第二密文,其中,认证响应消息中携带第一密文;

根据第一密文和第二密文,进行第一次身份认证;

当第一次身份认证通过时,根据认证响应消息确定第三密文;

收发器,还用于在处理器的控制下向安全载体发送第三密文,以便安全载体进行第二次身份认证。

根据本申请的一个或多个应用于安全载体的方法实施例,提供了一种计算机存储介质,存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现本申请的一个或多个应用于安全载体的方法的实施例。

根据本申请的一个或多个应用于第一设备的方法实施例,提供了一种计算机存储介质,存储介质存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现本申请的一个或多个应用于第一设备的方法的实施例。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

相关技术
  • 安全载体的管控方法、装置、设备及存储介质
  • 一种安全管控的方法、装置和安全管控设备
技术分类

06120112836879