CN115509555A - 一种灵活配置的安全启动装置及方法 - Google Patents

一种灵活配置的安全启动装置及方法 Download PDF

Info

Publication number
CN115509555A
CN115509555A CN202211179235.2A CN202211179235A CN115509555A CN 115509555 A CN115509555 A CN 115509555A CN 202211179235 A CN202211179235 A CN 202211179235A CN 115509555 A CN115509555 A CN 115509555A
Authority
CN
China
Prior art keywords
signature
data
otp
writing
arm processor
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
Application number
CN202211179235.2A
Other languages
English (en)
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center 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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202211179235.2A priority Critical patent/CN115509555A/zh
Publication of CN115509555A publication Critical patent/CN115509555A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming

Landscapes

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

Abstract

本发明提供了一种灵活配置的安全启动装置及方法,装置包括:固定签名模块,用于将用户指定的分区进行签名或者按照地址大小的方式进行签名;数据写入模块,用于将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;芯片启动模块,用于获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。本申请可以实现高效灵活的固件程序签名,简单易用且高效集成的OTP模块数据的写入,极大的提高工作效率,降低OTP功能的使用复杂度。

Description

一种灵活配置的安全启动装置及方法
技术领域
本发明涉及处理器技术领域,具体涉及一种灵活配置的安全启动装置及方法。
背景技术
ARM处理器广泛应用于各个行业,如在服务器领域,ARM处理器作为BMC监控和管理服务器。随着ARM处理器的广泛应用,系统的安全性要求愈发明显,对于ARM处理器运行的数据完整性和安全性的要求也有明显提升。现在的主流windows系统均支持安全启动功能,嵌入式领域的发展,也引入了安全启动的功能,对于安全启动功能的支持和维护工具也显得尤为重要。
目前芯片厂商提供的OTP烧写器只能在某种系统模式下进行烧写(如MaskRom下),且必须使用专用软件烧录。同时现有签名工具对于固定的分区签名,并且对于固件程序需要签名的数据和签名的位置有严格要求,现有签名工具只能签名固定的分区,且无法新增分区签名,不能自定义签名以及签名数据在固件程序中的位置,不利于产品的灵活配置开发。
因此,针对问题,需要提出一种更优的灵活配置的安全启动装置及方法。
发明内容
有鉴于此,本发明的目的在于提出一种改进的灵活配置的安全启动装置及方法。
目前芯片厂商提供的OTP烧写器只能在某种系统模式下进行烧写(如MaskRom下),且必须使用专用软件烧录。同时现有签名工具对于固定的分区签名,并且对于固件程序需要签名的数据和签名的位置有严格要求,现有签名工具只能签名固定的分区,且无法新增分区签名,不能自定义签名以及签名数据在固件程序中的位置,不利于产品的灵活配置开发。因此,针对问题,需要提出一种更优的灵活配置的安全启动装置及方法,其中,所述灵活配置的安全启动装置包括固定签名模块,用于将用户指定的分区进行签名或者按照地址大小的方式进行签名;数据写入模块,用于将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;芯片启动模块,用于获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。本发明解决了OTP签名烧写的工具的限制,支持在uboot下和系统下直接烧写签名文件,同时对于生成固件程序的签名,支持按照分区签名和自定义签名位置,大小以及签名结果的存放位置。
这种实现的优点在于在进行固件程序签名时可以根据项目需要,灵活增加签名的数量,位置,大小。在写入OTP时,不需要受限于CPU的工作模式,即可以在常见的uboot工作模式下或者系统工作模式下通过OTP写入工具直接烧写。
基于上述目的,一方面,本发明提供了一种灵活配置的安全启动装置,所述灵活配置的安全启动装置包括:
固定签名模块,用于将用户指定的分区进行签名或者按照地址大小的方式进行签名;
数据写入模块,用于将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
芯片启动模块,用于获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
在根据本发明的灵活配置的安全启动装置的一些实施例中,所述固定签名模块包括:
签名工具配置单元,用于提供签名配置文件。
在根据本发明的灵活配置的安全启动装置的一些实施例中,所述固定签名模块还包括:
签名执行单元,获取签名配置文件数据,解析配置文件数据,动态实现对需要签名分区的签名。
本发明的另一方面,还提供了一种灵活配置的安全启动方法,所述灵活配置的安全启动方法,具体包括:
将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作;
获取固件程序签名数据,根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
在根据本发明的灵活配置的安全启动方法的一些实施例中,所述将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作的方法,具体包括:
提取配置文件数据库;
通过配置文件指定不同的分区地址以及该分区对应的签名的位置,其中,配置文件中包含签名的起始地址,大小,以及签名数据的结束地址;
固件签名工具通过解析配置文件识别需要签名的文件,以及在固件程序中存放的起始位置和大小,通过进行签名算法算法计算出签名数据,写入到配置文件指定存放签名数据的位置,完成固件程序的签名。
在根据本发明的灵活配置的安全启动方法的一些实施例中,所述方法进一步包括:通过SHA256或RSA2048算法进行签名算法算法计算出签名数据。
在根据本发明的灵活配置的安全启动方法的一些实施例中,所述写入到配置文件指定存放签名数据的位置,完成固件程序的签名的方法,具体包括:
解析配置文件;
判断配置文件是否签名完成所有分区,若签名完成所有分区,结束解析配置,若否,执行下一步;
检查对应路径下文件是否存在,若存在,执行下一部,若否,按照ima文件的StartAddr和MaxSize计算签名值;
计算文件大小;
检查文件大小是否查过最大值,若是,报告签名失败,结束签名流程,若否,执行下一步;
基于SHA算法计算该文件的hash值;
通过RASA私钥进行hash值的签名;
判断签名结果是否写入对应的SignatureStartAddr,若对应,则结束签名流程,若否,执行上述判断配置文件是否签名完成所有分区步骤。
在根据本发明的灵活配置的安全启动方法的一些实施例中,所述根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,具体包括:
获取公钥的pem文件,其中,公钥的pem文件为二进制文件public.bin;
判断检测设备是否在线,若是执行下一步骤,若否,提示写入设备理线,结束写入流程;
发送tcp数据包,等待tcp回应;
解析tcp回包数据,获取运行状态;
解析运行状态,对运行状态进行判断;
获取运行状态判断结果,若运行在uboot中,将tfip命令或者tcp拷贝public.cin到内存中;
执行uboot otp写命令,完成OTP数据的写入;
执行OTP命令使能OTP模块,提示OTP功能成功开启,结束写入流程。
在根据本发明的灵活配置的安全启动方法的一些实施例中,所述根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,具体还包括:
获取运行状态判断结果,若运行在系统中,将scp命令或者tcp拷贝public.cin到设备中
检测是否有文件public.cin,若否,提示未检测到文件,结束写入流程;
若是,调用OTP控制进程将OTP数据写入;
发送tcp命令使能OTP模块;
调用OTP控制进程使能OTP模块,提示OTP功能成功开启,结束写入流程。
在根据本发明的灵活配置的安全启动方法的一些实施例中,所述获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动的方法,具体包括:
ARM处理器开机后,按照逐步校验过程实现安全启动,保证运行的程序是没有进行修改的,正常校验成功,可以实现逐级启动。如果过程中出现错误,则停留在此阶段,不再进行下一级处理。
本发明至少具有以下有益技术效果:本发明能够实现高效灵活的固件程序签名,简单易用且高效集成的OTP模块数据的写入,极大的提高工作效率,降低OTP功能的使用复杂度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
在图中:
图1示出了根据本发明的灵活配置的安全启动装置的结构示意图;
图2示出了根据本发明的灵活配置的固定签名模块的结构示意图;
图3示出了根据本发明的灵活配置的安全启动方法的实现流程示意图;
图4示出了将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作方法的实现流程示意图;
图5示出了写入到配置文件指定存放签名数据的位置,完成固件程序的签名方法的实现流程示意图;
图6示出了根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中方法的实现流程示意图;
图7示出了根据本发明的ARM处理器开机安全启动执行流程的实现流程示意图;
图8示出了本发明中的签名工具配置文件的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
目前芯片厂商提供的OTP烧写器只能在某种系统模式下进行烧写(如MaskRom下),且必须使用专用软件烧录。同时现有签名工具对于固定的分区签名,并且对于固件程序需要签名的数据和签名的位置有严格要求,现有签名工具只能签名固定的分区,且无法新增分区签名,不能自定义签名以及签名数据在固件程序中的位置,不利于产品的灵活配置开发。因此,针对问题,需要提出一种更优的灵活配置的安全启动装置及方法,其中,所述灵活配置的安全启动装置包括固定签名模块,用于将用户指定的分区进行签名或者按照地址大小的方式进行签名;数据写入模块,用于将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;芯片启动模块,用于获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。本发明解决了OTP签名烧写的工具的限制,支持在uboot下和系统下直接烧写签名文件,同时对于生成固件程序的签名,支持按照分区签名和自定义签名位置,大小以及签名结果的存放位置。这种实现的优点在于在进行固件程序签名时可以根据项目需要,灵活增加签名的数量,位置,大小。在写入OTP时,不需要受限于CPU的工作模式,即可以在常见的uboot工作模式下或者系统工作模式下通过OTP写入工具直接烧写。
本发明实施例提供了一种灵活配置的安全启动装置,如图1所示,所述灵活配置的安全启动装置包括:
固定签名模块100,用于将用户指定的分区进行签名或者按照地址大小的方式进行签名;
数据写入模块120,用于将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
芯片启动模块130,用于获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
在本实施例中,工作时,固定签名模块100将用户指定的分区进行签名或者按照地址大小的方式进行签名,然后数据写入模块200将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中,最后芯片启动模块300,获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
本发明解决了OTP签名烧写的工具的限制,支持在uboot下和系统下直接烧写签名文件,同时对于生成固件程序的签名,支持按照分区签名和自定义签名位置,大小以及签名结果的存放位置。这种实现的优点在于在进行固件程序签名时可以根据项目需要,灵活增加签名的数量,位置,大小。在写入OTP时,不需要受限于CPU的工作模式,即可以在常见的uboot工作模式下或者系统工作模式下通过OTP写入工具直接烧写。
本发明实施例提供了一种固定签名模块100,如图2所示,所述固定签名模块100包括:
签名工具配置单元110,用于提供签名配置文件。
签名执行单元120,获取签名配置文件数据,解析配置文件数据,动态实现对需要签名分区的签名。
在本实施例中,固件签名工具通过解析配置文件识别需要签名的文件,以及在固件程序中存放的起始位置和大小,通过进行签名算法(如SHA256和RSA2048)算法计算出签名数据,写入到配置文件指定存放签名数据的位置,完成固件程序的签名。
示例性的,如图8所示,示出了签名工具配置文件内容,展示了配置文件内容,配置文件格式包含SIGNATURE描述头,每个分区的名称,如UBOOT,DTB,KERNEL,ROOTFS,OTHERFS(其他使用的文件系统)等,每个分区包含FilePath文件路径,在分区的起始地址,分区的最大值,签名数据地址,如需要新增加签名的分区,可以在该分区文件下继续增加即可,实现了对于指定分区的签名,同时,OTHERFS未指定文件的路径,则按照给定的StartAddr和MaxSize进行签名,实现了自定义位置和大小的签名。
本发明实施例还提供了一种灵活配置的安全启动方法,如图3所示,所述灵活配置的安全启动方法,具体包括:
步骤S10,将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作;
步骤S20,获取固件程序签名数据,根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
步骤S30,获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
在本实施例中,本发明解决了OTP签名烧写的工具的限制,支持在uboot下和系统下直接烧写签名文件,同时对于生成固件程序的签名,支持按照分区签名和自定义签名位置,大小以及签名结果的存放位置。这种实现的优点在于在进行固件程序签名时可以根据项目需要,灵活增加签名的数量,位置,大小。在写入OTP时,不需要受限于CPU的工作模式,即可以在常见的uboot工作模式下或者系统工作模式下通过OTP写入工具直接烧写。
本发明实施例提供了所述将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作的方法,如图4所示,所述将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作的方法包括:
步骤S101,提取配置文件数据库;
步骤S102,通过配置文件指定不同的分区地址以及该分区对应的签名的位置,其中,配置文件中包含签名的起始地址,大小,以及签名数据的结束地址;
步骤S103,固件签名工具通过解析配置文件识别需要签名的文件,以及在固件程序中存放的起始位置和大小,通过进行签名算法算法计算出签名数据,写入到配置文件指定存放签名数据的位置,完成固件程序的签名。
在本实施例中,通过SHA256或RSA2048算法进行签名算法算法计算出签名数据。
示例性的,签名工具签名时通过解析配置文件,动态的实现对于所以需要签名的分区的签名,对于无文件路径的文件,按照起始位置和最大的大小进行签名,实现了既可以指定分区的签名,又可以根据大小任意大小的签名。签名工具执行流程如下图5所示。下图SignatureImage为签名的工具。xxx.ima为固件程序,所述写入到配置文件指定存放签名数据的位置,完成固件程序的签名的方法,具体包括:
步骤S201,解析配置文件;
步骤S202,判断配置文件是否签名完成所有分区,若签名完成所有分区,结束解析配置,若否,执行下一步;
步骤S203,检查对应路径下文件是否存在,若存在,执行下一部,若否,按照ima文件的StartAddr和MaxSize计算签名值;
步骤S204,计算文件大小;
步骤S205,检查文件大小是否查过最大值,若是,报告签名失败,结束签名流程,若否,执行下一步;
步骤S206,基于SHA算法计算该文件的hash值;
步骤S207,通过RASA私钥进行hash值的签名;
步骤S208,判断签名结果是否写入对应的SignatureStartAddr,若对应,则结束签名流程,若否,执行上述判断配置文件是否签名完成所有分区步骤。
示例性的,SHA算法为安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。
示例性的,RSA为公开密钥密码体制是一种使用不同的加密密钥与解密密钥,“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。加密密钥简称为私钥,解密工具简称为公钥。
本发明实施例提供了根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,如图6所示,所述根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,具体包括:
步骤S301,获取公钥的pem文件,其中,公钥的pem文件为二进制文件public.bin;
步骤S302,判断检测设备是否在线,若是执行下一步骤;
步骤S3021,若否,提示写入设备理线,结束写入流程;
步骤S303,发送tcp数据包,等待tcp回应;
步骤S304,解析tcp回包数据,获取运行状态;
步骤S304,解析运行状态,对运行状态进行判断;
步骤S3041,获取运行状态判断结果,若运行在uboot中;
步骤S3042,将tfip命令或者tcp拷贝public.cin到内存中;
步骤S3043,执行uboot otp写命令;
步骤S3044,完成OTP数据的写入;
步骤S3045,执行OTP命令使能OTP模块;
步骤S306,提示OTP功能成功开启,结束写入流程。
在本实施例中,所述根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,具体还包括:
步骤S3051,获取运行状态判断结果;
步骤S3052,若运行在系统中,将scp命令或者tcp拷贝public.cin到设备中;
步骤S3053,检测是否有文件public.cin,若否,提示未检测到文件,结束写入流程;
步骤S3054,若是,调用OTP控制进程将OTP数据写入;
步骤S3055,发送tcp命令使能OTP模块;
步骤S3056,调用OTP控制进程使能OTP模块;
步骤S306,提示OTP功能成功开启,结束写入流程。
本发明实施例提供了所述获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动的方法,如图7所示,所述获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动的方法:
在上述的执行,可以完成OTP数据的写入和固件程序的签名。将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
ARM处理器开机后,按照逐步校验过程实现安全启动,保证运行的程序是没有进行修改的,正常校验成功,可以实现逐级启动。如果过程中出现错误,则停留在此阶段,不再进行下一级处理。
在本实施例中,ARM处理器开机安全启动执行流程步骤,包括:
步骤S401,ARM处理器上电;
步骤S402,芯片利用otp公钥数据解析uboot-spl签名数据Hash值;
步骤S403,芯片计算存储的固件程序uboot-spl部分的Hash。
步骤S404,判断芯片计算的Hash值和otp解析出的Hash值是否一致;
步骤S4010,若否,CPU运行停在此阶段。
步骤S4041,若是,加载uboot-spl程序并运行;
步骤S4042,uboot-spl利用otp公钥数据解析uboot签名数据Hash值;
步骤S4043,uboot-spl程序计算存储的固件程序uboot部分的Hash。
步骤S405,判断uboot-spl计算的Hash值和otp解析出的Hash值是否一致;
步骤S4010,若否,CPU运行停在此阶段。
步骤S4051,若是,加载uboot程序并运行;
步骤S4052,uboot利用otp公钥数据解析kernel和dtb签名数据Hash值;
步骤S4053,uboot-spl程序计算存储的固件程序kernel和dtb签名数据Hash。
步骤S406,判断uboot计算的Hash值和otp解析出的Hash值是否一致。
步骤S4010,若否,CPU运行停在此阶段。
步骤S4061,若是,加载kernel程序和其对应设备并运行;
步骤S4062,kernel利用otp公钥数据解析rootfs签名数据Hash值;
步骤S4063,kernel程序计算存储的rootfs的Hash。
步骤S407,判断kernel程序计算的Hash值和otp解析出的Hash值是否一致。
步骤S4010,若否,CPU运行停在此阶段。
步骤S4071,若是,kernel挂载rootfs并运行;
步骤S4072,rootfs利用otp公钥数据解析otherfs签名数据的Hash值;
步骤S4073,otherfs运行程序计算存储的otherfs的Hash。
步骤S408,判断rootfs运行程序计算的Hash值和otp解析出的Hash值是否一致。
步骤S4010,若否,CPU运行停在此阶段。
步骤S409,rootfs挂载otherfs并运行,结束流程。
示例性的,需要说明的是OTP:One Time Programmable,是芯片的一种存储器类型,意思是一次性可编程:程序烧入芯片后,将不可再次更改和清除。而固件程序:本文指运行在ARM处理器上的用于系统可以正常工作的完整程序,包含BootLoader,Kernel,RootFs,OtherFs等。BootLoader:启动引导程序,运行于Kernel程序之前,用于引导Kernel程序。BootLoader从FLASH指定分区将固件程序读取到内存中,然后跳转到固件程序中运行。
本申请中,安全启动是对系统软件采用签名认证的方式,在设备出厂前对设备操作系统的Image文件进行签名认证,并将公钥的数据写入芯片的一次性可编程模块(OTP)。设备开机会通过公钥数据解析签名数据,进行验签。
本发明实施例还提供了一种计算机设备的结构示意图,该计算机设备包括显示屏、存储器、处理器以及计算机程序,其中所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述灵活配置的安全启动方法的步骤:
将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作;
获取固件程序签名数据,根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
可以理解的是,在本发明提供的优选实施例中,该计算机设备还可以为笔记本电脑、个人数字助理(Personal Digital Assistant,PDA)、手机等可以进行通信的设备。
本发明实施例还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行所述灵活配置的安全启动方法的步骤:
将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作;
获取固件程序签名数据,根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
可以理解的是,在本发明提供的优选实施例中,该计算机设备还可以为笔记本电脑、个人数字助理(Personal Digital Assistant,PDA)、手机等可以进行通信的设备。
示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。例如,上述计算机程序可以被分割成上述各个系统实施例提供的泊位状态显示系统的单元或模块。
本领域技术人员可以理解,上述终端设备的描述仅仅是示例,并不构成对终端设备的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,上述处理器是上述终端设备的控制中心,利用各种接口和线路连接整个用户终端的各个部分。
上述存储器可用于存储计算机程序和/或模块,上述处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现上述终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如信息采集模板展示功能、产品信息发布功能等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明解决了OTP签名烧写的工具的限制,支持在uboot下和系统下直接烧写签名文件,同时对于生成固件程序的签名,支持按照分区签名和自定义签名位置,大小以及签名结果的存放位置。这种实现的优点在于在进行固件程序签名时可以根据项目需要,灵活增加签名的数量,位置,大小。在写入OTP时,不需要受限于CPU的工作模式,即可以在常见的uboot工作模式下或者系统工作模式下通过OTP写入工具直接烧写。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种灵活配置的安全启动装置,其特征在于,所述灵活配置的安全启动装置包括:
固定签名模块,用于将用户指定的分区进行签名或者按照地址大小的方式进行签名;
数据写入模块,用于将OTP数据写入ARM处理器,其中,将OTP数据写入ARM处理器实现根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
芯片启动模块,用于获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
2.根据权利要求1所述的装置,其特征在于,所述固定签名模块包括:
签名工具配置单元,用于提供签名配置文件。
3.根据权利要求2所述的装置,其特征在于,所述固定签名模块还包括:
签名执行单元,获取签名配置文件数据,解析配置文件数据,动态实现对需要签名分区的签名。
4.一种基于权利要求1-3任一所述灵活配置的安全启动装置的灵活配置的安全启动方法,其特征在于,所述灵活配置的安全启动方法,具体包括:
将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作;
获取固件程序签名数据,根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中;
获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动。
5.根据权利要求4所述的方法,其特征在于,所述将用户指定的分区进行签名或者按照地址大小的方式进行签名,执行固件程序签名工作的方法,具体包括:
提取配置文件数据库;
通过配置文件指定不同的分区地址以及该分区对应的签名的位置,其中,配置文件中包含签名的起始地址,大小,以及签名数据的结束地址;
固件签名工具通过解析配置文件识别需要签名的文件,以及在固件程序中存放的起始位置和大小,通过进行签名算法算法计算出签名数据,写入到配置文件指定存放签名数据的位置,完成固件程序的签名。
6.根据权利要求5所述的方法,其特征在于,所述方法进一步包括:通过SHA256或RSA2048算法进行签名算法算法计算出签名数据。
7.根据权利要求6所述的方法,其特征在于,所述写入到配置文件指定存放签名数据的位置,完成固件程序的签名的方法,具体包括:
解析配置文件;
判断配置文件是否签名完成所有分区,若签名完成所有分区,结束解析配置,若否,执行下一步;
检查对应路径下文件是否存在,若存在,执行下一部,若否,按照ima文件的StartAddr和MaxSize计算签名值;
计算文件大小;
检查文件大小是否查过最大值,若是,报告签名失败,结束签名流程,若否,执行下一步;
基于SHA算法计算该文件的hash值;
通过RASA私钥进行hash值的签名;
判断签名结果是否写入对应的SignatureStartAddr,若对应,则结束签名流程,若否,执行上述判断配置文件是否签名完成所有分区步骤。
8.根据权利要求7所述的方法,其特征在于,所述根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,具体包括:
获取公钥的pem文件,其中,公钥的pem文件为二进制文件public.bin;
判断检测设备是否在线,若是执行下一步骤,若否,提示写入设备理线,结束写入流程;
发送tcp数据包,等待tcp回应;
解析tcp回包数据,获取运行状态;
解析运行状态,对运行状态进行判断;
获取运行状态判断结果,若运行在uboot中,将tfip命令或者tcp拷贝public.cin到内存中;
执行uboot otp写命令,完成OTP数据的写入;
执行OTP命令使能OTP模块,提示OTP功能成功开启,结束写入流程。
9.根据权利要求8项所述的方法,其特征在于,所述根据ARM处理器所处的uboot工作模式或者系统工作模式下将用户需要写入的解析签名的数据写入OTP模块中的方法,具体还包括:
获取运行状态判断结果,若运行在系统中,将scp命令或者tcp拷贝public.cin到设备中;
检测是否有文件public.cin,若否,提示未检测到文件,结束写入流程;
若是,调用OTP控制进程将OTP数据写入;
发送tcp命令使能OTP模块;
调用OTP控制进程使能OTP模块,提示OTP功能成功开启,结束写入流程。
10.根据权利要求4所述的方法,其特征在于,所述获取OTP数据的写入和固件程序的签名,将签名后的固件程序写入ARM处理器中,开机可以实现ARM处理器的安全启动的方法,具体包括:
ARM处理器开机后,按照逐步校验过程实现安全启动,保证运行的程序是没有进行修改的,正常校验成功,可以实现逐级启动。如果过程中出现错误,则停留在此阶段,不再进行下一级处理。
CN202211179235.2A 2022-09-27 2022-09-27 一种灵活配置的安全启动装置及方法 Pending CN115509555A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211179235.2A CN115509555A (zh) 2022-09-27 2022-09-27 一种灵活配置的安全启动装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211179235.2A CN115509555A (zh) 2022-09-27 2022-09-27 一种灵活配置的安全启动装置及方法

Publications (1)

Publication Number Publication Date
CN115509555A true CN115509555A (zh) 2022-12-23

Family

ID=84506274

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211179235.2A Pending CN115509555A (zh) 2022-09-27 2022-09-27 一种灵活配置的安全启动装置及方法

Country Status (1)

Country Link
CN (1) CN115509555A (zh)

Similar Documents

Publication Publication Date Title
CN101578609B (zh) 安全启动计算设备
US9965270B2 (en) Updating computer firmware
CN108462760B (zh) 电子装置、集群访问域名自动生成方法及存储介质
US20200134192A1 (en) Security Profiling of System Firmware and Applications from an OOB Appliance at a Differentiated Trust Boundary
US11886595B2 (en) Computer boot method, controller, storage medium, and system
US20180349607A1 (en) Recovering an information handling system from a secure boot authentication failure
US20190042753A1 (en) Validating an image using an embedded hash in an information handling system
US9436828B2 (en) Systems and methods for command-based entry into basic input/output system setup from operating system
CN108509215B (zh) 一种系统软件的更换方法、装置、终端设备及存储介质
US20160065375A1 (en) Dynamic integrity validation of a high level operating system
US8140835B2 (en) Updating a basic input/output system (‘BIOS’) boot block security module in compute nodes of a multinode computer
CN115714653A (zh) 基于注解的认证方法、装置、设备及存储介质
US11429723B2 (en) Multi-domain boot and runtime status code drift detection
US11651077B2 (en) Systems and methods for providing secured boot and scan for devices with limited access
US11347519B2 (en) Systems and methods for detecting short-term changes to BIOS setup
CN115509555A (zh) 一种灵活配置的安全启动装置及方法
CN113505026B (zh) 验证备份数据的方法、装置、设备及存储介质
US20220374522A1 (en) Systems and methods for extending boot security trust chaining to state changes between boot sessions
WO2022086860A1 (en) Accelerated non-volatile memory device inspection and forensics
CN114124475A (zh) 一种网络资产端口扫描及服务识别方法、装置
US11481497B2 (en) Systems and methods for hardware attestation in an information handling system
EP4369233A1 (en) Control method and apparatus for safety boot of chip, electronic device and storage medium
CN111176735B (zh) 一种心电图机启动加速方法
US20240104085A1 (en) Computer system and method for evaluating integrity and parsing of a file system and parsing implementation
CN115544545A (zh) 一种工业计算机及其硬盘加密方法

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