CN111095213B - 嵌入式程序的安全引导方法、装置、设备及存储介质 - Google Patents

嵌入式程序的安全引导方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111095213B
CN111095213B CN201880001250.3A CN201880001250A CN111095213B CN 111095213 B CN111095213 B CN 111095213B CN 201880001250 A CN201880001250 A CN 201880001250A CN 111095213 B CN111095213 B CN 111095213B
Authority
CN
China
Prior art keywords
data
program
key
information
mode
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
CN201880001250.3A
Other languages
English (en)
Other versions
CN111095213A (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.)
Shenzhen Goodix Technology Co Ltd
Original Assignee
Shenzhen Goodix Technology 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 Shenzhen Goodix Technology Co Ltd filed Critical Shenzhen Goodix Technology Co Ltd
Publication of CN111095213A publication Critical patent/CN111095213A/zh
Application granted granted Critical
Publication of CN111095213B publication Critical patent/CN111095213B/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/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Abstract

一种嵌入式程序的安全引导方法、装置、设备及存储介质,该方法包括在运行引导程序时,获取应用程序的数据,包括签名信息、公钥信息、参数信息、加密数据及数字校验码(S201);根据签名信息进行签名校验(S202);若通过,根据数字校验码进行完整性校验(S203);若通过,根据公钥信息和参数信息进行数据解密(S204)。可提高信息安全性。

Description

嵌入式程序的安全引导方法、装置、设备及存储介质
技术领域
本申请实施例涉及安全技术,尤其涉及一种嵌入式程序的安全引导方法、装置、设备及存储介质。
背景技术
随着互联网技术(Internet Technology,IT)的不断发展,基于嵌入式芯片开发的各种嵌入式程序越来越多,这使得信息安全的占比也越来越重。从信息安全角度来看,各种安全设备,一方面是为提供安全服务的保障,另一方面可避免自身核心机密被窃取。
攻击者通常可对嵌入式设备使用过程中所泄露的信息加以利用,采用信号处理和统计分析等技术来获取隐私数据;或者,可通过改变设备的运行环境触发程序的运行故障等来获取敏感数据。
因此,对于嵌入式设备来说,提高程序运行过程中的信息安全显得格外重要。
发明内容
本申请实施例提供一种嵌入式程序的安全引导方法、装置、设备及存储介质,以提高程序运行过程中的信息安全。
本申请实施例提供一种嵌入式程序的安全引导方法,所述方法包括:
在运行嵌入式程序的引导程序时,获取应用程序的数据;所述应用程序的数据包括:签名信息、公钥信息、所述应用程序的参数信息、加密数据及第一数字校验码;
根据所述签名信息,对所述公钥信息、所述应用程序的参数信息、所述加密数据及所述第一数字校验码进行签名校验;
若所述签名校验通过,根据所述第一数字校验码,对所述公钥信息、所述应用程序的参数信息和所述加密数据进行完整性校验;
若所述完整性校验通过,根据所述公钥信息、所述应用程序的参数信息,对所述加密数据进行解密。
本申请实施例还提供一种嵌入式程序的安全引导装置,所述装置包括:
获取模块,用于在运行嵌入式程序的引导程序时,获取应用程序的数据;所述应用程序的数据包括:签名信息、公钥信息、所述应用程序的参数信息、加密数据及第一数字校验码;
校验模块,用于根据所述签名信息,对所述公钥信息、所述应用程序的参数信息、所述加密数据及所述第一数字校验码进行签名校验;若所述签名校验通过,根据所述第一数字校验码,对所述公钥信息、所述应用程序的参数信息和所述加密数据进行完整性校验;
解密模块,用于若所述完整性校验通过,根据所述公钥信息、所述应用程序的参数信息,对所述加密数据进行解密。
本申请实施例还提供一种嵌入式设备,包括:存储器和处理器;所述存储器通过总线与所述处理器连接;
所述存储器,用于存储程序指令和运行数据;
所述处理器,用于调用所述存储器存储的所述程序指令和所述运行数据时,执行上述嵌入式程序的安全引导方法。
本申请实施例还提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述嵌入式程序的安全引导方法。
本申请实施例提供的嵌入式程序的安全引导方法、装置、设备及存储介质,可通过在运行嵌入式程序的引导程序时,获取应用程序的数据,其包括:签名信息、公钥信息、该应用程序的参数信息、加密数据及第一数字校验码;根据该签名信息,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行签名校验;若该签名校验通过,根据该第一数字校验码,对该公钥信息、该应用程序的参数信息和该加密数据进行完整性校验;若该完整性校验通过,根据该公钥信息、该应用程序的参数信息,对该加密数据进行解密。该方法可根据签名信息进行签名校验,根据数字校验码进行完整性校验,继而进行数据的解密,确保了应用程序的数据的准确性及完整性,可有效避免程序的数据损坏带来的信息泄露,提高了程序运行过程中的程序功能的实现及数据安全。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种嵌入式芯片的硬件架构示意图;
图2为本申请实施例提供的一种嵌入式程序的安全引导方法的流程图;
图3为本申请实施例提供的一种应用程序的数据的结构图;
图4为本申请实施例提供的另一种嵌入式程序的安全引导方法的流程图;
图5为本申请实施例提供的又一种嵌入式程序的安全引导方法的流程图
图6为本申请实施例提供的一种配置信息的存储结构图;
图7为本申请实施例提供的一种闪存存储器的信息存储结构图;
图8为本申请实施例提供的一种不同工作模式之间的状态转换图;
图9为本申请实施例提供的一种嵌入式程序的安全引导装置的结构示意图;
图10为本申请实施例提供的一种嵌入式设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本申请下述各实施例提供的嵌入式程序的安全引导方法、装置、设备及存储介质可应用于具有嵌入式芯片的设备中。该具有嵌入式芯片的设备可称为嵌入式设备。该嵌入式芯片可以为安全嵌入式芯片。
先对嵌入式芯片的硬件架构进行说明。图1为本申请实施例提供的一种嵌入式芯片的硬件架构示意图。如图1所示,嵌入式芯片中可包括:中央处理器(Central ProcessingUnit,CPU)、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、闪存存储器(Flash Memory)、输入/输出(Input/Output,I/O)接口、安全措施电路、密码协处理器、随机数生成器、时钟电路以及复位电路。其中,该闪存存储器还可以为带电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)。该具有嵌入式芯片的设备中,CPU、ROM、RAM、闪存存储器、I/O接口、安全措施电路、密码协处理器、随机数生成器、时钟电路以及复位电路,分别于设备总线连接。其中,安全措施电路还与密码协处理器连接。在该嵌入式芯片中,还可包括:单次可编程存储器,该单次可编程存储器可以为电熔丝(eFuse)存储器或者一次可编程(One Time Programle)存储器。该单次可编程存储器,可在芯片出厂时灌入数据,其后,仅可只读。其中,随机数生成器可生成用于派生密钥的随机数,密码协处理器可配合CPU实现,加密、解密、校验等过程的实现。需要说明的是,当上述嵌入式程序的安全引导方法中,任一校验失败、程序运行错误或者数据异常时,可通过设备的输出接口输出错误状态,用以排查错误或异常原因。
如下结合上述图1所示的嵌入式芯片,通过多个实例对本申请实施例提供的嵌入式程序的安全引导方法进行说明。
图2为本申请实施例提供的一种嵌入式程序的安全引导方法的流程图。该嵌入式程序的安全引导方法可应用于具有嵌入式芯片的设备中。该嵌入式程序的安全引导方法可通过软件的方式实现,也可通过软件和硬件结合的方式实现。如图2所示,该方法可包括:
S201、在运行嵌入式程序的引导程序时,获取应用程序的数据,该应用程序的数据包括:签名信息、公钥(PUBLIC KEY)信息、该应用程序的参数(parameter)信息、加密数据及第一数字校验码。
该应用程序可以为用户固件(Firmware,FW)程序,因此,该应用程序的数据可称为FW程序的数据。
其中,该签名信息可以为RSA签名信息,该RSA签名信息为采用RSA算法对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码运算后的签名信息。
该公钥信息可以为RSA公钥信息和/或RSA参数信息。该RSA公钥信息可以为采用RSA算法得到的公钥信息,该RSA参数信息可以为该RSA公钥信息的参数信息。
该应用程序的参数信息可以为该应用程序的描述信息,该应用程序的描述信息例如可包括:该应用程序的标识信息、版本信息及版权信息等至少一个。
该加密数据可以为加密后的该应用程序的指令代码和/或该应用程序的运行数据等。
该第一数字校验码为该应用程序的数据中,该公钥信息、该应用程序的参数信息和该加密数据对应的哈希消息认证码(Hash-based Message Authentication Code,HMAC)。
该应用程序的数据可存储在预设存储器中,例如闪存存储器中。
例如,上述S201中获取应用程序的数据可以包括:
控制闪存存储器的控制器,读取该闪存存储器存储的该应用程序的数据。
也就是说,如上所示的方法中,该应用程序的数据是从闪存存储器中获取的。
S202、根据该签名信息,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行签名校验。
该方法中,可采用RSA算法,根据该签名信息,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行签名校验。该签名校验例如可称为RSA签名校验。
假设,若该签名信息为RSA签名信息,则该方法中,可采用RSA算法,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行处理,得到签名校验码,并将得到的签名校验码与该签名信息进行比较,实现签名校验。
示例地,若该得到的签名校验码与该签名信息相同,则可确定签名校验通过;反之,若该得到的签名校验码与该签名信息不同,则可确定签名校验未通过。
S203、若该签名校验通过,根据该第一数字校验码,对该公钥信息、该应用程序的参数信息和该加密数据进行完整性校验。
该方法中,可采用HMAC算法,根据该第一数字校验码,对该公钥信息、该应用程序的参数信息和该加密数据进行完整性校验。该完整性校验可称为HMAC校验。
假设,若该第一数字校验码为HMAC校验码,则该方法中可采用HMAC算法,对该公钥信息、该应用程序的参数信息和该加密数据进行处理,得到完整性校验码,并将得到的完整性校验码与该第一数字校验码进行比较,实现完整性校验。
示例地,若该得到的完整性校验码与该第一数字校验码相同,则可确定完整性校验通过;反之,若该得到的完整性校验码与该第一数字校验码不同,则可确定完整性校验未通过。
S204、若该完整性校验通过,根据该公钥信息、该应用程序的参数信息,对该加密数据进行解密。
该方法中,可采用椭圆曲线集成加密方案(Elliptic Curve Integrate EncryptScheme,ECIES)算法,根据该公钥信息、该应用程序的参数信息,对该加密数据进行ECIES解密。
可选的,该方法中还可结合该应用程序的私钥,对该加密数据进行解密。也就是说,该方法中可根据该应用程序的私钥、该公钥信息、该应用程序的参数信息,对该加密数据进行解密。
该应用程序的私钥例如可以为ECIES算法得到的私钥,称为ECIES私钥。该应用程序的私钥可用于对该应用程序的数据进行加密和/或解密。在该S202中可用于对该加密数据进行解密。
示例地,图3为本申请实施例提供的一种应用程序的数据的结构图。如图3所示,该应用程序的数据可包括:签名信息、公钥信息、应用程序的参数信息、加密数据、以及数字校验码。
该图3中签名信息、公钥信息、应用程序的参数信息、加密数据、以及数字校验码,各信息的描述可参见上述,在此不再赘述。该应用程序的数据可以图3所示的数据结构存储在闪存存储器中。
针对该图3所示的应用程序的数据,该方法中,可通过控制闪存存储器的控制器,从该闪存存储器中读取该应用程序的数据;根据该签名信息,对该应用程序的数据中该签名信息之外的信息进行签名校验;在签名校验通过后,根据该数字校验码,也称为第一数字校验码,对该应用程序的数据中,处该签名信息和该数字校验码之外的信息进行完整性校验;若完整性校验通过,则可根据该应用程序的私钥、结合该公钥信息、该应用程序的参数信息,对该应用程序的数据中的加密数据进行解密,得到解密后的数据。
可选的,在图2所示的嵌入式程序的安全引导方法的基础上,该方法还可包括:
将解密后的该应用程序的数据写入RAM的第一存储区中。
该解密后的该应用程序的数据可以为上述S204解密所得到的数据,该解密后的该应用程序的数据可包括该应用程序的执行代码和/或运行数据等。
该方法,可将解密后的该应用程序的数据写入RAM的第一存储区中,该第一存储区例如可以为RAM中的指令RAM(IRAM)上的存储区。
本申请实施例提供的该嵌入式程序的安全引导方法,可通过获取应用程序的数据,其包括:签名信息、公钥信息、该应用程序的参数信息、加密数据及第一数字校验码;根据该签名信息,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行签名校验;若该签名校验通过,根据该第一数字校验码,对该公钥信息、该应用程序的参数信息和该加密数据进行完整性校验;若该完整性校验通过,根据该公钥信息、该应用程序的参数信息,对该加密数据进行解密。该方法中,可根据签名信息进行签名校验,根据数字校验码进行完整性校验,继而进行数据的解密,确保了应用程序的数据的准确性及完整性,保证了应用程序的正常运行,有效避免程序的数据损坏带来的信息泄露,提高了程序运行过程中的程序功能的实现及数据安全。
可选的,图4为本申请实施例提供的另一种嵌入式程序的安全引导方法的流程图。如图4所示,该方法还可包括:
S401、对引导程序的数据进行处理,得到处理后的第一数据。
该图4所示的方法可在上述图3所示的方法之前执行。该方法中可在接收到上电指令后,执行该S401。该上电(power on)指令可以为芯片的上电指令,在接收到该上电指令后,可根据该上电指令,进行上电复位(Power-On Reset,POR)。在进行上电复位之后,便可触发对该引导程序进行自检,可对引导程序的数据进行处理,得到处理后的第一数据。
其中,该引导程序可以为芯片启动引导程序(bootloader)。该方法中可对该引导程序的数据进行循环冗余校验(Cyclic Redundancy Check,CRC)计算,得到CRC数据。该第一数据即为该CRC数据。该CRC例如可以为CRC32,即32位的CRC数据。
需要说明的是,在对该引导程序进行处理之前,还可根据该上电指令,进行系统初始化,以初始化芯片启动相关的功能模块,如配置芯片的数据缓冲区、使能温度检测模块、使能光检测模块等至少一种。其中,该功能模块例如可包括:芯片启动相关的软件和/或硬件模块。
S402、根据该第一数据,和预先存储的该引导程序的第二数据,对该引导程序进行校验。
该第二数据可以为预先存储的,基于该引导程序采用上述S401中相同的处理算法得到的数据。示例的,若该第一数据为采用CRC算法得到的数据,则该第二数据可以为该引导程序的CRC校验码。若该第一数据为采用CRC算法得到的32位的CRC数据,则该第二数据可以为该引导程序的32位的CRC校验码。
为保证该第二数据的准确度,提高校验准确度,保证信息安全,该第二数据可以预先存储在ROM中的预设位置。
该方法可,例如可通过对该第一数据与该第二数据进行比较,继而对该引导程序进行校验。若该第一数据与该第二数据相同,则可确定该引导程序校验通过;反之,若该第一数据与该第二数据不同,则可确定该引导程序的数据不完整,可能被泄露或篡改,因此确定该引导程序校验失败,即不通过。
若该引导程序校验通过,则可继续执行下述S403。
若该引导程序校验不通过,则可停止该引导程序的运行。
S403、若校验通过,根据该引导程序的数据运行该引导程序。
上述S401和S402也为引导程序运行过程中的一部分,因此,该方法若校验通过,可根据该引导程序的数据继续运行该引导程序,即继续执行该引导程序的流程。
该嵌入式程序的安全引导方法,可在通过对引导程序的数据进行处理,得到处理后的第一数据,并根据该第一数据与预先存储的该引导程序的第二数据,对该引导程序进行校验,若校验通过,便根据该引导程序的数据运行该引导程序。该方法可通过在对该引导程序进行校验通过后,继续运行该引导程序,确保了引导程序的数据的完整性,可有效避免引导程序的数据损坏带来的信息泄露,提高了程序运行过程中的程序功能的实现及数据安全。
如上所述的实施例的嵌入式程序的安全引导方法中所涉及的该引导程序的数据可包括:该引导程序的指令代码,和/或,该引导程序的运行数据。
可选的,在上述程序方法中,S401中对引导程序的数据进行处理,得到处理后的第一数据之前,该方法还可包括:
从ROM的预设地址开始取指,读取该ROM中存储的该引导程序的数据。
该ROM的预设地址可以包括:该ROM的第一存储区的预设地址和该ROM的第二存储器的预设地址。该ROM的第一存储区例如可以为指令ROM(IROM)上的预设存储区,该ROM的第二存储区例如可以为数据ROM(DROM)上的预设存储区。其中,该上述ROM的各存储区可以为集成在芯片上的ROM。其中,取指,指的是,地址指针的取值。
该ROM的第一存储区可存储有该引导程序的指令代码,该ROM的第二存储区上可存储有该引导程序的运行数据。
该引导程序的指令代码可以在芯片制造过程中,通过加密模式固化存储至该ROM的第一存储区中。也就是说,该ROM的第一存储区所存储的该引导程序的指令代码是采用预设加密密钥加密后得到的指令代码,用以保证指令代码的存储安全性。因而,该方法中,在读取该引导程序的数据后,还需对该引导程序的数据进行解密,得到解密后的该引导程序的数据。
该实施例的方法,可通过从ROM的预设地址开始取指,触发程序自检模块,并通过程序自检模块读取该ROM中存储的该引导程序的数据。
在读取到该ROM中存储的该引导程序的数据后,便可基于该读取到的该引导程序的数据执行上述S401。
可选的,该嵌入式程序的安全引导方法中,在读取得到该引导程序的数据的情况下,该方法还可包括:
将该引导程序的数据映射至RAM的第二存储区中。
在实现过程中,可采用数据映射技术,将从ROM中读取得到的该引导程序的数据,采用数据映射技术映射至RAM的第二存储区。RAM的第二存储区可以为该RAM中的数据RAM(DRAM)上的存储区。
以该引导程序的运行数据为例,则可将该引导程序的运行数据从该ROM的第二存储区如DROM,映射至RAM的第二存储区如DRAM中。
该方法中,可从ROM中将该引导程序的数据映射至RAM的第二存储区中,继而通过调用该第二存储区中存储的该引导程序的数据运行该引导程序。也就是说,对于该引导程序的数据,ROM仅是用于存储的,执行运行过程中,是从RAM的第二存储区进行读取调用的。如此,即便RAM的第二存储区存储的该引导程序的会被篡改,由于ROM中还存储有该引导程序的数据,而每次运行时,都先从ROM中获取该引导程序的数据,并写入RAM的第二存储区继而进行调用。那么可使得每次运行的引导程序的数据实际都是未被篡改的,安全的数据。
可选的,图5为本申请实施例提供的又一种嵌入式程序的安全引导方法的流程图。如图5所示,该方法还可包括:
S501、在引导程序运行过程中,对单次可编程存储器所存储的信息进行校验。
其中,该单次可编程存储器所存储的信息包括:第二数字校验码。
该方法可通过对该单次可编程存储器所存储的信息采用预设算法进行处理,并根据该处理得到的信息以及该第二数字校验码,对该单次可编程存储器所存储的信息进行校验,用以校验该单次可编程存储器所存储的信息的正确性。若该处理得到的信息与该第二数字校验码不同,则可确定该单次可编程存储器所存储的信息校验失败即不通过;反之,若该处理得到的信息与该第二数字校验码相同,则可确定该单次可编程存储器所存储的信息校验成功即通过。
如上所示的,该第二数字校验码例如可以为安全哈希算法(Secure HashAlgorithm,SHA)值。对应的,该方法中,则可对该单次可编程存储器所存储的信息采用SHA进行处理,并根据处理得到的SHA值以及该单次可编程存储器所存储的SHA值,对该单次可编程存储器所存储的信息进行校验。
若校验通过,便可继续执行下述S502;反之,若校验不通过,则可停止该引导程序的运行。
单次可编程存储器因为只能单次编程,其存储的信息不可被篡改,主要存储的信息重要性更高,例如根密钥、应用程序的私钥、以及模式控制字段。
单次可编程存储器中并不存储引导程序的数据,也不存储应用程序的数据。
S502、若校验通过,则继续运行该引导程序。
该方法中,对单次可编程存储器所存储的信息进行校验,可有效保证单次可编程存储器中所存储信息的安全性,保证程序运行过程中的信息安全。
可选的,该单次可编程存储器所存储的信息还包括:根密钥,和应用程序的私钥。
该根密钥经过安全措施电路转换后,用于派生设备私钥和派生用于数据加密运算的密钥。
该应用程序可为用户固件程序,则该应用程序的私钥也可称为固件私钥。
该应用程序的私钥例如可以为椭圆曲线集成加密方案(Elliptic CurveIntegrate Encrypt Scheme,ECIES)得到的私钥,称为ECIES私钥。该应用程序的私钥可用于对该应用程序的信息进行加密和/或解密。
继续参照图5,该方法还可包括:
S503、控制该单次可编程存储器的控制器,将该根密钥和该应用程序的私钥,写入RAM的第三存储区中。
若该单次可编程存储器为eFuse存储器,则该单次可编程存储器的控制器可以为电熔丝控制器(eFuse controller)。单次可编程存储器的控制器可以由主控CPU控制。
该RAM的第三存储区可以为该RAM中的密钥存储区,该密钥存储区可以为该RAM中的密钥RAM(KEYRAM)上的存储区。
该方法中可通过控制该单次可编程存储器的控制器,将该根密钥通和该应用程序的私钥,通过安全措施电路接口写入该第三存储区中。
对于存储在该第三存储区中的密钥,该方法中,还可控制密码协处理器通过安全措施电路从该第三存储区中进行读取。
该方法中,可将从该单次可编程存储器中读取的根密钥,和该应用程序的私钥,写入RAM中的第三存储区如密钥存储区中,可有效避免敏感数据不会通过引导程序的运行泄露。
可选的,为保证存储有各类型密钥的该RAM得到第三存储区的安全性,该方法中,对于该第三存储区还可具有对应的密钥。在上述S503中控制该单次可编程存储器的控制器将该根密钥和该应用程序的私钥,写入RAM的第三存储区中之前,该方法还可包括:
S503a、将随机数作为该第三存储区对应的密钥,写入该第三存储区的控制器中。
该方法中可通过使能随机数生成器(TRNG),并通过安全措施电路对随机数生成器所生成的随机数进行转换,得到该第三存储区对应的密钥,继而写入该第三存储区的控制器中。该第三存储区例如可以为KEYRAM存储区,则该第三存储区的控制器可以为KEYRAM存储区的控制器。
该第三存储区对应的密钥可包括:该第三存储区对应的加密密钥和加扰密钥。该第三存储区对应的加密密钥可用于对该第三存储区存储的信息进行加密处理,该第三存储区对应的加扰密钥可用于对该第三存储区存储的信息进行加扰处理。
在一个实施例中,由于第三存储区为密钥存储区,其存储的密钥都比较重要,那么为保证第三存储区所存储的信息的安全,该第三存储区还具有对应的密钥,而该第三存储区对应的密钥是写入控制器中的。
有单次可编程存储器的情况下,在引导程序的运行过程中,将其存储的密钥写入第三存储区中,方便后续运行应用程序过程中的调用。那么为保证第三存储区的数据安全,可通过随机数生成器生成的随机数作为第三存储区的密钥。
该方法中,可将随机数作为第三存储区对应的密钥,并其写入第三存储区对应的控制器中,可有效保证第三存储区存储的信息的安全。并且,由于该第三存储区对应的密钥是随机数,那么其被破解的几率便比较小。即便存储在第三存储区对应的控制器中的,第三存储区对应的密钥可能被破解,只要再运行一遍引导程序,该第三存储区对应的密钥便会发生变化,变为其它的随机数,其没有规律可循,其可靠性更高。
可选的,在上述方法的基础上,该方法还可包括:
S504、读取该第三存储区中存储的该根密钥。
该根密钥可以为上述S503写入该第三存储区中的根密钥。
S505、根据该根密钥,采用预设的密钥生成算法,生成加解密密钥和校验密钥。
该预设的密钥生成算法也可称为密钥生成函数,其可以为对称密钥算法,也可以为非对称的密钥算法。
若该预设的密钥生成算法为非对称的密钥算法,该方法中,还需采用公钥算法函数,计算共享点坐标,如ECIES密钥的共享点坐标,继而根据该根密钥、该共享点坐标,采用该预设的密钥生成算法,得到该加解密密钥和该校验密钥。
该加解密密钥可以为高级加密标准(Advanced Encryption Standard,AES)密钥。该校验密钥可以为HMAC密钥。
S506、将该加解密密钥和该校验密钥写入该第三存储区中。
可选的,继续参照上述图5,该方法还可包括:
S507、控制闪存存储器的控制器,读取该闪存存储器存储的配置信息。
在执行该S507之前,可先对该闪存存储器的控制器进行初始化,在初始化完成后,便可控制该闪存存储器的控制器读取该闪存存储器存储的配置信息。
该闪存存储器存储的该配置信息包括:芯片配置信息,和/或,应用程序的配置信息。
该芯片配置信息例如可以包括有芯片配置数据(INFO)的信息,该应用程序的配置信息例如可以包括有用户配置数据(PARMA)的信息。
S508、根据该校验密钥,对该配置信息进行校验。
图6为本申请实施例提供的一种配置信息的存储结构图。如图6所示,该闪存存储器所存储的该配置信息可包括:数字校验码和配置数据。其中,该数字校验码例如可以为HMAC校验码。
该方法中可根据该校验密钥,以及该配置信息所包括的数字校验码,对该配置信息进行完整性校验。
假设,若该校验密钥例如可以为HMAC密钥,该配置信息包括的数字校验码为HMAC校验码,该方法中,可根据该HAMC密钥,和该配置信息中的HMAC校验码进行比较,继而实现对该配置信息的完整性校验。
示例地,该方法可在该HMAC密钥与该配置信息中的HMAC校验码相同的情况下,确定该配置信息校验通过;反之,可在该HMAC密钥与该配置信息中的HMAC校验码不同的情况下,确定该配置信息校验不通过。
S509、若校验通过,则采用该加解密密钥,对该配置信息进行解密,并将该解密后的数据写入该RAM的第二存储区。
该加解密密钥例如可以为AES密钥,该方法中,若该配置信息校验通过,则可根据该AES密钥,对该配置信息进行解密,并将解密得到的数据写入该第二存储区,也就是该RAM的DRAM中。
该方法中可通过校验密钥以及该加解密密钥,保证了配置信息的安全性。
可选的,若该配置信息包括:该应用程序的配置信息。参照上述图5,该方法还可包括:
S510、根据该根密钥和该应用程序的配置信息,采用预设的密钥生成算法,生成设备密钥,并将该设备密钥写入该第三存储区中。
该S510中所涉及的该应用程序的配置信息可以为从闪存存储器中所读取的信息。
由于该应用程序的数据存储在闪存存储器中,该芯片配置信息和/或应用程序的配置信息,则该闪存存储器中,可至少存储三部分的数据,芯片配置信息、应用程序的配置信息和/或应用程序的数据、以及用户存储数据(DATA)。
如下以该芯片配置信息包括INFO信息、该应用程序的配置信息包括PARMA信息、该应用程序的数据包括FW数据为例进行说明。
图7为本申请实施例提供的一种闪存存储器的信息存储结构图。如图7所示,该闪存存储器中可存储有INFO信息、PARMA信息或FW数据、以及DATA。除了DATA外,每种类型的信息可分别具有主存储区和备存储区,同一类型的信息的主存储区和备存储区的大小相同。其中,INFO信息的主存储区、INFO信息的备存储区可在闪存存储器的起始位置依次设置,之后依次设置有PARAM信息或者FW数据的主存储区、之后设置PARAM信息或者FW数据的备存储区,剩余空间为DATA的存储区。其中,INFO信息的主存储区和INFO信息的备存储区例如可以为闪存存储器中的存储区0(region-0),PARAMA信息的主存储区例如可以为闪存存储区中的存储区1(region-1),FW信息的主存储区例如可以为闪存存储区中的存储区2(region-2)。
其中,INFO信息可包括:PARMA信息或FW数据、以及DATA其中任意一种或多种,在闪存存储器中的起始地址信息、结束地址信息以及应用程序的大小信息等。
可选的,如上所示的单次可编程存储器所存储的信息还包括:模式控制字段。该模式控制字段用于控制芯片的工作模式为调试模式或安全模式。
该调试模式为芯片的出厂模式。其中,该调试模式可以为芯片的出厂默认工作模式,可通过烧写单次可编程存储器中的模式控制字段关闭该调试模式。该调试模式不可逆,即一旦关闭,便无法再次进入。在嵌入式芯片上还包括:至少一个寄存器,其均可称为模式寄存器。在该调试模式下,可通过控制该模式寄存器的值将芯片的工作模式切换至应用模式。由于单次可编程存储区仅可进行一次可编程,即数据写入,出厂的时候仅可写入一次,该模式寄存器是为了后续模式的切换,在运行引导程序的过程中需要进行接入,以切换模式。
该安全模式为对该模式控制字段烧写后,芯片上电后的工作模式。在该安全模式下,可通过控制该模式寄存器的值将工作模式切换至应用模式。
该应用模式为该引导程序加载完成后,芯片的工作模式。该应用模式为芯片正常运行应用程序的模式,可通过控制该模式寄存器的值将工作模式切换至该应用模式。在该应用模式下,可根据内存访问权限的控制给予芯片上不同安全模块不同的访问权限。
其中,调试模式下的访问权限可大于安全模式的访问权限,而安全模式的访问权限可大于该应用模式的访问权限。
图8为本申请实施例提供的不同工作模式之间的状态转换图。由图8可知,芯片的初始工作模式可以为调试模式,也可以为安全模式。调试模式可切换至安全模式,也可切换至应用模式;安全模式也可切换至应用模式。
在上述嵌入式程序的安全引导方法的基础上,本申请实施例提供的该嵌入式程序的安全引导方法还可包括:
S511、将当前工作模式切换至该应用模式。
S512、在该应用模式下,运行该应用程序。
在该嵌入式芯片上可至少一个寄存器,其均可称为模式寄存器。该方法中,可通过软件写入的方式对该模式寄存器的值进行配置,从而由当前工作模式切换至该应用模式。该模式寄存器的值可以为预设的该应用模式对应的模式寄存器的值。
在该单次可编程存储器中,还可存储有该调试模式的配置信息、该安全模式的配置信息以及该应用模式的配置信息。
该方法中,在切换至该应用模式后,可控制该单次可编程存储器的控制器,从该单次可编程存储器中获取该应用模式的配置信息,从而便可根据该应用模式的配置信息,配置该应用模式下的内存访问控制权限,用以调用该应用程序的数据,继而运行该应用程序。
在该应用模式下,也具有对应的内存访问控制权限,因而可根据该应用模式下的内存访问控制权限,从上述RAM中的第一存储区中调用该应用程序的数据,并根据该应用程序的数据运行该应用程序。
该方法中,还可通过具有不同访问权限的工作模式,保证了引导程序可应对不同的安全攻击威胁,提高程序的运行安全,保证数据安全。
下述为本申请装置实施例,可以用于执行本申请上述方法实施例,其实现原理和技术效果类似。
图9为本申请实施例提供的一种嵌入式程序的安全引导装置的结构示意图。该嵌入式程序的安全引导装置可通过软件和/或硬件的方式实现,可集成在该设备内部。如图9所示,该嵌入式程序的安全引导装置90包括:获取模块91、校验模块92和解密模块93。
获取模块91,用于在运行嵌入式程序的引导程序时,获取应用程序的数据,该应用程序的数据包括:签名信息、公钥信息、该应用程序的参数信息、加密数据及第一数字校验码。
校验模块92,用于根据该签名信息,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行签名校验;若该签名校验通过,根据该第一数字校验码,对该公钥信息、该应用程序的参数信息和该加密数据进行完整性校验。
解密模块93,用于若该完整性校验通过,根据该公钥信息、该应用程序的参数信息,对该加密数据进行解密。
该嵌入式程序的安全引导装置,可根据签名信息进行签名校验,根据数字校验码进行完整性校验,继而进行数据的解密,确保了应用程序的数据的准确性及完整性,保证了应用程序的正常运行,有效避免程序的数据损坏带来的信息泄露,提高了程序运行过程中的程序功能的实现及数据安全。
可选的,获取模块91,具体用于控制闪存存储器的控制器,读取该闪存存储器存储的该应用程序的数据。
可选的,上述嵌入式程序的安全引导装置90还包括:
第一写入模块,用于将解密后的该应用程序的数据写入随机存取存储器RAM的第一存储区中。
可选的,上述嵌入式程序的安全引导装置90还包括:处理模块和运行模块。
处理模块,用于对该引导程序的数据进行处理,得到处理后的第一数据。
校验模块92,还用于根据该第一数据和预先存储的该引导程序的第二数据,对该引导程序进行校验。
运行模块,用于若校验通过,根据该引导程序的数据运行该引导程序。
可选的,上述该引导程序的数据包括:该引导程序的指令代码,和/或,该引导程序的运行数据。
可选的,上述嵌入式程序的安全引导装置90还包括:
第一读取模块,用于在处理模块对引导程序的数据进行处理,得到处理后的第一数据之前,从ROM的预设地址开始取指,读取该ROM中存储的该引导程序的数据。
可选的,上述嵌入式程序的安全引导装置90还包括:
映射模块,用于将该引导程序的数据映射至RAM的第二存储区中。
可选的,该单次可编程存储器所存储的信息包括:数字认证码。
校验模块92,还用于根据所述第二数字校验,对单次可编程存储器所存储的其它信息进行校验。
运行模块,还用于若校验通过,则继续运行该引导程序。
可选的,该单次可编程存储器所存储的其它信息包括:根密钥,和应用程序的私钥。
如上所述的嵌入式程序的安全引导装置90还包括:
控制模块,用于控制该单次可编程存储器的控制器将该根密钥和该应用程序的私钥,写入RAM的第三存储区中。
可选的,上述嵌入式程序的安全引导装置90还包括:
第二写入模块,用于在控制模块控制该单次可编程存储器的控制器将该根密钥和该应用程序的私钥写入该第三存储区中之前,将随机数作为该第三存储器对应的密钥,写入该第三存储区的控制器中。
可选的,上述嵌入式程序的安全引导装置90还包括:
第二读取模块,用于读取该第三存储区中存储的该根密钥;
生成模块,用于根据该根密钥,采用预设的密钥生成算法,生成加解密密钥和校验密钥。
第三写入模块,还用于将该加解密密钥和该校验密钥写入该第三存储区中。
可选的,控制模块,还用于控制闪存存储器的控制器,读取该闪存存储器存储的配置信息;
校验模块92,还用于根据该校验密钥,对该配置信息进行校验。
解密模块93,还用于若校验通过,则采用该加解密密钥,对该配置信息进行解密。
第三写入模块,还用于将该解密后的数据写入该RAM的第二存储区。
可选的,该配置信息包括:芯片配置信息,和/或,应用程序的配置信息。
可选的,若该配置信息包括:该应用程序的配置信息;
生成模块,还用于根据该根密钥和该应用程序的配置信息,采用预设的密钥是生成算法,生成设备密钥。
第三写入模块,还用于将该设备密钥写入该第三存储区中。
可选的,单次可编程存储器所存储的信息还包括:模式控制字段;该模式控制字段用于控制芯片的工作模式为调试模式或安全模式;
该调试模式为芯片的出厂模式;
该安全模式为对该模式控制字段烧写后,芯片上电后的工作模式;
该应用模式为该引导程序加载完成后,芯片的工作模式。
可选的,上述嵌入式程序的安全引导装置90还包括:
切换模块,用于将当前工作模式切换至该应用模式;该当前工作模式为该调试模式或该安全模式。
运行模块,还用于在该应用模式下,运行该应用程序。
本实施例提供的嵌入式程序的安全引导装置可执行上述图1至图8中任一所示的嵌入式程序的安全引导方法,其具体实现及有效效果,可参见上述,在此不再赘述。
图10为本申请实施例提供的一种嵌入式设备的结构示意图。如图10所示,本实施例的嵌入式设备100包括:存储器101和处理器102。存储器101通过总线103与处理器102连接。
存储器101,用于存储程序指令。
处理器102,用于调用存储器101存储的该程序指令时,执行如下步骤:
在运行嵌入式程序的引导程序时,获取应用程序的数据;该应用程序的数据包括:签名信息、公钥信息、该应用程序的参数信息、加密数据及第一数字校验码;
根据该签名信息,对该公钥信息、该应用程序的参数信息、该加密数据及该第一数字校验码进行签名校验;
若该签名校验通过,根据该第一数字校验码,对该公钥信息、该应用程序的参数信息和该加密数据进行完整性校验;
若该完整性校验通过,根据该公钥信息、该应用程序的参数信息,对该加密数据进行解密。
可选的,处理器102,还用于控制闪存存储器的控制器,读取该闪存存储器存储的该应用程序的数据。
可选的,处理器102,还用于将解密后的该应用程序的数据写入RAM的第一存储区中。
可选的,处理器102,还用于对该引导程序的数据进行处理,得到处理后的第一数据;根据该第一数据,和预先存储的该引导程序的第二数据,对该引导程序进行校验;若校验通过,根据该引导程序的数据运行该引导程序。
可选的,该引导程序的数据包括:该引导程序的指令代码,和/或,该引导程序的运行数据。
可选的,处理器102,还用于从ROM的预设地址开始取指,读取该ROM中存储的该引导程序的数据。
可选的,处理器102,还用于将该引导程序的数据映射至该RAM的第二存储区中。
可选的,处理器102,还用于根据单次可编程存储器存储的信息所包括的第二数字校验码,对该单次可编程存储器存储的其它信息进行校验;若校验通过,则继续运行该引导程序。
可选的,该单次可编程存储器存储的其它信息包括:该根密钥和该应用程序的私钥。
处理器102,还用于控制单次可编程存储器的控制器将该根密钥和该应用程序的私钥,写入该RAM的第三存储区中。
可选的,处理器102,还用于将随机数作为该第三存储区对应的密钥,写入该第三存储区的控制器中。
可选的,处理器102,还用于读取该第三存储区中存储的该根密钥;根据该根密钥,采用预设的密钥生成算法,生成加解密密钥和校验密钥;将该加解密密钥和该校验密钥写入该第三存储区中。
可选的,处理器102,还用于控制闪存存储器的控制器,读取该闪存存储器存储的配置信息;根据该校验密钥,对该配置信息进行校验;若校验通过,则采用该加解密密钥,对该配置信息进行解密,并将该解密后的数据写入该RAM的第二存储区。
可选的,该配置信息包括:芯片配置信息,和/或,应用程序的配置信息。
可选的,若该配置信息包括:该应用程序的配置信息。
处理器102,还用于根据该根密钥和该应用程序的配置信息,采用预设的密钥生成算法,生成设备密钥,并将该设备密钥写入该第三存储区中。
可选的,该单次可编程存储器所存储的信息还包括:模式控制字段;该模式控制字段用于控制芯片的工作模式为调试模式或安全模式。
该调试模式为芯片的出厂模式;该安全模式为对该模式控制字段烧写后,芯片上电后的工作模式;该应用模式为该引导程序加载完成后,芯片的工作模式。
可选的,处理器102,还用于将当前工作模式切换至该应用模式,并在该应用模式下,运行该应用程序;该当前工作模式为该调试模式或该安全模式。
本实施例提供的电子设备可执行上述图1至图8中任一所示的嵌入式程序的安全引导方法,其具体实现及有效效果,可参见上述,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序可被上述图10中所示的处理器102执行实现上任一实施例所示的嵌入式程序的安全引导方法,其具体实现及有效效果,可参见上述,在此不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (32)

1.一种嵌入式程序的安全引导方法,其特征在于,所述方法包括:
在运行嵌入式程序的引导程序时,获取应用程序的数据,所述应用程序的数据包括:签名信息、公钥信息、所述应用程序的参数信息、加密数据及第一数字校验码;
根据所述签名信息,对所述公钥信息、所述应用程序的参数信息、所述加密数据及所述第一数字校验码进行签名校验;
若所述签名校验通过,根据所述第一数字校验码,对所述公钥信息、所述应用程序的参数信息和所述加密数据进行完整性校验;
若所述完整性校验通过,根据所述公钥信息、所述应用程序的参数信息,对所述加密数据进行解密;
对所述引导程序的数据进行处理,得到处理后的第一数据;
根据所述第一数据,和预先存储的所述引导程序的第二数据,对所述引导程序进行校验;
若校验通过,根据所述引导程序的数据运行所述引导程序。
2.根据权利要求1所述的方法,其特征在于,所述获取应用程序的数据,包括:
控制闪存存储器的控制器,读取所述闪存存储器存储的所述应用程序的数据。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将解密后的所述应用程序的数据写入随机存取存储器RAM的第一存储区中。
4.根据权利要求1所述的方法,其特征在于,所述引导程序的数据包括:所述引导程序的指令代码,和/或,所述引导程序的运行数据。
5.根据权利要求4所述的方法,其特征在于,所述对所述引导程序的数据进行处理,得到处理后的第一数据之前,所述方法还包括:
从只读存储器ROM的预设地址开始取指,读取所述ROM中存储的所述引导程序的数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将所述引导程序的数据映射至RAM的第二存储区中。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据单次可编程存储器存储的信息包括的第二数字校验码,对所述单次可编程存储器存储的其它信息进行校验;
若校验通过,则继续运行所述引导程序。
8.根据权利要求7所述的方法,其特征在于,所述单次可编程存储器存储的信息还包括:根密钥和所述应用程序的私钥,所述方法还包括:
控制所述单次可编程存储器的控制器将所述根密钥和所述应用程序的私钥,写入RAM的第三存储区中。
9.根据权利要求8所述的方法,其特征在于,所述控制所述单次可编程存储器的控制器将根密钥和所述应用程序的私钥,写入所述RAM的第三存储区中之前,所述方法还包括:
将随机数作为所述第三存储区对应的密钥,写入所述第三存储区的控制器中。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
读取所述第三存储区中存储的所述根密钥;
根据所述根密钥,采用预设的密钥生成算法,生成加解密密钥和校验密钥;
将所述加解密密钥和所述校验密钥写入所述第三存储区中。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
控制闪存存储器的控制器,读取所述闪存存储器存储的配置信息;
根据所述校验密钥,对所述配置信息进行校验;
若校验通过,则采用所述加解密密钥,对所述配置信息进行解密,并将所述解密后的数据写入所述RAM的第二存储区。
12.根据权利要求11所述的方法,其特征在于,所述配置信息包括:芯片配置信息,和/或,应用程序的配置信息。
13.根据权利要求12所述的方法,其特征在于,若所述配置信息包括:所述应用程序的配置信息;所述方法还包括:
根据所述根密钥和所述应用程序的配置信息,采用预设的密钥生成算法,生成设备密钥,并将所述设备密钥写入所述第三存储区中。
14.根据权利要求1所述的方法,其特征在于,单次可编程存储器所存储的信息还包括:模式控制字段;所述模式控制字段用于控制芯片的工作模式为调试模式或安全模式;
所述调试模式为芯片的出厂模式;
所述安全模式为对所述模式控制字段烧写后,芯片上电后的工作模式;
应用模式为所述引导程序加载完成后,芯片的工作模式。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
将当前工作模式切换至所述应用模式;所述当前工作模式为所述调试模式或所述安全模式;
在所述应用模式下,运行所述应用程序。
16.一种嵌入式程序的安全引导装置,其特征在于,所述装置包括:
获取模块,用于在运行嵌入式程序的引导程序时,获取应用程序的数据,所述应用程序的数据包括:签名信息、公钥信息、所述应用程序的参数信息、加密数据及第一数字校验码;
校验模块,用于根据所述签名信息,对所述公钥信息、所述应用程序的参数信息、所述加密数据及所述第一数字校验码进行签名校验;若所述签名校验通过,根据所述第一数字校验码,对所述公钥信息、所述应用程序的参数信息和所述加密数据进行完整性校验;
解密模块,用于若所述完整性校验通过,根据所述公钥信息、所述应用程序的参数信息,对所述加密数据进行解密;
处理模块,用于对所述引导程序的数据进行处理,得到处理后的第一数据;
所述校验模块,还用于根据所述第一数据和预先存储的所述引导程序的第二数据,对所述引导程序进行校验;
运行模块,用于若校验通过,根据所述引导程序的数据运行所述引导程序。
17.根据权利要求16所述的装置,其特征在于,
所述获取模块,具体用于控制闪存存储器的控制器,读取所述闪存存储器存储的所述应用程序的数据。
18.根据权利要求16所述的装置,其特征在于,所述装置还包括:
第一写入模块,用于将解密后的所述应用程序的数据写入随机存取存储器RAM的第一存储区中。
19.根据权利要求16所述的装置,其特征在于,所述引导程序的数据包括:所述引导程序的指令代码,和/或,所述引导程序的运行数据。
20.根据权利要求19所述的装置,其特征在于,所述装置还包括:
第一读取模块,用于在所述处理模块对所述引导程序的数据进行处理,得到处理后的第一数据之前,从只读存储器ROM的预设地址开始取指,读取所述ROM中存储的所述引导程序的数据。
21.根据权利要求20所述的装置,其特征在于,所述装置还包括:
映射模块,用于将所述引导程序的数据映射至RAM的第二存储区中。
22.根据权利要求16所述的装置,其特征在于,
所述校验模块,还用于根据单次可编程存储器所存储的信息包括的第二数字校验,对所述单次可编程存储器存储的其它信息进行校;
所述运行模块,还用于若校验通过,则继续运行所述引导程序。
23.根据权利要求22所述的装置,其特征在于,所述单次可编程存储器存储的其它信息包括:根密钥和所述应用程序的私钥,所述装置还包括:
控制模块,用于控制所述单次可编程存储器的控制器将根密钥和应用程序的私钥,写入RAM的第三存储区中。
24.根据权利要求23所述的装置,其特征在于,所述装置还包括:
第二写入模块,用于在所述控制模块控制所述单次可编程存储器的控制器将所述根密钥和所述应用程序的私钥写入所述第三存储区中之前,将随机数作为所述第三存储区对应的密钥,写入所述第三存储区的控制器中。
25.根据权利要求23所述的装置,其特征在于,所述装置还包括:
第二读取模块,用于读取所述第三存储区存储的所述根密钥;
生成模块,用于根据所述根密钥,采用预设的密钥生成算法,生成加解密密钥和校验密钥;
第三写入模块,用于将所述加解密密钥和所述校验密钥写入所述第三存储区中。
26.根据权利要求25所述的装置,其特征在于,
所述控制模块,还用于控制闪存存储器的控制器,读取所述闪存存储器存储的配置信息;
所述校验模块,还用于根据所述校验密钥,对所述配置信息进行校验;
所述解密模块,还用于若校验通过,则采用该加解密密钥,对所述配置信息进行解密;
所述第三写入模块,还用于将该解密后的数据写入所述RAM的第二存储区。
27.根据权利要求26所述的装置,其特征在于,所述配置信息包括:芯片配置信息,和/或,应用程序的配置信息。
28.根据权利要求27所述的装置,其特征在于,若所述配置信息包括:所述应用程序的配置信息;
所述生成模块,还用于根据所述根密钥和所述应用程序的配置信息,采用预设的密钥生成算法,生成设备密钥;
所述第三写入模块,还用于将所述设备密钥写入所述第三存储区中。
29.根据权利要求16所述的装置,其特征在于,单次可编程存储器所存储的信息还包括:模式控制字段;所述模式控制字段用于控制芯片的工作模式为调试模式或安全模式;
所述调试模式为芯片的出厂模式;
所述安全模式为对所述模式控制字段烧写后,芯片上电后的工作模式;
应用模式为所述引导程序加载完成后,芯片的工作模式。
30.根据权利要求29所述的装置,其特征在于,
所述装置还包括:
切换模块,用于将当前工作模式切换至所述应用模式;所述当前工作模式为所述调试模式或所述安全模式;
所述运行模块,还用于在所述应用模式下,运行所述应用程序。
31.一种嵌入式设备,其特征在于,包括:存储器和处理器;所述处理器和所述存储器通过总线连接;
所述存储器,用于存储程序指令和运行数据;
所述处理器,用于调用所述存储器存储的所述程序指令和所述运行数据时,执行上述权利要求1-15中任一项所述的嵌入式程序的安全引导方法。
32.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1-15中任一项所述的嵌入式程序的安全引导方法。
CN201880001250.3A 2018-08-23 2018-08-23 嵌入式程序的安全引导方法、装置、设备及存储介质 Active CN111095213B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/101983 WO2020037612A1 (zh) 2018-08-23 2018-08-23 嵌入式程序的安全引导方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111095213A CN111095213A (zh) 2020-05-01
CN111095213B true CN111095213B (zh) 2024-04-30

Family

ID=69592172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880001250.3A Active CN111095213B (zh) 2018-08-23 2018-08-23 嵌入式程序的安全引导方法、装置、设备及存储介质

Country Status (4)

Country Link
US (1) US11562075B2 (zh)
EP (1) EP3644181A4 (zh)
CN (1) CN111095213B (zh)
WO (1) WO2020037612A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110677250B (zh) 2018-07-02 2022-09-02 阿里巴巴集团控股有限公司 密钥和证书分发方法、身份信息处理方法、设备、介质
CN110795774B (zh) 2018-08-02 2023-04-11 阿里巴巴集团控股有限公司 基于可信高速加密卡的度量方法、设备和系统
CN110795742B (zh) 2018-08-02 2023-05-02 阿里巴巴集团控股有限公司 高速密码运算的度量处理方法、装置、存储介质及处理器
CN110874478B (zh) * 2018-08-29 2023-05-02 阿里巴巴集团控股有限公司 密钥处理方法及装置、存储介质和处理器
CN111597560B (zh) * 2020-05-18 2023-05-09 国网电力科学研究院有限公司 一种安全可信模组启动方法及系统
CN112114888A (zh) * 2020-09-29 2020-12-22 上海大郡动力控制技术有限公司 一种电动汽车电控系统通用客户端引导程序生成方法
CN112632562B (zh) * 2020-12-28 2024-01-26 四川虹微技术有限公司 设备启动方法、设备管理方法和嵌入式设备
CN112711761B (zh) * 2021-01-12 2024-03-19 联合汽车电子有限公司 控制器的安全防护方法、控制器的主芯片及控制器
KR20220155684A (ko) 2021-05-17 2022-11-24 삼성전자주식회사 Crum 칩 및 스마트 카드
CN113177201A (zh) * 2021-05-20 2021-07-27 北京奕斯伟计算技术有限公司 程序校验、签名方法及装置、soc芯片
CN113467842B (zh) * 2021-06-25 2023-09-19 厦门码灵半导体技术有限公司 适用于工业级应用场景的嵌入式设备的启动方法、嵌入式设备和计算机可读存储介质
CN113778061B (zh) * 2021-09-16 2023-03-28 广州锦红源电子科技有限公司 电子控制器程序完整性的校验方法、装置、电子控制器
CN114615075B (zh) * 2022-03-28 2023-04-25 重庆长安汽车股份有限公司 一种控制器的软件防篡改系统、方法及存储介质
CN115766014A (zh) * 2022-05-19 2023-03-07 惠州市德赛西威汽车电子股份有限公司 一种控制器安全管理方法、装置、车辆及存储介质
CN114785503B (zh) * 2022-06-16 2022-09-23 北京智芯半导体科技有限公司 密码卡及其根密钥保护方法、计算机可读存储介质
CN115080075B (zh) * 2022-08-22 2022-11-18 南京芯驰半导体科技有限公司 一种嵌入式硬件安全模块的固件部署系统及方法
CN115130114B (zh) * 2022-08-31 2022-12-23 杭州云动智能汽车技术有限公司 一种网关安全启动方法、装置、电子设备及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226482A (zh) * 2013-03-22 2013-07-31 深圳市九洲电器有限公司 一种机顶盒引导启动方法和装置
CN103810421A (zh) * 2014-02-19 2014-05-21 北京视博数字电视科技有限公司 应用程序的校验方法、装置和终端设备
CN103914658A (zh) * 2013-01-05 2014-07-09 展讯通信(上海)有限公司 终端设备的安全启动方法及终端设备
KR20180007717A (ko) * 2016-07-13 2018-01-24 (주)이더블유비엠 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
CN108347332A (zh) * 2017-06-06 2018-07-31 清华大学 验证固件签名的方法及装置
US10057243B1 (en) * 2017-11-30 2018-08-21 Mocana Corporation System and method for securing data transport between a non-IP endpoint device that is connected to a gateway device and a connected service

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4058322B2 (ja) * 2002-10-07 2008-03-05 株式会社ルネサステクノロジ メモリカード
US20050283601A1 (en) * 2004-06-22 2005-12-22 Sun Microsystems, Inc. Systems and methods for securing a computer boot
US20060236122A1 (en) * 2005-04-15 2006-10-19 Microsoft Corporation Secure boot
WO2011109780A2 (en) * 2010-03-05 2011-09-09 Maxlinear, Inc. Code download and firewall for embedded secure application
EP2820546B1 (en) * 2012-03-02 2019-07-31 INSIDE Secure Blackbox security provider programming system permitting multiple customer use and in field conditional access switching
CN103258164A (zh) * 2013-02-20 2013-08-21 中国电力科学研究院 一种嵌入式可信系统的启动方法
US9471785B2 (en) * 2013-08-30 2016-10-18 Freescale Semiconductor, Inc. Systems and methods for secure boot ROM patch
JP6054908B2 (ja) * 2014-05-22 2016-12-27 レノボ・シンガポール・プライベート・リミテッド 変数セットを修復する方法、コンピュータ・プログラムおよびコンピュータ
CN104156659B (zh) * 2014-08-14 2017-02-01 电子科技大学 一种嵌入式系统的安全启动方法
US9953167B2 (en) * 2015-10-12 2018-04-24 Microsoft Technology Licensing, Llc Trusted platforms using minimal hardware resources
KR102353058B1 (ko) * 2016-02-02 2022-01-20 삼성전자주식회사 시스템 온 칩 및 그것의 동작 방법
US9778309B1 (en) * 2016-03-17 2017-10-03 Qualcomm Incorporated Type-C factory and special operating mode support
US10268844B2 (en) * 2016-08-08 2019-04-23 Data I/O Corporation Embedding foundational root of trust using security algorithms
KR102617354B1 (ko) * 2017-01-05 2023-12-26 삼성전자주식회사 보안 부트 시퀀서 및 보안 부트 장치
US10528740B2 (en) * 2017-06-15 2020-01-07 International Business Machines Corporation Securely booting a service processor and monitoring service processor integrity
TWI626541B (zh) * 2017-08-31 2018-06-11 慧榮科技股份有限公司 將資料寫入至快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
CN108154025A (zh) * 2017-12-22 2018-06-12 北京四达时代软件技术股份有限公司 嵌入式设备启动的方法、应用程序镜像处理的方法及装置
US10819510B2 (en) * 2018-02-06 2020-10-27 Wickr Inc. Facilitating communications using hybrid cryptography

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103914658A (zh) * 2013-01-05 2014-07-09 展讯通信(上海)有限公司 终端设备的安全启动方法及终端设备
CN103226482A (zh) * 2013-03-22 2013-07-31 深圳市九洲电器有限公司 一种机顶盒引导启动方法和装置
CN103810421A (zh) * 2014-02-19 2014-05-21 北京视博数字电视科技有限公司 应用程序的校验方法、装置和终端设备
KR20180007717A (ko) * 2016-07-13 2018-01-24 (주)이더블유비엠 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
CN108347332A (zh) * 2017-06-06 2018-07-31 清华大学 验证固件签名的方法及装置
US10057243B1 (en) * 2017-11-30 2018-08-21 Mocana Corporation System and method for securing data transport between a non-IP endpoint device that is connected to a gateway device and a connected service

Also Published As

Publication number Publication date
EP3644181A4 (en) 2020-07-15
WO2020037612A1 (zh) 2020-02-27
US11562075B2 (en) 2023-01-24
US20200117805A1 (en) 2020-04-16
CN111095213A (zh) 2020-05-01
EP3644181A1 (en) 2020-04-29

Similar Documents

Publication Publication Date Title
CN111095213B (zh) 嵌入式程序的安全引导方法、装置、设备及存储介质
CN108269605B (zh) 安全器件状态设备和方法
US9953166B2 (en) Method for securely booting target processor in target system using a secure root of trust to verify a returned message authentication code recreated by the target processor
KR100792287B1 (ko) 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치
US20150186679A1 (en) Secure processor system without need for manufacturer and user to know encryption information of each other
US8572410B1 (en) Virtualized protected storage
US11003781B2 (en) Root key processing method and associated device
US11829479B2 (en) Firmware security verification method and device
US20070237325A1 (en) Method and apparatus to improve security of cryptographic systems
RU2541196C2 (ru) Способ обеспечения целостности программного обеспечения
US9842214B2 (en) System and method to secure on-board bus transactions
TWI402755B (zh) 具有生命周期階段之安全記憶卡
JP2007310688A (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
KR101954439B1 (ko) 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
US11874928B2 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
JP2018508063A (ja) セキュア素子
US20230017231A1 (en) Securely executing software based on cryptographically verified instructions
CN114995918A (zh) 基板管理控制器的启动方法、配置方法、装置及电子设备
CN113343215A (zh) 嵌入式软件的授权和认证方法及电子设备
CN111357003A (zh) 预操作系统环境中的数据保护
KR101711926B1 (ko) 보안기능을 가지는 SoC 및 SoC의 보안방법
CN114816549B (zh) 一种保护bootloader及其环境变量的方法及系统
US20220317184A1 (en) Secured debug
US20220237329A1 (en) System and method for validating trust provisioning operation on system-on-chip
JP4580030B2 (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
GR01 Patent grant