安全启动校验的方法及电子设备与流程

文档序号:30300656发布日期:2022-06-04 23:17阅读:161来源:国知局
安全启动校验的方法及电子设备与流程

1.本技术涉及电子技术领域,并且更具体地,涉及一种安全启动校验的方法及电子设备。


背景技术:

2.为了避免电子设备受到黑客攻击,造成电子设备上的信息存在安全隐患问题,通常在电子设备上增加安全启动功能。这样,电子设备在启动后,会对电子设备的软件系统的软件包进行安全启动校验。但是,现有的电子设备的安全启动校验的效率较低,启动时间较长,导致用户体验较差。


技术实现要素:

3.本技术提供一种安全启动校验的方法及电子设备,可以提高安全启动校验的效率,进而缩短电子设备的启动时间,提高用户体验。
4.第一方面,提供了一种安全启动校验的方法,所述方法应用于电子设备,所述方法包括:根据目标步长和目标数据的起始地址,分n次对所述目标数据进行读取,所述目标数据包括所述电子设备的软件系统的软件包对应的数据,所述n大于或等于2;在第j次数据读取后,根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算,其中,所述j为大于1,且小于或等于n的整数;根据第n次哈希值的计算结果,进行安全启动校验。
5.示例性地,所述电子设备为物联网(internet of things,iot)设备。
6.在一种可实现的方式中,上述j还可以为大于或等于1,且小于或等于n的整数。此时,在j等于1的情况下,第0次哈希值计算的结果为0。
7.通过上述技术方案,在读取第j+1组数据的过程中,便可以开始对第j次哈希值计算,实现将读取第j+1组数据的时间和对第j次哈希值计算的时间的合并,进而减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
8.结合第一方面,在一种可实现的方式中,所述电子设备包括闪存控制器,所述根据目标步长和目标数据的起始地址,分n次对所述目标数据进行读取,包括:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定n个起始地址集合,所述n个起始地址集合中的每个起始地址集合包括n个起始地址,所述n为所述目标步长与所述闪存控制器的步长的比值;控制所述闪存控制器根据第j个起始地址集合和所述闪存控制器的步长,分n次对所述第j组数据进行读取。
9.结合第一方面,在一种可实现的方式中,所述电子设备包括哈希计算模块,所述在第j次数据读取后,根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算,包括:在所述闪存控制器进行所述第j次数据读取后,控制所述哈希计算模块根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算。
10.通过上述技术方案,在闪存控制器读取第j+1组数据的过程中,哈希计算模块便可以开始对第j次哈希值计算,实现将读取第j+1组数据的时间和对第j次哈希值计算的时间的合并,进而减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
11.结合第一方面,在一种可实现的方式中,所述方法还包括:调整所述目标步长,以使第一时间大于第二时间,所述第一时间包括所述第j次数据读取所需的时间,所述第二时间包括所述第j次哈希值计算所需的时间。
12.通过调整目标步长,以使第j次数据读取所需的时间大于第j次哈希值计算所需的时间,进而保证读取第j+1组数据的过程中,可以完成对第j组数据的哈希值计算。从而更好的减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
13.结合第一方面,在一种可实现的方式中,所述根据第n次哈希值的计算结果,进行安全启动校验,包括:获取目标哈希值,所述目标哈希值为所述软件系统的软件包对应的数据所配置的哈希值;通过比较所述目标哈希值和所述第n次哈希值的计算结果,进行安全启动校验。
14.结合第一方面,在一种可实现的方式中,所述通过比较所述目标哈希值和所述第n次哈希值的计算结果,进行安全启动校验,包括:在所述目标哈希值和所述第n次哈希值的计算结果一致的情况下,安全启动校验通过;或,在所述目标哈希值和所述第n次哈希值的计算结果不一致的情况下,安全启动校验不通过。
15.第二方面,提供了一种安全启动校验的方法,所述方法应用于电子设备,所述方法包括:根据目标步长和目标数据的起始地址,从目标数据中读取第一组数据,所述目标数据包括所述电子设备的软件系统的软件包对应的数据;根据所述第一组数据,进行第一次哈希值计算,以及,根据所述目标步长和所述目标数据的起始地址,从所述目标数据中读取第二组数据,所述第二组数据和所述第一组数据是所述目标数据中不同的数据;根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算;根据所述第二次哈希值的计算结果,进行安全启动校验。
16.示例性地,所述电子设备为iot设备。
17.通过上述技术方案,在读取第二组数据的过程中,便可以开始对第一组数据进行第一次哈希值计算,实现将读取第二组数据的时间和对第一组数据进行第一次哈希值计算的时间的合并,进而减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
18.结合第二方面,在一种可实现的方式中,所述电子设备包括闪存控制器,所述根据目标步长和目标数据的起始地址,从目标数据中读取第一组数据,包括:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定第一起始地址集合,所述第一起始地址集合包括n个起始地址,所述n为所述目标步长与所述闪存控制器的步长的比值;控制所述闪存控制器根据所述第一起始地址集合和所述闪存控制器的步长,分n次从所述目标数据中读取所述第一组数据。
19.结合第二方面,在一种可实现的方式中,所述根据所述目标步长和所述目标数据的起始地址,从所述目标数据中读取第二组数据,包括:根据所述闪存控制器的步长、所述
目标步长和所述目标数据的起始地址,确定第二起始地址集合,所述第二起始地址集合包括n个起始地址,所述第二起始地址集合和所述第一起始地址集合不同;控制所述闪存控制器根据所述第二起始地址集合和所述闪存控制器的步长,分n次从所述目标数据中读取所述第二组数据。
20.结合第二方面,在一种可实现的方式中,所述电子设备包括哈希计算模块,所述根据所述第一组数据,进行第一次哈希值计算,包括:控制所述哈希计算模块根据所述第一组数据,进行第一次哈希值计算;所述根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算,包括:控制所述哈希计算模块根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算。
21.通过上述技术方案,在闪存控制器读取第二组数据的过程中,哈希计算模块便可以开始对第一组数据进行第一次哈希值计算,实现将读取第二组数据的时间和对第一组数据进行第一次哈希值计算的时间的合并,进而减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
22.结合第二方面,在一种可实现的方式中,所述方法还包括:调整所述目标步长,以使第一时间大于第二时间,所述第一时间包括读取所述第二组数据所需的时间,所述第二时间包括所述第一次哈希值计算所需的时间。
23.通过调整目标步长,以使读取第二组数据所需的时间大于第二次哈希值计算所需的时间,进而保证读取第二组数据的过程中,可以完成对第一组数据的哈希值计算。从而更好的减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
24.结合第二方面,在一种可实现的方式中,所述根据第二次哈希值的计算结果,进行安全启动校验,包括:获取目标哈希值,所述目标哈希值为所述软件系统的软件包对应的数据所配置的哈希值;通过比较所述目标哈希值和所述第二次哈希值的计算结果,进行安全启动校验。
25.结合第二方面,在一种可实现的方式中,所述通过比较所述目标哈希值和所述第二次哈希值的计算结果,进行安全启动校验,包括:在所述目标哈希值和所述第二次哈希值的计算结果一致的情况下,安全启动校验通过;或,在所述目标哈希值和所述第二次哈希值的计算结果不一致的情况下,安全启动校验不通过。
26.第三方面,提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;该一个或多个存储器存储有一个或多个计算机程序,该一个或多个计算机程序包括指令,当该指令被一个或多个处理器执行时,使得如第一方面及其任一种可能的实现方式中所述的安全启动校验的方法被执行。
27.示例性地,所述电子设备为iot设备。
28.第四方面,提供了一种计算机可读存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面及其任一种可能的实现方式中所述的安全启动校验的方法。
29.第五方面,提供了一种芯片,包括至少一个处理器和接口电路,所述接口电路用于为所述至少一个处理器提供程序指令或者数据,所述至少一个处理器用于执行所述程序指令,以实现如第一方面及其任一种可能的实现方式中所述的安全启动校验的方法。
30.第六方面,提供一种计算机程序产品,包括计算机指令,当所述计算机指令在电子设备上运行时,使得如第一方面及其任一种可能的实现方式中所述的安全启动校验的方法被执行。
附图说明
31.图1是本技术实施例提供的一例电子设备的结构示意图。
32.图2是本技术实施例提供的另一例电子设备的结构示意图。
33.图3是本技术实施例提供的一例电子设备的软件结构示意图。
34.图4是本技术实施例提供的一例安全启动校验的方法的流程示意图。
35.图5是本技术实施例提供的另一例安全启动校验的方法的流程示意图。
36.图6是本技术实施例提供的又一例安全启动校验的方法的流程示意图。
37.图7是本技术实施例提供的又一例电子设备的结构示意图。
具体实施方式
38.下面将结合附图,对本技术中的技术方案进行描述。
39.本技术实施例中涉及的电子设备可以指用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。终端设备还可以是蜂窝电话、无绳电话、会话启动协议(session initiation protocol,sip)电话、无线本地环路(wireless local loop,wll)站、个人数字处理(personal digital assistant,pda)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备(例如蓝牙耳机或智能手表)、家居设备(例如智能门锁或智能猫眼),未来5g网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,plmn)中的终端设备等,本技术实施例对此并不限定。
40.示例性的,图1示出了本技术实施例提供的一例电子设备100的结构示意图。
41.例如,如图1所示,电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
42.可以理解的是,本技术实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
43.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器
(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
44.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
45.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
46.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。其中,i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。
47.可以理解的是,本技术实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
48.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。电源管理模块141用于连接电池142,充电管理模
块140与处理器110。
49.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
50.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。
51.在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
52.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。
53.在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
54.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。gpu为图像处理的微处理器,连接显示屏194和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
55.显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd),也可以采用有机发光二极管(organic light-emitting diode,oled)、有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,amoled)、柔性发光二极管(flex light-emitting diode,fled)、miniled、microled、micro-oled或量子点发光二极管(quantum dot light emitting diodes,qled)等材料中的一种所制作的显示面板。在一些实施例中,电子设备100可以包括1个或n个显示屏194,n为大于1的正整数。
56.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处理器等实现拍摄功能。
57.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。
58.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。扬声器170a,也称“喇叭”,用于将音频电信号转换为声音信号。受话器170b,也称“听筒”,用于将音频电信号转换成声音信号。麦克风170c,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口170d用于连接有线耳机。
59.压力传感器180a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180a可以设置于显示屏194。陀螺仪传感器180b可以用于确定电子设备
100的运动姿态。气压传感器180c用于测量气压。在一些实施例中,电子设备100通过气压传感器180c测得的气压值计算海拔高度,辅助定位和导航。加速度传感器180e可检测电子设备100在各个方向上(一般为三轴)加速度的大小。距离传感器180f,用于测量距离。指纹传感器180h用于采集指纹。触摸传感器180k,也称“触控面板”。触摸传感器180k可以设置于显示屏194,由触摸传感器180k与显示屏194组成触摸屏,也称“触控屏”。骨传导传感器180m可以获取振动信号。在一些实施例中,骨传导传感器180m可以获取人体声部振动骨块的振动信号。骨传导传感器180m也可以接触人体脉搏,接收血压跳动信号。
60.按键190包括开机键,音量键等。马达191可以产生振动提示。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。sim卡接口195用于连接sim卡。
61.示例性的,图2示出了本技术实施例提供的另一例电子设备100的结构示意图。如图2所示,电子设备100包括存储器210以及处理器220。存储器210用于存储计算机程序,该计算机程序包括应用程序、操作系统程序和操作系统引导程序等。处理器220用于读取存储器210中的计算机程序,然后执行计算机程序定义的方法,例如处理器220读取操作系统引导程序从而在该电子设备100上引导操作系统的运行,或读取操作系统程序从而在该电子设备100上运行操作系统以及实现操作系统的各种功能,或读取一种或多种应用程序,从而在该电子设备100上运行应用。
62.关于处理器220的其他描述可以参考上文中关于处理器110的描述,这里不再赘述。
63.存储器210还存储有除计算机程序之外的其他数据,其他数据可包括操作系统程序或应用程序被运行后产生的数据,该数据包括系统数据(例如操作系统的配置参数、操作系统的软件包对应的数据等)和用户数据。
64.存储器210一般包括内存和外存。内存可以为随机存储器(random access memory,ram),只读存储器(read-only memory,rom),以及高速缓存(cache)等。外存可以为硬盘、光盘、通用串行总线(universal serial bus,usb)盘、软盘或磁带机等。计算机程序例如应用程序可以被存储在外存上,处理器在执行处理前会将计算机程序从外存加载到内存,操作系统可以存储于内存中。这样,内存可以存储计算机可执行程序代码,该可执行程序代码包括指令。处理器220通过运行存储在内存的指令,从而执行电子设备100的各种功能应用以及数据处理。
65.示例性地,操作系统引导程序中包含了可实现本技术实施例提供的安全启动校验的方法的计算机程序,从而使得处理器220读取到该操作系统引导程序后,启动电子设备100的安全启动校验的功能。
66.示例性地,在一些实施例中,电子设备100还可以包括接口电路,该接口电路用于为存储器210提供该操作系统引导程序。
67.示例性地,接口电路可以使用例如但不限于收发器一类的收发装置,来实现装置与其他设备或通信网络之间的通信。该接口电路例如还可以是通信接口。
68.电子设备100还可以包括闪存(flash)控制器230,用于存储与电子设备100的软件系统的软件包相关的数据。其中,闪存控制器230可以是独立的器件,也可以集成在存储器210中。
69.电子设备100还可以包括哈希计算模块240,用于对闪存控制器230中存储的与电子设备200的软件系统的软件包相关的数据进行哈希值计算。其中,哈希计算模块240可以是独立的器件,也可以集成在处理器220中。
70.示例性地,图2所示的电子设备100的各个部件通过总线连接在一起。
71.可以理解的是,本技术实施例示意的如图2所示的电子设备100的结构并不构成对电子设备100的具体限定。
72.示例性地,在一些实施例中,电子设备100可以包括比图2所示更多的部件。例如,电子设备100还可以包括显示模块、电源模块、传感器模块、音频模块、充电管理模块、通信模块、电池、指示灯、输入模块(例如触控面板、物理键盘、功能按键等)等。
73.示例性地,在一些实施例中,电子设备100可以包括组合图2所示某些部件,或者拆分图2所示某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
74.图1或图2所述的电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。
75.本技术实施例对该软件系统不作限定。例如,该软件系统可以为系统、系统或系统等。
76.下面结合图3,以分层架构的系统为例,示例性说明电子设备100的软件结构。
77.图3是本技术实施例的电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层和系统库,以及内核层。应用程序层可以包括一系列应用程序包。
78.如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,短信息等应用程序。
79.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
80.如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
81.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
82.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
83.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
84.电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
85.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
86.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
87.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
88.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)等。
89.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
90.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:mpeg4,h.264,mp3,aac,amr,jpg,png等。
91.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
92.2d图形引擎是2d绘图的绘图引擎。
93.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
94.示例性地,电子设备的处理器可以支持多核,例如4核或8核等。此时,该处理器可以称为多核处理器。
95.示例性地,电子设备的操作系统也可以支持多核。此时,该操作系统可以称为多核操作系统。
96.多核处理器或多核操作系统可以并行执行多个线程(thread)。即同一时间段内,多个线程可以在多个处理器上执行。
97.其中,线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。
98.进程(process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
99.为了避免电子设备受到黑客攻击,造成电子设备上的信息存在安全隐患问题,通常在电子设备上增加安全启动功能。这样,电子设备在启动后,会对电子设备的软件系统的软件包的完整性进行校验。但是,现有的电子设备的安全启动校验的效率较低,启动时间较长,导致用户体验较差。
100.因此,本技术实施例提供了一种安全启动校验的方法,该方法可以实现在单线程运行的场景下。该方法可以提高了安全启动检验的效率,降低电子设备的启动时间,提高了用户体验。
101.示例性地,该安全启动校验的方法不仅可以应用于iot设备,例如智能门锁、智能猫眼蓝牙耳机等,该安全启动校验的方法也可以应用于除iot设备之外的其他电子设备中。
102.示例性地,该安全启动校验的方法的执行主体可以是电子设备的处理器。例如,处理器可以调用电子设备的操作系统引导程序如通用引导加载程序(universal boot loader,uboot)实现该安全启动校验方法。
103.图4为本技术实施例提供的一例安全启动校验的方法300的流程示意图。
104.示例性地,该方法300的执行主体可以是如图1所示的处理器110或如图2所示的处理器220。方法300中涉及的闪存控制器可以是如图2所示的闪存控制器230。方法300中涉及的哈希计算模块可以是如图2所示的哈希计算模块240。方法300中涉及的存储器可以是如图2所示的存储器210。
105.例如,如图4所示,该方法300包括s301至s315。下面,将具体介绍s301至s315。
106.s301,获取处理器数据读取参数。其中,处理器数据读取参数包括处理器数据读取的步长、起始地址和全部数据的数据量。
107.应理解,处理器数据读取的步长表示每次读取的数据量。例如,处理器数据读取的步长为64k,即处理器每次读取64k的数据量。又例如,处理器数量读取的步长为128k,即处理器每次读取128k的数据量。
108.本技术实施例对数据量的单位不作限定。例如,数据量的单位可以是千字节(k)、比特(bit)或兆(m)等。
109.应理解,处理器数据读取的起始地址表示处理器读取的数据在存储空间中的起始地址。
110.示例性地,处理器数据读取的步长和起始地址可以是预先设定的。
111.由于全部数据的数据量比较大,因此,针对处理器而言,处理器需要分n次,才能完成全部数据的读取。其中n大于或等于2。
112.在获取处理器数据读取参数之后,需控制闪存控制器进行数据的读取。故在控制闪存控制进行数据的读取之前,需将处理器数据读取参数转换为闪存控制器的读取参数,具体过程详见s302中的描述。
113.s302,根据闪存控制器数据读取的步长和处理器数据读取参数,确定闪存控制器读取数据的读取参数。
114.由于闪存控制器数据读取的步长是闪存控制器的硬件参数,故闪存控制器不需要获取闪存控制器数据读取的步长。则闪存控制器读取数据的读取参数包括闪存控制器数据读取的起始地址。
115.示例性地,闪存控制器数据读取的步长可以是预先获取的或现获取的,本技术对此不作限定。
116.进一步地,由于处理器数据读取的步长一般大于闪存控制器数据读取的步长,因此,处理器一次数据读取的数据量,闪存控制器需要分n次读取。这样,对于闪存控制器而言,全部数据需分n
×
n次读取。因此,s302中确定的闪存控制器读取数据的读取参数包括闪存控制器n
×
n次数据读取的起始地址。
117.以下,为了方便描述,将闪存控制器数据读取的起始地址分为n组,每组包括n个数据读取的起始地址,且每组包括的n个数据读取的起始地址分别为闪存控制器n次数据读取的起始地址。在具体实现中,闪存控制器数据读取的起始地址可以分为n组,也可以不分为n组,本技术实施例对此不作限定。
118.在s302中,首先,根据闪存控制器数据读取的步长和处理器数据读取的步长,确定上文所述的n。具体的,n满足以下公式(1):
[0119][0120]
其中,m1为处理器数据读取的步长,m2为闪存控制器数据读取的步长。
[0121]
例如,若处理器数据读取的步长为128k,即m1=128k;闪存控制器数据读取的步长为2k,即m2=2k,则闪存控制器需要分64次(即n=64)读取处理器一个步长对应的数据量。
[0122]
其次,确定n组闪存控制器数据读取的起始地址。
[0123]
应理解,在s320中,可以一次性确定n组闪存控制器数据读取的起始地址,也可以分n次分别确定n组闪存控制器数据读取的起始地址。
[0124]
具体的,闪存控制器第i次数据读取的起始地址li满足以下公式:
[0125]
li=l0+(i-1)
×
m2(2)
[0126]
其中,l0为处理器数据读取的起始步长,i=1,2,
……
,n,n+1,
……
,n
×
n。l0,l1,
……
,ln分别为第一组闪存控制器数据读取的起始地址;l
n+1
,l
n+2

……
,l
2n
分别为第二组闪存控制器数据读取的起始地址;
……
;l
(j-1)
×
n+1
,l
(j-1)
×
n+2

……
,l
(j-1)
×
n+n
分别为第j组闪存控制器数据读取的起始地址;
……
;l
(n-1)
×
n+1
,l
(n-1)
×
n+2

……
,l
(n-1)
×
n+n
分别为第n组闪存控制器数据读取的起始地址。
[0127]
在确定闪存控制器读取数据的读取参数后,需要触发闪存控制器工作。具体过程详见s303和s304中的描述。
[0128]
在本技术实施例中,可以通过多个寄存器控制闪存控制器的工作。该多个寄存器中的每个寄存器扮演着不同的角色,即每个寄存器的用途不同。示例性地,可以通过四个寄存器如第一寄存器、第二寄存器和第三寄存器,控制闪存控制器的工作。其中,第一寄存器用于存储闪存控制器数据读取的起始地址。第二寄存器用于控制闪存控制器开始读取数据。第三寄存器用于监视闪存控制器的工作状态,例如第三寄存器可以监视闪存控制器数据是否读取完毕和/或闪存控制器累积数据读取的步长等。在闪存控制器数据已读取完毕的情况下,第三寄存器为空闲状态。
[0129]
本技术实施例对寄存器设置的位置不作限定。例如,寄存器可以设置在处理器中。
[0130]
s303,将闪存控制器读取数据的读取参数写入第一目标地址。其中,第一目标地址和第一寄存器存在映射关系,第一目标地址和闪存控制器存在映射关系。
[0131]
示例性地,本技术实施例中涉及的映射关系可以是预先定义好的。
[0132]
在一些实施例中,可以分n次执行s303。此时,闪存控制器读取数据的读取参数包括一组闪存控制器数据读取的起始地址。
[0133]
在另一些实施例中,s303可以只执行一次。此时,闪存控制器读取数据的读取参数包括n组闪存控制器数据读取的起始地址。
[0134]
应理解,将闪存控制器读取数据的读取参数写入第一目标地址即为将闪存控制器读取数据的读取参数写入该第一目标地址对应的寄存器,即第一寄存器。
[0135]
通过s303,闪存控制器即可获知闪存控制器数据读取的读取参数。
[0136]
进一步地,在将闪存控制器读取数据的读取参数写入第一目标地址之后,需要触发闪存控制器开始进行数据读取,具体过程详见s304中的描述。
[0137]
s304,将开始指令写入第二目标地址。其中,第二目标地址和第二寄存器存在映射关系,第二目标地址和闪存控制器存在映射关系。
[0138]
应理解,将开始指令写入第二目标地址即为将开始指令写入第二目标地址对应的寄存器,即第二寄存器。
[0139]
通过s304,闪存控制器即可开始读取数据,具体过程详见s305中的描述。
[0140]
s305,控制闪存控制器按照第一目标地址中存储的读取参数,从存储器中读取第j组数据。其中,j=1,2,
……
,n。
[0141]
具体的,闪存控制器根据存储器对应的起始地址l
(j-1)
×
n+1
,l
(j-1)
×
n+2

……
,l
(j-1)
×
n+n
,分n次读取第j组数据。其中,闪存控制器每次读取数据量为闪存控制器数据读取的步长对应的数据量,闪存控制器n次读取的总数据量为处理器数据读取步长对应的数据量。
[0142]
此时,即在s305执行过程中,第三寄存器一直监视着闪存控制器的读取状态。同时,即在s305执行过程中,处理器一直循环访问第三寄存器,以便执行s306。
[0143]
s306,判断闪存控制器是否完成第j组数据的读取。
[0144]
示例性地,可以通过判断第三寄存器是否处于空闲状态来实现s306。在第三寄存器为空闲状态的情况下,执行s307。在第三寄存器不为空闲状态的情况下,继续执行s306,直到判断第三寄存器为空闲状态。
[0145]
s307,将第j组数据加载至ram。即以闪存控制器n次读取的数据量为单位传输至ram中。
[0146]
示例性地,闪存控制器可以将第j组数据先缓存至直接存储器访问(direct memory access,dma)控制器,dma控制器再将该第j组数据复制到ram中,并通知处理器,该第j组数据在ram中的地址以及长度。
[0147]
本技术实施例中,也可以通过多个寄存器控制哈希计算模块的工作。该多个寄存器中的每个寄存器扮演着不同的角色,即每个寄存器的用途不同。示例性地,可以通过两个寄存器如第四寄存器和第五寄存器,控制闪存控制器的工作。其中,第四寄存器用于存储第j组数据在ram中的地址以及长度写入第三目标地址。第五寄存器用于监视哈希计算模块的工作状态,例如第五寄存器可以监视哈希计算模块哈希值是否计算完毕。在哈希计算模块哈希值已计算完毕的情况下,第五寄存器为空闲状态。
[0148]
s308,将第j组数据在ram中的地址以及长度写入第三目标地址。其中,第三目标地址和第四寄存器存在映射关系。该第三目标地址和哈希计算模块存在映射关系。
[0149]
应理解,将第j组数据在ram中的地址以及长度写入第三目标地址即为将第j组数据在ram中的地址以及长度写入第三目标地址对应的寄存器,即第四寄存器。
[0150]
通过s308,哈希计算模块即可从ram中获知第j组数据,即s309。
[0151]
s309,控制哈希计算模块按照第三目标地址中存储的第j组数据在ram中的地址以及长度,从ram中读取第j组数据。
[0152]
在哈希计算模块读取第j组数据后,判断哈希计算模块是否完成上次哈希值计算,即s310。
[0153]
s310,判断是否完成第j-1次哈希值计算。
[0154]
示例性地,可以通过判断第五寄存器是否处于空闲状态来实现s310。在第五寄存
器为空闲状态的情况下,开始进行第j次哈希值的计算,即执行s311和s312。在第五寄存器不为空闲状态的情况下,继续执行s310,直到判断第五寄存器为空闲状态。
[0155]
应理解,当j=1时,第0次哈希值的计算结果为0。
[0156]
可选地,当j=1时,可以不用执行s310。
[0157]
在完成第j-1次哈希值计算后,获取第j-1次哈希值的计算结果,即s311。
[0158]
s312,控制哈希计算模块根据第j组数据和第j-1次哈希值的计算结果,进行第j次哈希值计算。
[0159]
应理解,哈希计算模块每次进行哈希值计算数据包括两部分:一部分为第j-1次哈希值的计算结果,另一部分为第j组数据。
[0160]
其中,第j组数据的数据量对应于闪存控制器n次数据读取的数据量,也即处理器一次数据读取的数据量(即处理器数据读取的步长对应的数据量)。例如,若处理器数据读取的步长为128k;闪存控制器数据读取的步长为2k,则第j组数据的数据量对应于闪存控制器分64(此时根据公式(1)可得n=64)次读取的数据量(128k),也即处理器一个步长对应的数据量(128k)。
[0161]
通过s312,可实现用第j次哈希值的计算结果覆盖第j-1次哈希值的计算结果。
[0162]
此外,在控制哈希值计算模块进行第j次哈希值计算的过程,即执行s309至s312的过程中,同时,也可以执行s313,以便确定闪存控制器是继续读取第j+1组数据还是结束读取数据的操作。
[0163]
s313,判断闪存控制器是否完成全部数据的读取。
[0164]
示例性地,可以通过判断闪存控制器累积数据读取的步长是否达到s301中所述的全部数据的数据量的长度来实现s313。
[0165]
示例性地,闪存控制累积数据读取的步长可以通过第三寄存器来获取闪存控制器累积数据读取的步长。
[0166]
在闪存控制器未完成全部数据的读取的情况下,将j加1,并循环执行s305至s313。此时,j<n,闪存控制器开始第j+1组数据的读取,即执行s305至s308。此外,哈希值计算模块开始第j+1次哈希值计算,即执行s309至s312,其中,s309至s312中的j为上一轮j加1。
[0167]
直到s313判断闪存控制器已完成全部数据的读取。在闪存控制器完成全部数据的读取的情况下,结束闪存控制器读取数据的操作,即s314,此时,j=n。
[0168]
通过s301至s314,当j从1取值到n,闪存控制器分n
×
n次完成全部数据的读取,且以n次读取的数据量为单位传输至ram中。此外,哈希值模块分n次完成全部数据的哈希值计算。
[0169]
在一些实施例中,为了更好的减少处理器等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,可以通过调整处理器数据读取的步长,来实现第一时间大于第二时间。其中,第一时间包括闪存控制器从第三寄存器读取第j组数据的时间和闪存控制器将第j组数据加载到ram中的时间。第二时间包括哈希计算模块对第j组数据进行哈希值计算的时间。这样,可以保证闪存控制器在从存储器中读取第j+1组数据(即处理器一次数据读取的数据量)的过程中,哈希计算模块可以完成第j次哈希值的计算。因此,哈希计算模块不需要等待时间,便可以开始第j+1次哈希值的计算。在具体实现的过程中,当控制哈希值计算模块开始进行哈希值计算之后,便可以不用去考虑需要计算哈希值的数据是否闪
存控制器已加载至ram,即当控制哈希值计算模块开始进行哈希值计算之后,控制哈希值计算模块进行哈希值计算的操作不再依赖闪存控制器的操作,即闪存控制器的操作和哈希值计算模块的操作是两个并行且独立的操作。
[0170]
在一些实施例中,在闪存控制器完成全部数据的读取和哈希计算模块完成全部数据的哈希值计算后,还可以进行签名验证,具体过程详见s315中的描述。
[0171]
s315,获取第n次哈希值的计算结果,并进行签名验证。
[0172]
示例性地,将第n次哈希值的计算结果与目标哈希值进行匹配。其中,目标哈希值为软件系统的软件包对应的数据所配置的哈希值。
[0173]
将第n次哈希值的计算结果与目标哈希值进行匹配,可以得到匹配结果,该匹配结果包括第n次哈希值的计算结果与目标哈希值匹配,以及第n次哈希值的计算结果与目标哈希值不匹配。
[0174]
第n次哈希值的计算结果与目标哈希值匹配可以理解为该安全启动校验通过或签名验证通过。
[0175]
在一些实施例中,在第n次哈希值的计算结果与目标哈希值匹配的情况下,可以执行第一预设操作,该第一预设操作为安全启动校验通过或签名验证通过时对应的操作,例如启动电子设备。
[0176]
第n次哈希值的计算结果与目标哈希值不匹配可以理解为该安全启动校验失败(或不通过)或签名验证失败(或不通过)。
[0177]
在一些实施例中,在第n次哈希值的计算结果与目标哈希值不匹配的情况下,可以执行第二预设操作,该第二预设操作为安全启动校验失败(或不通过)或签名验证失败(或不通过)时对应的操作,例如不启动电子设备或采用另一种安全启动检验方法重新进行校验。
[0178]
通过方法300,可以在闪存控制器在读取全部数据中的第j+1组数据的过程中,哈希计算模块便可以开始第j次哈希值计算,实现将闪存控制器读取第j+1组数据的时间和哈希计算模块对第j次哈希值计算的时间的合并,不会像现有方案中必须等处理器将闪存控制器中软件系统的软件包对应的全部数据完全加载到ram之后,哈希计算模块才能够对软件包对应的全部数据进行哈希值计算,进而减少处理器等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
[0179]
表1示出了针对三例待读取的数据,分别通过方法300和现有方案进行数据读取耗时情况。其中,处理器数据读取的步长为128k,闪存控制器数据读取的步长为2k。例如,如表1所示,与现有方案相比,方法300的方案具有以下优点:1、对于相同的待读取的数据大小,通过方法300进行安全启动校验耗时较短。2、方法300的优化效果在90%以上。3、待读取的数据量越大,现有方案进行安全启动校验耗时明显越大,而通过该方法300进行安全启动校验耗时基本保持稳定。
[0180]
表1
[0181]
待读取的数据大小现有方案耗时方法300耗时优化时间优化比例10mb219ms9ms210ms95.8%20mb306ms11ms295ms96.4%30mb392ms12ms380ms97.1%
[0182]
在一些实施例中,在单核或单线程模式下,还可以将其他外围器件(除处理器之外的器件)处理等待时间合并,尽可能减少处理器单独等某一外围设备执行完成的情况,提高全流程的执行效率。
[0183]
示例性地,外围器件可以包括加解密器件、数据压缩器件等,实现边读边解密边哈希计算或边读边解压边哈希计算,提高全流程的执行效率。
[0184]
图5为本技术实施例提供的另一例安全启动校验的方法400。该方法400可以应用于电子设备,例如但不限于是iot设备。示例性地,方法400的执行主体可以是电子设备的处理器或处理单元。
[0185]
例如,如图5所示,该方法400包括:
[0186]
s401,根据目标步长和目标数据的起始地址,分n次对所述目标数据进行读取,所述目标数据包括所述电子设备的软件系统的软件包对应的数据,所述n大于或等于2。
[0187]
示例性地,该目标步长可以是上文方法300中所述的处理器数据读取的步长m1。
[0188]
示例性地,该目标数据的起始地址可以是上文方法300中所述的处理器数据读取的起始地址。
[0189]
在一些实施例中,所述电子设备包括闪存控制器,所述根据目标步长和目标数据的起始地址,分n次对所述目标数据进行读取,包括:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定n个起始地址集合,所述n个起始地址集合中的每个起始地址集合包括n个起始地址,所述n为所述目标步长与所述闪存控制器的步长的比值;控制所述闪存控制器根据第j个起始地址集合和所述闪存控制器的步长,分n次对所述第j组数据进行读取。
[0190]
应理解,对于闪存控制器而言,针对n次中的每次数据读取,闪存控制器需要再分n次读取。这样,闪存控制器需分n
×
n次读取目标数据。
[0191]
应理解,n个起始地址可以理解为闪存控制器n次数据读取的起始地址。
[0192]
示例性地,n个起始地址集合可以是上文方法300中所述的n组闪存控制器数据读取的起始地址。则n个起始地址集合中的每个起始地址集合包括的n个起始地址可以根据上述公式(2)确定。即n个起始地址集合中的第一个起始地址集合包括上文所述的第一组闪存控制器数据读取的起始地址l0,l1,
……
,ln,第二个起始地址集合包括上文所述的第二组闪存控制器数据读取的起始地址l
n+1
,l
n+2

……
,l
2n

……
,第n个起始地址集合包括上文所述的第n组闪存控制器数据读取的起始地址l
(n-1)
×
n+1
,l
(n-1)
×
n+2

……
,l
(n-1)
×
n+n

[0193]
在一些实施例中,闪存控制器还可以将第j组数据加载至ram。
[0194]
s402,在第j次数据读取后,根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算,其中,所述j为大于1,且小于或等于n的整数。
[0195]
在一些实施例中,上述j还可以为大于或等于1,且小于或等于n的整数。此时,在j等于1的情况下,第0次哈希值计算的结果为0。
[0196]
应理解,s402并不是在s401中完成n次数据读取之后执行,而是在s401中完成n次中的第1次数据读取之后便可执行。从而可以在读取第j+1组数据的过程中,便可以开始对第j次哈希值计算,实现将读取第j+1组数据的时间和对第j次哈希值计算的时间的合并,进而减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
[0197]
在一些实施例中,所述电子设备包括哈希计算模块,所述在第j次数据读取后,根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算,包括:在所述闪存控制器进行所述第j次数据读取后,控制所述哈希计算模块根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算。
[0198]
在一些实施例中,哈希计算模块还可以先从ram中读取第j组数据,然后再进行第j次哈希值计算。
[0199]
s403,根据第n次哈希值的计算结果,进行安全启动校验。
[0200]
在一些实施例中,获取目标哈希值,所述目标哈希值为所述软件系统的软件包对应的数据所配置的哈希值;通过比较所述目标哈希值和所述第n次哈希值的计算结果,进行安全启动校验。
[0201]
在一些实施例中,在所述目标哈希值和所述第n次哈希值的计算结果一致的情况下,安全启动校验通过;或,在所述目标哈希值和所述第n次哈希值的计算结果不一致的情况下,安全启动校验不通过。
[0202]
在一些实施例中,所述方法400还包括:
[0203]
s404,调整所述目标步长,以使第一时间大于第二时间,所述第一时间包括所述第j次数据读取所需的时间,所述第二时间包括所述第j次哈希值计算所需的时间。进而保证读取第j+1组数据的过程中,可以完成对第j组数据的哈希值计算。从而更好的减少电子设备等待的时间,提高了安全启动检验的效率,降低了电子设备的启动时间,提高了用户体验。
[0204]
图6为本技术实施例提供的另一例安全启动校验的方法500。该方法500可以应用于电子设备,例如但不限于是iot设备。示例性地,方法500的执行主体可以是电子设备的处理器或处理单元。
[0205]
例如,如图6所示,该方法500包括:
[0206]
s501,根据目标步长和目标数据的起始地址,从目标数据中读取第一组数据,所述目标数据包括所述电子设备的软件系统的软件包对应的数据。
[0207]
示例性地,该目标步长可以是上文方法300中所述的处理器数据读取的步长m1。
[0208]
示例性地,该目标数据的起始地址可以是上文方法300中所述的处理器数据读取的起始地址。
[0209]
在一些实施例中,所述电子设备包括闪存控制器,所述根据目标步长和目标数据的起始地址,从目标数据中读取第一组数据,包括:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定第一起始地址集合,所述第一起始地址集合包括n个起始地址,所述n为所述目标步长与所述闪存控制器的步长的比值;控制所述闪存控制器根据所述第一起始地址集合和所述闪存控制器的步长,分n次从所述目标数据中读取所述第一组数据。
[0210]
应理解,n个起始地址可以理解为闪存控制器n次数据读取的起始地址。
[0211]
在一些实施例中,闪存控制器还可以将第一组数据加载至ram。
[0212]
s502,根据所述第一组数据,进行第一次哈希值计算,以及,根据所述目标步长和所述目标数据的起始地址,从所述目标数据中读取第二组数据,所述第二组数据和所述第一组数据是所述目标数据中不同的数据。
[0213]
在一些实施例中,所述电子设备包括闪存控制器,所述根据所述目标步长和所述目标数据的起始地址,从所述目标数据中读取第二组数据,包括:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定第二起始地址集合,所述第二起始地址集合包括n个起始地址,所述第二起始地址集合和所述第一起始地址集合不同;控制所述闪存控制器根据所述第二起始地址集合和所述闪存控制器的步长,分n次从所述目标数据中读取所述第二组数据。
[0214]
示例性地,第一起始地址集合和第二起始地址分别包括的n个起始地址可以根据上述公式(2)确定。即第一起始地址集合包括上文所述的第一组闪存控制器数据读取的起始地址l0,l1,
……
,ln,第二起始地址集合包括上文所述的第二组闪存控制器数据读取的起始地址l
n+1
,l
n+2

……
,l
2n

[0215]
在一些实施例中,闪存控制器还可以将第二组数据加载至ram。
[0216]
在一些实施例中,所述电子设备包括哈希计算模块,所述根据所述第一组数据,进行第一次哈希值计算,包括:控制所述哈希计算模块根据所述第一组数据,进行第一次哈希值计算。
[0217]
在一些实施例中,哈希计算模块还可以先从ram中读取第一组数据,然后再进行第一次哈希值计算。
[0218]
s503,根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算。
[0219]
在一些实施例中,所述电子设备包括哈希计算模块,所述根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算,包括:控制所述哈希计算模块根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算。
[0220]
在一些实施例中,哈希计算模块还可以先从ram中读取第二组数据,然后再进行第二次哈希值计算。
[0221]
s504,根据所述第二次哈希值的计算结果,进行安全启动校验。
[0222]
在一些实施例中,获取目标哈希值,所述目标哈希值为所述软件系统的软件包对应的数据所配置的哈希值;通过比较所述目标哈希值和所述第二次哈希值的计算结果,进行安全启动校验。
[0223]
在一些实施例中,在所述目标哈希值和所述第二次哈希值的计算结果一致的情况下,安全启动校验通过;或,在所述目标哈希值和所述第二次哈希值的计算结果不一致的情况下,安全启动校验不通过。
[0224]
在一些实施例中,所述方法500还包括:
[0225]
s505,调整所述目标步长,以使第一时间大于第二时间,所述第一时间包括读取所述第二组数据所需的时间,所述第二时间包括所述第一次哈希值计算所需的时间。
[0226]
上文结合图4至图6,详细描述了本技术提供的安全启动检验的方法,下面将结合图7,详细描述本技术的电子设备的实施例。可以理解的是,为了实现上述实施例中功能,图7中的电子设备包括了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本技术中所公开的实施例描述的各示例的单元及方法步骤,本技术能够以硬件或硬件和计算机软件相结合的形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用场景和设计约束条件。
[0227]
图7为本技术的实施例提供的一例电子设备的结构示意图。
[0228]
例如,如图7所示,该电子设备700包括:读取单元701、处理单元702和检验单元703。
[0229]
示例性地,该电子设备700可以是iot设备。
[0230]
在一种可能实现的方式中,读取单元701,用于根据目标步长和目标数据的起始地址,分n次对所述目标数据进行读取,所述目标数据包括所述电子设备的软件系统的软件包对应的数据,所述n大于或等于2;处理单元702,用于在第j次数据读取后,根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算,其中,所述j为大于1,且小于或等于n的整数;检验单元703,用于根据第n次哈希值的计算结果,进行安全启动校验。
[0231]
在一些实施例中,该电子设备700包括闪存控制器,所述处理单元702还用于:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定n个起始地址集合,所述n个起始地址集合中的每个起始地址集合包括n个起始地址,所述n为所述目标步长与所述闪存控制器的步长的比值;所述读取单元701具体用于:控制所述闪存控制器根据第j个起始地址集合和所述闪存控制器的步长,分n次对所述第j组数据进行读取。
[0232]
在一些实施例中,该电子设备700包括哈希计算模块,所述检验单元703具体用于:在所述闪存控制器进行所述第j次数据读取后,控制所述哈希计算模块根据所述第j次读取的第j组数据和第j-1次哈希值计算的结果,进行第j次哈希值计算。
[0233]
在一些实施例中,该电子设备700还包括调整单元,用于调整所述目标步长,以使第一时间大于第二时间,所述第一时间包括读取所述第j次数据所需的时间,所述第二时间包括计算所述第j次哈希值所需的时间。
[0234]
在一些实施例中,所述检验单元703还具体用于:获取目标哈希值,所述目标哈希值为所述软件系统的软件包对应的数据所配置的哈希值;通过比较所述目标哈希值和所述第n次哈希值的计算结果,进行安全启动校验。
[0235]
在一些实施例中,在所述目标哈希值和所述第n次哈希值的计算结果一致的情况下,安全启动校验通过;或,在所述目标哈希值和所述第n次哈希值的计算结果不一致的情况下,安全启动校验不通过。
[0236]
在另一种可能实现的方式中,读取单元701,用于根据目标步长和目标数据的起始地址,从目标数据中读取第一组数据,所述目标数据包括所述电子设备的软件系统的软件包对应的数据;处理单元702,用于根据所述第一组数据,进行第一次哈希值计算,以及,所述读取单元701,还用于根据所述目标步长和目标数据的起始地址,从目标数据中读取第二组数据,所述第二组数据和所述第一组数据是所述目标数据中不同的数据;所述处理单元702,还用于根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算;检验单元703,用于根据所述第二次哈希值的计算结果,进行安全启动校验。
[0237]
在一些实施例中,该电子设备700包括闪存控制器,所述处理单元702还用于:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定第一起始地址集合,所述第一起始地址集合包括n个起始地址,所述n为所述目标步长与所述闪存控制器的步长的比值;所述读取单元701具体用于:控制所述闪存控制器根据所述第一起始地址集合和所述闪存控制器的步长,分n次从所述目标数据中读取所述第一组数据。
[0238]
在一些实施例中,所述处理单元702还用于:根据所述闪存控制器的步长、所述目标步长和所述目标数据的起始地址,确定第二起始地址集合,所述第二起始地址集合包括n个起始地址,所述第二起始地址集合和所述第一起始地址集合不同;所述读取单元701还具体用于:控制所述闪存控制器根据所述第二起始地址集合和所述闪存控制器的步长,分n次从所述目标数据中读取所述第二组数据。
[0239]
在一些实施例中,该电子设备包括哈希计算模块,所述处理单元702还用于:控制所述哈希计算模块根据所述第一组数据,进行第一次哈希值计算;控制所述哈希计算模块根据所述第二组数据和所述第一次哈希值计算的结果,进行第二次哈希值计算。
[0240]
在一些实施例中,该电子设备700还包括调整单元,用于调整所述目标步长,以使第一时间大于第二时间,所述第一时间包括读取所述第二组数据所需的时间,所述第二时间包括计算所述第一次哈希值所需的时间。
[0241]
在一些实施例中,所述检验单元703还具体用于:获取目标哈希值,所述目标哈希值为所述软件系统的软件包对应的数据所配置的哈希值;通过比较所述目标哈希值和所述第二次哈希值的计算结果,进行安全启动校验。
[0242]
在一些实施例中,在所述目标哈希值和所述第二次哈希值的计算结果一致的情况下,安全启动校验通过;或,在所述目标哈希值和所述第二次哈希值的计算结果不一致的情况下,安全启动校验不通过。
[0243]
上述各个附图对应的流程的描述各有侧重,某个流程中没有详述的部分,可以参见其他流程的相关描述。
[0244]
本技术实施例还提供一种电子设备,包括:一个或多个处理器;一个或多个存储器;该一个或多个存储器存储有一个或多个计算机程序,该一个或多个计算机程序包括指令,当该指令被一个或多个处理器执行时,使得如前文中的方法被执行。
[0245]
示例性地,该电子设备为iot设备。
[0246]
本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质具有程序指令,当所述程序指令被直接或者间接执行时,使得前文中的方法得以实现。
[0247]
本技术实施例还提供了一种包含指令的计算机程序产品,当其在计算设备上运行时,使得计算设备执行前文中的方法,或者使得所述计算设备实现前文中的电子设备的功能。
[0248]
本技术实施例还提供一种芯片,包括至少一个处理器和接口电路,所述接口电路用于为所述至少一个处理器提供程序指令或者数据,所述至少一个处理器用于执行所述程序指令,使得前文中的方法得以实现。
[0249]
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传
输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘。
[0250]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0251]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0252]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0253]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0254]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0255]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0256]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1