CN117272317A - 一种系统安全启动方法、电子设备及存储介质 - Google Patents

一种系统安全启动方法、电子设备及存储介质 Download PDF

Info

Publication number
CN117272317A
CN117272317A CN202311234462.5A CN202311234462A CN117272317A CN 117272317 A CN117272317 A CN 117272317A CN 202311234462 A CN202311234462 A CN 202311234462A CN 117272317 A CN117272317 A CN 117272317A
Authority
CN
China
Prior art keywords
hash value
started
key
kernel module
kernel
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.)
Granted
Application number
CN202311234462.5A
Other languages
English (en)
Other versions
CN117272317B (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.)
Zhongqi Zhilian Technology Co ltd
Original Assignee
Zhongqi Zhilian 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 Zhongqi Zhilian Technology Co ltd filed Critical Zhongqi Zhilian Technology Co ltd
Priority to CN202311234462.5A priority Critical patent/CN117272317B/zh
Publication of CN117272317A publication Critical patent/CN117272317A/zh
Application granted granted Critical
Publication of CN117272317B publication Critical patent/CN117272317B/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
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本发明涉及系统安全技术领域,公开了一种系统安全启动方法、电子设备及存储介质,方法包括:CPU通电,装载启动装载程序的入口,启动装载程序初始化CPU内部的模块;CPU读取eFUSE显示的数据信息,当数据信息显示系统的当前运行模式为生产模式时,CPU根据需要选择验证模式或检测模式进行系统安全启动;若选择验证模式,则通过进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动;若选择检测模式,则通过对UBOOT、Linux内核和内核模块进行TPM芯片的密钥解密和数字签名认证进行系统安全启动;通过搭建信任链,使得系统每一步加载都要经过TPM芯片的密钥解密和/或数字签名认证,提高系统安全性,避免系统被恶意篡改导致客户信息泄露及财产损失。

Description

一种系统安全启动方法、电子设备及存储介质
技术领域
本发明涉及系统安全技术领域,尤其涉及一种系统安全启动方法、电子设备及存储介质。
背景技术
日常生活中越来越多的用到智能设备,例如手机、电视、汽车、乃至家用电器等。智能设备系统的安全涉及到用户个人信息、财产、隐私等,因此,智能设备的系统安全至关重要。
目前,大多研发人员更多关注系统本身的安全,通过构建防火墙、增加安全模块等方法增加系统的安全性。在系统启动过程中,一般会先对系统文件进行验证,然而,恶意篡改的方式越来越多,简单的系统文件验证已经不足以保证系统的安全性。
因此,亟需一种系统安全启动方法,在系统启动过程中保证系统模块的完整性,提高系统的安全性,避免系统被恶意篡改导致客户信息泄露及财产损失。
发明内容
为了解决上述技术问题,本发明提供了一种系统安全启动方法、电子设备及存储介质,能够在系统启动过程中保证系统模块的完整性,提高系统的安全性,避免系统被恶意篡改导致客户信息泄露及财产损失。
本发明提供了一种系统安全启动方法,包括如下步骤:
S1、CPU通电,装载启动装载程序的入口,启动装载程序初始化CPU内部的模块;
S2、CPU读取一次性可编程存储器显示的数据信息,当数据信息显示系统的当前运行模式为生产模式时,CPU根据需要选择验证模式或检测模式进行系统安全启动;
S3、若选择验证模式,则CPU通过分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动;
S4、若选择检测模式,则CPU通过TPM芯片的密钥分别对UBOOT、Linux内核和内核模块进行解密,并且分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动。
进一步的,步骤S3,若选择验证模式,则CPU通过分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动包括:
S301、CPU开启安全启动功能,把安全启动密钥加载到安全引擎的密钥槽当中;
S302、CPU从eMMC上加载UBOOT,获取UBOOT的数字签名和公钥证书;
S303、启动装载程序验证UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值是否相同;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则证明UBOOT是OEM正式发布的,没有受到过篡改,执行步骤S304;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S304、启动装载程序跳转到UBOOT,引导Linux内核启动;
S305、Linux内核启动后,CPU获取Linux内核驱动程序的数字签名,启动装载程序验证Linux内核的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,执行步骤S306;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S306、CPU获取待启动内核模块的数字签名,启动装载程序验证待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则将启动控制权交给待启动内核模块,待启动内核模块开始启动;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
进一步的,在步骤S306之后,还包括:
S307、当待启动内核模块开始启动,同时CPU获取下一个待启动内核模块的数字签名,启动装载程序验证下一个待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash是否相同;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则在当前正在启动的内核模块启动完毕后,将启动控制权交给下一个待启动内核模块,下一个待启动内核模块开始启动;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S308、重复执行步骤S307,直至Linux系统中的所有内核模块均启动完毕或者系统安全启动过程中断为止。
进一步的,根据程序编号、程序的版本编号以及密钥生成UBOOT、Linux内核和内核模块的数字签名。
进一步的,步骤S4,若选择检测模式,则CPU通过TPM芯片的密钥分别对UBOOT、Linux内核和内核模块进行解密,并且分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动包括:
S401、CPU开启安全启动功能,把安全启动密钥加载到安全引擎的密钥槽当中;
S402、CPU从eMMC上加载UBOOT,获取UBOOT的数字签名和公钥证书;
S403、启动装载程序验证UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值是否相同;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则证明UBOOT是OEM正式发布的,没有受到过篡改,执行步骤S404;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S404、启动装载程序跳转到UBOOT,引导Linux内核启动;
S405、CPU获取TPM芯片的密钥,并获取TPM芯片的PCR值,使用PCR值授权TPM芯片的密钥,CPU采用TPM芯片的密钥解密Linux内核驱动程序;若TPM芯片的密钥解密Linux内核驱动程序不成功,则中断系统安全启动过程;若TPM芯片的密钥解密Linux内核驱动程序成功,执行步骤S406;
S406、Linux内核启动后,CPU获取Linux内核驱动程序的数字签名,启动装载程序验证Linux内核的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,执行步骤S407;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S407、CPU采用TPM芯片的密钥解密待启动内核模块的驱动程序,若TPM芯片的密钥解密待启动内核模块的驱动程序不成功,则中断系统安全启动过程;若TPM芯片的密钥解密待启动内核模块的驱动程序成功,执行步骤S408;
S408、CPU获取待启动内核模块的数字签名,启动装载程序验证待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则将启动控制权交给待启动内核模块,待启动内核模块开始启动;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
进一步的,在步骤S408之后,还包括:
S409、当待启动内核模块开始启动,同时CPU采用TPM芯片的密钥解密下一个待启动内核模块的驱动程序,若TPM芯片的密钥解密下一个待启动内核模块的驱动程序不成功,则中断系统安全启动过程;若TPM芯片的密钥解密下一个待启动内核模块的驱动程序成功,执行步骤S410;
S410、CPU获取下一个待启动内核模块的数字签名,启动装载程序验证下一个待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash是否相同;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则在当前正在启动的内核模块启动完毕后,将启动控制权交给下一个待启动内核模块,下一个待启动内核模块开始启动;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S411、重复执行步骤S409至S410,直至Linux系统中的所有内核模块均启动完毕或者系统安全启动过程中断为止。
本发明还提供了一种电子设备,电子设备包括:
处理器和存储器;
处理器通过调用存储器存储的程序或指令,用于执行如上述任一项所述的一种系统安全启动方法的步骤。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储程序或指令,程序或指令使计算机执行如如上述任一项所述的一种系统安全启动方法的步骤。
本发明实施例具有以下技术效果:
1.在系统启动过程中,通过搭建信任链,使系统每一步的加载都要经过数字签名认证,保证系统模块的完整性,避免模块被恶意篡改导致客户信息泄露及财产损失。此外,根据程序编号和程序的版本编号生成数字签名,可以提高数字签名的灵活性,进一步提高了系统启动的安全性。
2.在系统启动过程中,通过采用TPM芯片的密钥解密和数字签名认证两种方式共同进行系统安全启动,进一步提高了系统启动的安全性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种系统安全启动方法的流程图;
图2是本发明实施例提供的一种基于验证模式的系统安全启动方法的逻辑示意图;
图3是本发明实施例提供的一种基于检测模式的系统安全启动方法的逻辑示意图;
图4是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。
图1是本发明实施例提供的一种系统安全启动方法的流程图。参见图1,具体包括:
S1、CPU通电,装载启动装载程序的入口,启动装载程序初始化CPU内部的模块。
具体的,所有支持安全启动的CPU都包含一个启动装载程序(bootROM)。CPU在通电之后执行的第一条指令就在bootROM的入口,bootROM拥有最高的执行权限,且bootROM在出厂后只能够被读取,无法被写入或更改。bootROM通常会被映射到它专属的内存地址中,如果尝试向这个地址写入内容,一般都会出错或者没有任何效果。
S2、CPU读取一次性可编程存储器显示的数据信息,当数据信息显示系统的当前运行模式为生产模式时,CPU根据需要选择验证模式或检测模式进行系统安全启动。
具体的,CPU读取一次性可编程存储器(eFUSE)显示的数据信息,当数据信息显示系统的当前运行模式为生产模式时,CPU根据用户的需要选择验证模式或检测模式进行系统安全启动。其中,生产模式即CPU出厂后面对用户使用的模式。示例性地,当用户需要系统启动的运行速率更快时,可以选择验证模式进行系统安全启动;当用户需要系统启动的安全级别更高时,可以选择检测模式进行系统安全启动。
S3、若选择验证模式,则CPU通过分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动。
具体的,图2是本发明实施例提供的一种基于验证模式的系统安全启动方法的逻辑示意图。参见图2,具体包括:
S301、CPU开启安全启动(Secure Boot)功能,把安全启动密钥(Secure Boot Key)加载到安全引擎(Security Engine)的密钥槽(Keyslot)当中。
具体的,CPU开启Secure Boot功能需要通过解密认证,把Secure Boot Key加载Security Engine的Keyslot当中就是解密认证的过程,通过解密认证之后CPU才能够开启Secure Boot功能。
S302、CPU从eMMC上加载UBOOT,获取UBOOT的数字签名和公钥证书。
具体的,UBOOT属于引导程序(Bootloader)的一种,用于引导启动内核。UBOOT的数字签名和公钥证书均在出厂前被写入UBOOT,CPU可以直接读取到相应的数据。
S303、启动装载程序验证UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值是否相同;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则证明UBOOT是OEM正式发布的,没有受到过篡改,执行步骤S304;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S304、启动装载程序跳转到UBOOT,引导Linux内核启动。
S305、Linux内核启动后,CPU获取Linux内核驱动程序的数字签名,启动装载程序验证Linux内核的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,执行步骤S306;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S306、CPU获取待启动内核模块的数字签名,启动装载程序验证待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则将启动控制权交给待启动内核模块,待启动内核模块开始启动;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
具体的,内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,简称LKM)。内核模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。内核模块是可以根据需要加载到Linux内核中或从Linux内核中卸载的代码块,因此无需重启就可以扩展Linux内核的功能。
S307、当待启动内核模块开始启动,同时CPU获取下一个待启动内核模块的数字签名,启动装载程序验证下一个待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的 Signing Key的Hash是否相同;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则在当前正在启动的内核模块启动完毕后,将启动控制权交给下一个待启动内核模块,下一个待启动内核模块开始启动;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S308、重复执行步骤S307,直至Linux系统中的所有内核模块均启动完毕或者系统安全启动过程中断为止。
具体的,Linux系统包括Linux内核和多个内核模块。当Linux系统中的所有内核模块均启动完毕,则表明系统安全启动成功;若系统安全启动过程中断,则表明系统中存在被篡改的模块。
进一步的,UBOOT、Linux内核和内核模块的数字签名可以根据程序编号、程序的版本编号以及密钥进行生成。
具体的,数字签名的计算越复杂,验证Hash值时的安全性越高。程序编号和程序的版本编号属于加密后的代码,因此根据程序编号、程序的版本编号以及密钥生成的数字签名的安全性比根据不加密的开源代码设置的数字签名的安全性更高。根据程序编号、程序的版本编号以及密钥生成数字签名的公式为:
其中,Ni为不同程序的编号;Bi为所述程序的版本编号;Hn(key)为数字签名;key为密钥,该密钥为出厂前厂家设定的用于计算数字签名的数值。
S4、若选择检测模式,则CPU通过TPM芯片的密钥分别对UBOOT、Linux内核和内核模块进行解密,并且分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动。
具体的,图3是本发明实施例提供的一种基于检测模式的系统安全启动方法的逻辑示意图。参见图3,具体包括:
S401、CPU开启安全启动功能,把安全启动密钥加载到安全引擎的密钥槽当中。
S402、CPU从eMMC上加载UBOOT,获取UBOOT的数字签名和公钥证书。
S403、启动装载程序验证UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值是否相同;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则证明UBOOT是OEM正式发布的,没有受到过篡改,执行步骤S404;若UBOOT的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S404、启动装载程序跳转到UBOOT,引导Linux内核启动。
S405、CPU获取TPM芯片的密钥,并获取TPM芯片的PCR值,使用PCR值授权TPM芯片的密钥,CPU采用TPM芯片的密钥解密Linux内核驱动程序;若TPM芯片的密钥解密Linux内核驱动程序不成功,则中断系统安全启动过程;若TPM芯片的密钥解密Linux内核驱动程序成功,执行步骤S406。
具体的,TPM芯片的密钥和TPM芯片的PCR值均由出厂前厂家预先设置。其中,TPM芯片也会与启动装载程序和UBOOT进行数据交互,但不限于解密关系。
S406、Linux内核启动后,CPU获取Linux内核驱动程序的数字签名,启动装载程序验证Linux内核的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,执行步骤S407;若Linux内核的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S407、CPU采用TPM芯片的密钥解密待启动内核模块的驱动程序,若TPM芯片的密钥解密待启动内核模块的驱动程序不成功,则中断系统安全启动过程;若TPM芯片的密钥解密待启动内核模块的驱动程序成功,执行步骤S408。
S408、CPU获取待启动内核模块的数字签名,启动装载程序验证待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash值是否相同;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则将启动控制权交给待启动内核模块,待启动内核模块开始启动;若待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S409、当待启动内核模块开始启动,同时CPU采用TPM芯片的密钥解密下一个待启动内核模块的驱动程序,若TPM芯片的密钥解密下一个待启动内核模块的驱动程序不成功,则中断系统安全启动过程;若TPM芯片的密钥解密下一个待启动内核模块的驱动程序成功,执行步骤S410。
S410、CPU获取下一个待启动内核模块的数字签名,启动装载程序验证下一个待启动内核模块的数字签名的根证书的Hash值与一次性可编程存储器中的Signing Key的Hash是否相同;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值相同,则在当前正在启动的内核模块启动完毕后,将启动控制权交给下一个待启动内核模块,下一个待启动内核模块开始启动;若下一个待启动内核模块的数字签名的根证书的Hash值和一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
S411、重复执行步骤S409至S410,直至Linux系统中的所有内核模块均启动完毕或者系统安全启动过程中断为止。
本发明实施例中,在系统启动过程中,通过搭建信任链,使系统每一步的加载都要经过数字签名认证,保证系统模块的完整性,避免模块被恶意篡改导致客户信息泄露及财产损失。当采用TPM芯片的密钥解密和数字签名认证两种方式共同进行系统安全启动时,可以进一步提高系统启动的安全性。此外,根据程序编号和程序的版本编号生成数字签名,可以提高数字签名的灵活性,进一步提高了系统启动的安全性。
图4是本申请实施例提供的一种电子设备的结构示意图。如图4所示,电子设备500包括一个或多个处理器501和存储器502。
处理器501可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备500中的其他组件以执行期望的功能。
存储器502可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器501可以运行所述程序指令,以实现上文所说明的本申请任意实施例的一种系统安全启动方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如初始外参、阈值等各种内容。
在一个示例中,电子设备500还可以包括:输入装置503和输出装置504,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。该输入装置503可以包括例如键盘、鼠标等等。该输出装置504可以向外部输出各种信息,包括预警提示信息、制动力度等。该输出装置504可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图4中仅示出了该电子设备500中与本申请有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备500还可以包括任何其他适当的组件。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本申请任意实施例所提供的一种系统安全启动方法的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本申请任意实施例所提供的一种系统安全启动方法的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
需要说明的是,本发明所用术语仅为了描述特定实施例,而非限制本申请范围。如本发明说明书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。
还需说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”等应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案。

Claims (8)

1.一种系统安全启动方法,其特征在于,包括如下步骤:
S1、CPU通电,装载启动装载程序的入口,所述启动装载程序初始化所述CPU内部的模块;
S2、所述CPU读取一次性可编程存储器显示的数据信息,当所述数据信息显示所述系统的当前运行模式为生产模式时,所述CPU根据需要选择验证模式或检测模式进行系统安全启动;
S3、若选择所述验证模式,则所述CPU通过分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动;
S4、若选择所述检测模式,则所述CPU通过TPM芯片的密钥分别对所述UBOOT、所述Linux内核和所述内核模块进行解密,并且分别进行所述UBOOT、所述Linux内核和所述内核模块的数字签名认证进行系统安全启动。
2.根据权利要求1所述的一种系统安全启动方法,其特征在于,所述步骤S3,所述若选择所述验证模式,则所述CPU通过分别进行UBOOT、Linux内核和内核模块的数字签名认证进行系统安全启动包括:
S301、所述CPU开启安全启动功能,把安全启动密钥加载到安全引擎的密钥槽当中;
S302、所述CPU从eMMC上加载所述UBOOT,获取所述UBOOT的数字签名和公钥证书;
S303、所述启动装载程序验证所述UBOOT的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值是否相同;若所述UBOOT的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,则证明所述UBOOT是OEM正式发布的,没有受到过篡改,执行步骤S304;若所述UBOOT的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S304、所述启动装载程序跳转到所述UBOOT,引导所述Linux内核启动;
S305、所述Linux内核启动后,所述CPU获取所述Linux内核驱动程序的数字签名,所述启动装载程序验证所述Linux内核的数字签名的根证书的Hash值与所述一次性可编程存储器中的Signing Key的Hash值是否相同;若所述Linux内核的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,执行步骤S306;若所述Linux内核的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S306、所述CPU获取待启动内核模块的数字签名,所述启动装载程序验证所述待启动内核模块的数字签名的根证书的Hash值与所述一次性可编程存储器中的Signing Key的Hash值是否相同;若所述待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,则将启动控制权交给所述待启动内核模块,所述待启动内核模块开始启动;若所述待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
3.根据权利要求2所述的一种系统安全启动方法,其特征在于,在步骤S306之后,还包括:
S307、当所述待启动内核模块开始启动,同时所述CPU获取下一个待启动内核模块的数字签名,所述启动装载程序验证所述下一个待启动内核模块的数字签名的根证书的Hash值与所述一次性可编程存储器中的 Signing Key的Hash是否相同;若所述下一个待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,则在当前正在启动的内核模块启动完毕后,将启动控制权交给所述下一个待启动内核模块,所述下一个待启动内核模块开始启动;若所述下一个待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S308、重复执行步骤S307,直至Linux系统中的所有内核模块均启动完毕或者系统安全启动过程中断为止。
4.根据权利要求3所述的一种系统安全启动方法,其特征在于,根据程序编号、程序的版本编号以及密钥生成所述UBOOT、所述Linux内核和所述内核模块的数字签名。
5.根据权利要求1所述的一种系统安全启动方法,其特征在于,所述步骤S4,所述若选择所述检测模式,则所述CPU通过TPM芯片的密钥分别对所述UBOOT、所述Linux内核和所述内核模块进行解密,并且分别进行所述UBOOT、所述Linux内核和所述内核模块的数字签名认证进行系统安全启动包括:
S401、所述CPU开启安全启动功能,把安全启动密钥加载到安全引擎的密钥槽当中;
S402、所述CPU从eMMC上加载所述UBOOT,获取所述UBOOT的数字签名和公钥证书;
S403、所述启动装载程序验证所述UBOOT的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值是否相同;若所述UBOOT的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,则证明所述UBOOT是OEM正式发布的,没有受到过篡改,执行步骤S404;若所述UBOOT的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S404、所述启动装载程序跳转到所述UBOOT,引导所述Linux内核启动;
S405、所述CPU获取所述TPM芯片的密钥,并获取所述TPM芯片的PCR值,使用所述PCR值授权所述TPM芯片的密钥,所述CPU采用所述TPM芯片的密钥解密所述Linux内核驱动程序;若所述TPM芯片的密钥解密所述Linux内核驱动程序不成功,则中断系统安全启动过程;若所述TPM芯片的密钥解密所述Linux内核驱动程序成功,执行步骤S406;
S406、所述Linux内核启动后,所述CPU获取所述Linux内核驱动程序的数字签名,所述启动装载程序验证所述Linux内核的数字签名的根证书的Hash值与所述一次性可编程存储器中的Signing Key的Hash值是否相同;若所述Linux内核的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,执行步骤S407;若所述Linux内核的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S407、所述CPU采用所述TPM芯片的密钥解密待启动内核模块的驱动程序,若所述TPM芯片的密钥解密所述待启动内核模块的驱动程序不成功,则中断系统安全启动过程;若所述TPM芯片的密钥解密所述待启动内核模块的驱动程序成功,执行步骤S408;
S408、所述CPU获取待启动内核模块的数字签名,所述启动装载程序验证所述待启动内核模块的数字签名的根证书的Hash值与所述一次性可编程存储器中的Signing Key的Hash值是否相同;若所述待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,则将启动控制权交给所述待启动内核模块,所述待启动内核模块开始启动;若所述待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程。
6.根据权利要求5所述的一种系统安全启动方法,其特征在于,在所述步骤S408之后,还包括:
S409、当所述待启动内核模块开始启动,同时所述CPU采用所述TPM芯片的密钥解密下一个待启动内核模块的驱动程序,若所述TPM芯片的密钥解密所述下一个待启动内核模块的驱动程序不成功,则中断系统安全启动过程;若所述TPM芯片的密钥解密所述下一个待启动内核模块的驱动程序成功,执行步骤S410;
S410、所述CPU获取所述下一个待启动内核模块的数字签名,所述启动装载程序验证所述下一个待启动内核模块的数字签名的根证书的Hash值与所述一次性可编程存储器中的Signing Key的Hash是否相同;若所述下一个待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值相同,则在当前正在启动的内核模块启动完毕后,将启动控制权交给所述下一个待启动内核模块,所述下一个待启动内核模块开始启动;若所述下一个待启动内核模块的数字签名的根证书的Hash值和所述一次性可编程存储器中的Signing Key的Hash值不同,则中断系统安全启动过程;
S411、重复执行步骤S409至S410,直至Linux系统中的所有内核模块均启动完毕或者系统安全启动过程中断为止。
7.一种电子设备,其特征在于,所述电子设备包括:
处理器和存储器;
所述处理器通过调用所述存储器存储的程序或指令,用于执行如权利要求1至6任一项所述的一种系统安全启动方法的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储程序或指令,所述程序或指令使计算机执行如权利要求1至6任一项所述的一种系统安全启动方法的步骤。
CN202311234462.5A 2023-09-25 2023-09-25 一种系统安全启动方法、电子设备及存储介质 Active CN117272317B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311234462.5A CN117272317B (zh) 2023-09-25 2023-09-25 一种系统安全启动方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311234462.5A CN117272317B (zh) 2023-09-25 2023-09-25 一种系统安全启动方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117272317A true CN117272317A (zh) 2023-12-22
CN117272317B CN117272317B (zh) 2024-02-23

Family

ID=89217307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311234462.5A Active CN117272317B (zh) 2023-09-25 2023-09-25 一种系统安全启动方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN117272317B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117874773A (zh) * 2024-03-12 2024-04-12 麒麟软件有限公司 基于安全等级管控策略的操作系统安全启动方法及装置

Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561857A (zh) * 2009-04-28 2009-10-21 苏州国芯科技有限公司 多模式启动的安全嵌入式系统
CN104680061A (zh) * 2015-02-28 2015-06-03 国鼎网络空间安全技术有限公司 一种Android环境下应用程序启动中代码签名验证的方法和系统
CN106156635A (zh) * 2016-07-29 2016-11-23 深圳兆日科技股份有限公司 终端启动方法和装置
CN106250760A (zh) * 2016-07-26 2016-12-21 浪潮电子信息产业股份有限公司 一种基于TPM2.0芯片的U‑Boot可信启动方法
US20170329942A1 (en) * 2016-05-12 2017-11-16 Markany Inc. Method and apparatus of drm systems for protecting enterprise confidentiality
CN107743062A (zh) * 2017-08-29 2018-02-27 苏州惠邦科信息技术有限公司 手机安全加密芯片
CN108280351A (zh) * 2017-12-25 2018-07-13 上海电力学院 一种基于tpm的用电采集终端的可信启动方法
KR102111327B1 (ko) * 2019-03-11 2020-05-15 단국대학교 산학협력단 리눅스 환경에서의 부팅 과정에 대한 무결성 검증 시스템 및 관리용 단말의 업데이트와 무결성 검증 방법
CN112347482A (zh) * 2019-08-09 2021-02-09 北京物芯科技有限责任公司 一种系统级芯片soc启动方法、装置、soc及存储介质
CN112612486A (zh) * 2020-12-28 2021-04-06 湖北芯擎科技有限公司 存储器烧录方法、装置和待烧录芯片
CN113065140A (zh) * 2021-06-02 2021-07-02 南方电网数字电网研究院有限公司 一种芯片化控制保护装置内嵌安全防护系统及方法
CN113132310A (zh) * 2019-12-31 2021-07-16 中国电力科学研究院有限公司 一种配电终端与配电主站的安全接入方法及系统
CN113168476A (zh) * 2018-11-30 2021-07-23 百可德罗德公司 操作系统中个性化密码学安全的访问控制
CN114329479A (zh) * 2021-12-08 2022-04-12 浙江大学 一种面向risc-v架构的启动验证方法
CN115794136A (zh) * 2022-11-30 2023-03-14 四川恒湾科技有限公司 eFUSE烧录方法、装置和电子设备及存储介质
WO2023071040A1 (zh) * 2021-10-29 2023-05-04 苏州浪潮智能科技有限公司 一种系统启动方法、系统启动装置、服务器以及可读存储介质
CN116070217A (zh) * 2023-02-22 2023-05-05 上海威固信息技术股份有限公司 一种用于芯片模块的安全启动系统及其启动方法
WO2023102757A1 (zh) * 2021-12-08 2023-06-15 浙江大学 一种基于面向risc-v架构的启动验证方案
US20230259629A1 (en) * 2022-02-17 2023-08-17 Microchip Technology Incorporated Secure programming of one-time-programmable (otp) memory

Patent Citations (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101561857A (zh) * 2009-04-28 2009-10-21 苏州国芯科技有限公司 多模式启动的安全嵌入式系统
CN104680061A (zh) * 2015-02-28 2015-06-03 国鼎网络空间安全技术有限公司 一种Android环境下应用程序启动中代码签名验证的方法和系统
US20170329942A1 (en) * 2016-05-12 2017-11-16 Markany Inc. Method and apparatus of drm systems for protecting enterprise confidentiality
CN106250760A (zh) * 2016-07-26 2016-12-21 浪潮电子信息产业股份有限公司 一种基于TPM2.0芯片的U‑Boot可信启动方法
CN106156635A (zh) * 2016-07-29 2016-11-23 深圳兆日科技股份有限公司 终端启动方法和装置
CN107743062A (zh) * 2017-08-29 2018-02-27 苏州惠邦科信息技术有限公司 手机安全加密芯片
CN108280351A (zh) * 2017-12-25 2018-07-13 上海电力学院 一种基于tpm的用电采集终端的可信启动方法
CN113168476A (zh) * 2018-11-30 2021-07-23 百可德罗德公司 操作系统中个性化密码学安全的访问控制
KR102111327B1 (ko) * 2019-03-11 2020-05-15 단국대학교 산학협력단 리눅스 환경에서의 부팅 과정에 대한 무결성 검증 시스템 및 관리용 단말의 업데이트와 무결성 검증 방법
CN112347482A (zh) * 2019-08-09 2021-02-09 北京物芯科技有限责任公司 一种系统级芯片soc启动方法、装置、soc及存储介质
CN113132310A (zh) * 2019-12-31 2021-07-16 中国电力科学研究院有限公司 一种配电终端与配电主站的安全接入方法及系统
CN112612486A (zh) * 2020-12-28 2021-04-06 湖北芯擎科技有限公司 存储器烧录方法、装置和待烧录芯片
CN113065140A (zh) * 2021-06-02 2021-07-02 南方电网数字电网研究院有限公司 一种芯片化控制保护装置内嵌安全防护系统及方法
WO2023071040A1 (zh) * 2021-10-29 2023-05-04 苏州浪潮智能科技有限公司 一种系统启动方法、系统启动装置、服务器以及可读存储介质
CN114329479A (zh) * 2021-12-08 2022-04-12 浙江大学 一种面向risc-v架构的启动验证方法
WO2023102757A1 (zh) * 2021-12-08 2023-06-15 浙江大学 一种基于面向risc-v架构的启动验证方案
US20230259629A1 (en) * 2022-02-17 2023-08-17 Microchip Technology Incorporated Secure programming of one-time-programmable (otp) memory
CN115794136A (zh) * 2022-11-30 2023-03-14 四川恒湾科技有限公司 eFUSE烧录方法、装置和电子设备及存储介质
CN116070217A (zh) * 2023-02-22 2023-05-05 上海威固信息技术股份有限公司 一种用于芯片模块的安全启动系统及其启动方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
宁华;刘陶;: "移动办公终端安全能力研究", 保密科学技术, no. 03 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117874773A (zh) * 2024-03-12 2024-04-12 麒麟软件有限公司 基于安全等级管控策略的操作系统安全启动方法及装置

Also Published As

Publication number Publication date
CN117272317B (zh) 2024-02-23

Similar Documents

Publication Publication Date Title
US9292302B2 (en) Allowing bypassing of boot validation in a computer system having secure boot enabled by default only under certain circumstances
KR100299954B1 (ko) 안전 바이오스
US9589139B2 (en) Method and device for altering a unified extensible firmware interface (UEFI) secure boot process in a computing device
EP2962241B1 (en) Continuation of trust for platform boot firmware
JP5014726B2 (ja) 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
US9372699B2 (en) System and method for processing requests to alter system security databases and firmware stores in a unified extensible firmware interface-compliant computing device
EP0849657B1 (en) Secure data processing method and system
KR101190479B1 (ko) 티켓 인증 보안 설치 및 부트
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
CN110990084B (zh) 芯片的安全启动方法、装置、存储介质和终端
US20140331037A1 (en) Secure boot override in a computing device equipped with unified-extensible firmware interface (uefi)-compliant firmware
WO2017088135A1 (zh) 一种安全指示信息的配置方法及设备
WO2008085367A1 (en) Trusting an unverified code image in a computing device
WO2019084575A1 (en) METHOD FOR STARTING BIOS AND METHOD FOR PROCESSING DATA
CN117272317B (zh) 一种系统安全启动方法、电子设备及存储介质
EP3343424B1 (en) Control board secure start method, and software package upgrade method and device
WO2017133559A1 (zh) 安全启动方法及装置
JP2023512428A (ja) ハードウェアエンクレーブを使用して商用オフザシェルフプログラムバイナリを盗用から保護すること
CN112069506B (zh) 一种安全启动方法和装置
US10592661B2 (en) Package processing
CN109657448A (zh) 一种获取Root权限的方法、装置、电子设备及存储介质
CN112835628A (zh) 一种服务器操作系统引导方法、装置、设备及介质
CN112148314A (zh) 一种嵌入式系统的镜像验证方法、装置、设备及存储介质
US20170286665A1 (en) Devices and methods for facilitating software signing by more than one signing authority
CN113111343A (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
GR01 Patent grant
GR01 Patent grant