CN117609984A - 基于risc-v架构的代码校验方法及装置 - Google Patents

基于risc-v架构的代码校验方法及装置 Download PDF

Info

Publication number
CN117609984A
CN117609984A CN202311563316.7A CN202311563316A CN117609984A CN 117609984 A CN117609984 A CN 117609984A CN 202311563316 A CN202311563316 A CN 202311563316A CN 117609984 A CN117609984 A CN 117609984A
Authority
CN
China
Prior art keywords
code
risc
opensbi
architecture
reference value
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
CN202311563316.7A
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.)
Beijing University of Technology
Original Assignee
Beijing University of Technology
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 Beijing University of Technology filed Critical Beijing University of Technology
Priority to CN202311563316.7A priority Critical patent/CN117609984A/zh
Publication of CN117609984A publication Critical patent/CN117609984A/zh
Pending legal-status Critical Current

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/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/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种基于RISC‑V架构的代码校验方法及装置,属于计算机技术领域,所述方法包括:基于FSBL代码,校验OpenSBI代码;基于OpenSBI代码,确定启动程序代码的基准值和度量值;若其基准值和度量值一致,则确定该启动程序代码安全。本发明以OpenSBI代码为中心,对RISC‑V架构中的所有启动程序代码进行校验,考虑到了不同硬件环境下RISC‑V平台启动流程各不相同的情况,为RISC‑V提供了更好的可拓展和可移植性,在一定程度上降低了RISC‑V架构下启动程序代码的安全启动流程对RISC‑V平台启动效率的影响,提高了启动程序代码的安全启动流程和RISC‑V架构的相容性。

Description

基于RISC-V架构的代码校验方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于RISC-V架构的代码校验方法及装置。
背景技术
随着可信计算技术的兴起,启动程序代码的安全启动逐渐成为研究热点。启动程序代码的可信性的建立需要借助于可信根的选择,保证可信链建立时信任源点的可信性,而良好的可信链路径,在保证可信启动的同时,确保对服务器启动时间的影响降到最低。
同时在现局面的半导体发展格局下,ARM、X86架构生态壁垒砌的高而结实,RISC-V一经出现,凭借其开源免费、编程简单,高模块化,高灵活性等优点,在5G、物联网、汽车等应用领域多点开花,也更适合产业的发展,更适合中国市场。硬件平台启动过程的代码和一些关键数据涉及到整个平台的安全性,一旦出现问题,可能会给平台带来极大的安全威胁。目前保障硬件安全性主要依靠于可信启动过程的实现,在平台启动过程中,以设立的可信根为起点,对后续需要运行的启动程序代码和关键数据进行逐级静态度量,通过与基准值对比校验其安全性,进而依据相应的策略对启动流程进行裁决,保护了硬件平台的安全性。
目前在基于RISC-V架构上安全启动流程实现方法的研究上存在欠缺,通用的可信启动流程又同时会对RISC-V架构的稳定性和启动效率带来不利影响,不能保证可信技术在RISC-V架构上的合理适配。需要找到一种适配RISC-V架构的启动程序代码的安全校验方法。
发明内容
本发明提供一种基于RISC-V架构的代码校验方法及装置,用以解决现有技术中启动程序代码的安全校验方法与RISC-V架构不适配的缺陷,实现降低了RISC-V架构下启动程序代码的安全启动流程对RISC-V平台启动效率的影响,提高了启动程序代码的安全启动流程和RISC-V架构的相容性。
第一方面,本发明提供一种基于RISC-V架构的代码校验方法,包括:
基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;
基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值;
若所述启动程序代码的基准值和度量值一致,则确定所述启动程序代码安全。
根据本发明提供的一种基于RISC-V架构的代码校验方法,所述基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值,包括:
基于所述OpenSBI代码,读取所述启动程序代码的基准值;
基于所述OpenSBI代码,对所述启动程序代码进行哈希运算,将所述启动程序代码的哈希值作为所述启动程序代码的度量值。
根据本发明提供的一种基于RISC-V架构的代码校验方法,所述基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码之后,所述方法还包括:
若基于所述OpenSBI代码,读取不到所述启动程序代码的基准值,则基于所述OpenSBI代码,对所述启动程序代码进行sm3 hash运算,将所述启动程序代码的哈希值作为所述启动程序代码的基准值;
存储所述启动程序代码的基准值,以表征所述启动程序代码安全。
根据本发明提供的一种基于RISC-V架构的代码校验方法,所述基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码,包括:
基于所述FSBL代码,读取所述OpenSBI代码的基准值;
基于所述FSBL代码,对所述OpenSBI代码进行sm3 hash运算,将所述OpenSBI代码的哈希值作为所述OpenSBI代码的度量值;
若所述OpenSBI代码的基准值和所述OpenSBI代码的度量值一致,则确定所述OpenSBI代码安全。
根据本发明提供的一种基于RISC-V架构的代码校验方法,所述基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码,包括:
若基于所述FSBL代码,读取不到所述OpenSBI代码的基准值,则基于所述FSBL代码,对所述OpenSBI代码进行sm3 hash运算,将所述OpenSBI代码的哈希值作为所述OpenSBI代码的基准值;
存储所述OpenSBI代码的基准值,以表征所述OpenSBI代码安全。
根据本发明提供的一种基于RISC-V架构的代码校验方法,所述存储所述启动程序代码的基准值,包括:
将所述启动程序代码的基准值存储至所述RISC-V架构的嵌入式存储器芯片TCM的非易失性存储器NV空间中。
根据本发明提供的一种基于RISC-V架构的代码校验方法,所述基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值之后,所述方法还包括:
若所述启动程序代码的基准值和度量值不一致,则确定所述启动程序代码校验失败。
第二方面,本发明还提供一种基于RISC-V架构的代码校验装置,包括:
第一校验模块,用于基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;
确定模块,用于基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值;
第二校验模块,用于若所述启动程序代码的基准值和度量值一致,则确定所述启动程序代码安全。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于RISC-V架构的代码校验方法的步骤。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于RISC-V架构的代码校验方法的步骤。
本发明提供的基于RISC-V架构的代码校验方法及装置,通过基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值;若所述启动程序代码的基准值和度量值一致,则确定所述启动程序代码安全。本发明实施例以OpenSBI代码为中心,对RISC-V架构中的所有启动程序代码进行校验,考虑到了不同硬件环境下RISC-V平台启动流程各不相同的情况,为RISC-V提供了更好的可拓展和可移植性,在一定程度上降低了RISC-V架构下启动程序代码的安全启动流程对RISC-V平台启动效率的影响,提高了启动程序代码的安全启动流程和RISC-V架构的相容性。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于RISC-V架构的代码校验方法的流程示意图之一;
图2是本发明提供的RISC-V架构的结构示意图;
图3是本发明提供的基于RISC-V架构的代码校验方法的流程示意图之二;
图4是本发明提供的基于RISC-V架构的代码校验方法的流程示意图之三;
图5是本发明提供的基于RISC-V架构的代码校验装置的结构示意图;
图6是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明实施例的描述中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合图1-图6描述本发明实施例所提供的基于RISC-V架构的代码校验方法及装置。
图1是本发明提供的基于RISC-V架构的代码校验方法的流程示意图之一,如图1所示,包括但不限于以下步骤:
步骤100:基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;
需要说明的是,本发明实施例提供的任务构建方法的执行主体可以是服务器、计算机设备,例如手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等。
RISC-V架构是一种基于精简指令集计算机(RISC)哲学的指令集架构(ISA),RISC-V架构是开放的,免费的,并且被广泛认为是新一代计算机系统的标准。与其他指令集架构不同,RISC-V的设计强调可扩展性、灵活性和可定制性,可以被用于不同的应用和市场。RISC-V具有精益、高效、优化的特点,可以用于高性能计算、嵌入式系统、移动设备等多种场景。RISC-V架构下有三种特权级别,分别是机器模式(Machine)、监督模式(Supervisor)和用户模式(User),简称M模式、S模式和U模式。M模式权限最高,在这个级别下的程序可以访问一切硬件和执行所有特权指令;S模式一般用于运行操作系统;U模式一般是普通应用程序使用,权限最低。
开放式监督程序二进制接口(Open Supervisor Binary Interface,OpenSBI)是RISC-V架构下特有的平台固件。OpenSBI直接运行在系统M模式,可以作为一个BootLoader(引导加载程序)也可以是一个在M模式下运行的后台程序,OpenSBI程序拥有最高的权限,可以访问所有的硬件资源,向操作系统(Operating System,OS)提供了统一的系统调用环境。
第一阶段引导加载程序(First Stage Boot Loader,FSBL)用于启动和配置RISC-V处理器。FSBL负责初始化和配置RISC-V处理器、内存和其他外设,为后续的引导阶段创建一个合适的环境。
代码校验包括:(1)代码存在基准值时,校验代码的基准值和度量值是否一致;(2)代码不存在基准值时,确定代码的基准值。
如图2所示,本发明在RISC-V架构下的可信启动流程中,可利用嵌入式存储器芯片(Trusted Cryptography Module,TCM)提供的各种可信功能接口对硬件平台启动过程中的启动程序代码及关键数据进行静态度量,构建可信启动信任链,保护RISC-V架构启动过程中的安全可信。
如图2所示,本发明实施例通过FSBL代码,校验OpenSBI代码。当RISC-V架构的硬件系统连接电源后,启动并执行只读存储器(Read-Only Memory,ROM)中的代码ROM Code。如图2所示,ROM启动之后读取FSBL代码。ROM将硬盘上的FSBL加载到指令紧密集成存储器(Instruction TightlyIntegrated Memory,ITIM)中,通过ITIM运行FSBL。在FSBL代码的运行过程中,启用OpenSBI扩展度量模块,对OpenSBI代码进行静态度量校验。
步骤200:基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;
启动程序代码是RISC-V架构的系统硬件平台中的代码,包括伯克利引导加载程序(Berkeley Boot Loader,BBL)代码、OS代码和应用软件代码,例如,根文件系统(Root FileSystem,RootFS)代码。
基准值是代码首次启动时的哈希值,哈希算法将代码转换为一个固定长度的数字(哈希值)。基准值用于确定代码的标准状态。基准值作为代码的重要数值,存储在嵌入式存储器芯片(Trusted Cryptography Module,TCM)的NV空间中,读取或者修改基准值需要授权通过后才能读取或者修改。
存储启动程序代码的基准值,具体地,将启动程序代码的基准值存储至RISC-V架构的嵌入式存储器芯片TCM的非易失性存储器(NV,Non-Volatile Memory)空间中。
通过TCM可信密码模块提供的非易失性存储器定义(NV Define)接口在其内部开辟NV空间。TCM可信密码模块是一个安全芯片,它可以提供安全的存储空间和密钥管理,以及多种安全功能。其中,NV Define接口是用来定义NV空间的。该接口可以在TCM内部开辟NV空间,并指定该空间的访问策略和大小。开辟NV空间后,可以使用TCM的非易失性存储器写入(NV Write)接口,将需要存储的基准值写入NV空间,并根据TCM的非易失性存储器读取(NV Read)接口读取NV空间的基准值。
进一步的,在设置NV空间时,设置密码,后续访问NV空间中的启动程序代码的基准值时,需要输入正确的密码才能访问NV空间的基准值。
在OpenSBI代码校验成功后,结束FSBL代码的运行,启动并运行OpenSBI代码。在OpenSBI代码的运行过程中,以最高权限读取其他各阶段启动程序代码,通过度量控制模块,调用基于TCM可信密码模块实现的固件度量功能对启动程序代码计算度量值,调用NV空间读取功能读取出预先存好的启动程序代码的基准值。
步骤300:若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。
如图2所示,OpenSBI代码根据度量、裁决和平台控制核心功能模块,对启动程序代码的基准值和启动程序代码的基准值进行校验。对该启动程序代码的基准值和度量值进行校验,当该启动程序代码的基准值和度量值一致时,说明该启动程序代码未被未经授权的修改过,因此,可以确定该启动程序代码是安全的。
基于上述方法,OpenSBI代码校验完一个启动程序代码后,校验下一个启动程序代码,直至所有启动程序代码校验完毕。如图3所示,运行校验成功后的OpenSBI代码,根据OpenSBI代码,校验FSBL代码。若FSBL代码校验成功,则根据OpenSBI代码,校验BBL代码。若BBL代码校验成功,则根据OpenSBI代码,校验OS代码。若OS代码校验成功,则根据OpenSBI代码,校验RootFS代码。当所有的启动程序代码校验完成后,启动BBL代码,OS代码和RootFS代码。
进一步的,对启动程序代码的关键数据进行校验,例如策略文件。
具体的,若启动程序代码的基准值和度量值不一致,则确定启动程序代码校验失败。
当启动程序代码在未经授权的情况下被修改时,其预先存储的基准值不变,修改后的启动程序代码的度量值发生了变化,导致启动程序代码的基准值和度量值不一致。
如图4所示,当启动程序代码的基准值和度量值不一致时,说明该启动程序代码曾经被修改过,且该修改是未授权的修改,因此可以确定该启动程序代码校验失败,此时,启动程序代码处于不安全状态。
本发明实施例提供的基于RISC-V架构的代码校验方法,通过基于RISC-V架构中的FSBL代码,校验RISC-V架构中的OpenSBI代码;基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。本发明实施例以OpenSBI代码为中心,对RISC-V架构中的所有启动程序代码进行校验,考虑到了不同硬件环境下RISC-V平台启动流程各不相同的情况,为RISC-V提供了更好的可拓展和可移植性,在一定程度上降低了RISC-V架构下启动程序代码的安全启动流程对RISC-V平台启动效率的影响,提高了启动程序代码的安全启动流程和RISC-V架构的相容性。
基于上述实施例,基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值,包括:
步骤210:基于OpenSBI代码,读取启动程序代码的基准值;
步骤220:基于OpenSBI代码,对启动程序代码进行哈希运算,将启动程序代码的哈希值作为启动程序代码的度量值。
在OpenSBI校验成功后,运行OpenSBI代码,进行启动程序代码的度量操作,例如进行BBL代码的度量操作。调用NV空间的NV Read接口,读取NV空间中BBL代码的基准值。若能读取到BBL代码的基准值,则确定BBL代码为非首次启动。根据OpenSBI代码,读取BBL代码。同时,根据OpenSBI代码,调用TCM的驱动接口使用哈希运算(sm3密码杂凑算法)对BBL代码进行运算,将运算得到的哈希值与其基准值进行对比,校验成功则校验下一个启动程序代码。
若启动程序代码校验失败则生成日志信息,将相关信息进行日志记录,例如记录启动程序代码的基准值、度量值以及校验结果,并将该启动程序代码记录为不安全状态。同时,提醒用户,重新启动RISC-V架构,并进入RISC-V架构的备区系统。
本发明实施例通过OpenSBI代码,对启动程序代码进行sm3 hash运算,确定启动程序代码的度量值,进而实现对启动程序代码的校验。降低了启动程序代码的启动流程对RISC-V平台启动效率的影响,提高了启动程序代码的安全启动流程和RISC-V架构的相容性。
基于上述实施例,基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码之后,方法还包括:
步骤230:若基于OpenSBI代码,读取不到启动程序代码的基准值,则基于OpenSBI代码,对启动程序代码进行sm3 hash运算,将启动程序代码的哈希值作为启动程序代码的基准值;
步骤240:存储启动程序代码的基准值,以表征启动程序代码安全。
根据OpenSBI代码,对启动程序代码进行度量操作的过程中,若读取不到启动程序代码(例如BBL代码)的基准值,例如读取NV空间为空,说明NV空间中没有对BBL代码的基准值进行定义,确定BBL代码为首次启动。默认代码的首次启动是安全的。
根据OpenSBI代码,读取BBL代码。同时,根据OpenSBI代码,调用TCM的驱动接口使用哈希运算对BBL代码进行运算,并将BBL代码的运算结果作为BBL代码的基准值。根据OpenSBI代码,调用TCM的NV Write接口,将BBL代码的基准值写入对应的NV空间中,进行存储。存储BBL代码的基准值后,则可以确定BBL代码的标准状态,且该标准状态未经授权不得随意改动。若BBL代码此后遭到未经授权的改动,则可以通过计算BBL代码的度量值,和基准值比较,若基准值和度量值不一致,则可识别该BBL代码在未授权的情况下修改过。因此存储BBL代码的基准值,可以准确识别对BBL代码的恶意修改或者未授权修改,进而可以确定BBL代码安全。
进一步的,当读取不到启动程序代码的关键数据(例如,策略文件)的基准值时,确定该关键数据的哈希值,并将该哈希值作为该关键数据的基准值,写入NV空间。
本发明实施例通过识别启动程序代码的首次启动,并存储启动程序代码的基准值,能够准确识别对启动程序代码的未授权修改,有利于确保启动程序代码的安全启动。
基于上述实施例,基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码,包括:
步骤110:基于FSBL代码,读取OpenSBI代码的基准值;
步骤120:基于FSBL代码,对OpenSBI代码进行sm3 hash运算,将OpenSBI代码的哈希值作为OpenSBI代码的度量值;
步骤130:若OpenSBI代码的基准值和OpenSBI代码的度量值一致,则确定OpenSBI代码安全。
在FSBL代码运行过程中启动OpenSBI度量操作,调用NV空间的NV Read接口,读取NV空间中OpenSBI代码的基准值。若能读取到OpenSBI代码的基准值,则确定OpenSBI代码为非首次启动。通过FSBL代码,读取OpenSBI代码。同时根据FSBL代码,调用TCM的驱动接口对OpenSBI代码进行sm3 hash运算,将运算得到的哈希值与OpenSBI代码的基准值进行对比。若OpenSBI代码的基准值和OpenSBI代码的度量值一致,说明OpenSBI代码没有被未经授权的修改过,则确定OpenSBI代码安全。
本发明实施例通过FSBL代码,校验OpenSBI代码,在一定程度上降低了RISC-V架构下OpenSBI代码的安全启动流程对RISC-V平台启动效率的影响,提高了OpenSBI代码的安全启动流程和RISC-V架构的相容性。
基于上述实施例,基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码,包括:
步骤140:若基于FSBL代码,读取不到OpenSBI代码的基准值,则基于FSBL代码,对OpenSBI代码进行sm3 hash运算,将OpenSBI代码的哈希值作为OpenSBI代码的基准值;
步骤150:存储OpenSBI代码的基准值,以表征OpenSBI代码安全。
若根据FSBL代码,读取不到OpenSBI代码的基准值,说明NV空间中未定义OpenSBI代码的基准值,确定OpenSBI代码为首次启动。在FSBL代码的运行过程中,启动OpenSBI代码的度量操作,并调用TCM的驱动接口对OpenSBI代码进行哈希运算,将运算结果作为OpenSBI代码的基准值。根据FSBL代码,调用TCM的NV Write接口,将OpenSBI代码的基准值写入对应的NV空间中,进行存储。存储OpenSBI代码的基准值后,则可确定OpenSBI代码安全。
本发明实施例通过识别OpenSBI代码的首次启动,并存储OpenSBI代码的基准值,能够准确识别对OpenSBI代码的未授权修改,有利于确保OpenSBI代码的安全启动。
本发明实施例还提供了一种基于RISC-V架构的代码校验装置,如图5所示,图5是本发明提供的基于RISC-V架构的代码校验装置的结构示意图。需要说明的是,本发明实施例提供的基于RISC-V架构的代码校验装置,在具体运行时,可以执行上述任一实施例所述的基于RISC-V架构的代码校验方法,对此本实施例不作赘述。
参照图5,本发明的实施例提供了一种基于RISC-V架构的代码校验装置,包括:
第一校验模块501,用于基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;
确定模块502,用于基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;
第二校验模块503,用于若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。
本发明实施例提供的基于RISC-V架构的代码校验装置,通过基于RISC-V架构中的FSBL代码,校验RISC-V架构中的OpenSBI代码;基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。本发明实施例以OpenSBI代码为中心,对RISC-V架构中的所有启动程序代码进行校验,考虑到了不同硬件环境下RISC-V平台启动流程各不相同的情况,为RISC-V提供了更好的可拓展和可移植性,在一定程度上降低了RISC-V架构下启动程序代码的安全启动流程对RISC-V平台启动效率的影响,提高了启动程序代码的安全启动流程和RISC-V架构的相容性。
在一个实施例中,确定模块502用于:基于OpenSBI代码,读取启动程序代码的基准值;基于OpenSBI代码,对启动程序代码进行哈希运算,将启动程序代码的哈希值作为启动程序代码的度量值。
在一个实施例中,确定模块502还用于:若基于OpenSBI代码,读取不到启动程序代码的基准值,则基于OpenSBI代码,对启动程序代码进行sm3 hash运算,将启动程序代码的哈希值作为启动程序代码的基准值;存储启动程序代码的基准值,以表征启动程序代码安全。
在一个实施例中,第一校验模块501用于:基于FSBL代码,读取OpenSBI代码的基准值;基于FSBL代码,对OpenSBI代码进行sm3 hash运算,将OpenSBI代码的哈希值作为OpenSBI代码的度量值;若OpenSBI代码的基准值和OpenSBI代码的度量值一致,则确定OpenSBI代码安全。
在一个实施例中,第一校验模块501用于:若基于FSBL代码,读取不到OpenSBI代码的基准值,则基于FSBL代码,对OpenSBI代码进行sm3 hash运算,将OpenSBI代码的哈希值作为OpenSBI代码的基准值;存储OpenSBI代码的基准值,以表征OpenSBI代码安全。
在一个实施例中,确定模块502用于:存储启动程序代码的基准值,包括:将启动程序代码的基准值存储至RISC-V架构的嵌入式存储器芯片TCM的非易失性存储器NV空间中;其中,NV空间设于TCM中,用于存储基准值。
在一个实施例中,第二校验模块503还用于:若启动程序代码的基准值和度量值不一致,则确定启动程序代码校验失败。
图6是本发明提供的电子设备的结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行基于RISC-V架构的代码校验方法,该方法包括:基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各实施例所提供的基于RISC-V架构的代码校验方法,该方法包括:基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的基于RISC-V架构的代码校验方法,该方法包括:基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;基于校验成功后的OpenSBI代码,确定RISC-V架构中启动程序代码的基准值和度量值;若启动程序代码的基准值和度量值一致,则确定启动程序代码安全。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种基于RISC-V架构的代码校验方法,其特征在于,包括:
基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;
基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值;
若所述启动程序代码的基准值和度量值一致,则确定所述启动程序代码安全。
2.根据权利要求1所述的基于RISC-V架构的代码校验方法,其特征在于,所述基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值,包括:
基于所述OpenSBI代码,读取所述启动程序代码的基准值;
基于所述OpenSBI代码,对所述启动程序代码进行哈希运算,将所述启动程序代码的哈希值作为所述启动程序代码的度量值。
3.根据权利要求1所述的基于RISC-V架构的代码校验方法,其特征在于,所述基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码之后,所述方法还包括:
若基于所述OpenSBI代码,读取不到所述启动程序代码的基准值,则基于所述OpenSBI代码,对所述启动程序代码进行sm3 hash运算,将所述启动程序代码的哈希值作为所述启动程序代码的基准值;
存储所述启动程序代码的基准值,以表征所述启动程序代码安全。
4.根据权利要求1所述的基于RISC-V架构的代码校验方法,其特征在于,所述基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码,包括:
基于所述FSBL代码,读取所述OpenSBI代码的基准值;
基于所述FSBL代码,对所述OpenSBI代码进行sm3 hash运算,将所述OpenSBI代码的哈希值作为所述OpenSBI代码的度量值;
若所述OpenSBI代码的基准值和所述OpenSBI代码的度量值一致,则确定所述OpenSBI代码安全。
5.根据权利要求1所述的基于RISC-V架构的代码校验方法,其特征在于,所述基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码,包括:
若基于所述FSBL代码,读取不到所述OpenSBI代码的基准值,则基于所述FSBL代码,对所述OpenSBI代码进行sm3 hash运算,将所述OpenSBI代码的哈希值作为所述OpenSBI代码的基准值;
存储所述OpenSBI代码的基准值,以表征所述OpenSBI代码安全。
6.根据权利要求3所述的基于RISC-V架构的代码校验方法,其特征在于,所述存储所述启动程序代码的基准值,包括:
将所述启动程序代码的基准值存储至所述RISC-V架构的嵌入式存储器芯片TCM的非易失性存储器NV空间中。
7.根据权利要求1所述的基于RISC-V架构的代码校验方法,其特征在于,所述基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值之后,所述方法还包括:
若所述启动程序代码的基准值和度量值不一致,则确定所述启动程序代码校验失败。
8.一种基于RISC-V架构的代码校验装置,其特征在于,包括:
第一校验模块,用于基于RISC-V架构中的第一阶段引导加载程序FSBL代码,校验所述RISC-V架构中的开放式监督程序二进制接口OpenSBI代码;
确定模块,用于基于校验成功后的所述OpenSBI代码,确定所述RISC-V架构中启动程序代码的基准值和度量值;
第二校验模块,用于若所述启动程序代码的基准值和度量值一致,则确定所述启动程序代码安全。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述基于RISC-V架构的代码校验方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述基于RISC-V架构的代码校验方法的步骤。
CN202311563316.7A 2023-11-22 2023-11-22 基于risc-v架构的代码校验方法及装置 Pending CN117609984A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311563316.7A CN117609984A (zh) 2023-11-22 2023-11-22 基于risc-v架构的代码校验方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311563316.7A CN117609984A (zh) 2023-11-22 2023-11-22 基于risc-v架构的代码校验方法及装置

Publications (1)

Publication Number Publication Date
CN117609984A true CN117609984A (zh) 2024-02-27

Family

ID=89958976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311563316.7A Pending CN117609984A (zh) 2023-11-22 2023-11-22 基于risc-v架构的代码校验方法及装置

Country Status (1)

Country Link
CN (1) CN117609984A (zh)

Similar Documents

Publication Publication Date Title
CN108399339B (zh) 一种基于安全芯片的可信启动方法
US11093258B2 (en) Method for trusted booting of PLC based on measurement mechanism
JP5767751B2 (ja) Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム
EP2854066B1 (en) System and method for firmware integrity verification using multiple keys and OTP memory
US8863309B2 (en) Selectively unlocking a core root of trust for measurement (CRTM)
CN101432752B (zh) 可信平台现场升级系统和方法
US11281768B1 (en) Firmware security vulnerability verification service
US10181956B2 (en) Key revocation
CN111291381A (zh) 一种基于tcm构建信任链的方法、设备及介质
CN115017517A (zh) 芯片及校验方法
CN111177703B (zh) 操作系统数据完整性的确定方法及装置
TW201602835A (zh) 允許測試金鑰用於bios安裝之技術
CN106951785B (zh) 一种java虚拟机及其中的信任链延伸方法
CN115934194A (zh) 一种控制器启动方法、装置、电子设备及储存介质
CN112613011B (zh) U盘系统认证方法、装置、电子设备及存储介质
CN113553115A (zh) 一种基于异构多核芯片的启动方法以及存储介质
KR20200070450A (ko) 차량 제어기의 보안 강화 방법 및 장치
CN111241548B (zh) 计算机启动方法
CN113448681A (zh) 一种虚拟机监控器公钥的注册方法、设备和存储介质
CN115964721A (zh) 一种程序验证方法及电子设备
US12001560B2 (en) Method and system for avoiding boot failure from platform firmware resilience execution
CN117609984A (zh) 基于risc-v架构的代码校验方法及装置
CN115878199A (zh) 芯片的操作系统启动方法、装置、设备及存储介质
CN104052726A (zh) 访问控制方法和采用访问控制方法的移动终端
CN115220796A (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