CN106295363B - 开机校验方法及装置 - Google Patents

开机校验方法及装置 Download PDF

Info

Publication number
CN106295363B
CN106295363B CN201610620662.8A CN201610620662A CN106295363B CN 106295363 B CN106295363 B CN 106295363B CN 201610620662 A CN201610620662 A CN 201610620662A CN 106295363 B CN106295363 B CN 106295363B
Authority
CN
China
Prior art keywords
terminal
test
signature
public key
layers
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.)
Active
Application number
CN201610620662.8A
Other languages
English (en)
Other versions
CN106295363A (zh
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201610620662.8A priority Critical patent/CN106295363B/zh
Publication of CN106295363A publication Critical patent/CN106295363A/zh
Application granted granted Critical
Publication of CN106295363B publication Critical patent/CN106295363B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开揭示了一种开机校验方法及装置,属于嵌入式技术领域。所述方法包括:检测终端是否为非测试用终端,当确定终端为非测试用终端时,通过Kernel层使用公钥对签名进行校验,签名是根据与公钥不匹配的私钥生成的签名,在校验失败时,指示结束校验;解决了终端因为运行测试版本的Rom包导致安全性较低的问题;通过在终端中设置一套匹配的密钥和一套不匹配的密钥,达到了非测试用终端由于校验失败而无法成功启动,保证了终端的安全性的效果。

Description

开机校验方法及装置
技术领域
本公开涉及嵌入式技术领域,特别涉及一种开机校验方法及装置。
背景技术
Android(安卓)***是一种以Linux为基础的开放源代码的操作***,Android***的***源码可以被打包成为Rom image(ReadOnlyMemory image,只读存储器镜像),Romimage也被称为Rom包。当Rom包被写入手机或者平板电脑等终端的Rom中时,终端通过加载该Rom包运行该Rom包中的***源码。
目前的Rom包主要分为官方版本和测试版本两种,Rom中存储有官方版本的Rom包的终端的文件***通常不支持root(超级用户)权限,Rom中存储有测试版本的Rom包的终端的文件***通常支持root权限,其中,root拥有***的最高权限,因此当用户所使用的终端中的Rom中安装有测试版本的Rom时,终端中的任何一个应用程序都可以获取到root权限,并通过root权限来读取终端中存储的用户的隐私数据。
发明内容
为了解决终端因为运行测试版本的Rom导致安全性较低的问题,本公开提供一种开机校验方法及装置。所述技术方案如下:
根据本公开实施例的第一方面,提供一种开机校验方法,该方法用于终端中,该终端中至少包括硬件层、Kernel(内核)层、Bootloader(启动装载)层和文件***层,Kernel层中存储有公钥,Bootloader层携带有签名,该方法包括:
检测终端是否为非测试用终端;
当确定终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,签名是根据私钥生成的签名,私钥与公钥不匹配,在校验失败时,指示结束校验。
可选的,检测终端是否为非测试用终端,包括:
检测终端中是否包含预设电路结构,预设电路结构用于表示终端是测试用终端;
若终端中不包含预设电路结构,则确定终端为非测试用终端。
可选的,检测终端中是否包含预设电路结构,包括:
检测硬件层的可信区域中是否包含预设电路结构,可信区域是硬件层中禁止被应用程序直接访问的区域。
可选的,检测终端是否为非测试用终端,包括:
检测终端中是否包含预设标识,预设标识为用于表示终端为测试用终端的标识;
若终端中不包含预设标识,则确定终端为非测试用终端。
可选的,检测终端中是否包含预设标识,包括:
检测硬件层的可信存储区域中是否包含预设标识,可信存储区域是硬件层中禁止被应用程序直接访问的区域。
根据本公开实施例的第二方面,提供一种开机校验装置,用于终端中,终端中至少包括硬件层、Kernel层、Bootloader层和文件***层,Kernel层中存储有公钥,Bootloader层携带有签名,该装置包括:
检测模块,被配置为检测终端是否为非测试用终端;
校验模块,被配置为在终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,签名是根据私钥生成的签名,私钥与公钥不匹配,在校验失败时,指示结束校验。
可选的,检测模块包括:
第一检测子模块,被配置为检测终端中是否包含预设电路结构,预设电路结构用于表示终端是测试用终端;
第一确定子模块,被配置为在不包含预设电路结构时,则确定终端为非测试用终端。
可选的,第一检测子模块,还被配置为检测硬件层的可信区域中是否包含预设电路结构,可信区域是硬件层中禁止被应用程序直接访问的区域。
可选的,检测模块包括:
第二检测子模块,检测终端中是否包含预设标识,预设标识为用于表示终端为测试用终端的标识;
第二确定子模块,若终端中不包含预设标识,则确定终端为非测试用终端。
可选的,第二检测子模块,还被配置为检测硬件层的可信存储区域中是否包含预设标识,可信存储区域是硬件层中禁止被应用程序直接访问的区域。
根据本公开实施例的第三方面,提供一种开机校验装置,用于终端中,终端中至少包括硬件层、Kernel层、Bootloader层和文件***层,Kernel层中存储有公钥,Bootloader层携带有签名,该装置包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
检测终端是否为非测试用终端;
当确定终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,签名是根据私钥生成的签名,私钥与公钥不匹配,在校验失败时,指示结束校验。
本公开的实施例提供的技术方案可以包括以下有益效果:
通过检测终端是否为非测试用终端,当确定终端为非测试用终端时,通过Kernel层使用公钥对签名进行校验,由于签名是根据私钥生成的签名,而私钥与公钥不匹配,因此终端校验失败,无法开启;解决了终端因为运行测试版本的Rom包导致安全性较低的问题;通过在终端中设置一套匹配的密钥和一套不匹配的密钥,达到了非测试用终端由于校验失败而无法成功启动,保证了终端的安全性的效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并于说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种终端的结构示意图;
图2是根据一示例性实施例示出的一种开机校验方法的流程图;
图3是根据另一示例性实施例示出的一种开机校验方法的流程图;
图4是根据另一示例性实施例示出的一种开机校验方法的流程图;
图5是根据另一示例性实施例示出的一种开机校验方法的流程图;
图6是根据另一示例性实施例示出的一种开机校验方法的流程图;
图7A是根据一示例性实施例示出的一种开机校验方法的示意图;
图7B是根据另一示例性实施例示出的一种开机校验方法的示意图;
图8是根据一示例性实施例示出的一种开机校验装置的框图;
图9A是根据另一示例性实施例示出的一种开机校验装置的框图;
图9B是根据另一示例性实施例示出的一种开机校验装置的框图;
图10是根据另一示例性实施例示出的一种终端的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开各个实施例提供的开机校验方法,可以由采用Android操作***的终端来实现,该终端可以是诸如智能手机、智能电视和平板电脑之类的终端。
该终端的结构示意图可以如图1所示,终端10中至少包括:硬件层110、Kernel层120、Bootloader层130和文件***层140。Kernel层120位于硬件层110的上层,Bootloader层130位于Kernel层120的上层,文件***层140位于Bootloader层130的上层。
其中,硬件层110中通常包括处理器、存储器、寄存器、电容、二极管和三极管等硬件器件;终端10中的Kernel是基于Linux的内核,Kernel层120通常用于管理存储器、进程、文件和***资源等;Bootloader层130主要用于对处理器和相关硬件进行初始化;文件***用于对终端中的文件信息进行管理和存储。
在本公开实施例中,Kernel层120中存储的公钥为第一公钥,Bootloader层130携带的签名为第一签名,该第一签名是根据第一私钥生成的签名。Bootloader层130中还存储有第二公钥,文件***层140携带有第二签名,该第二签名是根据第二私钥生成的签名。
图2是根据一示例性实施例示出的一种开机校验方法的流程图,本实施例以该方法用于图1所示的终端中为例进行说明,该方法可以包括如下几个步骤:
在步骤201中,检测终端是否为非测试用终端。
终端在加载终端中存储的Rom包时执行本公开实施例提供的开机校验方法,该终端可以是测试用终端或非测试用终端,测试用终端是用于对Rom包进行测试的终端,通常是Rom包的测试人员所使用的终端;非测试用终端是运行Rom包的终端中除测试用终端之外的终端,通常是普通用户所使用的终端。
在步骤202中,当确定终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,在校验失败时,指示结束校验。
在终端通过Kernel层使用公钥对签名校验失败时,终端指示校验结束,不启动Bootloader层且不再执行开机过程中的其他操作,保持处于关机状态。
其中,签名是根据私钥生成的签名,私钥与公钥不匹配。公钥和私钥是由开发Rom包的软件开发人员提前配置的,公钥和私钥携带在Rom包中,终端在安装该Rom包时,从Rom包中获取公钥和私钥,并将公钥存储在Kernel层中以及使用私钥对Bootloader层进行签名,对Bootloader层进行签名指的是对Bootloader层中的数据进行签名。
可选的,公钥和私钥均为字符串,该字符串包括数字、字母和符号中的至少一种,该字符串可以是16位的字符串、32位的字符串或者64位的字符串,本实施例对公钥和私钥的格式不作限定。
可选的,终端通过预定加密算法使用私钥对Bootloader层的数据进行加密处理得到签名,预定加密算法是Schnorr签名算法、椭圆曲线数字签名算法和EIGamal签名算法中的任意一种。
综上所述,本公开实施例提供的开机校验方法,通过检测终端是否为非测试用终端,当确定终端为非测试用终端时,通过Kernel层使用公钥对签名进行校验,由于签名是根据私钥生成的签名,而私钥与公钥不匹配,因此终端校验失败,无法开启;解决了终端因为运行测试版本的Rom包导致安全性较低的问题;通过在终端中设置一套匹配的密钥和一套不匹配的密钥,达到了非测试用终端由于校验失败而无法成功启动,保证了终端的安全性的效果。
以如图1所示的终端为例,当该终端为测试用终端时,终端在加载Rom包之前通常包括如下几个步骤,如图3所示:
在步骤301中,接收生成指令。
其中,生成指令用于指示终端生成预设电路结构或生成预设标识,通常只有测试人员才具有触发该生成指令的权限。
可选的,生成指令用于指示终端通过调整电压和电流等参数对原有电路结构进行不可逆的改变,生成预设电路结构。预设电路结构包括处于熔断状态的预定电容、处于熔断状态的预定二极管和处于熔断状态的预定三极管中的至少一种。可选的,生成指令用于指示终端在硬件层的可信区域中生成预设电路结构。
通常来说,终端硬件层中包括一些预留的器件或者包括专门用于进行测试的器件,比如预留的电容和预留的二极管,终端在对这些预留的器件进行操作时,对终端的正常工作没有影响,因此,生成指令可以指示终端对这些预留的器件执行不可逆的操作,形成预设电路结构,比如,指示终端调大电压击穿预定电容。可选的,生成指令用于指示终端在可信存储区域中写入预设标识。可选的,可信存储区域是终端硬件层中的存储器。可选的,预设标识是预定的字段,比如,预设标识是字段0或字段1,在一个实际的例子中,生成指令可以用于指示终端在存储器的地址1对应的存储单元中写入字段1。
在步骤302中,根据生成指令生成预设电路结构和/或预设标识。
可选的,为了避免被伪造,终端根据生成指令在终端硬件层的可信区域生成预设电路结构,可信区域是硬件层中禁止被应用程序直接访问的区域。
可选的,终端根据生成指令在终端硬件层的可信存储区域存储预设标识,可信存储区域是硬件层中禁止被应用程序直接访问的区域。
需要说明的是,测试用终端可以是通过上述步骤形成该预设电路结构;或者,该测试用终端是专门用于对该测试版本的Rom包进行测试的终端,生产该测试用终端时在测试用终端中形成有该预设电路结构。
终端在进行开机校验时的流程图可以如图4所示,本实施例以该方法用于图1所示的终端中为例进行说明,该方法可以包括如下几个步骤:
在步骤401中,检测终端中是否包含预设电路结构,预设电路结构用于表示终端是测试用终端。
可选的,测试用终端通过上述步骤301和步骤302生成的预设电路结构位于测试用终端硬件层的可信区域中,或者,测试用终端在生产时形成的预设电路结构位于测试用终端硬件层的可信区域中,则该步骤可以实现成为检测硬件层的可信区域中是否包含预设电路结构。
在步骤402中,若不包含预设电路结构,则确定终端为非测试用终端。
在步骤403中,当确定终端为非测试用终端时,则通过Kernel层使用第一公钥对第一签名进行校验,在校验失败时,指示结束校验。
其中,第一签名是根据第一私钥生成的签名,第一私钥与第一公钥不匹配。
第一公钥和第一私钥是携带在Rom包中的,当终端的Rom中写入某个Rom包时,终端从Rom包中获取第一公钥和第一私钥,将第一公钥存储在Kernel层中,并使用第一私钥对Bootloader层进行签名生成第一签名。其中,对Bootloader层签名是指对Bootloader层中包括的文件和数据等进行签名。
对于一个测试版本的Rom包来说,软件开发人员在生成该测试版本的Rom包时在该Rom包中携带有不属于同一个密钥对的第一公钥和第一私钥,即第一公钥与第一私钥无法互相加解密,因此,对于不包含预设电路结构的终端来说,终端在通过Kernel层使用第一公钥对第一签名进行校验时,校验会失败,终端无法启动。
在步骤404中,若包含预设电路结构,则确定终端是测试用终端。
在步骤405中,当确定终端为测试用终端时,则通过Bootloader层使用第二公钥对第二签名进行校验,在校验成功时,指示开启终端。
其中,第二签名是根据第二私钥生成的签名,第二私钥与第二公钥相匹配。
第二公钥和第二私钥也是携带在Rom包中的,当终端的Rom中写入某个Rom包时,终端从Rom包中获取第二公钥和第二私钥,将第二公钥存储在Bootloader层中,并使用第二私钥对文***层进行签名生成第二签名。其中,对文件***层签名是指对文件***层中包括的文件和数据等进行签名。
可选的,本公开实施例中,终端的Rom中写入的是测试版本的Rom包。对于一个测试版本的Rom包来说,软件开发人员在生成该测试版本的Rom时在该Rom包中携带有属于同一个密钥对的第二公钥和第二私钥,即第二公钥与第二私钥可以互相加解密。对于包含预设电路结构的测试用终端来说,测试用终端无需通过Kernel层使用第一公钥对第一签名进行校验,只需直接通过Bootloader层使用第二公钥对第二签名进行校验时,此时校验会成功,终端成功启动。
可选的,第一公钥与第二公钥相同。
可选的,同一个终端可以是用于测试多个不同测试版本的Rom包的测试用终端,则该终端中可以包括一个预设电路结构,不同测试版本的Rom包都对应于同一个预设电路结构;或者,该终端中包括多个不同的预设电路结构,不同测试版本的Rom包对应于不同的预设电路结构,当终端中写入不同测试版本的Rom时,则终端通过检测是否包含与当前加载的测试版本的Rom包对应的预设电路结构判断该是否是用于测试该测试版本的Rom包的测试用终端。
比如,与Rom包1对应的预设电路结构是预设电路结构1,与Rom包2对应的预设电路结构是预设电路结构2,终端中包含有预设电路结构1。当终端的Rom中写入有Rom包1时,终端进行开机校验时检测到终端中包含预设电路结构1,则确定终端为测试用终端。当终端的Rom中写入有Rom包2时,终端进行开机校验时检测到终端中不包含预设电路结构2,则此时确定终端为非测试用终端。
综上所述,本公开实施例提供的开机校验方法,通过检测终端是否为非测试用终端,当确定终端为非测试用终端时,通过Kernel层使用第一公钥对第一签名进行校验,由于第一签名是根据第一私钥生成的签名,而第一私钥与第一公钥不匹配,因此终端校验失败,无法开启;而当确定终端为测试用终端时,直接通过Bootloader层使用第二公钥对文件***层携带的第二签名进行校验,第二签名由第二私钥生成,此时由于第二公钥与第二私钥相匹配,因此测试用终端校验成功并成功开启;解决了终端因为运行测试版本的Rom包导致安全性较低的问题;通过在终端中设置一套匹配的密钥和一套不匹配的密钥,达到了非测试用终端由于校验失败而无法成功启动,因此也无法运行测试版本的Rom包,保证了终端的安全性的效果。
本公开实施例提供的开机校验方法,预设电路结构设置在终端硬件层的可信区域,使用户无法通过应用程序直接访问该预设电路结构,避免了对预设电路结构的伪造,提高了预设电路结构的可靠性。
终端在进行开机校验时的流程图还可以如图5所示,本实施例以该方法用于图1所示的终端中为例进行说明,该方法可以包括如下几个步骤:
在步骤501中,检测终端中是否包含预设标识,预设标识为用于表示终端为测试用终端的标识。
可选的,该步骤可以实现成为检测硬件层的可信存储区域中是否包含预设标识。
在步骤502中,若终端中不包含预设标识,则确定终端为非测试用终端。
在步骤503中,当确定终端为非测试用终端时,则通过Kernel层使用第一公钥对第一签名进行校验,在校验失败时,指示结束校验。
第一签名是根据第一私钥生成的签名,第一私钥与第一公钥不匹配。
在步骤504中,若终端中包含预设标识,则确定终端是测试用终端。
在步骤505中,当确定终端为测试用终端时,则通过Bootloader层使用第二公钥对第二签名进行校验,在校验成功时,指示开启终端。
其中,第二签名是根据第二私钥生成的签名,第二私钥与第二公钥相匹配。
上述步骤501-步骤505的具体实现方式可以结合上述图4所示的实施例,本实施例对此不再赘述。
本公开实施例提供的开机校验方法,预设标识设置在终端硬件层的可信存储区域,使用户无法通过应用程序直接访问该预设标识,避免了对预设电路的伪造,提高了预设标识的可靠性。
在实际实现时,终端加载的Rom包可以是测试版本的Rom包,也可以是官方版本的Rom包,而对于官方版本的Rom包来说,由于所有加载官方版本的Rom包的终端都可以校验成功并运行该Rom包,因此加载该Rom包的终端中并不会包括预设电路结构或预设标识。且对于官方版本的Rom包来说,Rom中携带的第一公钥与第一私钥相匹配,第二公钥与第二私钥也相匹配。
则当终端在加载官方版本的Rom包时,上述步骤403或步骤503可被替代实现为如下步骤,如图6所示:
在步骤601中,当确定终端为非测试用终端时,则通过Kernel层使用第一公钥校验第一签名,则终端通过Kernel层使用第一公钥对第一签名进行校验。
其中,第一签名为根据第一私钥生成的签名,第一私钥与第一公钥匹配。
在步骤602中,在校验成功时,通过Bootloader层使用第二公钥对第二签名进行校验,在校验成功时,指示开启终端。
其中,第二签名是根据第二私钥生成的签名,第二私钥与第二公钥相匹配。
在本实施例中,第一公钥与第二公钥可以相同,第一私钥与第二私钥也可以相同。
综上所述,本公开实施例提供的开机校验方法,对于官方版本的Rom包,Rom包中携带的第一公钥和第一私钥相匹配,携带的第二公钥和第二私钥也相匹配,保证了所有终端都能成功启动并正常运行官方版本的Rom包。
在一个示例性的例子中,当终端的Rom中写入的是测试版本的Rom包时,假设终端从Rom包中获取的第一公钥与第二公钥都是公钥A,第一私钥是私钥B,根据私钥B生成第一签名,第二私钥是私钥A,根据私钥A生成第二签名,私钥B与公钥A不匹配,私钥A与公钥A相匹配。则当终端是测试用终端时,终端检测到硬件区中包含预设标识,则终端的开机校验的示意图可以如图7A中的(a)所示,终端不通过Kernel层使用公钥A对第一签名进行校验,直接通过Bootloader层使用公钥A对第二签名进行校验;当终端是非测试用终端时,终端检测到硬件区中不包含预设标识,终端的开机校验的示意图可以如图7A中的(b)所示,终端通过Kernel层使用公钥A对第一签名进行校验,校验失败。
在另一个示例性的例子中,当终端的Rom中写入的是官方版本的Rom包时,假设终端从Rom包中获取的第一公钥与第二公钥都是公钥A,获取到的第一私钥和第二私钥都是私钥A,第一签名和第二签名都根据私钥A生成,私钥A与私钥B相匹配。则对于加载该Rom包的任意一个终端来说,终端中都可以不包含预设标识和预设电路结构,则终端在检测到不包含预设标识或预设电路结构时,终端的开机校验的示意图可以如图7B所示,终端通过Kernel层使用公钥A对第一签名进行校验,校验成功时,通过Bootloader层使用公钥A对第二签名进行校验。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图8是根据一示例性实施例示出的一种开机校验装置的框图,如图8所示,该装置可以通过软件、硬件或者两者的结合实现成为如图1所示的终端,该装置包括但不限于:检测模块810和校验模块820。
检测模块810,被配置为检测终端是否为非测试用终端。
校验模块820,被配置为当通过检测模块810检测到确定终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,签名是根据私钥生成的签名,私钥与公钥不匹配,在校验失败时,指示结束校验。
综上所述,本公开实施例提供的开机校验装置,通过检测终端是否为非测试用终端,当确定终端为非测试用终端时,通过Kernel层使用公钥对签名进行校验,由于签名是根据私钥生成的签名,而私钥与公钥不匹配,因此终端校验失败,无法开启;解决了终端因为运行测试版本的Rom包导致安全性较低的问题;通过在终端中设置一套匹配的密钥和一套不匹配的密钥,达到了非测试用终端由于校验失败而无法成功启动,保证了终端的安全性的效果。
图9A和图9B是根据另一示例性实施例示出的一种开机校验装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为如图1所示的终端,该装置包括但不限于:
检测模块910,被配置为检测终端是否为非测试用终端。
可选的,检测模块910包括如下几个子模块,如图9A所示:
第一检测子模块911,被配置为检测终端中是否包含预设电路结构,预设电路结构用于表示终端是测试用终端。
第一检测子模块911,还被配置为检测硬件层的可信区域中是否包含预设电路结构,可信区域是硬件层中禁止被应用程序直接访问的区域。
第一确定子模块912,被配置为在通过第一检测子模块911检测到终端中不包含预设电路结构时,则确定终端为非测试用终端。
或者,可选的,检测模块910包括如下几个子模块,如图9B所示:
第二检测子模块913,被配置为检测终端中是否包含预设标识,预设标识为用于表示终端为测试用终端的标识。
第二检测子模块913,还被配置为检测硬件层的可信存储区域中是否包含预设标识,可信存储区域是硬件层中禁止被应用程序直接访问的区域。
第二确定子模块914,被配置为在通过第二检测子模块911检测到终端中不包含预设标识时,则确定终端为非测试用终端。
校验模块920,被配置为在通过第一确定子模块912或者通过第二确定子模块914确定终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,签名是根据私钥生成的签名,私钥与公钥不匹配,在校验失败时,指示结束校验。
综上所述,本公开实施例提供的开机校验装置,通过检测终端是否为非测试用终端,当确定终端为非测试用终端时,通过Kernel层使用公钥对签名进行校验,由于签名是根据私钥生成的签名,而私钥与公钥不匹配,因此终端校验失败,无法开启;解决了终端因为运行测试版本的Rom包导致安全性较低的问题;通过在终端中设置一套匹配的密钥和一套不匹配的密钥,达到了非测试用终端由于校验失败而无法成功启动,保证了终端的安全性的效果。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本公开一示例性实施例提供了一种开机校验装置,能够实现本公开提供的。开机校验方法,该装置包括:处理器、用于存储处理器可执行指令的存储器;
其中,处理器被配置为:
检测终端是否为非测试用终端;
当确定终端为非测试用终端时,则通过Kernel层使用公钥对签名进行校验,签名是根据私钥生成的签名,私钥与公钥不匹配,在校验失败时,指示结束校验。
图10是根据一示例性实施例示出的一种开机校验装置的框图。例如,装置1000可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图10,装置1000可以包括以下一个或多个组件:处理组件1002,存储器1004,电源组件1006,多媒体组件1008,音频组件1010,输入/输出(I/O)接口1012,传感器组件1014,以及通信组件1016。
处理组件1002通常控制装置1000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1002可以包括一个或多个处理器1018来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1002可以包括一个或多个模块,便于处理组件1002和其他组件之间的交互。例如,处理组件1002可以包括多媒体模块,以方便多媒体组件1008和处理组件1002之间的交互。
存储器1004被配置为存储各种类型的数据以支持在装置1000的操作。这些数据的示例包括用于在装置1000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件1006为装置1000的各种组件提供电力。电源组件1006可以包括电源管理***,一个或多个电源,及其他与为装置1000生成、管理和分配电力相关联的组件。
多媒体组件1008包括在装置1000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1008包括一个前置摄像头和/或后置摄像头。当装置1000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件1010被配置为输出和/或输入音频信号。例如,音频组件1010包括一个麦克风(MIC),当装置1000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1004或经由通信组件1016发送。在一些实施例中,音频组件1010还包括一个扬声器,用于输出音频信号。
I/O接口1012为处理组件1002和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1014包括一个或多个传感器,用于为装置1000提供各个方面的状态评估。例如,传感器组件1014可以检测到装置1000的打开/关闭状态,组件的相对定位,例如组件为装置1000的显示器和小键盘,传感器组件1014还可以检测装置1000或装置1000一个组件的位置改变,用户与装置1000接触的存在或不存在,装置1000方位或加速/减速和装置1000的温度变化。传感器组件1014可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1016被配置为便于装置1000和其他设备之间有线或无线方式的通信。装置1000可以接入基于通信标准的无线网络,如Wi-Fi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1016经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,通信组件1016还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置1000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述开机校验方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1004,上述指令可由装置1000的处理器1018执行以完成上述开机校验方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (11)

1.一种开机校验方法,其特征在于,用于终端中,所述终端中至少包括硬件层、内核Kernel层、启动装载Bootloader层和文件***层,所述Kernel层中存储有公钥,所述Bootloader层携带有签名,所述方法包括:
检测所述终端是否为非测试用终端;
当确定所述终端为所述非测试用终端时,则通过所述Kernel层使用所述公钥对所述签名进行校验,所述签名是根据私钥生成的签名,所述私钥与所述公钥不匹配,在校验失败时,指示结束校验,所述终端无法启动。
2.根据权利要求1所述的方法,其特征在于,所述检测所述终端是否为非测试用终端,包括:
检测所述终端中是否包含预设电路结构,所述预设电路结构用于表示所述终端是测试用终端;
若所述终端中不包含所述预设电路结构,则确定所述终端为所述非测试用终端。
3.根据权利要求2所述的方法,其特征在于,所述检测所述终端中是否包含预设电路结构,包括:
检测所述硬件层的可信区域中是否包含所述预设电路结构,所述可信区域是所述硬件层中禁止被应用程序直接访问的区域。
4.根据权利要求1所述的方法,其特征在于,所述检测所述终端是否为非测试用终端,包括:
检测所述终端中是否包含预设标识,所述预设标识为用于表示所述终端为测试用终端的标识;
若所述终端中不包含所述预设标识,则确定所述终端为所述非测试用终端。
5.根据权利要求4所述的方法,其特征在于,所述检测所述终端中是否包含预设标识,包括:
检测所述硬件层的可信存储区域中是否包含所述预设标识,所述可信存储区域是所述硬件层中禁止被应用程序直接访问的区域。
6.一种开机校验装置,其特征在于,用于终端中,所述终端中至少包括硬件层、内核Kernel层、启动装载Bootloader层和文件***层,所述Kernel层中存储有公钥,所述Bootloader层携带有签名,所述装置包括:
检测模块,被配置为检测所述终端是否为非测试用终端;
校验模块,被配置为当确定所述终端为所述非测试用终端时,则通过所述Kernel层使用所述公钥对所述签名进行校验,所述签名是根据私钥生成的签名,所述私钥与所述公钥不匹配,在校验失败时,指示结束校验,所述终端无法启动。
7.根据权利要求6所述的装置,其特征在于,所述检测模块包括:
第一检测子模块,被配置为检测所述终端中是否包含预设电路结构,所述预设电路结构用于表示所述终端是测试用终端;
第一确定子模块,被配置为在所述终端中不包含所述预设电路结构时,则确定所述终端为所述非测试用终端。
8.根据权利要求7所述的装置,其特征在于,
所述第一检测子模块,还被配置为检测所述硬件层的可信区域中是否包含所述预设电路结构,所述可信区域是所述硬件层中禁止被应用程序直接访问的区域。
9.根据权利要求6所述的装置,其特征在于,所述检测模块包括:
第二检测子模块,被配置为检测所述终端中是否包含预设标识,所述预设标识为用于表示所述终端为测试用终端的标识;
第二确定子模块,被配置为在所述终端中不包含所述预设标识时,则确定所述终端为所述非测试用终端。
10.根据权利要求9所述的装置,其特征在于,
所述第二检测子模块,还被配置为检测所述硬件层的可信存储区域中是否包含所述预设标识,所述可信存储区域是所述硬件层中禁止被应用程序直接访问的区域。
11.一种开机校验装置,其特征在于,用于终端中,所述终端中至少包括硬件层、内核Kernel层、启动装载Bootloader层和文件***层,所述Kernel层中存储有公钥,所述Bootloader层携带有签名,所述装置包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为:
检测所述终端是否为非测试用终端;
当确定所述终端为所述非测试用终端时,则通过所述Kernel层使用所述公钥对所述签名进行校验,所述签名是根据私钥生成的签名,所述私钥与所述公钥不匹配,在校验失败时,指示结束校验,所述终端无法启动。
CN201610620662.8A 2016-07-29 2016-07-29 开机校验方法及装置 Active CN106295363B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610620662.8A CN106295363B (zh) 2016-07-29 2016-07-29 开机校验方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610620662.8A CN106295363B (zh) 2016-07-29 2016-07-29 开机校验方法及装置

Publications (2)

Publication Number Publication Date
CN106295363A CN106295363A (zh) 2017-01-04
CN106295363B true CN106295363B (zh) 2019-05-14

Family

ID=57663850

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610620662.8A Active CN106295363B (zh) 2016-07-29 2016-07-29 开机校验方法及装置

Country Status (1)

Country Link
CN (1) CN106295363B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194211B (zh) * 2017-05-19 2020-03-10 环旭电子股份有限公司 自动认证测试***及方法
EP3794477B1 (en) * 2019-01-04 2023-05-10 Baidu.com Times Technology (Beijing) Co., Ltd. Method and system for validating kernel objects to be executed by a data processing accelerator of a host system
CN112105023B (zh) * 2020-08-03 2024-07-23 深圳市广和通无线股份有限公司 网络连接方法、装置、计算机设备和存储介质
TWI824602B (zh) * 2022-07-05 2023-12-01 大陸商星宸科技股份有限公司 電子裝置及其控制方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200838251A (en) * 2007-03-06 2008-09-16 Chunghwa Telecom Co Ltd Dynamic one-time password authentication system
CN103914658A (zh) * 2013-01-05 2014-07-09 展讯通信(上海)有限公司 终端设备的安全启动方法及终端设备
CN104200153A (zh) * 2014-09-12 2014-12-10 北京赛科世纪数码科技有限公司 一种启动验证方法和***

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9721101B2 (en) * 2013-06-24 2017-08-01 Red Hat, Inc. System wide root of trust chaining via signed applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200838251A (en) * 2007-03-06 2008-09-16 Chunghwa Telecom Co Ltd Dynamic one-time password authentication system
CN103914658A (zh) * 2013-01-05 2014-07-09 展讯通信(上海)有限公司 终端设备的安全启动方法及终端设备
CN104200153A (zh) * 2014-09-12 2014-12-10 北京赛科世纪数码科技有限公司 一种启动验证方法和***

Also Published As

Publication number Publication date
CN106295363A (zh) 2017-01-04

Similar Documents

Publication Publication Date Title
US20180367315A1 (en) Method and apparatus for signing and verifying application installation package, and storage medium
CN104852911B (zh) 安全验证方法、装置及***
CN106295363B (zh) 开机校验方法及装置
CN106650460B (zh) 一种版本校验方法、装置及终端设备
CN102016867B (zh) 基于至少一个已安装的简档来授权执行软件代码的***和方法
US10200201B2 (en) Method for application installation, electronic device, and certificate system
CN108269334A (zh) 开锁方法、终端设备以及智能锁
CN105975864A (zh) 操作***的启动方法、装置及终端
KR101642019B1 (ko) 단말기 검증방법, 장치, 프로그램 및 기록매체
CN102016866A (zh) 基于授予承载商的权利授权在设备上执行软件代码的***和方法
CN111199039B (zh) 应用程序的安全性校验方法、装置及终端设备
CN105812491B (zh) 设备远程绑定方法和装置
CN109614798A (zh) 安全启动方法、装置及终端设备
CN107766701A (zh) 电子设备、动态库文件保护方法及装置
CN107231338B (zh) 网络连接方法、装置以及用于网络连接的装置
CN106709284A (zh) 刷机包验证方法及装置
KR20190033930A (ko) 보안 정보를 암호화하는 전자 장치 및 그 작동 방법
CN106534083B (zh) 刷机工具验证方法及装置
CN112784243A (zh) 授权管理方法及装置、电子设备和存储介质
CN107506636A (zh) 预装应用程序的保护方法及装置
CN110008668B (zh) 一种数据处理方法、装置及存储介质
CN108668267B (zh) 智能卡的生成方法及装置
WO2017201692A1 (zh) 应用加密方法及装置
CN112020065B (zh) 一种信息处理方法、终端设备、服务器及存储介质
CN106022160A (zh) 删除用户数据的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant