基于X86架构的安全启动方法与流程

    专利2022-07-08  113

    本发明涉及数据安全技术领域,具体涉及一种基于x86架构的安全启动方法。



    背景技术:

    x86架构的服务器操作系统通常都是开源的linux操作系统,如centos、fedora、ubuntu。linux的内核和initramfs都是开源的,可能会被篡改,这就会给服务器造成较大的安全隐患。为了避免这个安全隐患,就需要带有安全启动功能的x86平台,在开机启动时主动度量linux内核和initramfs,从而保证服务器操作系统的安全性。

    intel公司牵头研发的uefi软件代替了bios。uefi软件提供的secureboot功能用于保证linux内核和initramfs的有效性。但是大多数x86架构的主板在出厂时,使用的是微软可信根和fedora可信根。当我们把使用fedora或centos提供的内核软件包源码编译内核时,也会使用fedora可信根。这就会导致虽然开启了安全启动功能,但无法保证内核和initramfs的有效性。

    也有不使用uefi软件的secureboot功能实现安全启动的方法,有的面向嵌入式,不适用于x86平台,有的需要借助其他特殊芯片、特殊处理器,不适用于常见的pc或服务器。



    技术实现要素:

    为解决已有技术存在的不足,本发明提供了一种基于x86架构的安全启动方法,包括如下步骤:

    步骤s1:利用编译机产生可信根证书和被证书签名的内核rpm包;

    步骤s2:利用测试机导入可信根证书,并打开secureboot功能。

    其中,所述步骤s1包括:

    步骤s11:制作secureboot的启动证书;

    步骤s12:进行签名证书创建;

    步骤s13:制作secureboot启动的证书的uefi-secureboot-key软件rpm包;

    步骤s14:安装secureboot启动的证书的rpm包;

    步骤s15:重新编译shim-signed、grub2、kernel。

    其中,所述步骤s13包括:将生成的myca.der以及tmp文件夹中的cert8.db、key3.db、secmod.db打包为uefi-secureboot-key-1.0.tar.gz,然后使用specs文件:uefi-secureboot-key.spec制作为uefi-secureboot-key-1.0-el7.x86_64.rpm。

    其中,所述步骤s2包括:

    步骤s21:更新编译机编译的shim、grub2、kernel;

    步骤s22:导入证书;

    步骤s23:系统重启,进入shim,开启secureboot。

    本发明使用x86平台下的uefi软件中的secureboot功能,通过使用自制根证书和签名重新编译内核源码包,从而保证了pc或服务器中的linux内核和initramfs的有效性,当内核或initramfs被修改后,无法进入系统,达到防止他人私自篡改内核和initramfs的效果。

    具体实施方式

    为了对本发明的技术方案及有益效果有更进一步的了解,下面详细说明本发明的技术方案及其产生的有益效果。

    本发明的总体思路在于,为服务器增加自己产生的可信根证书,并使用此根证书重新生成内核和initramfs,把可信根证书导入到机器中,并打开secureboot功能。

    打开secureboot后,验证流程如下:

    (1)固件验证第一阶段的bootloader(shim-signed),验证的秘钥存储在db中。

    (2)第一阶段的bootloader(shim-signed)验证第二阶段的bootloader(grub2-efi-x64)。

    (3)第二阶段的bootloader(grub2-efi-x64)调用shim接口验证kernel的签名。

    (4)kernel验证modules。

    在具体实施中,需要用到两个环境,分别是编译机和测试机,编译机用于产生可信根证书和被证书签名的内核rpm包。两个环境均安装centos7.6操作系统。

    具体步骤如下:

    一、编译机操作步骤:

    1、制作secureboot的启动证书

    nss=$(mktemp-p$pwd-d)

    echo>${nss}/pwfile

    certutil-n-d${nss}-f${nss}/pwfile

    certutil-s-s"cn=testca,o=myself,l=zhengzhou,st=

    henan,c=cn"-n"test_ca"-x-t"ct,c,c"-1-2-5-m730-d${nss}。

    2、进行签名证书创建

    certutil-s-s"cn=testsigner,o=myself,l=zhengzhou,st=henan,c=cn"-ntest_signer-c"test_ca"-t"u,u,u"-1-5-6-8-m730-d${nss}

    certutil-l-n"test_ca"-d${nss}-r>~/myca.dercertutil-f-ntest_ca-d${nss}

    certutil-a-n"test_ca"-i~/myca.der-d${nss}-t"ct,c,c"rm-f${nss}/pwfile。

    3、制作secureboot启动的证书的uefi-secureboot-key软件rpm包

    将生成的myca.der以及tmp文件夹中的cert8.db、key3.db、secmod.db打包为uefi-secureboot-key-1.0.tar.gz,然后使用specs文件:uefi-secureboot-key.spec制作为uefi-secureboot-key-1.0-el7.x86_64.rpm。

    4、安装secureboot启动的证书的rpm包uefi-secureboot-key-1.0-el7.x86_64.rpmyuminstalluefi-secureboot-key。

    5、重新编译shim-signed、grub2、kernel

    rpm-ivhshim-signed-15-1.el7.centos.src.rpm

    cdrpmbuild/spesc

    yum-builddepshim-signed.spec

    rpmbuild-bashim-signed.spec

    rpm-ivhgrub2-2.02-0.44.el7.src.rpm

    cdrpmbuild/spesc

    yum-builddepgrub2.spec

    rpmbuild-bagrub2.spec

    rpm-ivhkernel-3.10.0-957.el7.src.rpm

    cdrpmbuild/spesc

    yum-builddepkernel.spec

    rpmbuild-bakernel.spec

    二、测试机操作步骤

    1、更新编译机编译的shim、grub2、kernel

    rpm-uvhshim-x64-15-1.el7.x86_64.rpmmokutil-15-1.el7.x86_64.rpmefibootmgr-17-2.el7.x86_64.rpmefivar-36-11.el7.x86_64.rpmefivar-devel-36-11.el7.x86_64.rpmefivar-libs-36-11.el7.x86_64.rpm

    rpm-uvhgrub2-2.02-0.76.el7.centos.x86_64.rpmgrub2-pc-2.02-0.76.el7.centos.x86_64.rpm

    grub2-common-2.02-0.76.el7.centos.noarch.rpm

    grub2-pc-modules-2.02-0.76.el7.centos.noarch.rpm

    grub2-tools-2.02-0.76.el7.centos.x86_64.rpm

    grub2-tools-minimal-2.02-0.76.el7.centos.x86_64.rpm

    grub2-tools-extra-2.02-0.76.el7.centos.x86_64.rpm

    grub2-efi-x64-2.02-0.76.el7.centos.x86_64.rpm

    grub2-efi-x64-modules-2.02-0.76.el7.centos.noarch.rpm

    rpm-uvh--forcekernel-3.10.0-957.el7.rpm。

    2、导入证书

    mokutil--importmyca.der

    输入密码,此密码为重启后进入shim环境后导入秘钥时使用。

    3、系统重启,进入shim,开启secureboot

    选择enrollemok

    选择continue

    输入导入myca.der时的密码

    重启

    在主板设置中,选择securebootenable。

    本发明使用x86平台下的uefi软件中的secureboot功能,通过使用自制根证书和签名重新编译内核源码包,从而保证了pc或服务器中的linux内核和initramfs的有效性,当内核或initramfs被修改后,无法进入系统,达到防止他人私自篡改内核和initramfs的效果。

    虽然本发明已利用上述较佳实施例进行说明,然其并非用以限定本发明的保护范围,任何本领域技术人员在不脱离本发明的精神和范围之内,相对上述实施例进行各种变动与修改仍属本发明所保护的范围,因此本发明的保护范围以权利要求书所界定的为准。


    技术特征:

    1.一种基于x86架构的安全启动方法,其特征在于,包括如下步骤:

    步骤s1:利用编译机产生可信根证书和被证书签名的内核rpm包;

    步骤s2:利用测试机导入可信根证书,并打开secureboot功能。

    2.如权利要求1所述的基于x86架构的安全启动方法,其特征在于,所述步骤s1包括:

    步骤s11:制作secureboot的启动证书;

    步骤s12:进行签名证书创建;

    步骤s13:制作secureboot启动的证书的uefi-secureboot-key软件rpm包;

    步骤s14:安装secureboot启动的证书的rpm包;

    步骤s15:重新编译shim-signed、grub2、kernel。

    3.如权利要求2所述的基于x86架构的安全启动方法,其特征在于,所述步骤s13包括:将生成的myca.der以及tmp文件夹中的cert8.db、key3.db、secmod.db打包为uefi-secureboot-key-1.0.tar.gz,然后使用specs文件:uefi-secureboot-key.spec制作为uefi-secureboot-key-1.0-el7.x86_64.rpm。

    4.如权利要求1所述的基于x86架构的安全启动方法,其特征在于,所述步骤s2包括:

    步骤s21:更新编译机编译的shim、grub2、kernel;

    步骤s22:导入证书;

    步骤s23:系统重启,进入shim,开启secureboot。

    技术总结
    本发明涉及一种基于X86架构的安全启动方法,包括如下步骤:步骤S1:利用编译机产生可信根证书和被证书签名的内核rpm包;步骤S2:利用测试机导入可信根证书,并打开SecureBoot功能。本发明使用X86平台下的UEFI软件中的SecureBoot功能,通过使用自制根证书和签名重新编译内核源码包,从而保证了PC或服务器中的Linux内核和initramfs的有效性,当内核或initramfs被修改后,无法进入系统,达到防止他人私自篡改内核和initramfs的效果。

    技术研发人员:郭皓;吴春光;刘步权;齐璇;战茅
    受保护的技术使用者:麒麟软件有限公司
    技术研发日:2020.11.06
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-20990.html

    最新回复(0)