电子装置及其控制方法与流程

文档序号:31873247发布日期:2022-10-21 20:17阅读:71来源:国知局
电子装置及其控制方法与流程

1.本技术涉及电子装置,具体涉及一种电子装置的启动流程及电子装置的控制方法。


背景技术:

2.图1是现有技术的运行linux系统的电子装置的启动流程(boot flow)的示意图,主要包括以下数个启动程序:rom boot(只读存储器(read-only memory,rom)启动)110、miniboot 120、u-boot 130及kernel(核心)140。rom boot、miniboot、u-boot及kernel为本技术领域具有通常知识者所熟知,故不再赘述。
3.为了避免启动流程代码(即固件)遭到篡改,rom boot 110会使用公钥122及签章(signature)124来验证(verify)miniboot 120的真实性(authenticity),而miniboot 120使用公钥122及签章132来验证u-boot 130的真实性。签章124与签章132是使用私钥对启动流程代码(即,miniboot 120与u-boot 130)进行签章(sign)所产生的数据,而该私钥与公钥122是一密钥对。
4.为防止公钥122不被篡改,现有技术是将公钥122储存于受保护的储存媒体内,现有技术的缺点在于,公钥122的大小会大大地影响电子产品的成本(公钥122愈大,则所需的储存媒体愈大,成本愈高)。


技术实现要素:

5.本技术实施例提供一种电子装置及其控制方法,以改善先前技术的不足。
6.本技术实施例提供一种电子装置,该电子装置存取储存一公钥及该电子装置的多个启动流程代码的一外部储存装置,该电子装置包括:一只读存储器、一计算电路以及一加密及解密电路。只读存储器用来储存该公钥的一第一特征值。计算电路用来执行该多个启动流程代码。加密及解密电路用来根据该第一特征值对该公钥进行验证。该公钥用以验证该多个启动流程代码,该第一特征值的位元数小于该公钥的位元数。该只读存储器、该计算电路及该加密及解密电路设置于一第一芯片上,而该外部储存装置由一第二芯片构成。
7.本技术实施例提供一种电子装置的控制方法,该电子装置包括一只读存储器,该只读存储器储存一公钥的一第一特征值,该方法包括:从一外部储存装置读取该公钥及该电子装置的多个启动流程代码;执行该多个启动流程代码;以及,根据该第一特征值对该公钥进行验证。该公钥用以验证该多个启动流程代码,该第一特征值的位元数小于该公钥的位元数。该只读存储器设置于一第一芯片上,而该外部储存装置由一第二芯片构成。
8.本技术的实施例所体现的技术手段可以改善先前技术的缺点的至少其中之一,因此本技术相较于先前技术可以降低成本。
9.有关本技术的特征、实作与功效,兹配合图式作实施例详细说明如下。
附图说明
10.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
11.图1是现有技术的运行linux系统的电子装置的启动流程的示意图;
12.图2是本技术实施例提供的电子装置的功能方块图;
13.图3是本技术实施例提供的电子装置的控制方法的流程图;
14.图4是本技术实施例提供的电子装置启动流程的流程图;
15.图5是本技术实施例提供的签章验证流程的流程图;
16.图6是本技术实施例提供的一次性可编程只读存储器的示意图;以及
17.图7是本技术实施例提供的烧录控制的流程图。
18.【符号说明】
19.110:只读存储器启动(rom boot)
20.120:miniboot
21.122:公钥
22.130:u-boot
23.140:核心(kernel)
24.124,132:签章
25.201:电子装置
26.202:外部存储器
27.203:外部储存装置
28.210:计算电路
29.220:储存控制电路
30.230:只读存储器控制电路
31.240:加密及解密电路
32.250:第一只读存储器
33.260:第二只读存储器
34.270:储存电路
35.272:暂存器
36.274:存储器
37.bcode:启动流程代码
38.pkey:公钥
39.dgt1:第一特征值
40.dgt2:第二特征值
41.s510:公钥验证程序
42.s520:签章验证程序
43.600:一次性可编程只读存储器
44.610:存储器区块
45.620:控制位元
46.s310,s320,s330,s410,s420,s430,s440,s450,s460,s470,s480,s490,s510,s512,s514,s516,s518,s519,s520,s522,s524,s526,s528,s710,s720,s730,s740:步骤
具体实施方式
47.以下说明内容的技术用语是参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释是以本说明书的说明或定义为准。
48.本技术的揭露内容包括电子装置及其控制方法。由于本技术的电子装置所包括的部分元件单独而言可能为已知元件,因此在不影响该装置发明的充分揭露及可实施性的前提下,以下说明对于已知元件的细节将予以节略。此外,本技术的电子装置的控制方法的部分或全部流程可以是软件和/或固件的形式,并且可通过本技术的电子装置或其等效装置来执行,在不影响该方法发明的充分揭露及可实施性的前提下,以下方法发明的说明将着重于步骤内容而非硬件。
49.图2是本技术实施例提供的电子装置的功能方块图。电子装置201耦接外部存储器202(例如动态随机存取存储器(dynamic random access memory,dram))及外部储存装置203(例如快闪存储器(flash memory)、嵌入式多媒体卡(embedded multimedia card,emmc)或安全数位(secure digital,sd)记忆卡)。外部储存装置203储存电子装置201的启动流程代码bcode(即,与电子装置201启动相关的固件)及公钥pkey。
50.电子装置201包括计算电路210、储存控制电路220、只读存储器控制电路230、加密及解密电路240、第一只读存储器250、第二只读存储器260及储存电路270。储存电路270包括暂存器272及存储器274(例如静态随机存取存储器(static random access memory,sram))。在一实施例中,电子装置201由一芯片构成,而计算电路210、储存控制电路220、只读存储器控制电路230、加密及解密电路240、第一只读存储器250、第二只读存储器260及储存电路270设置于此芯片上,而外部存储器202及外部储存装置203各由另一芯片构成。
51.在一些实施例中,启动流程代码bcode包括图1的rom boot以外的部分(其中公钥pkey可以对应到公钥122),而rom boot储存于第一只读存储器250。与miniboot、u-boot及kernel相关的程序码可以以影像档案(image file)的形式储存于外部储存装置203。储存控制电路220可以在适当的时间从外部储存装置203读取启动流程代码bcode,并且将启动流程代码bcode储存至外部存储器202。计算电路210及加密及解密电路240可以存取外部存储器202以取得启动流程代码bcode。启动流程代码bcode由计算电路210执行。计算电路210可以通过更改暂存器272的暂存值来控制只读存储器控制电路230及加密及解密电路240。
52.图3是本技术实施例提供的电子装置的控制方法的流程图,包括以下步骤。
53.步骤s310:只读存储器控制电路230从第二只读存储器260读取第一特征值dgt1。
54.步骤s320:只读存储器控制电路230将第一特征值dgt1储存至储存电路270,例如,储存到存储器274中。
55.步骤s330:计算电路210执行电子装置201的启动流程。以下将配合图4详细说明电子装置201的启动流程。
56.如图3所示,第一特征值dgt1是在电子装置201启动(步骤s330)之前就被从第二只读存储器260读出(步骤s310),并储存至储存电路270(步骤s320)。更明确地说,只读存储器
控制电路230被设计为一旦电子装置201接上电源或是开机就自动执行步骤s310及步骤s320。因为第一特征值dgt1在电子装置201的启动流程中扮演关键的角色(将于下方详述),所以在启动流程开始之前就先将第一特征值dgt1备妥有助于提升启动流程的顺畅度及稳定度。
57.图4是本技术实施例提供的电子装置启动流程的流程图。以下的讨论请同时参阅图2及图4。
58.步骤s410:计算电路210执行rom boot。更明确地说,计算电路210从第一只读存储器250读取rom boot并执行rom boot。在一实施例中,rom boot代码中包括启动公钥验证及启动miniboot签章验证的指令或代码,计算电路210执行到启动公钥验证及启动miniboot签章验证的指令或代码时会发送控制指令至加密及解密电路240以进行验证流程。在一实施例中,rom boot代码中亦包括将miniboot代码从外部储存装置203读取至电子装置201一存储器的指令或代码,其中该存储器例如可包括于储存电路270中。
59.步骤s420:计算电路210及加密及解密电路240验证miniboot的签章。签章验证流程将在下方配合图5详述。
60.步骤s430:判断验证是否成功(成功代表签章为真(authentic),即miniboot没有被篡改;失败代表公钥pkey和/或签章为假(inauthentic),即启动流程代码bcode和/或公钥pkey可能被篡改)。如果验证成功,则启动流程前往步骤s440;否则,结束启动流程(步骤s490)。
61.步骤s440:计算电路210执行miniboot,即,计算电路210从电子装置201的存储器读取miniboot并执行。在一实施例中,miniboot代码包括用以初始化外部存储器202的指令或代码,计算电路210执行miniboot的过程中包括初始化外部存储器202的操作。
62.步骤s450:计算电路210及加密及解密电路240验证u-boot的签章。签章验证流程将在下方配合图5详述。
63.步骤s460:判断验证是否成功。如果验证成功(代表u-boot没有被篡改),则启动流程前往步骤s470;否则,结束启动流程(步骤s490)。
64.步骤s470:计算电路210执行u-boot,即,计算电路210从外部存储器202读取u-boot并执行。
65.步骤s480:计算电路210执行kernel,即,计算电路210从外部存储器202读取kernel并执行。
66.步骤s490:结束启动流程,即,计算电路210停止执行启动流程。
67.在一实施例中,在执行步骤s480前,亦可利用计算电路210及加密及解密电路240验证kernel的签章,确认kernel未被修改后才执行kernel。
68.图5是本技术实施例提供的签章验证流程的流程图,主要包括公钥验证程序s510及签章验证程序s520。以下的讨论请同时参阅图2及图5。
69.公钥验证程序s510包括以下步骤。
70.步骤s512:加密及解密电路240从储存电路270的存储器274中读取第一特征值dgt1。第一特征值dgt1已在启动流程开始之前被储存于储存电路270(步骤s320)。在一实施例中,为提高安全性,电子装置201中仅加密及解密电路240可控制只读存储器控制电路230以从第二只读存储器读取第一特征值dgt1,计算电路210并不知道第一特征值dgt1的位置
也无法读取第一特征值dgt1。
71.步骤s514:计算电路210从外部储存装置203读取公钥pkey,并且将公钥pkey储存至储存电路270的暂存器272。
72.步骤s516:计算电路210以第一特征值运算方法对公钥pkey进行特征值运算以得到公钥pkey的第二特征值dgt2,并且将第二特征值dgt2储存至储存电路270的暂存器272。在一实施例中,可由加密及解密电路240对公钥pkey进行特征值运算以得到公钥pkey的第二特征值dgt2。在电子装置201出厂前,电子装置201的制造商使用该第一特征值运算方法对公钥pkey进行特征值运算以得到第一特征值dgt1,并且将第一特征值dgt1通过只读存储器控制电路230储存至第二只读存储器260。在一些实施例中,该第一特征值运算方法包括但不限于杂凑算法(亦称为杂凑函式(hash function)),而其他的特征值运算方法亦适用于本案。第一特征值dgt1的长度(即,位元数)小于公钥pkey的长度。
73.步骤s518:加密及解密电路240从储存电路270的暂存器272读取第二特征值dgt2,并且比对第一特征值dgt1与第二特征值dgt2。
74.步骤s519:加密及解密电路240判断第一特征值dgt1是否等于第二特征值dgt2。如果第一特征值dgt1等于第二特征值dgt2,则进入签章验证程序s520;否则,加密及解密电路240判定签章验证失败。
75.由于公钥pkey的第一特征值dgt1是以第一特征值运算方法对公钥pkey运算所产生结果(即,第一特征值dgt1在某种程度上可代表公钥pkey),所以在第一特征值dgt1及第二特征值dgt2都没有被篡改的情况下,步骤s519的结果应该为是。然而,如果第一特征值dgt1及第二特征值dgt2的任一者被篡改(代表电子装置201和/或外部储存装置203很可能已遭到恶意攻击),则计算电路210不应该继续电子装置201的启动流程。因此,当步骤s519的结果为否时,加密及解密电路240通过暂存器272通知计算电路210公钥pkey为假,并且略过签章验证程序s520。当公钥pkey为假时,签章验证程序s520必将失败。因此,计算电路210可以根据公钥pkey为假来直接认定签章验证失败(即,步骤s430及步骤s460的结果为否)并结束启动流程(步骤s490)。
76.签章验证程序s520包括以下步骤。
77.步骤s522:加密及解密电路240读取启动流程代码bcode。更明确地说,如果正在执行步骤s420,则加密及解密电路240在此步骤是从储存电路270读取与miniboot相关的程序码;如果正在执行步骤s450,则加密及解密电路240在此步骤是从外部存储器202读取与u-boot相关的程序码。
78.步骤s524:加密及解密电路240使用第二特征值运算方法对启动流程代码bcode进行运算,以得到启动流程代码bcode的第三特征值。在一些实施例中,第二特征值运算方法等于第一特征值运算方法。
79.步骤s526:加密及解密电路240使用公钥pkey解密签章,以得到启动流程代码bcode的第四特征值。更明确地说,如果正在执行步骤s420,则加密及解密电路240在此步骤是解密miniboot的签章(例如图1的签章124);如果正在执行步骤s450,则加密及解密电路240在此步骤是解密u-boot的签章(例如图1的签章132)。如果启动流程代码bcode没有遭到篡改,则第三特征值应该等于第四特征值。
80.步骤s528:加密及解密电路240判断第三特征值是否等于第四特征值。当第三特征
值不等于第四特征值时,代表miniboot(或u-boot)及其签章的至少其中一者已遭到篡改;此时计算电路210应该停止执行启动流程。因此,当步骤s528的结果为否时,加密及解密电路240通过暂存器272通知计算电路210签章验证失败。步骤s528的结果为是代表签章验证成功。
81.综上所述,因为本技术在第二只读存储器260储存的是公钥pkey的特征值(而非公钥pkey本身),且特征值的长度小于公钥pkey的长度,所以本案可以使用较小的第二只读存储器260(即,降低电子装置201的成本)。举例来说,如果公钥pkey是rsa2048加密算法或rsa4096加密算法的公钥,则公钥pkey的长度是2048位元或4096位元;而且,当第一特征值dgt1是杂凑函式sha-256的结果时,第一特征值dgt1的长度是256位元,只有2048位元或4096位元的1/8或1/16,大幅降低对第二只读存储器260的需求。
82.在一些实施例中,第二只读存储器260可以是一次性可编程只读存储器(one time programmable(otp)read-only memory(rom))(例如一次性写入存储器(one time programmable(otp)memory)或电子可程序熔丝(electrically programmable fuse,efuse))。一次性可编程只读存储器可以防止数据被篡改,进一步确保第一特征值dgt1的真实性。当第二只读存储器260以一次性可编程只读存储器实作时,储存公钥pkey的特征值(而非公钥pkey本身)还可以进一步提高第二只读存储器260的烧录成功率(即,提高电子装置201的良率),原因是特征值的位元数小于公钥pkey的位元数(待烧录的值的位元数愈小,则烧录的成功率愈高)。
83.图6是本技术实施例提供的一次性可编程只读存储器的示意图。一次性可编程只读存储器600包括存储器区块610及控制位元620。存储器区块610可以储存前述的第一特征值dgt1,而控制位元620指示存储器区块610是否可以被烧录。当第二只读存储器260以一次性可编程只读存储器600实作时,只读存储器控制电路230根据控制位元620的值决定是否烧录存储器区块610。举例来说,当控制位元620的值为0时,只读存储器控制电路230才可烧录存储器区块610。当第二只读存储器260以图6的一次性可编程只读存储器600实作时,本技术的电子装置的控制方法还包括第二只读存储器260的烧录控制。烧录控制的流程如图7所示,包括以下步骤。
84.步骤s710:在对存储器区块610进行烧录之前,只读存储器控制电路230读取控制位元620的值。
85.步骤s720:判断控制位元620是否等于一预设值(例如位元0)。如果等于,则流程进入步骤s730;否则,流程进入步骤s740。
86.步骤s730:只读存储器控制电路230烧录存储器区块610。
87.步骤s740:只读存储器控制电路230拒绝烧录存储器区块610。
88.许多一次性可编程只读存储器是以位元为单位进行烧录。举例来说,如果存储器区块610被烧录过后的值为“11111010”,则该值的第0及第2位元仍可以再次被烧录为1,但其他位元则无法再被烧录为0。图7的烧录控制可以防止存储器区块610的数据被篡改或恶意破坏(例如二次烧录)。
89.在一些实施例中,当第一特征值运算方法是杂凑算法(例如密码杂凑函式(cryptographic hash function))时,第一特征值dgt1及第二特征值dgt2皆为公钥pkey的杂凑值(即,杂凑算法的结果,又称为讯息摘要(message digest)或摘要(digest))。因为杂
凑值具有相当的独特性,所以部分的杂凑值(例如杂凑值的前半部或后半部)就足以代表公钥pkey。换句话说,第二只读存储器260可以只储存部分的第一特征值dgt1,以进一步降低电子装置201的成本及提升一次性可编程只读存储器600的烧录成功率。当第二只读存储器260只储存部分的第一特征值dgt1时,加密及解密电路240在步骤s518中以第二特征值dgt2的相对应部分来与第一特征值dgt1的该部分做比较。
90.计算电路210可以是具有程序执行能力的电路或电子元件,例如中央处理器、微处理器、微控制器、微处理单元、数位讯号处理电路(digital signal processor,dsp)或其等效电路。在其他的实施例中,本领域技术人员可以根据以上的揭露内容来设计计算电路210,也就是说,计算电路210可以是特殊应用集成电路(application specific integrated circuit,asic)或是由可程序化逻辑装置(programmable logic device,pld)等电路或硬件实作。
91.在一些实施例中,电子装置201是一个芯片,而电子装置201、外部存储器202及外部储存装置203形成一个嵌入式系统。
92.本技术的嵌入式系统同时储存公钥pkey及其第一特征值dgt1,这有助于电子装置201有效得知嵌入式系统是否遭受错误注入(fault injection)的恶意攻击。因为如果嵌入式系统遭到错误注入的恶意攻击,则公钥pkey及第一特征值dgt1都会被改变,如此一来公钥验证程序s510必然不会成功。
93.需要说明的是,本技术实施例中,“多个”指代“两个及两个以上”。
94.前述实施例虽以电子装置的启动流程为例,然此并非对本技术的限制,本技术领域人员可依本技术的揭露适当地将本技术应用于其它类型的数据的签章验证程序。
95.以上对本技术实施例所提供的电子装置及其控制方法进行了详细介绍。本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1