本发明涉及数据安全技术领域,具体涉及一种基于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。
技术总结