CN116401091A - 嵌入式代码写入、运行方法及嵌入式系统 - Google Patents
嵌入式代码写入、运行方法及嵌入式系统 Download PDFInfo
- Publication number
- CN116401091A CN116401091A CN202111630589.XA CN202111630589A CN116401091A CN 116401091 A CN116401091 A CN 116401091A CN 202111630589 A CN202111630589 A CN 202111630589A CN 116401091 A CN116401091 A CN 116401091A
- Authority
- CN
- China
- Prior art keywords
- code
- embedded
- identification code
- data
- verification
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 128
- 238000012795 verification Methods 0.000 claims abstract description 78
- 238000013475 authorization Methods 0.000 claims description 27
- 238000013524 data verification Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 238000001514 detection method Methods 0.000 abstract description 13
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 13
- 230000000694 effects Effects 0.000 description 5
- 239000012634 fragment Substances 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013478 data encryption standard Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种嵌入式代码写入、运行、系统方法及嵌入式系统。其中,所述嵌入式代码写入方法用于生成校验信息,加密识别码得到至少两个识别码密文,组合嵌入式代码数据、所述校验信息以及至少两个识别码密文得到组合数据并写入嵌入式硬件,为后续的代码执行前的验证阶段提供了证明信息,从而提高了代码检测的安全级别。所述嵌入式代码运行方法,通过在执行业务方法之前对所述校验信息和所述至少两个识别码密文进行验证,保证了被恶意篡改的业务方法不会被执行。两者相互配合,可以验证是否存在恶意第三方对嵌入式硬件中的代码进行了修改,保护了业务方法的运行逻辑;解决了现有技术中代码的可信度检测不够全面,安全级别不高的问题。
Description
技术领域
本发明涉及嵌入式技术领域,特别涉及一种嵌入式代码写入、运行方法及嵌入式系统。
背景技术
在一些应用场景下,对嵌入式硬件的安全要求比较高,例如车用或车规级微控制器(MCU)对代码安全性的要求非常高,不合法代码在MCU中运行可能会造成错误控制,危害操作人员及他人的生命安全,因此对MCU中运行代码的可信度检测,保证代码安全运行具有非常重要的意义。再例如,在物联网信息安全领域,为保证用户信息安全,同样有必要对代码进行检测,保证运行在MCU中的代码未被恶意篡改或被注入恶意代码。
然而,现有技术中对嵌入式硬件的代码的可信度检测不够全面,安全级别不高。因此需要设计更为全面的可信度检测以解决上述问题。
发明内容
本发明的目的在于提供一种嵌入式代码写入、运行方法及嵌入式系统,以解决现有技术中代码的可信度检测不够全面,安全级别不高的问题。
为了解决上述技术问题,根据本发明的第一个方面,提供了一种嵌入式代码写入方法,包括如下步骤:获取嵌入式代码数据;基于所述嵌入式代码数据生成校验信息;获取识别码,其中,每次执行所述嵌入式代码写入方法所使用的识别码均不同;基于至少两种加密方法加密所述识别码得到至少两个识别码密文;组合所述嵌入式代码数据、所述校验信息以及所述至少两个识别码密文得到组合数据;以及,向嵌入式硬件写入所述组合数据。
可选的,所述识别码是密码学安全的随机数或用户自定义的序列号。
可选的,在基于至少两种加密方法加密所述识别码得到至少两个识别码密文的步骤之后,所述嵌入式代码写入方法的步骤还包括:以密码学安全的方式销毁所述识别码。
可选的,所述基于所述嵌入式代码数据生成校验信息的步骤包括:生成所述嵌入式代码数据的奇偶校验码,生成所述嵌入式代码数据的循环冗余校验码,以及,生成所述嵌入式代码数据的哈希散列值中的至少一者。
可选的,所述至少两种加密方法对应的至少两种解密方法只保存在所述嵌入式硬件的引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。
可选的,所述组合的步骤包括:将所述至少两个识别码密文中的每一个组合至一个独立的第一预设地址,所述第一预设地址的数量和所述识别码密文的数量相对应,及将所述校验信息组合至第二预设地址。
可选的,所述嵌入式硬件中,所述第一预设地址及所述第二预设地址只保存在引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。
为了解决上述技术问题,根据本发明的第二个方面,提供了一种嵌入式代码运行方法,包括如下步骤:读取组合数据,所述组合数据包括嵌入式代码数据、校验信息以及至少两个识别码密文;以及,当所述组合数据通过数据校验并且通过识别码校验时,执行所述嵌入式代码数据;否则,结束响应。
其中,所述数据校验的步骤包括:计算所述嵌入式代码数据的校验值,若该校验值与所述校验信息相同,则所述数据校验的结果为通过;所述识别码校验的步骤包括:基于不同的解密方法解密不同的所述识别码密文得到至少两个识别码明文,若至少两个所述识别码明文不同,则所述识别码校验的结果为不通过。
可选的,所述嵌入式代码运行方法还包括:当所述组合数据通过所述数据校验并且通过所述识别码校验时,且所述至少两个识别码密文不存在于授权成功库中,则将所述校验信息以及所述至少两个识别码密文存储于所述授权成功库的同一行中。
当所述组合数据通过数据校验并且通过识别码校验时,所述嵌入式代码运行方法还包括:若所有的所述识别码明文均相同,则判断所述至少两个识别码密文是否存在于所述授权成功库中;若不存在,所述识别码校验的结果为通过;若存在,比较所述至少两个识别码密文在所述授权成功库中对应的所述校验信息与当前的所述校验信息,若相同,所述识别码校验的结果为通过,否则,所述识别码校验的结果为不通过。
可选的,所述嵌入式代码运行方法还包括:获取清除指令,所述清除指令包含预设口令信息;以及,验证所述预设口令信息;若通过,清除所述授权成功库中的至少一行;若不通过,结束响应。
可选的,所述读取组合数据的步骤包括:从每一个独立的第一预设地址读取所述至少两个识别码密文中的一个,所述第一预设地址的数量和所述识别码密文的数量相对应,及从第二预设地址读取所述校验信息。
可选的,所述第一预设地址及第二预设地址只保存在执行所述嵌入式代码数据的嵌入式硬件的引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。
为了解决上述技术问题,根据本发明的第三个方面,提供了一种嵌入式代码写入设备,所述嵌入式代码写入设备用于执行上述的嵌入式代码写入方法向嵌入式硬件写入数据。
为了解决上述技术问题,根据本发明的第四个方面,提供了一种嵌入式硬件,所述嵌入式硬件上存储有运行验证程序,所述运行验证程序运行时,执行上述的嵌入式代码运行方法。
可选的,所述嵌入式硬件包括引导地址,所述引导地址用于存储所述运行验证程序;所述嵌入式硬件开机时仅支持从所述引导地址处启动。
可选的,所述嵌入式硬件为微控制器,所述运行验证程序为BootLoader。
为了解决上述技术问题,根据本发明的第四个方面,提供了一种嵌入式系统,包括上述的嵌入式代码写入设备以及上述的嵌入式硬件。
与现有技术相比,本发明提供的一种嵌入式代码写入、运行方法及嵌入式系统中,所述嵌入式代码写入方法用于生成校验信息,加密识别码得到至少两个识别码密文,组合嵌入式代码数据、所述校验信息以及所述至少两个识别码密文得到组合数据并写入嵌入式硬件,为后续的嵌入式代码执行前的验证阶段提供了信息,从而提高了代码检测的安全级别。所述嵌入式代码运行方法,通过在执行该嵌入式代码之前对所述校验信息和至少两个识别码密文进行验证,保证了被恶意篡改的嵌入式代码不会被执行,例如不是授权方按照前述写入方法中的加密方式和特定格式编写和烧录的嵌入式代码无法在该嵌入式硬件上运行。两者相互配合,可以验证是否存在恶意第三方对嵌入式代码进行了修改和烧录;解决了现有技术中嵌入式代码的可信度检测不够全面,安全级别不高的问题。一方面,本发明另一实施例中每次执行所述嵌入式代码写入方法所使用的识别码都不同,即识别码不能被二次使用以防止识别码泄露后被恶意第三方使用。另一方面,本发明的另一实施例中的解密方法和/或存储各个识别码密文及校验信息的地址信息都只有嵌入式硬件不允许用户修改或删除的引导代码知道,进一步提高了嵌入式代码运行的安全性。再一方面,本发明另一实施例中通过使用授权成功库在第二次解密出相同的识别码而校验信息与第一次不同时,也不通过所述识别码校验,进一步防止相同识别码被未授权的嵌入式代码二次使用。
附图说明
本领域的普通技术人员将会理解,提供的附图用于更好地理解本发明,而不对本发明的范围构成任何限定。其中:
图1是本发明一实施例的嵌入式代码写入方法的流程示意图;
图2是本发明一实施例的嵌入式代码运行方法的流程示意图;
图3a是本发明一实施例的嵌入式代码运行方法的一部分流程的示意图;
图3b是本发明又一实施例的嵌入式代码运行方法的一部分流程的示意图;
图3c是本发明再一实施例的嵌入式代码运行方法的一部分流程的示意图;
图4是本发明又一实施例的嵌入式代码运行方法的流程示意图;
图5是本发明一实施例的组合数据的结构示意图。
附图中:
11-第一数据片段;12-第二数据片段;13-第三数据片段;14-第四数据片段;3-校验信息;4-组合数据;21-第一识别码密文;22-第二识别码密文;5-第一预设地址;6-第二预设地址;51-第一识别码地址;52-第二识别码地址。
具体实施方式
为使本发明的目的、优点和特征更加清楚,以下结合附图和具体实施例对本发明作进一步详细说明。需说明的是,附图均采用非常简化的形式且未按比例绘制,仅用以方便、明晰地辅助说明本发明实施例的目的。此外,附图所展示的结构往往是实际结构的一部分。特别的,各附图需要展示的侧重点不同,有时会采用不同的比例。
如在本发明中所使用的,单数形式“一”、“一个”以及“该”包括复数对象,术语“或”通常是以包括“和/或”的含义而进行使用的,术语“若干”通常是以包括“至少一个”的含义而进行使用的,术语“至少两个”通常是以包括“两个或两个以上”的含义而进行使用的,此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或者隐含地包括一个或者至少两个该特征,“一端”与“另一端”以及“近端”与“远端”通常是指相对应的两部分,其不仅包括端点,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。此外,如在本发明中所使用的,一元件设置于另一元件,通常仅表示两元件之间存在连接、耦合、配合或传动关系,且两元件之间可以是直接的或通过中间元件间接的连接、耦合、配合或传动,而不能理解为指示或暗示两元件之间的空间位置关系,即一元件可以在另一元件的内部、外部、上方、下方或一侧等任意方位,除非内容另外明确指出外。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的核心思想在于提供一种嵌入式代码写入、运行、系统方法及嵌入式系统,以解决现有技术中代码的可信度检测不够全面,安全级别不高的问题。
以下参考附图进行描述。
请参考图1至图3c,其中,图1是本发明一实施例的嵌入式代码写入方法的流程示意图;图2是本发明一实施例的嵌入式代码运行方法的结构示意图;图3a是本发明一实施例的嵌入式代码运行方法的一部分流程的示意图;图3b是本发明又一实施例的嵌入式代码运行方法的一部分流程的示意图;图3c是本发明再一实施例的嵌入式代码运行方法的一部分流程的示意图;图4是本发明又一实施例的嵌入式代码运行方法的结构示意图;图5是本发明一实施例的组合数据的结构示意图。
本实施例提供了可独立工作的一种嵌入式代码写入方法,以及可独立工作的嵌入式代码运行方法。同时,两者之间可以协同工作。为了便于理解所述嵌入式代码写入方法中部分细节的设置目的,以及所述嵌入式代码运行方法中部分细节的设置目的。本说明书按照两者之间的对应关系介绍上述两种方法。
如图1所示,本实施例提供了一种嵌入式代码写入方法。
所述嵌入式代码写入方法,包括如下步骤:
S110获取嵌入式代码数据。
S120基于所述嵌入式代码数据生成校验信息。
S130获取识别码,其中,每次执行所述嵌入式代码写入方法所使用的识别码均不同。举例而言,当修改一版嵌入式代码数据后再次执行所述嵌入式代码写入方法以将修改后的版本烧入嵌入式硬件时,识别码也一定和之前使用过的识别码不同,即是说,识别码只能被本写入方法一次性使用,使用过即丢弃。
S140基于至少两种加密方法加密所述识别码得到至少两个识别码密文。
S150组合所述嵌入式代码数据、所述校验信息以及所述至少两个识别码密文得到组合数据。
以及,S160向嵌入式硬件写入所述组合数据。
所述嵌入式代码写入方法通过生成校验信息和至少两个识别码密文,对所述嵌入式代码数据进行双重保护,校验信息是基于嵌入式代码数据获得的,可用于验证嵌入式代码数据的完整性,用至少两种不同的加密方法加密相同的识别码获得的识别码密文,可用于验证其是否为掌握相应解密方法的授权方写入而非第三方写入,从而提高了后续的可信度检测的安全级别。每次执行所述嵌入式代码写入方法所使用的识别码都不同,即识别码不能被二次使用以防止识别码泄露后被恶意第三方使用。
在本说明书中,识别码是指以明文形式存在的识别码;识别码密文,指识别码通过加密方法后得到的密文,恶意第三方并不能通过所述识别码密文得到所述识别码,或者至少攻击成本大于攻击收益。
在步骤S130中,识别码可以通过随机数模块加密产生,并发送给执行代码写入的设备(例如烧录器或上位机);也可以是执行代码写入设备(例如烧录器或上位机)自带的随机数模块生成的。在一实施例中,所述识别码是密码学安全的随机数,在其它实施例中,识别码也可以是用户自定义的序列号,保证每次执行该写入方法(例如每次烧录嵌入式代码至嵌入式硬件)所使用的识别码均不同即可。
密码学安全的概念可以根据密码学领域的公知常识进行理解,在此指过程无法被恶意第三方操控,或者攻击成本大于攻击受益的手段。以随机数而言,是指攻击方无法提前预知下一个生成的随机数的全文或者部分内容。在本说明书中,加密方法可以是密码学领域已有的通用的加密方法,例如,DES(Data Encryption Standard,即数据加密算法,特指IBM公司于1975年研究成功并公开发表的加密算法及其变化例),RSA算法(1977年由RonRivest、Adi Shamir和Leonard Adleman一起提出的算法。由他们三人姓氏开头字母命名),椭圆曲线加密算法等。也可以是具有加密效果的个人或者小团体开发的其他算法。不同的加密算法可以理解为加密原理不同,也可以理解为加密原理相同,但是加密过程中涉及的参数不同。甚至也可以是采用不同的计算公式对识别码进行计算以得到不同的识别码密文,只要这些计算公式保密,只有执行该嵌入式代码写入方法的设备(例如烧录器或上位机)知道。
具体实现方式可以通过在随机数生成过程中加入一个自增的变量,或者将已经生成过的随机数进行存储来实现。采用后者方案时,需要以加密的方式存储已经生成过的随机数。例如,存储随机数的哈希散列值,当生成新的随机数时,可以用新的随机数的哈希散列值与存储的哈希散列值进行比较,判断当前的随机数是否已经生成过,若发生生成过,则重新生成随机数。如此配置,可以保证历史中出现的随机数不被再次使用,避免重放攻击,进一步提高安全性。
与图1所述所述嵌入式代码写入方法相对应的,图2为所述嵌入式代码运行方法,包括如下步骤:
S210读取组合数据,所述组合数据包括嵌入式代码数据、校验信息以及至少两个识别码密文。
S220计算所述嵌入式代码数据的校验值。
S230若所述校验值与所述校验信息不同,则执行步骤S270;若相同,则执行步骤S240。
S240基于不同的解密方法解密不同的所述识别码密文得到至少两个识别码明文。
S250判断各所述识别码明文是否均相同。
S260若判断结果为均相同,则执行所述嵌入式代码数据;否则,执行步骤S270。
以及,S270结束响应。
如此配置,当所述数据校验或者所述识别码校验不通过时,都会停止响应以不执行所述嵌入式代码数据,提高了安全级别。
本发明并不限制步骤S220~S230与步骤S240~S250执行的先后顺序,可以具体以图3a~图3c中所示的方案执行。如图3a所示,在一示范性的实施例中,先进行所述数据校验,若不通过,已经可以断言所述组合数据不能同时通过数据校验和识别码校验,因而不需要再进行所述识别码校验,只有通过所述数据校验的所述组合数据才需要进行进一步的所述识别码校验。如此配置,可以减少整体的计算资源的消耗,加速判断过程。如图3b所示,在又一示范性的实施例中,所述数据校验和所述识别码校验的流程进行了对调。在本发明创造中,由于所述数据校验的流程较为简单,占用的计算资源较少,用图3a所示的流程是较优的方案,但是不排除用图3b所示的方式进行判断的实施例。在图3c所示的实施例中,无论其中一项判断的结果如何,另一项判断都需要进行,如此配置,在计算资源充足的前提下可以并行计算,或者,这样的方案适合通过电路模拟的方式实现,也应当视为本发明创造可能的实现方案。
基于上述分析,所述嵌入式代码运行方法亦可以总结概括为:包括如下步骤:
读取组合数据,所述组合数据包括嵌入式代码数据、校验信息以及至少两个识别码密文;以及,当所述组合数据通过数据校验并且通过识别码校验时,执行所述嵌入式代码数据;否则,结束响应。
其中,所述数据校验的步骤包括:计算所述嵌入式代码数据的校验值,若该校验值与所述校验信息相同,则所述数据校验的结果为通过;所述识别码校验的步骤包括:基于不同的解密方法解密不同的所述识别码密文得到至少两个识别码明文,若至少两个所述识别码明文不同,则所述识别码校验的结果为不通过。
其中,所述当所述组合数据通过数据校验并且通过识别码校验时的步骤按照图3a~图3c中所示的任意一种方案执行。
图4为本发明又一实施例的嵌入式代码运行方法,包括如下步骤:
步骤S310~S350与图3的步骤S210~S250对应,在此不再赘述。
图4所示实施例的所述嵌入式代码运行方法还包括:S360若所有的所述识别码明文均相同,判断所述至少两个识别码密文是否存在于所述授权成功库中;若存在,则执行步骤S370,若不存在,则执行步骤S380。
S370:比较所述至少两个识别码密文在所述授权成功库中对应的所述校验信息与当前的所述校验信息是否相同,若相同,则执行步骤S390,否则,执行步骤S3100。
步骤S380:当所述组合数据通过所述数据校验(S330的是)并且也通过所述识别码校验(S350的是)时,且所述至少两个识别码密文不存在于授权成功库中,则将所述校验信息以及所述至少两个识别码密文存储于所述授权成功库的同一行中。
S390:执行所述嵌入式代码数据。
S3100:结束响应。
在步骤S360中,若所述授权成功库中不存在所述至少两个识别码密文,则说明所述识别码密文所对应的所述识别码是新的,又因为先前已经通过数据校验(S330的是)和识别码校验(S350的是),所以可以判断当前的嵌入式代码数据是授权方新写入的版本。若存在,则又具体分为两种情况,若查找到的授权成功库中所存的[识别码密文1,识别码密文2,校验信息]中的所述校验信息与当前的所述校验信息相同,则说明当前运行的代码是一份老代码,二次运行当然是安全的;若不同,则说明其中的嵌入式代码数据是新的,但是所述识别码是旧的,说明当前的代码很可能是通过重放攻击的方式生成的,因此需要拒绝运行。步骤S360~S3100的执行结果和设计预期相同,并同步骤S130中“每次执行所述嵌入式代码写入方法所使用的识别码不同”相呼应,具有提高安全性的效果。通过使用授权成功库在第二次解密出相同的识别码而校验信息与第一次不同时,也不通过所述识别码校验,进一步防止相同识别码被未授权的嵌入式代码二次使用。
上述的步骤S360和S370也可以理解为从属于所述识别码校验的步骤,即,述识别码校验的步骤还包括:若所有的所述识别码明文均相同,判断所述至少两个识别码密文是否存在于所述授权成功库中;若不存在,所述识别码校验的结果为通过;若存在,比较所述至少两个识别码密文在所述授权成功库中对应的所述校验信息与当前的所述校验信息,若相同,所述识别码校验的结果为通过,否则,所述识别码校验的结果为不通过。
由于所述嵌入式代码运行方法是在嵌入式硬件上运行的,一般而言,所述嵌入式硬件的存储空间是受限的,因此需要定期清除所述授权成功库中的内容以防止所述授权成功库的存储空间塞满,从而导致步骤S380无法实现。为解决上述问题,所述嵌入式代码运行方法还包括:获取清除指令,所述清除指令包含预设口令信息;以及,验证所述预设口令信息;若通过,清除所述授权成功库中的至少一行;若不通过,结束响应。在一个较优的实施例中,若所述预设口令信息验证通过,清除所述授权成功库中的所有内容,如此设置,可以简化代码逻辑,也减少恶意第三方利用清除指令设计特殊的攻击方法。在实施过程中,所述预设口令信息可以仅提供给少数一个或几个高级管理人员掌握从而进一步增加安全性。
进一步地,在基于至少两种加密方法加密所述识别码得到至少两个识别码密文的步骤之后,所述嵌入式代码写入方法的步骤还包括:以密码学安全的方式销毁所述识别码(未图示)。在所述比较所述识别码明文的步骤之后,所述嵌入式代码运行方法的步骤还包括:以密码学安全的方式丢弃销毁识别码明文(未图示)。
如此配置,可以防止恶意第三方通过恢复数据等手段获取当前的所述识别码或者历史的所述识别码。需理解,当所述嵌入式代码写入方法为可信的,那么所述识别码和所述识别码明文实际上是同一个数据;但是当所述嵌入式代码写入方法是不可信的,那么所述识别码明文和所述识别码不同,因此,在本说明书中采用两种不同的名称以区分真正的识别码和通过对识别码密文解密得到的数据。
步骤S120所述基于所述嵌入式代码数据生成校验信息的步骤包括:生成所述嵌入式代码数据的奇偶校验码,生成所述嵌入式代码数据的循环冗余校验码,以及,生成所述嵌入式代码数据的哈希散列值中的至少一者。所述哈希散列值可以是MD5(Mesage-DigestAlgorithm 5,消息摘要算法第五版)、SHA(Secure Hash Algorithm,安全散列算法,在密码学领域指特定的散列算法)值等。较优地,可以同时生成奇偶校验码、循环冗余校验码以及哈希散列值,并将其组合形成所述校验信息。所述校验信息的生成过程还可以生成其他未提及的校验码。
相对应的,S220和S320的步骤可与步骤S120配合地设置。
值得注意的是,本发明一实施例中所述至少两种加密方法对应的至少两种解密方法只保存在所述嵌入式硬件的引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。以进一步提高安全级别。
在一个较优地实施例中,所述加密方法的数量为两种,所述解密方法的数量为两种,所述识别码密文的数量为两个,所述解密方法的数量为两个。如此配置,可以减少嵌入式硬件的验证负担和存储负担,加快所述嵌入式硬件的固件运行速度。
步骤S160所述组合的步骤包括:将所述至少两个识别码密文中的每一个组合至一个独立的第一预设地址,所述第一预设地址的数量和所述识别码密文的数量相对应,及将所述校验信息组合至第二预设地址。步骤S210和步骤S310所述读取组合数据的步骤包括:从每一个独立的第一预设地址读取所述至少两个识别码密文中的一个,所述第一预设地址的数量和所述识别码密文的数量相对应,及从第二预设地址读取所述校验信息。所述第一预设地址可以连续也可以不相邻,不相邻为较优方案
请参考图5,一实施例中,所述识别码密文的数量为两个,所述识别码密文包括第一识别码密文21和所述第二识别码密文22,所述第一预设地址5包括第一识别码地址51和第二识别码地址52。所述组合数据4从左往右依次包括:第一数据片段11、所述第一识别码密文21、第二数据片段12、所述第二识别码密文22、第三数据片段13、校验信息3以及第四数据片段14。其中,所述第一识别码密文21组合至第一识别码地址51,所述第二识别码密文22组合至第二识别码地址52。所述校验信息3组合至第二预设地址6。所述嵌入式代码数据被拆分为第一数据片段11至第四数据片段14。需理解,图5所示的组合数据的结构,是经编译后写入到嵌入式硬件中的代码,通常是目标二进制文件(bin文件)或目标十六进制文件(Hex文件)。需理解,在其他实施例中,所述组合数据中各部分的相对位置关系可能与图5所示的相对位置关系不同,例如所述校验信息3可能在所述第一识别码密文21的前面。
所述嵌入式硬件中,所述第一预设地址及所述第二预设地址只保存在嵌入式硬件的引导代码中,且该引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。如此配置,可以进一步减少恶意第三方的攻击可能,例如,恶意第三方知道所有数据的生成规则,并伪造了数据,但是组合数据中各部分的地址却是错误的,这样的攻击也不会奏效。
本实施例还提供了一种嵌入式代码写入设备,所述嵌入式代码写入设备用于执行上述的嵌入式代码写入方法向嵌入式硬件写入数据。常见的嵌入式代码写入设备可以包括个人电脑和/或嵌入式代码烧写装置,例如采用在线烧写,则嵌入式写代码入设备可以是作为上位机的个人电脑;例如采用离线烧写,则嵌入式写代码入设备可以是离线烧写器。
本实施例还提供了一种嵌入式硬件,所述嵌入式硬件上存储有运行验证程序,所述运行验证程序运行时,执行上述的嵌入式代码运行方法。
上述的嵌入式代码写入设备和嵌入式硬件的其他细节可以根据本领域的公知常识进行设置,在此不进行展开描述。所述嵌入式代码写入设备以及所述嵌入式硬件都具有能够提高代码可信度检测的安全级别的有益效果。
进一步地,所述嵌入式硬件包括引导地址,所述引导地址用于存储所述运行验证程序;所述嵌入式硬件开机时仅支持从所述引导地址处启动。在一实施例中,所述嵌入式硬件为微控制器,所述运行验证程序为BootLoader。可以通过BOOT0和BOOT1引脚设置启动方式,引脚设置效果如表1所述。
表1微控制器引脚设置效果
当需要将启动模式锁定为从BootLoader启动时,外部电路将BOOT0的电平锁定为高电平,将BOOT1的电平锁定为低电平,从而使得微控制器虽然支持多种启动方式,但是实际上每次上电复位都仅从BootLoader启动。在另一种实施方式中,如果所述嵌入式硬件是定制产品,可以设定为仅从BootLoader启动这一种启动方式。
BootLoader是芯片厂商在嵌入式硬件的片上flash某段特殊的地址(例如0x1FFFxxxx)固化的一段代码,该代码在嵌入式硬件出厂后用户无法进行修改或者删除。甚至在芯片厂商内部也不是所有开发人员都知道其内容,只有少数人员才有权限对其进行修改。本发明一实施例中由BootLoader执行前述嵌入式代码运行方法,其中本说明书中提到的BootLoader不同于传统的IAP(In Application Programming,在应用编程)中使用的BootLoader,IAP BootLoader存放的片上flash地址(0x08xxxxxx)是可以被用户擦除或者修改,而且任意嵌入式代码(例如bin文件或hex文件)在flash全片擦除后,都能下载到flash中并开始运行,不能达到代码在运行前检查其安全性的效果。解密方法和/或存储各个识别码密文及校验信息的预设地址信息都只有嵌入式硬件的引导代码BootLoader知道,在允许嵌入式代码数据对应的固件算法执行之前,引导代码BootLoader根据预设地址分别读出校验信息及各识别码密文,并根据自身所保存/固化的解密方式执行识别码校验。值得注意的是,本发明通过这种硬件方式保证代码的安全性,识别码的加解密并不需要复杂的加解密算法,只要是能够将同一识别码明文加密为对于第三方来时不可识别的不同识别码密文就可以,甚至是两个不同的计算公式,以进一步降低计算量。
本实施例还提供了一种嵌入式系统,包括上述的嵌入式代码写入设备以及上述的嵌入式硬件。显然地,所述嵌入式系统也具有提高可信度检测的安全级别的有益效果。
综上所述,本实施例提供的一种嵌入式代码写入、运行方法及嵌入式系统中,所述嵌入式代码写入方法用于生成校验信息,加密识别码得到至少两个识别码密文,组合嵌入式代码数据、所述校验信息以及所述至少两个识别码密文得到组合数据并写入嵌入式硬件,为后续的嵌入式代码执行前的验证阶段提供了信息,从而提高了代码检测的安全级别。所述嵌入式代码运行方法,通过在执行嵌入式代码之前对所述校验信息和所述至少两个识别码密文进行验证,保证了被恶意篡改的嵌入式代码不会被执行,例如不是授权方按照前述写入方法中的加密方式和特定格式编写和烧录的嵌入式代码无法在该嵌入式硬件上运行。两者相互配合,可以验证是否存在恶意第三方对嵌入式代码进行了修改和烧录;解决了现有技术中嵌入式代码的可信度检测不够全面,安全级别不高的问题。
上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于本发明技术方案的保护范围。
Claims (17)
1.一种嵌入式代码写入方法,其特征在于,所述嵌入式代码写入方法包括如下步骤:
获取嵌入式代码数据;
基于所述嵌入式代码数据生成校验信息;
获取识别码,其中,每次执行所述嵌入式代码写入方法所使用的识别码均不同;
基于至少两种加密方法加密所述识别码得到至少两个识别码密文;
组合所述嵌入式代码数据、所述校验信息以及所述至少两个识别码密文得到组合数据;以及,
向嵌入式硬件写入所述组合数据。
2.根据权利要求1所述的嵌入式代码写入方法,其特征在于,所述识别码是密码学安全的随机数或用户自定义的序列号。
3.根据权利要求1所述的嵌入式代码写入方法,其特征在于,在基于至少两种加密方法加密所述识别码得到至少两个识别码密文的步骤之后,所述嵌入式代码写入方法的步骤还包括:以密码学安全的方式销毁所述识别码。
4.根据权利要求1所述的嵌入式代码写入方法,其特征在于,所述基于所述嵌入式代码数据生成校验信息的步骤包括:生成所述嵌入式代码数据的奇偶校验码,生成所述嵌入式代码数据的循环冗余校验码,以及,生成所述嵌入式代码数据的哈希散列值中的至少一者。
5.根据权利要求1所述的嵌入式代码写入方法,其特征在于,所述至少两种加密方法对应的至少两种解密方法只保存在所述嵌入式硬件的引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。
6.根据权利要求1所述的嵌入式代码写入方法,其特征在于,所述组合的步骤包括:将所述至少两个识别码密文中的每一个组合至一个独立的第一预设地址,所述第一预设地址的数量和所述识别码密文的数量相对应,及将所述校验信息组合至第二预设地址。
7.根据权利要求6所述的嵌入式代码写入方法,其特征在于,所述嵌入式硬件中,所述第一预设地址及所述第二预设地址只保存在引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。
8.一种嵌入式代码运行方法,其特征在于,所述嵌入式代码运行方法包括如下步骤:
读取组合数据,所述组合数据包括嵌入式代码数据、校验信息以及至少两个识别码密文;以及,
当所述组合数据通过数据校验并且通过识别码校验时,执行所述嵌入式代码数据;否则,结束响应;
其中,所述数据校验的步骤包括:计算所述嵌入式代码数据的校验值,若该校验值与所述校验信息相同,则所述数据校验的结果为通过;所述识别码校验的步骤包括:基于不同的解密方法解密不同的所述识别码密文得到至少两个识别码明文,若至少两个所述识别码明文不同,则所述识别码校验的结果为不通过。
9.根据权利要求8所述的嵌入式代码运行方法,其特征在于,所述嵌入式代码运行方法还包括:
当所述组合数据通过所述数据校验并且通过所述识别码校验时,且所述至少两个识别码密文不存在于授权成功库中,则将所述校验信息以及所述至少两个识别码密文存储于所述授权成功库的同一行中;
当所述组合数据通过数据校验并且通过识别码校验时,所述嵌入式代码运行方法还包括:
若所有的所述识别码明文均相同,判断所述至少两个识别码密文是否存在于所述授权成功库中;若不存在,所述识别码校验的结果为通过;若存在,比较所述至少两个识别码密文在所述授权成功库中对应的所述校验信息与当前的所述校验信息,若相同,所述识别码校验的结果为通过,否则,所述识别码校验的结果为不通过。
10.根据权利要求9所述的嵌入式代码运行方法,其特征在于,所述嵌入式代码运行方法还包括:
获取清除指令,所述清除指令包含预设口令信息;以及,
验证所述预设口令信息;若通过,清除所述授权成功库中的至少一行;若不通过,结束响应。
11.根据权利要求8所述的嵌入式代码运行方法,其特征在于,所述读取组合数据的步骤包括:从每一个独立的第一预设地址读取所述至少两个识别码密文中的一个,所述第一预设地址的数量和所述识别码密文的数量相对应,及从第二预设地址读取所述校验信息。
12.根据权利要求11所述的嵌入式代码运行方法,其特征在于,所述第一预设地址及第二预设地址只保存在执行所述嵌入式代码数据的嵌入式硬件的引导代码中,所述引导代码在所述嵌入式硬件出厂后不允许用户修改或删除。
13.一种嵌入式代码写入设备,其特征在于,所述嵌入式代码写入设备用于执行如权利要求1~7中任一项所述的嵌入式代码写入方法向嵌入式硬件写入数据。
14.一种嵌入式硬件,其特征在于,所述嵌入式硬件上存储有运行验证程序,所述运行验证程序运行时,执行如权利要求8~12中任一项所述的嵌入式代码运行方法。
15.根据权利要求14所述的嵌入式硬件,其特征在于,所述嵌入式硬件包括引导地址,所述引导地址用于存储所述运行验证程序;
所述嵌入式硬件开机时仅支持从所述引导地址处启动。
16.根据权利要求15所述的嵌入式硬件,其特征在于,所述嵌入式硬件为微控制器,所述运行验证程序为BootLoader。
17.一种嵌入式系统,其特征在于,包括如权利要求13所述的嵌入式代码写入设备以及如权利要求14~16中任一项所述的嵌入式硬件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111630589.XA CN116401091A (zh) | 2021-12-28 | 2021-12-28 | 嵌入式代码写入、运行方法及嵌入式系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111630589.XA CN116401091A (zh) | 2021-12-28 | 2021-12-28 | 嵌入式代码写入、运行方法及嵌入式系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116401091A true CN116401091A (zh) | 2023-07-07 |
Family
ID=87012848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111630589.XA Pending CN116401091A (zh) | 2021-12-28 | 2021-12-28 | 嵌入式代码写入、运行方法及嵌入式系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401091A (zh) |
-
2021
- 2021-12-28 CN CN202111630589.XA patent/CN116401091A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109313690B (zh) | 自包含的加密引导策略验证 | |
US8250373B2 (en) | Authenticating and verifying an authenticable and verifiable module | |
EP1695169B1 (en) | Method and apparatus for incremental code signing | |
CN111723383B (zh) | 数据存储、验证方法及装置 | |
KR101528836B1 (ko) | 암호화 알고리즘 오공격 보호 | |
KR100702499B1 (ko) | 메시지 무결성 보증 시스템, 방법 및 기록 매체 | |
US20050021968A1 (en) | Method for performing a trusted firmware/bios update | |
CN110688660B (zh) | 一种终端安全启动的方法及装置、存储介质 | |
US20180204004A1 (en) | Authentication method and apparatus for reinforced software | |
AU2019245514B2 (en) | Method of secure communication among protected containers and system thereof | |
CN114662087B (zh) | 一种多端验证的安全芯片固件更新方法及装置 | |
CN117556430B (zh) | 一种安全启动方法、装置、设备及存储介质 | |
US11232209B2 (en) | Trojan detection in cryptographic hardware adapters | |
CN111327429B (zh) | 终端启动的处理方法和装置 | |
CN115357908B (zh) | 一种网络设备内核可信度量与自动修复方法 | |
CN114189862A (zh) | 无线终端及无线终端在Uboot模式下的接口访问鉴权方法 | |
JP2009252142A (ja) | データ処理装置 | |
CN108376212B (zh) | 执行代码安全保护方法、装置及电子装置 | |
CN116484379A (zh) | 系统启动方法、包含可信计算基软件的系统、设备及介质 | |
CN116401091A (zh) | 嵌入式代码写入、运行方法及嵌入式系统 | |
CN110610079A (zh) | 安全启动方法、装置及系统 | |
CN103248490A (zh) | 一种备份电子签名令牌中信息的方法和系统 | |
CN112363776A (zh) | 一种终端控制方法、装置及终端 | |
CN113742656A (zh) | 软件授权认证方法及装置 | |
CN114065218B (zh) | 一种SoC系统芯片安全启动方法 |
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 |