CN117195202A - 应用验签方法、装置、车辆和存储介质 - Google Patents

应用验签方法、装置、车辆和存储介质 Download PDF

Info

Publication number
CN117195202A
CN117195202A CN202311084295.0A CN202311084295A CN117195202A CN 117195202 A CN117195202 A CN 117195202A CN 202311084295 A CN202311084295 A CN 202311084295A CN 117195202 A CN117195202 A CN 117195202A
Authority
CN
China
Prior art keywords
digital certificate
target
certificate
value
hash value
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.)
Pending
Application number
CN202311084295.0A
Other languages
English (en)
Inventor
于萍
司思
王瑛玮
刘冬香
牛竹平
安晓雷
孙泽洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Great Wall Motor Co Ltd
Original Assignee
Great Wall Motor Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Great Wall Motor Co Ltd filed Critical Great Wall Motor Co Ltd
Priority to CN202311084295.0A priority Critical patent/CN117195202A/zh
Publication of CN117195202A publication Critical patent/CN117195202A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本申请公开了一种应用验签方法、装置、车辆和存储介质,属于车辆技术领域。包括:响应于目标应用的安装包获取指令,获取目标应用的安装包、第一签名值以及至少两级数字证书;分别验证至少两级数字证书是否具有合法性;在至少两级数字证书具有合法性的情况下,通过目标数字证书的公钥对第一签名值进行解密,得到第一哈希值;通过目标哈希算法对安装包进行哈希运算,得到第二哈希值;在第一哈希值和第二哈希值相同的情况下,确定目标应用验签通过。如此,是在目标数字证书的公钥可信的情况下,再通过目标数字证书的公钥验证目标应用的安装包是否被篡改。从而提高目标应用的安装安全性,保证安装到用户所期望的应用,进而提升用户体验。

Description

应用验签方法、装置、车辆和存储介质
技术领域
本申请涉及车辆技术领域,特别涉及一种应用验签方法、装置、车辆和存储介质。
背景技术
随着科技的发展,技术的进步,目前,车辆的多媒体主机也可以像移动终端一样安装各种应用,用户可以在多媒体主机上使用各种应用,从而使得用户可以在驾驶车辆或者乘车的过程中享受到各种功能。然而,随着网络安全问题的严峻性,在多媒体主机上安装应用的过程中,需要联网下载应用安装包,因此在下载安装应用的过程中,可能会存在安装包被篡改的风险,从而使得用户不能安装预期的应用。
相关技术中,对于应用商店中的安装包,提前通过哈希算法计算得到各个安装包的哈希值,并将各个安装包和相应的哈希值存于云端。之后在多媒体主机请求下载一个应用的安装包时,可以从云端获取这个应用的安装包和对应的哈希值。在获取这个安装包之后,多媒体主机可以通过哈希算法对获取的安装包进行哈希运算,以得到一个哈希值。之后将多媒体主机计算得到的哈希值与云端获取的哈希值进行对比,若一致,后续可以对这个安装包进行安装。
然而,上述方式中,在从云端获取这个安装包和对应的哈希值的过程中,如果这个安装包和哈希值均被攻击者所篡改,则两个哈希值的对比结果也会一致,因此,这也会导致用户不能安装预期的应用,从而降低用户体验。
发明内容
本申请提供了一种应用验签方法、装置、车辆和存储介质,可以提高车机端应用安装的安全性,以保证安装到预期的应用,从而提升用户体验。技术方案如下:
第一方面,提供了一种应用验签方法,所述方法包括:
响应于目标应用的安装包获取指令,获取所述目标应用的安装包、第一签名值以及至少两级数字证书,所述第一签名值为通过目标哈希算法对所述安装包进行哈希运算后使用所述至少两级数字证书中目标数字证书的私钥加密得到的,所述至少两级数字证书用于指示所述目标数字证书的公钥是否可信;
分别验证所述至少两级数字证书是否具有合法性;
在所述至少两级数字证书具有合法性的情况下,通过所述目标数字证书的公钥对所述第一签名值进行解密,得到第一哈希值;
通过所述目标哈希算法对所述安装包进行哈希运算,得到第二哈希值;
在所述第一哈希值和所述第二哈希值相同的情况下,确定所述目标应用验签通过。
在本申请中,在车机端接收到目标应用的安装包获取指令时,响应于目标应用的安装包获取指令,先获取目标应用的安装包、第一签名值以及至少两级数字证书。之后验证至少两级数字证书是否具有合法性。由于至少两级数字证书用于指示目标数字证书的公钥是否可信,因此,在至少两级数字证书具有合法性的情况下,说明至少两级数字证书中目标数字证书的公钥是可信的。则后续通过目标数字证书的公钥对第一签名值进行解密得到的第一哈希值是可信的。之后在车机端对安装包进行哈希运算,得到第二哈希值。并将第一哈希值和第二哈希值进行比较。在第一哈希值和第二哈希值相同的情况下,说明云端确定的安装包的哈希值和车机端确定的安装包的哈希值一致,那么也就是说车机端获取的安装包就是云端存储的安装包,也即是目标应用的安装包没有被篡改,从而可以确定目标应用验签通过。如此,先通过验证至少两级数字证书是否具有合法性,再验证第一签名值,使得在目标数字证书的公钥可信的情况下,再通过目标数字证书的公钥验证目标应用的安装包是否被篡改。从而可以提高目标应用的安装安全性,保证可以安装到用户所期望的应用,进而提升用户体验。
可选地,所述至少两级数字证书包括二级数字证书和三级数字证书,所述分别验证所述至少两级数字证书是否具有合法性,包括:
确定根证书的所有者;
在所述至少两级数字证书中二级数字证书的颁布者为所述根证书的所有者的情况下,验证所述二级数字证书是否具有合法性;
在所述二级数字证书具有合法性的情况下,确定所述二级数字证书的所有者;
在所述至少两级数字证书中三级数字证书的颁布者为所述二级数字证书的所有者的情况下,验证所述三级数字证书是否具有合法性。
可选地,所述在所述至少两级数字证书中二级数字证书的颁布者为所述根证书的所有者的情况下,验证所述二级数字证书是否具有合法性,包括:
在所述二级数字证书的颁布者为所述根证书的所有者的情况下,获取所述根证书的公钥;
通过所述根证书的公钥对第二签名值进行解密,得到第三哈希值,所述第二签名值为通过所述目标哈希算法对所述二级数字证书进行哈希运算后使用所述根证书的私钥进行加密得到的;
通过所述目标哈希算法对所述二级数字证书进行哈希运算,得到第四哈希值;
在所述第三哈希值与所述第四哈希值相同的情况下,确定所述二级数字证书具有合法性。
可选地,所述在所述至少两级数字证书中三级数字证书的颁布者为所述二级数字证书的所有者的情况下,验证所述三级数字证书是否具有合法性,包括:
在所述三级数字证书的颁布者为所述二级数字证书的所有者的情况下,获取所述二级数字证书的公钥;
通过所述二级数字证书的公钥对第三签名值进行解密,得到第五哈希值,所述第三签名值为通过所述目标哈希算法对所述三级数字证书进行哈希运算后使用所述二级数字证书的私钥进行加密得到的;
通过所述目标哈希算法对所述三级数字证书进行哈希运算,得到第六哈希值;
在所述第五哈希值与所述第六哈希值相同的情况下,确定所述三级数字证书是否满足目标格式;
在所述三级数字证书满足目标格式的情况下,确定所述三级数字证书具有合法性。
可选地,所述确定所述三级数字证书是否满足目标格式,包括下述至少一项:
所述三级数字证书的证书格式是否为预设格式;
所述三级数字证书是否在有效期内;
所述三级数字证书的目标字段的字段值是否为预设字段值;
所述三级数字证书的目标属性的属性值是否为预设属性值。
可选地,所述目标数字证书为所述至少两级数字证书中的最后一级数字证书,所述在所述至少两级数字证书具有合法性的情况下,对所述第一签名值进行解密,得到第一哈希值,包括:
在所述至少两级数字证书均具有合法性的情况下,通过所述最后一级数字证书的公钥对所述第一签名值进行解密,得到所述第一哈希值。
可选地,所述响应于目标应用的安装包获取指令,获取所述目标应用的安装包、第一签名值以及至少两级数字证书,包括:
响应于所述目标应用的安装包获取指令,从区块链系统获取所述目标应用的安装包、所述第一签名值以及所述至少两级数字证书。
第二方面,提供了一种应用验签装置,所述装置包括:
获取模块,用于响应于目标应用的安装包获取指令,获取所述目标应用的安装包、第一签名值以及至少两级数字证书,所述第一签名值为通过目标哈希算法对所述安装包进行哈希运算后使用所述至少两级数字证书中目标数字证书的私钥加密得到的,所述至少两级数字证书用于指示所述目标数字证书的公钥是否可信;
验证模块,用于分别验证所述至少两级数字证书是否具有合法性;
解密模块,用于在所述至少两级数字证书具有合法性的情况下,通过所述目标数字证书的公钥对所述第一签名值进行解密,得到第一哈希值;
哈希运算模块,用于通过所述目标哈希算法对所述安装包进行哈希运算,得到第二哈希值;
确定模块,用于在所述第一哈希值和所述第二哈希值相同的情况下,确定所述目标应用验签通过。
可选地,所述至少两级数字证书包括二级数字证书和三级数字证书,所述验证模块用于:
确定根证书的所有者;
在所述至少两级数字证书中二级数字证书的颁布者为所述根证书的所有者的情况下,验证所述二级数字证书是否具有合法性;
在所述二级数字证书具有合法性的情况下,确定所述二级数字证书的所有者;
在所述至少两级数字证书中三级数字证书的颁布者为所述二级数字证书的所有者的情况下,验证所述三级数字证书是否具有合法性。
可选地,所述验证模块用于:
在所述二级数字证书的颁布者为所述根证书的所有者的情况下,获取所述根证书的公钥;
通过所述根证书的公钥对第二签名值进行解密,得到第三哈希值,所述第二签名值为通过所述目标哈希算法对所述二级数字证书进行哈希运算后使用所述根证书的私钥进行加密得到的;
通过所述目标哈希算法对所述二级数字证书进行哈希运算,得到第四哈希值;
在所述第三哈希值与所述第四哈希值相同的情况下,确定所述二级数字证书具有合法性。
可选地,所述验证模块用于:
在所述三级数字证书的颁布者为所述二级数字证书的所有者的情况下,获取所述二级数字证书的公钥;
通过所述二级数字证书的公钥对第三签名值进行解密,得到第五哈希值,所述第三签名值为通过所述目标哈希算法对所述三级数字证书进行哈希运算后使用所述二级数字证书的私钥进行加密得到的;
通过所述目标哈希算法对所述三级数字证书进行哈希运算,得到第六哈希值;
在所述第五哈希值与所述第六哈希值相同的情况下,确定所述三级数字证书是否满足目标格式;
在所述三级数字证书满足目标格式的情况下,确定所述三级数字证书具有合法性。
可选地,所述验证模块用于下述至少一项:
所述三级数字证书的证书格式是否为预设格式;
所述三级数字证书是否在有效期内;
所述三级数字证书的目标字段的字段值是否为预设字段值;
所述三级数字证书的目标属性的属性值是否为预设属性值。
可选地,所述目标数字证书为所述至少两级数字证书中的最后一级数字证书,所述解密模块用于:
在所述至少两级数字证书均具有合法性的情况下,通过所述最后一级数字证书的公钥对所述第一签名值进行解密,得到所述第一哈希值。
可选地,所述获取模块用于:
响应于所述目标应用的安装包获取指令,从区块链系统获取所述目标应用的安装包、所述第一签名值以及所述至少两级数字证书。
第三方面,提供了一种车辆,所述车辆包括:
存储器,用于存储可执行程序代码;
处理器,用于从所述存储器中调用并运行所述可执行程序代码,使得所述车辆执行上述的应用验签方法。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的应用验签方法。
第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的应用验签方法的步骤。
可以理解的是,上述第二方面、第三方面、第四方面、第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用验签方法的实施环境示意图;
图2是本申请实施例提供的一种应用验签方法的场景示意图;
图3是本申请实施例提供的一种应用验签方法的流程图;
图4是本申请实施例提供的另一种应用验签方法的流程图;
图5是本申请实施例提供的一种应用验签装置的结构示意图;
图6是本申请实施例提供的一种车辆的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
为了对本申请实施例提供的技术方案进行清楚的说明,下面先对本申请实施例涉及的一些名词进行解释说明。
哈希(HASH)算法:也称为摘要算法,用于对任意一组输入数据进行计算,得到一组固定长度的摘要信息。其最大的特点为相同的输入数据一定可以得到相同的摘要信息。最常用的哈希算法是MD5(MD5 Message-Digest Algorithm,MD5消息摘要算法)和SHA(SecureHash Algorithm,安全散列算法)。由于哈希算法的不可逆性,其一般用于判断数据是否被篡改。
通过哈希算法判断数据是否被篡改的具体过程是:比如A向B传输一个文件。A在传输文件之前,先通过一个哈希算法计算出这个文件的哈希值。之后将这个文件和这个文件的哈希值一起传输至B。B在接收到这个文件和这个文件的哈希值的情况下,对这个文件通过相同的哈希算法进行一次哈希运算,得到一个哈希值。之后将B计算得到的哈希值和A计算得到的哈希值进行对比,若二者一致,则说明这个文件在传输过程中没有被篡改。
欧拉函数:欧拉函数指的是对正整数n,求小于或等于n的正整数中与n互质的数的数目,记作φ(n)。比如1至10中,与10形成互质关系的有1、3、7和9,所以φ(10)=4。
欧拉定理:也称费马-欧拉定理,指的是:如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式(1)成立。
aφ(n)=1(mod n) (1)
其中,mod为取余,即a的φ(n)次方被n除的余数为1,或者说a的φ(n)次方减1,能被n整除。比如7和5互质,那么7φ(5)-1=74-1=2401-1=2400,可以被5整除。
数字签名:一种数字签名技术,其是一种通过私钥加密,后续通过私钥对应的公钥才能解密的签名技术。私钥加密过程是通过签名算法来生成数字签名的过程,而公钥解密过程是通过验证算法来确定数字签名是不是私钥持有者签署的。其中,公钥和私钥是一密钥对,公钥是公开的。
常用的数字签名算法为RSA算法,其是一种非对称加密算法,是基于上述欧拉函数和欧拉定理实现的。
具体原理是:先通过哈希算法对原文进行哈希运算,得到原文的摘要信息。之后使用发送方的私钥对原文的摘要信息进行加密,将其与原文一起发送给接收方。接收方在验证签名时,只能使用发送方的公钥才能解密出摘要信息,然后采用相同的哈希算法对收到的原文计算出一个摘要信息,并与解密得到的摘要信息进行对比。在二者一致的情况下,确定签名验证成功,也即是表示原文的数字签名就是使用发送方的私钥签署的。
数字证书:也称为身份证书或者公钥证书,其用于证明用于加密在线资产(即电子邮件通信、文档、网站或软件应用程序)的公钥的真实性,也即是证明公钥是否可信。数字证书使用密码学和公钥验证站点、计算机或个人的身份,保证只有授权的设备才能连接到组织的网络。另外,数字证书必须由公众信任的证书颁发机构(Certificate Authority,CA)进行验证。
一般,当站点、计算机、个人需要证书的时候,可以先向CA机构发送一个证书请求文件(Certificate Signing Request,CSR),以申请证书。这个证书请求文件中一般包括发送方自己的身份、一些基本信息以及自身的公钥等信息。CA机构在接收到这个证书请求文件之后,对申请人的信息进行核实。在核实无误后,用自己的私钥给待申请的证书签名。之后将签名、证书的公钥以及发送方的信息一起以特定格式进行打包,从而可以得到一个合法的数字证书。
一般情况下,数字证书的顶级证书为根证书。数字证书包括版本、序列号、公钥、证书有效期、证书所有者、证书颁发者等信息。
区块链系统:区块链系统是指用于进行节点与节点之间数据共享的系统,区块链系统中可以包括多个节点。每个节点在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护区块链系统内的共享数据。为了保证区块链系统内的信息互通,区块链系统中的每个节点之间可以存在信息连接,节点之间可以通过该信息连接进行信息传输。比如,当区块链系统中的任意节点接收到输入信息时,区块链系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链系统中全部节点上存储的数据一致。区块链系统中的每个节点均存储一条相同的区块链。
区块链系统具有分布式数据存储、点对点传输、共识机制、加密算法等计算机技术。区块链系统是一个分布式的共享账本和数据库,具有去中心化、不可篡改、全程留痕、可以追溯、集体维护、公开透明等特点。这些特点保证了区块链的共享开放、真实完整和安全可靠。
下面对本申请实施例提供的应用验签方法的实施环境进行介绍。
图1是本申请实施例提供的应用验签方法的实施环境示意图,参见图1,该实施环境中包括车机端101、云端102和CA机构103。
车机端101是指车辆中可以下载应用商店中的各个应用的终端,比如,车机端可以是车辆的车载多媒体主机。那么车载多媒体主机可以在应用商店中展示各应用的详细信息,之后用户可以通过车机端101在应用商店下载各种应用。
另外,车机端101中存储有云端102的根证书。
车机端101与云端102可以通过无线连接的方式进行通信。例如,车机端101与云端102可以通过特定的网络协议进行通信。云端102还可以与CA机构103通过无线连接的方式进行通信。比如,CA机构103可以包括在线签名接口,在云端102需要签名时,可以调用CA机构103的在线签名接口实现在线签名。
CA机构103可以为云端102签发根证书。
具体地,云端102可以通过非对称加密算法先生成一密钥对(公钥和私钥)。之后基于这一密钥对生成一个CSR文件。再向CA机构103发送这个CSR文件,以申请签发根证书,这个CSR文件包括申请者的身份信息、基本信息、申请者的公钥以及申请者用自己的私钥加密的基本信息摘要。CA机构103在接收到这个CSR文件后,使用申请者的公钥解密出用私钥加密的摘要。之后CA机构再对基本信息进行哈希运算,得到一个摘要。之后将解密的摘要和这个摘要进行对比,若一致,则CA机构103使用自身的私钥给待申请的证书签名。后续CA机构103将签名、证书的公钥和基本信息以特定的格式进行打包发送给申请者,从而使得申请者可以获得一个根证书,也即是云端102会获得一个根证书。
云端102为服务器,该服务器可以为一个独立的服务器,或者还可以为由多个单独的服务器构成的服务器集群,本申请实施例对此不作限定。
云端102用于存储应用商店中各个应用的安装包。云端102还可以与CA机构103进行通信,在云端103每上传一个应用的安装包时,就可以调用CA机构103的在线签名接口,以在该在线签名接口中实现对安装包的在线签名。
首先,在云端103每上传一个应用的安装包时,云端103可以先对该安装包进行自动解析,以解析得到应用的报名、版本号、版本名称等应用信息。
其次,由于根证书是CA机构颁发的,所以根证书具有签发下级数字证书的资格。二级数字证书的申请者(后续为所有者)可以向根证书的所有者发送一个CSR文件,以请求颁发一个二级数字证书。根证书的所有者在对这个CSR文件进行核实之后,可以使用根证书的私钥签署一个待申请的数字证书,从而得到一个二级数字证书。后续,三级数字证书的申请者(后续为所有者)也可以向二级数字证书的所有者发送一个CSR文件,以请求颁发一个三级数字证书。二级数字证书的所有者在对这个CSR文件进行核实之后,可以使用二级数字证书的私钥签署一个待申请的数字证书,从而得到一个三级数字证书。
之后在上述在线签名接口中可以使用上述数字证书中某一个数字证书的私钥对安装包进行签名。之后在线签名接口在向云端102返回安装包的签名值的同时,还可以返回二级数字证书和三级数字证书,或者也可以是返回二级数字证书和三级数字证书的存储地址。
具体地,使用某一个数字证书的私钥对安装包进行签名的操作可以为:通过目标哈希算法对该安装包进行哈希运算,得到该安装包的哈希值;之后使用这个数字证书的私钥对该安装包的哈希值进行加密,得到该安装包的签名值。
其中,使用这个数字证书的私钥对该安装包的哈希值进行加密的过程可以基于上述欧拉函数和欧拉定理实现。
例如,若这个数字证书的私钥为(n1,e1),那么对于该安装包的哈希值c1来说,在上述在线签名接口中能够采用这个数字证书的私钥(n1,e1),对该安装包的哈希值c1进行加密,加密公式为c1 e1=k1(mod n1),其中k1为该安装包的签名值。对公式c1 e1=k1(mod n1)进行形式变换,能够得到k1=c1 e1%n1。如此可以得到该安装包的签名值。
后续云端102在接收到安装包的签名值、二级数字证书、三级数字证书之后,还可以对安装包的签名值、二级数字证书、三级数字证书进行存储,已备车机端101的获取请求。
在介绍完本申请实施例的实施环境之后,下面对本申请实施例的应用场景予以说明。
本申请实施例提供的应用验签方法可以应用于在车机端下载各个应用的场景中。
例如,图2是一种应用验签方法的场景示意图。参见图2,图2包括车载多媒体主机201。车载多媒体主机的屏幕上显示有应用商店的展示窗口202,该展示窗口202中展示有多个应用203。
例如,在用户点击展示窗口202中的音乐应用203时,车载多媒体主机会接收到对音乐应用203的安装包获取指令。之后,车载多媒体主机会响应于音乐应用203的安装包获取指令,获取音乐应用203的安装包、安装包的签名值以及二级数字证书、三级证书,其中安装包的签名值是使用三级证书的私钥签名得到的。之后车载多媒体主机可以验证二级数字证书、三级数字证书是否合法。在二级数字证书和三级数字证书合法的情况下,可以通过三级数字证书的公钥对安装包的签名值进行解密,得到第一哈希值。车载多媒体主机再对安装包进行哈希运算,得到第二哈希值。将第一哈希值和第二哈希值进行对比,若一致,则可以确定音乐应用203验签通过。
如此,先通过验证数字证书是否具有合法性,再验证安装包的签名值,使得在数字证书的公钥可信的情况下,再通过数字证书的公钥验证应用的安装包是否被篡改。从而在应用商店下载各个应用时,可以提高各个应用的安装安全性,保证可以安装到用户所期望的应用,进而提升用户体验。
下面对本申请实施例提供的应用验签方法进行详细地解释说明。
图3是本申请实施例提供的一种应用验签方法的流程图。该方法可以应用于车辆的车载多媒体主机(Head Unit,HUT)。参见图3,该方法包括以下步骤。
步骤301:响应于目标应用的安装包获取指令,获取目标应用的安装包、第一签名值以及至少两级数字证书,第一签名值为通过目标哈希算法对该安装包进行哈希运算后使用该至少两级数字证书中目标数字证书的私钥加密得到的,该至少两级数字证书用于指示目标数字证书的公钥是否可信。
目标应用为用户想要安装的应用。目标应用的安装包是可自行解压缩文件的集合,其中包括目标应用安装的所有文件。运行这个安装包(可执行文件),可以将目标应用的所有文件释放到硬盘上,完成修改注册表、修改系统设置、创建快捷方式等工作,也即是通常意义上所说的将目标应用安装到车载多媒体主机。
目标哈希算法是用于对安装包进行哈希运算的算法。也即是通过目标哈希算法对安装包进行哈希运算,可以得到固定长度的二进制序列,并且该二进制序列是唯一的。例如,目标哈希算法可以为MD5消息摘要算法和SHA256安全散列算法。
第一签名值为该安装包的签名值。也即是对该安装包进行哈希运算后加密得到的签名值。第一签名值为云端在上传目标应用时调用CA机构的在线签名接口进行在线签名得到的。后续第一签名值一直存储于云端。
该至少两级数字证书是在云端上传目标应用的安装包时签发的至少两个数字证书。该至少两级数字证书可以包括二级数字证书、三级数字证书,除此之外,还可以包括四级数字证书、五级数字证书等,本申请实施例对该至少两级数字证书的个数不作具体限定。
另外,该至少两级数字证书是由上一级数字证书的所有者签发得到下一级数字证书。比如,该至少两级数字证书中的二级数字证书是由根证书的所有者签发得到的,该至少两级数字证书中的三级数字证书是由二级数字证书的所有者签发得到的。
需说明的是,对于应用商店中的多个应用来说,在云端上传该多个应用中的每一个应用时,签发的数字证书的数量不一定相同。比如在云端上传A应用时,可能会签发二级数字证书和三级数字证书。在上传B应用时,可能会签发二级数字证书、三级数字证书以及四级数字证书。
目标数字证书是该至少两级数字证书中的其中一个数字证书。比如,该至少两级数字证书包括二级数字证书和三级数字证书,目标数字证书可以为三级数字证书。
由于第一签名值是通过该至少两级数字证书中的其中一个数字证书的私钥签名得到的,且数字证书的作用就是证明公钥的有效性,因此在获取目标应用的安装包时还可以获取该至少两级数字证书,以验证数字证书的公钥是否合法。
可选地,云端还可以为区块链系统,也即是区块链系统可以存储有应用商店中各个应用的安装包、签名值、数字证书等数据。
这种情况下,步骤301的操作可以为:响应于目标应用的安装包获取指令,从区块链系统获取目标应用的安装包、第一签名值以及该至少两级数字证书。
由于区块链系统的不可篡改性,可以保证在区块链系统中存储的各个应用的安装包、安装包的签名值以及数字证书不会被篡改,也即是保证在存储的过程中不会被篡改,如此保证了存储过程中的安全性。
这种情况下,从区块链系统获取目标应用的安装包、第一签名值以及该至少两级数字证书,可以保证从区块链系统获取的该安装包、第一签名值以及该至少两级数字证书是不被篡改的。从而即使后续发现该安装包被篡改,可以说明是在数据传输过程中被攻击者所篡改的,进而有助于后续快速找到篡改原因。
步骤302:分别验证该至少两级数字证书是否具有合法性。
这种情况下,验证该至少两级数字证书是否具有合法性,也即是证明该至少两级数字证书的公钥是否是可信的。在该至少两级数字证书具有合法性的情况下,证明该至少两级数字证书的公钥是可信的;在该至少两级数字证书不具有合法性的情况下,证明该至少两级数字证书的公钥不可信。
在该至少两级数字证书包括二级数字证书和三级数字证书的情况下,步骤302的操作可以包括如下步骤(1)-步骤(4)。
(1)确定根证书的所有者。
在本申请实施例中,二级数字证书是由根证书的所有者颁发的,因此可以确定出根证书的所有者,从而后续据此可以确定二级数字证书是否合法。
根证书是一种自签名证书。先对根证书的签发过程进行说明。
一个新的站点、计算机或者个人在想要得到根证书时,先通过非对称加密算法生成一密钥对(公钥和私钥),之后基于这一密钥对生成一个CSR文件。之后向CA机构发送这个CSR文件,以申请签发根证书,这个CSR文件包括申请者的身份信息、基本信息、申请者的公钥以及申请者用自己的私钥加密的基本信息摘要。CA机构在接收到这个CSR文件后,使用申请者的公钥解密出用私钥加密的摘要。之后CA机构再对基本信息进行哈希运算,得到一个摘要。之后将解密的摘要和这个摘要进行对比,若一致,则CA机构使用自身的私钥给待申请的证书签名。后续CA证书将签名、证书的公钥和基本信息以特定的格式进行打包发送给申请者,从而使得申请者可以获得一个根证书。
在本申请实施例中,应用商店的各个应用的安装包是存储于云端的,那么上述所说的申请者应为云端。因此这个根证书是云端的根证书。
进一步地,在CA机构签发根证书之后,可以将根证书加密后写入车机端的应用商店的程序源码中。
具体地,根证书在应用商店的程序源码中的存在形式可以包括:
第一,将根证书的源代码与应用商店的程序源码进行混淆,使得根证书的源代码打乱写在应用商店的程序源码中。
第二,首先对根证书的源代码进行加密,之后将加密后的根证书的源代码写入应用商店的程序源码中。
第三,对应用商店的APK进行加固处理后,将根证书的源代码写入应用商店的程序源码中。
以上三种形式均可以保证根证书在应用商店的程序源码中的安全性,也即是可以防止攻击者通过反编译的方式获取根证书的源码。如此可以提高根证书存储的安全性。
值得注意的是,在车机端接收到加密的根证书之后,还可以先对根证书进行签名验证,已验证根证书的合法性。后续在根证书具有合法性的情况下,再将根证书写入车机端的应用商店的程序源码中。
具体地,对根证书进行验证的步骤可以为:获取CA机构的公钥;通过CA机构的公钥解密根证书的签名值,得到第七哈希值;车机端对根证书进行哈希运算,得到第八哈希值;在第七哈希值和第八哈希值相同的情况下,确定根证书具有合法性。
第七哈希值为CA机构使用自身的私钥签名时计算的根证书的哈希值,第八哈希值为车机端计算得到的根证书的哈希值。
由于根证书是CA机构通过自身的私钥签名得到的,因此,可以获取CA机构的公钥,后续通过CA机构的公钥对根证书的签名值进行解密,可以得到第七哈希值,从而后续据此可以确定出根证书是否具有合法性。
这种情况下,在第七哈希值和第八哈希值相同的情况下,说明CA机构使用自身的私钥签名时根证书的哈希值与车机端计算得到的根证书的哈希值相同,也就说明CA机构签发的根证书和车机端接收到的根证书相同,也即是根证书在传输过程中没有被篡改,因此可以确定根证书是合法的。
一般情况下,数字证书中均包括证书版本、序列号、签名算法、证书的颁布者、证书的所有者、证书的有效期、公钥等信息。
因此,这种情况下,可以从根证书中确定出根证书的所有者,也即是确定出根证书的持有者。
(2)在该至少两级数字证书中二级数字证书的颁布者为根证书的所有者的情况下,验证二级数字证书是否具有合法性。
在该至少两级数字证书中二级数字证书的颁布者为根证书的所有者的情况下,说明二级数字证书就是根证书的所有者颁布的。那么后续可以继续验证二级数字证书是否具有合法性。
具体地,步骤(2)的操作可以为:在二级数字证书的颁布者为根证书的所有者的情况下,获取根证书的公钥;通过根证书的公钥对第二签名值进行解密,得到第三哈希值;通过目标哈希算法对二级数字证书进行哈希运算,得到第四哈希值;在第三哈希值与第四哈希值相同的情况下,确定二级数字证书具有合法性。
第二签名值为通过目标哈希算法对二级数字证书进行哈希运算后使用根证书的私钥进行加密得到的。
第三哈希值为使用根证书的私钥对二级数字证书进行签名时,计算得到的二级数字证书的哈希值。第四哈希值为车机端对获取的二级数字证书进行哈希运算得到的哈希值。
在二级数字证书的颁布者为根证书的所有者的情况下,说明二级数字证书就是根证书的颁布的,那么也就是二级数字证书的签名值就是使用根证书的私钥签名得到的,那么可以获取根证书的公钥,以通过根证书的公钥对第二签名值进行解密,得到签名时二级数字证书的哈希值。
这种情况下,通过将第三哈希值和第四哈希值进行比较,也即是比较使用根证书的私钥对二级数字证书进行签名时二级数字证书的哈希值与车机端计算的二级数字证书的哈希值是否相同。在第三哈希值和第四哈希值相同的情况下,也即是使用根证书的私钥对二级数字证书进行签名时二级数字证书的哈希值与车机端计算的二级数字证书的哈希值相同,那么也就是云端存储的二级数字证书和车机端接收到的二级数字证书是相同的,也就表明二级数字证书没有被篡改,那么可以确定二级数字证书是合法的,从而可以确定二级数字证书的公钥是可信的。
值得注意的是,在第三哈希值和第四哈希值不相同的情况下,可以确定二级数字证书不具有合法性。
这种情况下,说明使用根证书的私钥对二级数字证书进行签名时二级数字证书的哈希值与车机端计算的二级数字证书的哈希值不相同,那么也就是云端存储的二级数字证书和车机端接收到的二级数字证书不相同,也就是说二级数字证书可能被篡改了,可以确定二级数字证书不具有合法性。
可选地,在第三哈希值与第四哈希值相同的情况下,确定二级数字证书具有合法性的操作还可以为:在第三哈希值和第四哈希值相同的情况下,确定二级数字证书是否满足目标格式;在二级数字证书满足目标格式的情况下,确定二级数字证书具有合法性。
目标格式用于指示数字证书中相关信息的标准格式。由于数字证书所包含的数据类型相同,因此数字证书的相关信息应是满足统一格式的。
这种情况下,在二级数字证书的签名值没有问题的情况下,再验证二级数字证书的格式,可以更为准确的确定出二级数字证书是否具有合法性。
可选地,确定二级数字证书是否满足目标格式的操作可以包括下述至少一项。
第一,二级数字证书的证书格式是否为预设格式。
预设格式为数字证书的标准证书格式。例如,预设格式可以为X.509格式。
由于数字证书一般是遵循X.509证书格式,一份X.509标准定义了数字证书中应该包含哪些信息,并描述了这些信息是如何编码的。比如,X.509格式的数字证书中主要包含公钥、身份信息、签名信息和有效性信息等。
这种情况下,判断二级数字证书的证书格式是否为预设格式,也即是判断二级数字证书是否遵循预设格式进行编码。在二级数字证书的证书格式为预设格式的情况下,说明二级数字证书遵循预设格式的编码,从而可以确定二级数字证书的证书格式没有问题,则可以确定二级数字证书是合法的。否则,可以确定二级数字证书不是合法的。
第二,二级数字证书是否在有效期内。
一般情况下,数字证书在签发后,是在一段时间内有效。比如一份数字证书在签发后是在签发日半年内有效。也就是说数字证书在有效期内才是可信的,一旦过了有效期就是不可信的。因此,一般情况下,站点、计算机或者个人在数字证书到期之前会再次申请签发数字证书。
在本申请实施例中,二级数字证书在有效期内可以证明公钥的可信性,一旦超出有效期,则不能证明公钥的可信性。
这种情况下,先从二级数字证书中获取有效期,之后通过判断当前时间是否在二级数字证书的有效期的范围内。在当前时间在二级数字证书的有效期范围内时,说明当前二级数字证书没有过期,也即是二级数字证书是有效的,那么二级数字证书中的公钥是可信的,那么可以确定二级数字证书是合法的。在当前时间不在二级数字证书的有效期范围内时,说明当前二级数字证书已过期,从而可以说明当前获取的二级数字证书已失效,也就不能证明二级数字证书中的公钥是可信的。那么可以说明二级数字证书不是合法的。
第三,二级数字证书的目标字段的字段值是否为预设字段值。
一般情况下,数字证书中包括多个字段,其中一些字段的字段值是与数字证书的所有者的相关信息相关的,因此可以检查这些字段的字段值是否正确。
预设字段值可以依据二级数字证书的所有者所对应的相关信息进行设置。
在本申请实施例中,目标字段可以包括二级数字证书中的OU字段、O字段、CN字段。OU字段是二级数字证书中显示其他补充内容的字段,O字段是二级数字证书的所有者的单位名称,CN字段是指二级数字证书的所有者的公用名称,一般为网站域名。当然,也可以包括二级数字证书中的其他字段,比如L字段(所有者的单位所在城市)、S字段(所有者的单位所在省份)、C字段(所有者的单位所在国家)等,本申请实施例对此不作限定。
在二级数字证书的目标字段的字段值为预设字段值的情况下,说明二级数字证书中目标字段的字段值是二级数字证书的所有者所对应的相关信息,因此说明二级数字证书就是这个所有者所持有的,因此可以确定二级数字证书具有合法性。在二级数字证书的目标字段的字段值不为预设字段值的情况下,说明二级数字证书中目标字段的字段值与二级数字证书的所有者的相关信息不对应,那么可能二级数字就不是这个所有者所持有的,则可以确定二级数字证书不具有合法性。
第四,二级数字证书的目标属性的属性值是否为预设属性值。
目标属性可以为二级数字证书中的Basic Constrains属性和KeyUsage属性。
Basic Constrains属性用于表示数字证书的基本约束扩展,也即是表示确定是否存在基本约束扩展。确定基本约束扩展是否标记为关键。确定证书是否受限于证书颁发机构。确定路径长度约束是否存在并检索路径长度约束值。其属性值一般为TRUE或者FALSE。
KeyUsage属性用于指定与安全令牌相关联的密钥的使用方式。默认值是“Signature”。那么这种情况下,在目标属性为KeyUsage属性时,预设属性值可以为“Signature”。
如此,通过验证二级数字证书的目标属性的属性值是否为预设属性值,则可以确定二级数字证书中某些属性的属性值是否正确,在这些属性的属性值正确的情况下,也可以确定二级数字证书具有合法性。
当然,除了以上四种方式中的至少一种方式确定二级数字证书是否满足目标格式之外,还可以通过其他方式确定二级数字证书是否满足目标格式,本申请实施例对此不作限定。
可选地,在二级数字证书的颁布者不为根证书的所有者的情况下,可以确定目标应用验签失败。
二级数字证书的颁布者不为根证书的所有者时,说明二级数字证书不是根证书的所有者颁发的,也即是这个二级数字证书不能证明云端服务器的相关信息,那么就是说这个二级数字证书不是符合要求的。有可能是被攻击者所篡改的,这种情况下,这个二级数字证书不能证明证书中的公钥是可信的,则可以直接确定目标应用验签失败。
(3)在二级数字证书具有合法性的情况下,确定二级数字证书的所有者。
在二级数字证书具有合法性的情况下,可以继续判断二级数字证书是否具有合法性。首先就可以验证二级数字证书的所有者是否为三级数字证书的颁布者。那么此时可以确定出二级数字证书的所有者。
(4)在至少两级数字证书中三级数字证书的颁布者为二级数字证书的所有者的情况下,验证三级数字证书是否具有合法性。
在三级数字证书的颁布者为二级数字证书的所有者的情况下,说明三级数字证书就是二级数字证书的所有者申请签发的。那么后续可以继续验证三级数字证书是否具有合法性。
具体地,步骤(4)的操作可以为:在三级数字证书的颁布者为二级数字证书的所有者的情况下,获取二级数字证书的公钥;通过二级数字证书的公钥对第三签名值进行解密,得到第五哈希值;通过目标哈希算法对三级数字证书进行哈希运算,得到第六哈希值;在第五哈希值与第六哈希值相同的情况下,确定三级数字证书是否满足目标格式;在三级数字证书满足目标格式的情况下,确定三级数字证书具有合法性。
第三签名值为通过目标哈希算法对三级数字证书进行哈希运算后使用二级数字证书的私钥进行加密得到的。
第五哈希值为使用二级数字证书的私钥对三级数字证书进行签名时计算得到的三级数字证书的哈希值。第六哈希值为车机端对获取的三级数字证书进行哈希运算得到的。
在三级数字证书的颁布者为二级数字证书的所有者的情况下,说明三级数字证书就是二级数字证书的所有者颁布的,那么也就是三级数字证书的签名值就是使用二级数字证书的私钥签名得到的,那么可以获取二级数字证书的公钥,以通过二级数字证书的公钥对第三签名值进行解密,得到签名时三级数字证书的哈希值。
这种情况下,通过将第五哈希值和第六哈希值进行比较,也即是比较使用二级数字证书的私钥对三级数字证书进行签名时三级数字证书的哈希值与车机端计算的三级数字证书的哈希值是否相同。在第五哈希值和第六哈希值相同的情况下,也即是使用二级数字证书的私钥对三级数字证书进行签名时三级数字证书的哈希值与车机端计算的三级数字证书的哈希值相同,也就表明云端存储的三级数字证书和车机端接收到的三级数字证书相同。进一步地,后续再对三级数字证书的格式进行验证,验证三级数字证书是否满足目标格式。
这种情况下,在三级数字证书的签名值没有问题的情况下,再验证三级数字证书的格式,可以更为准确的确定出三级数字证书是否具有合法性。
值得注意的是,在第五哈希值和第六哈希值不相同的情况下,确定三级数字证书不具有合法性。
这种情况下,说明使用二级数字证书的私钥对三级数字证书进行签名时三级数字证书的哈希值与车机端计算的三级数字证书的哈希值不相同,也就表明云端存储的三级数字证书和车机端接收到的三级数字证书不相同,那么有可能是三级数字证书被篡改了,则可以直接确定三级数字证书不具有合法性。
可选地,确定三级数字证书是否满足目标格式的操作可以包括下述至少一项。
第一,三级数字证书的证书格式是否为预设格式。
第二,二级数字证书是否在有效期内。
第三,二级数字证书的目标字段的字段值是否为预设字段值。
第四,二级数字证书的目标属性的属性值是否为预设属性值。
在本申请实施例中,通过上述四种方式中至少一种方式确定三级数字证书是否满足目标格式的操作与上述步骤(2)中通过四种方式中至少一种方式确定二级数字证书是否满足目标格式的操作类似,此处不再赘述。
当然,除了以上四种方式中的至少一种方式确定三级数字证书是否满足目标格式之外,还可以通过其他方式确定三级数字证书是否满足目标格式,本申请实施例对此不作限定。
可选地,在三级数字证书的颁布者不为二级数字证书的所有者的情况下,可以确定目标应用验签失败。
三级数字证书的颁布者不为二级数字证书的所有者时,说明三级数字证书不是二级数字证书的所有者颁发的,那么就是说这个三级数字证书不是符合要求的。有可能是被攻击者所篡改的,这种情况下,这个三级数字证书不能证明证书中的公钥是可信的,则可以直接确定目标应用验签失败。
通过上述步骤(1)-步骤(4)阐述了在至少两级数字证书包括二级数字证书和三级数字证书时,分别验证二级数字证书和三级数字证书是否具有合法性的具体过程。总的来说,整个过程是一种链式验证方式,也就是通过根证书的所有者和公钥验证二级数字证书是否具有合法性。在二级数字证书具有合法性的情况下,通过二级数字证书的公钥和所有者验证三级数字证书是否具有合法性。
可选地,在该至少两级数字证书除了包括二级数字证书、三级数字证书,还可以包括其他多个数字证书。比如,该至少两级数字证书可以包括二级数字证书、三级数字证书、四级数字证书和五级数字证书。
这种情况下,在该至少两级数字证书包括多级数字证书的情况下,分别验证该多级数字证书是否具有合法性的操作可以包括如下步骤(1)-步骤(5)。
(1)确定根证书的所有者;
(2)在该多级数字证书中二级数字证书的颁布者为根证书的所有者的情况下,验证二级数字证书是否具有合法性。
(3)令i=3,在i-1级数字证书具有合法性的情况下,获取i-1级数字证书的所有者;
(4)在i级数字证书的颁布者为i-1级数字证书的所有者的情况下,验证i级数字证书是否具有合法性;
(5)在i级数字证书具有合法性的情况下,令i=i+1,且i小于该多级数字证书的数量的情况下,返回获取i-1级数字证书的所有者以及在i级数字证书的颁布者为i-1级数字证书的所有者的情况下,验证i级数字证书是否具有合法性的步骤,直至i大于该多级数字证书的数量为止。
这种情况下,在存在多级数字证书的情况下,也是通过链式验证方式对该多级数字证书的合法性进行验证。也就是通过根证书的所有者和公钥验证二级数字证书是否具有合法性。在二级数字证书具有合法性的情况下,通过二级数字证书的公钥和所有者验证三级数字证书是否具有合法性,也即是通过前一级数字证书的公钥和所有者验证后一级数字证书是否具有合法性。
如此,通过链式验证的方式对该多级数字证书的合法性进行验证,能够保证在前一级数字证书具有合法性时才验证后一级数字证书的合法性,从而在前一级数字证书不具有合法性时无需对后一级数字证书进行验证,可以提高数字证书的验证效率,且可以更为准确的确定出该多级数字证书是否具有合法性。
其中,验证i级数字证书是否具有合法性的具体操作与上述步骤中验证二级数字证书、验证三级数字证书是否具有合法性的具体操作类似,此处不再赘述。
现举例来说明分别验证该多级数字证书是否具有合法性的具体过程。假设该多级数字证书包括二级数字证书、三级数字证书、四级数字证书以及五级数字证书。那么对这些数字证书的合法性进行验证的具体过程如下所示。
(1)对于二级数字证书,先确定根证书的所有者,判断根证书的所有者是否为二级数字证书的颁布者。在根证书的所有者为二级数字证书的颁布者时,获取根证书的公钥。通过根证书的公钥对二级数字证书的签名值进行解密,得到第三哈希值。之后再通过目标哈希算法对获取的二级数字证书进行哈希运算,得到第四哈希值。最后在第三哈希值和第四哈希值相同的情况下,确定二级数字证书是否满足目标格式,在二级数字证书满足目标格式的情况下,确定二级数字证书具有合法性。另外,在第三哈希值和第四哈希值不相同或者二级数字证书不满足目标格式的情况下,就可以确定二级数字证书不具有合法性。
(2)对于三级数字证书,先确定二级数字证书的所有者,判断二级数字证书的所有者是否为三级数字证书的颁布者。在二级数字证书的所有者为三级数字证书的颁布者时,获取二级数字证书的公钥。通过二级数字证书的公钥对三级数字证书的签名值进行解密,得到第五哈希值。之后再通过目标哈希算法对获取的三级数字证书进行哈希运算,得到第六哈希值。最后在第五哈希值和第六哈希值相同的情况下,确定三级数字证书是否满足目标格式,在三级数字证书满足目标格式的情况下,确定三级数字证书具有合法性。另外,在第五哈希值和第六哈希值不相同或者三级数字证书不满足目标格式的情况下,就可以确定三级数字证书不具有合法性。
(3)对于四级数字证书,先确定三级数字证书的所有者,判断三级数字证书的所有者是否为四级数字证书的颁布者。在三级数字证书的所有者为四级数字证书的颁布者时,获取三级数字证书的公钥。通过三级数字证书的公钥对四级数字证书的签名值进行解密,得到第九哈希值。之后再通过目标哈希算法对获取的四级数字证书进行哈希运算,得到第十哈希值。最后在第九哈希值和第十哈希值相同的情况下,确定四级数字证书是否满足目标格式,在四级数字证书满足目标格式的情况下,确定四级数字证书具有合法性。另外,在第九哈希值和第十哈希值不相同或者四级数字证书不满足目标格式的情况下,就可以确定四级数字证书不具有合法性。
(4)对于五级数字证书,先确定四级数字证书的所有者,判断四级数字证书的所有者是否为五级数字证书的颁布者。在四级数字证书的所有者为五级数字证书的颁布者时,获取四级数字证书的公钥。通过四级数字证书的公钥对五级数字证书的签名值进行解密,得到第十一哈希值。之后再通过目标哈希算法对获取的五级数字证书进行哈希运算,得到第十二哈希值。最后在第十一哈希值和第十二哈希值相同的情况下,确定五级数字证书是否满足目标格式,在五级数字证书满足目标格式的情况下,确定五级数字证书具有合法性。另外,在第十一哈希值和第十二哈希值不相同或者五级数字证书不满足目标格式的情况下,就可以确定五级数字证书不具有合法性。
步骤303:在该至少两级数字证书具有合法性的情况下,通过目标数字证书的公钥对第一签名值进行解密,得到第一哈希值。
由于该至少两级数字证书可以指示数字证书的公钥是否可信,因此,在该至少两级数字证书具有合法性的情况下,可以获取目标数字证书的公钥对第一签名值进行解密,此时得到的第一哈希值是可信的,也就是这个第一哈希值可以认为就是使用目标数字证书的私钥对该安装包进行签名时,计算得到的该安装包的哈希值。
可选地,目标数字证书可以为该至少两级数字证书中的最后一级数字证书,那么第一签名值就是通过目标哈希算法对该安装包进行哈希运算后使用该至少两级数字证书中最后一级数字证书的私钥加密得到的。这种情况下,步骤303的操作可以为:在该至少两级数字证书均具有合法性的情况下,通过最后一级数字证书的公钥对第一签名值进行解密,得到第一哈希值。
如此,在该至少两级数字证书均具有合法性的情况下,说明该至少两级数字证书中最后一级数字证书也具有合法性。那么也就是说最后一级数字证书的公钥是可信的。那么通过最后一级数字证书的公钥对第一签名值进行解密,可以使得第一哈希值是可信的。
另外,通过使用最后一级数字证书的私钥和公钥进行加密和解密,使得即使该数据在传输过程中被攻击者所获取。由于该至少两级数字证书之间的链式关系,最后一级数字证书的公钥也不易被获取。从而第一签名值也不易被攻击者所篡改,那么该安装包也就不易被篡改,进而可以提高该安装包的安全性。
可选地,云端在调用在线签名接口对安装包进行签名时,可以是在该至少两级数字证书中随机选取一个数字证书,通过这个数字证书的私钥对该安装包的哈希值进行加密。后续云端在向车机端返回该至少两级数字证书的同时,可以返回一个加密标识。
这个加密标识用于指示通过该至少两级数字证书中的哪个数字证书的私钥对该安装包进行签名的。例如,这个加密标识为3。那么可以确定是通过该至少两级数字证书中的三级数字证书的私钥对该安装包进行签名的。
可选地,为了保证数据传输的安全性,可以将该至少两级数字证书和这个加密标识分开传输。
当然,也可以是车机端在验证该至少两级数字证书具有合法性之后,向云端发送加密标识获取请求,云端在接收到加密标识获取请求之后,再向车机端返回这个加密标识。
这种情况下,步骤303的操作可以为:在该至少两级数字证书具有合法性的情况下,基于这个加密标识,确定目标数字证书;通过目标数字证书的公钥对第一签名值进行解密,得到第一哈希值。
如此,是在确定该至少两级数字证书具有合法性的情况下,后续才确定目标数字证书是哪个,从而避免在数据传输过程中攻击者获知该安装包的解密公钥。进而避免攻击者对第一签名值的篡改。如此,提高了第一签名值的传输安全性。
步骤304:通过目标哈希算法对该安装包进行哈希运算,得到第二哈希值。
由于第一哈希值是云端通过目标哈希算法对该安装包进行哈希运算得到的,并且采用相同的哈希算法对同一个数据进行哈希运算可以得到相同的哈希值。因此,这里车机端还可以通过目标哈希算法对该安装包进行哈希运算。
这种情况下,车机端再对该安装包进行哈希运算,得到第二哈希值,使得可以得到车机端计算的安装包的哈希值以及云端计算的该安装包的哈希值。从而后续据此可以准确确定出该安装包是否被篡改。
进一步地,在得到第二哈希值之后,还可以将第一哈希值和第二哈希值进行对比,以判断第一哈希值和第二哈希值是否相同。
在第一哈希值和第二哈希值相同的情况下,说明车机端计算的该安装包的哈希值与云端计算的该安装包的哈希值相同,也就是说车机端接收到的安装包与云端存储的该安装包是相同的,也即是该安装包没有被篡改。
在第一哈希值和第二哈希值不同的情况下,说明车机端计算的该安装包的哈希值与云端计算的该安装包的哈希值不同,也就是说车机端接收到的安装包与云端存储的该安装包是不同的,也即是该安装包在传输过程中被篡改。
步骤305:在第一哈希值和第二哈希值相同的情况下,确定目标应用验签通过。
在第一哈希值和第二哈希值相同的情况下,说明目标应用的安装包没有被篡改,则可以确定目标应用验签通过。
这种情况下,先通过验证至少两级数字证书是否具有合法性,再验证第一签名值,使得在目标数字证书的公钥可信的情况下,再通过目标数字证书的公钥验证目标应用的安装包是否被篡改。最后在确定安装包没有被篡改的情况下,才确定目标应用验签通过。从而可以提高目标应用的安装安全性,保证可以安装到用户所期望的应用,进而提升用户体验。
进一步地,在目标应用验签通过的情况下,可以执行该安装包,以实现对目标应用的安装。
在目标应用验签通过的情况下,说明该安装包是可信的,是没有被篡改的,也即就是目标应用的安装包,那么后续可以执行该安装包,以实现对目标应用的安装。
这种情况下,通过执行该安装包,可以实现将目标应用安装至车载多媒体主机上,从而后续用户可以在车载多媒体主机使用目标应用,以享受目标应用的功能。
可选地,在车载多媒体主机是安装Android(安卓)系统的情况下,车载多媒体主机可以调用Android原生接口进行静默安装。
进一步地,在该安装包安装成功后,可以将该安装包以及该至少两级数字证书在本地删除。
在第一哈希值和第二哈希值不相同的情况下,说明目标应用的安装包可能被篡改,则确定目标应用验签失败。
进一步地,在目标应用验签失败的情况下,可以先对该安装包以及该至少两级数字证书进行删除。另外,还可以在车载多媒体主机的屏幕上显示一个消息弹窗,这个消息弹窗用于提醒用户目标应用安装失败。
用户在看到消息弹窗后可以获知目标应用本次安装失败,那么用户后续可以再次点击下载安装,从而后续车载多媒体主机可以再次执行上述步骤301-步骤305,以对目标应用进行验签。进而在验签通过后,实现对目标应用的安装。
为了便于理解,现结合图4对本申请实施例提供的应用验签方法进行示例性说明。例如,图4是一种应用验签方法的流程图,参见图4,图4包括步骤401-步骤407。
步骤401:接收到目标应用的安装包获取指令时,获取目标应用的安装包、第一签名值以及至少两级数字证书。
步骤402:分别验证至少两级数字证书的合法性。在该至少两级数字证书具有合法性的情况下,执行如下步骤403。在该至少两级数字证书中存在一个数字证书不具有合法性的情况下,执行如下步骤407。
步骤403:通过目标数字证书的公钥对第一签名值进行解密,得到第一哈希值。
步骤404:通过目标哈希算法对该安装包进行哈希运算,得到第二哈希值。
步骤405:将第一哈希值和第二哈希值进行对比。在第一哈希值和第二哈希值相同的情况下,执行如下步骤406。在第一哈希值和第二哈希值不相同的情况下,执行如下步骤407。
步骤406:确定目标应用验签通过。
步骤407:确定目标应用验签失败。
在本申请实施例中,车载多媒体主机在车机端接收到目标应用的安装包获取指令时,响应于目标应用的安装包获取指令,先获取目标应用的安装包、第一签名值以及至少两级数字证书。之后验证至少两级数字证书是否具有合法性。由于至少两级数字证书用于指示目标数字证书的公钥是否可信,因此,在至少两级数字证书具有合法性的情况下,说明至少两级数字证书中目标数字证书的公钥是可信的。则后续通过目标数字证书的公钥对第一签名值进行解密得到的第一哈希值是可信的。之后在车机端对安装包进行哈希运算,得到第二哈希值。并将第一哈希值和第二哈希值进行比较。在第一哈希值和第二哈希值相同的情况下,说明云端确定的安装包的哈希值和车机端确定的安装包的哈希值一致,那么也就是说车机端获取的安装包就是云端存储的安装包,也即是目标应用的安装包没有被篡改,从而可以确定目标应用验签通过。如此,先通过验证至少两级数字证书是否具有合法性,再验证第一签名值,使得在目标数字证书的公钥可信的情况下,再通过目标数字证书的公钥验证目标应用的安装包是否被篡改。从而可以提高目标应用的安装安全性,保证可以安装到用户所期望的应用,进而提升用户体验。
图5是本申请实施例提供的一种应用验签装置的结构示意图。该应用验签装置可以由软件、硬件或者两者的结合实现成为车辆的部分或者全部,该车辆可以为下文图6所示的车辆。参见图5,该装置包括:获取模块501、验证模块502、解密模块503、哈希运算模块504以及确定模块505。
获取模块501,用于响应于目标应用的安装包获取指令,获取目标应用的安装包、第一签名值以及至少两级数字证书,第一签名值为通过目标哈希算法对该安装包进行哈希运算后使用该至少两级数字证书中目标数字证书的私钥加密得到的,该至少两级数字证书用于指示目标数字证书的公钥是否可信;
验证模块502,用于分别验证该至少两级数字证书是否具有合法性;
解密模块503,用于在该至少两级数字证书具有合法性的情况下,通过目标数字证书的公钥对第一签名值进行解密,得到第一哈希值;
哈希运算模块504,用于通过目标哈希算法对该安装包进行哈希运算,得到第二哈希值;
确定模块505,用于在第一哈希值和第二哈希值相同的情况下,确定目标应用验签通过。
可选地,该至少两级数字证书包括二级数字证书和三级数字证书,验证模块502用于:
确定根证书的所有者;
在该至少两级数字证书中二级数字证书的颁布者为根证书的所有者的情况下,验证二级数字证书是否具有合法性;
在二级数字证书具有合法性的情况下,确定二级数字证书的所有者;
在该至少两级数字证书中三级数字证书的颁布者为二级数字证书的所有者的情况下,验证三级数字证书是否具有合法性。
可选地,验证模块502用于:
在二级数字证书的颁布者为根证书的所有者的情况下,获取根证书的公钥;
通过根证书的公钥对第二签名值进行解密,得到第三哈希值,第二签名值为通过目标哈希算法对二级数字证书进行哈希运算后使用根证书的私钥进行加密得到的;
通过目标哈希算法对二级数字证书进行哈希运算,得到第四哈希值;
在第三哈希值与第四哈希值相同的情况下,确定二级数字证书具有合法性。
可选地,验证模块502用于:
在三级数字证书的颁布者为二级数字证书的所有者的情况下,获取二级数字证书的公钥;
通过二级数字证书的公钥对第三签名值进行解密,得到第五哈希值,第三签名值为通过目标哈希算法对三级数字证书进行哈希运算后使用二级数字证书的私钥进行加密得到的;
通过目标哈希算法对三级数字证书进行哈希运算,得到第六哈希值;
在第五哈希值与第六哈希值相同的情况下,确定三级数字证书是否满足目标格式;
在三级数字证书满足目标格式的情况下,确定三级数字证书具有合法性。
可选地,验证模块502用于下述至少一项:
三级数字证书的证书格式是否为预设格式;
三级数字证书是否在有效期内;
三级数字证书的目标字段的字段值是否为预设字段值;
三级数字证书的目标属性的属性值是否为预设属性值。
可选地,目标数字证书为该至少两级数字证书中的最后一级数字证书,解密模块503用于:
在该至少两级数字证书均具有合法性的情况下,通过最后一级数字证书的公钥对第一签名值进行解密,得到第一哈希值。
可选地,获取模块501用于:
响应于目标应用的安装包获取指令,从区块链系统获取目标应用的安装包、第一签名值以及该至少两级数字证书。
在本申请实施例中,在车机端接收到目标应用的安装包获取指令时,响应于目标应用的安装包获取指令,先获取目标应用的安装包、第一签名值以及至少两级数字证书。之后验证至少两级数字证书是否具有合法性。由于至少两级数字证书用于指示目标数字证书的公钥是否可信,因此,在至少两级数字证书具有合法性的情况下,说明至少两级数字证书中目标数字证书的公钥是可信的。则后续通过目标数字证书的公钥对第一签名值进行解密得到的第一哈希值是可信的。之后在车机端对安装包进行哈希运算,得到第二哈希值。并将第一哈希值和第二哈希值进行比较。在第一哈希值和第二哈希值相同的情况下,说明云端确定的安装包的哈希值和车机端确定的安装包的哈希值一致,那么也就是说车机端获取的安装包就是云端存储的安装包,也即是目标应用的安装包没有被篡改,从而可以确定目标应用验签通过。如此,先通过验证至少两级数字证书是否具有合法性,再验证第一签名值,使得在目标数字证书的公钥可信的情况下,再通过目标数字证书的公钥验证目标应用的安装包是否被篡改。从而可以提高目标应用的安装安全性,保证可以安装到用户所期望的应用,进而提升用户体验。
需要说明的是:上述实施例提供的应用验签装置在对目标应用进行验签时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
上述实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请实施例的保护范围。
上述实施例提供的应用验签装置与应用验签方法实施例属于同一构思,上述实施例中单元、模块的具体工作过程及带来的技术效果,可参见方法实施例部分,此处不再赘述。
图6是本申请实施例提供的一种车辆的结构示意图。
示例性的,如图6所示,该车辆包括:存储器61和处理器60,其中,存储器61中存储有可执行程序代码62,处理器60用于调用并执行该可执行程序代码62执行上述一种应用验签方法。
本实施例可以根据上述方法示例对车辆进行功能模块的划分,例如,可以对应各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中,上述集成的模块可以采用硬件的形式实现。需要说明的是,本实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,该车辆可以包括:获取模块、验证模块、解密模块、哈希运算模块、确定模块。需要说明的是,上述方法实施例涉及的各个步骤的所有相关内容的可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的车辆,用于执行上述一种车机端的应用验签的方法,因此可以达到与上述实现方法相同的效果。
在采用集成的单元的情况下,车辆可以包括处理模块、存储模块。其中,处理模块可以用于对车辆的动作进行控制管理。存储模块可以用于支持车辆执行相互程序代码和数据等。
其中,处理模块可以是处理器或控制器,其可以实现或执行结合本申请公开内容所藐视的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包括一个或多个微处理器组合,数字信号处理(digital signal processing,DSP)和微处理器的组合等等,存储模块可以是存储器。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序代码,当该计算机程序代码在计算机上运行时,使得计算机执行上述相关方法步骤实现上述实施例中的上述一种车机端的应用验签的方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的上述一种车机端的应用验签的方法。
其中,本实施例提供的车辆、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种车机端的应用验签方法,其特征在于,所述方法包括:
响应于目标应用的安装包获取指令,获取所述目标应用的安装包、第一签名值以及至少两级数字证书,所述第一签名值为通过目标哈希算法对所述安装包进行哈希运算后使用所述至少两级数字证书中目标数字证书的私钥加密得到的,所述至少两级数字证书用于指示所述目标数字证书的公钥是否可信;
分别验证所述至少两级数字证书是否具有合法性;
在所述至少两级数字证书具有合法性的情况下,通过所述目标数字证书的公钥对所述第一签名值进行解密,得到第一哈希值;
通过所述目标哈希算法对所述安装包进行哈希运算,得到第二哈希值;
在所述第一哈希值和所述第二哈希值相同的情况下,确定所述目标应用验签通过。
2.如权利要求1所述的方法,其特征在于,所述至少两级数字证书包括二级数字证书和三级数字证书,所述分别验证所述至少两级数字证书是否具有合法性,包括:
确定根证书的所有者;
在所述至少两级数字证书中二级数字证书的颁布者为所述根证书的所有者的情况下,验证所述二级数字证书是否具有合法性;
在所述二级数字证书具有合法性的情况下,确定所述二级数字证书的所有者;
在所述至少两级数字证书中三级数字证书的颁布者为所述二级数字证书的所有者的情况下,验证所述三级数字证书是否具有合法性。
3.如权利要求2所述的方法,其特征在于,所述在所述至少两级数字证书中二级数字证书的颁布者为所述根证书的所有者的情况下,验证所述二级数字证书是否具有合法性,包括:
在所述二级数字证书的颁布者为所述根证书的所有者的情况下,获取所述根证书的公钥;
通过所述根证书的公钥对第二签名值进行解密,得到第三哈希值,所述第二签名值为通过所述目标哈希算法对所述二级数字证书进行哈希运算后使用所述根证书的私钥进行加密得到的;
通过所述目标哈希算法对所述二级数字证书进行哈希运算,得到第四哈希值;
在所述第三哈希值与所述第四哈希值相同的情况下,确定所述二级数字证书具有合法性。
4.如权利要求2所述的方法,其特征在于,所述在所述至少两级数字证书中三级数字证书的颁布者为所述二级数字证书的所有者的情况下,验证所述三级数字证书是否具有合法性,包括:
在所述三级数字证书的颁布者为所述二级数字证书的所有者的情况下,获取所述二级数字证书的公钥;
通过所述二级数字证书的公钥对第三签名值进行解密,得到第五哈希值,所述第三签名值为通过所述目标哈希算法对所述三级数字证书进行哈希运算后使用所述二级数字证书的私钥进行加密得到的;
通过所述目标哈希算法对所述三级数字证书进行哈希运算,得到第六哈希值;
在所述第五哈希值与所述第六哈希值相同的情况下,确定所述三级数字证书是否满足目标格式;
在所述三级数字证书满足目标格式的情况下,确定所述三级数字证书具有合法性。
5.如权利要求4所述的方法,其特征在于,所述确定所述三级数字证书是否满足目标格式,包括下述至少一项:
所述三级数字证书的证书格式是否为预设格式;
所述三级数字证书是否在有效期内;
所述三级数字证书的目标字段的字段值是否为预设字段值;
所述三级数字证书的目标属性的属性值是否为预设属性值。
6.如权利要求1所述的方法,其特征在于,所述目标数字证书为所述至少两级数字证书中的最后一级数字证书,所述在所述至少两级数字证书具有合法性的情况下,对所述第一签名值进行解密,得到第一哈希值,包括:
在所述至少两级数字证书均具有合法性的情况下,通过所述最后一级数字证书的公钥对所述第一签名值进行解密,得到所述第一哈希值。
7.如权利要求1所述的方法,其特征在于,所述响应于目标应用的安装包获取指令,获取所述目标应用的安装包、第一签名值以及至少两级数字证书,包括:
响应于所述目标应用的安装包获取指令,从区块链系统获取所述目标应用的安装包、所述第一签名值以及所述至少两级数字证书。
8.一种应用验签装置,其特征在于,所述装置包括:
获取模块,用于响应于目标应用的安装包获取指令,获取所述目标应用的安装包、第一签名值以及至少两级数字证书,所述第一签名值为通过目标哈希算法对所述安装包进行哈希运算后使用所述至少两级数字证书中目标数字证书的私钥加密得到的,所述至少两级数字证书用于指示所述目标数字证书的公钥是否可信;
验证模块,用于分别验证所述至少两级数字证书是否具有合法性;
解密模块,用于在所述至少两级数字证书均具有合法性的情况下,通过所述目标数字证书的公钥对所述第一签名值进行解密,得到第一哈希值;
哈希运算模块,用于通过所述目标哈希算法对所述安装包进行哈希运算,得到第二哈希值;
确定模块,用于在所述第一哈希值和所述第二哈希值相同的情况下,确定所述目标应用验签通过。
9.一种车辆,其特征在于,所述车辆包括:
存储器,用于存储可执行程序代码;
处理器,用于从所述存储器中调用并运行所述可执行程序代码,使得所述车辆执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的方法。
CN202311084295.0A 2023-08-25 2023-08-25 应用验签方法、装置、车辆和存储介质 Pending CN117195202A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311084295.0A CN117195202A (zh) 2023-08-25 2023-08-25 应用验签方法、装置、车辆和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311084295.0A CN117195202A (zh) 2023-08-25 2023-08-25 应用验签方法、装置、车辆和存储介质

Publications (1)

Publication Number Publication Date
CN117195202A true CN117195202A (zh) 2023-12-08

Family

ID=88995308

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311084295.0A Pending CN117195202A (zh) 2023-08-25 2023-08-25 应用验签方法、装置、车辆和存储介质

Country Status (1)

Country Link
CN (1) CN117195202A (zh)

Similar Documents

Publication Publication Date Title
US10721080B2 (en) Key-attestation-contingent certificate issuance
US8856536B2 (en) Method and apparatus for secure firmware download using diagnostic link connector (DLC) and OnStar system
JP4638912B2 (ja) ディストリビューションcdを使用した、署名されたグループにおけるダイレクトプルーフの秘密鍵を装置に伝達する方法
US11356425B2 (en) Techniques for improving security of encrypted vehicle software updates
US11177953B2 (en) Trusted authentication of automotive microcontroller
CN111311258B (zh) 基于区块链的可信交易方法、装置、系统、设备及介质
EP2608477A1 (en) Trusted certificate authority to create certificates based on capabilities of processes
KR20050056204A (ko) 메시지 무결성 보증 시스템, 방법 및 기록 매체
JP6387908B2 (ja) 認証システム
CN110009342B (zh) 数据发送、接收方法、装置及电子设备
Schleiffer et al. Secure key management-a key feature for modern vehicle electronics
CN117436043A (zh) 待执行文件的来源验证方法、设备以及可读存储介质
CN117155549A (zh) 密钥分发方法、装置、计算机设备和存储介质
CN115549984A (zh) 跨链交易方法、装置、设备和存储介质
CN108242997B (zh) 安全通信的方法与设备
Groza et al. CarINA-Car sharing with IdeNtity based Access control re-enforced by TPM
CN117195202A (zh) 应用验签方法、装置、车辆和存储介质
CN115037480A (zh) 设备认证和校验的方法、装置、设备和存储介质
CN114285581A (zh) 应用管理方法及相关产品
CN117556430B (zh) 一种安全启动方法、装置、设备及存储介质
CN117454437B (zh) 交易处理方法、存储介质及电子设备
CN114726539B (zh) 一种基于可信密码模块tcm的离线升级方法
Weimerskirch Secure Software Flashing
CN111226214B (zh) 用于确认密码密钥的系统和方法
JP2008060617A (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