EDK II之Secure Boot简述
密钥对:公钥分发,私钥自留。常见的公钥格式:cer/der,常见的私钥格式:pfx。

BIOS中Secure Boot的原理:把公钥包在code里面,当使用gBS->LoadImage()去加载模块(UEFI Image)的时候会用BIOS里面的公钥去验证Image有没有正确签名,验证通过则Image成功被加载(签名实例:signtoolx64.exe sign -f 私钥.pfx -fd sha256 shell.efi)。

Secure Boot举例:
当我们在BIOS里面把Secure Boot[Enable]之后,会发现我们的U盘shell进不去,这是因为shell环境(bootx64.efi)没有经过签名,如果要使Secure Boot[Enable]之后,也能进U盘shell,需要对bootx64.efi进行签名,同时把签名用的私钥的对应公钥包到BIOS里面。
EDK II里面涉及的变量:



1. xxxDefault是用来存储变量的Default值的,一般来说是在Build BIOS的时候就已经包在最终生成的二进制文件里面。真正在代码里面使用的变量是db/dbx/dbr/dbt/KEK/PK。
2. setup mode时,key还没有load进来,这时就算Secure Boot[Enable]也是不起作用的。

3. 把key load进来之后变成user mode:

4. 我们上面提到的公钥一般存放在db里面(有时候公钥也会以cer文件的形式包到BIOS里面,私钥对应的是pfx文件)。
附:(下面的tool还没认真研究过,先备注一下)
1. 通过openssl创建密钥对:
>>>openssl.exe genrsa -out privkey.pem 2048
>>>openssl.exe rsa -in privkey.pem -pubout -out pubkey.pem
2. 签名实例:signtoolx64.exe sign -f 私钥.pfx -fd sha256 %1 //%1用于从命令行输入文件名
3. Makecert.exe证书生成工具
4. pvk2pfx 用于将包含在spc cer pvkw文件中的公钥和私钥信息复制到个人信息交换(.pfx)文件中:
pvk2pfx -pvk CerTest.pvk -spc CerTest.cer -pfx CerTest.pfx
5. 下图是某个cer文件(OID)

EDK II之Secure Boot简述的更多相关文章
- secure boot(安全启动)下为内核模块签名
上一篇随笔中提到了如何在secure boot下安装Nvidia显卡驱动 >>上一篇随笔 如果不需要安装Nvidia显卡驱动,而且要生成密钥,可以参考>> 这篇文章 这里假设生 ...
- Linux secure boot(安全启动)时添加Nvidia显卡驱动
开启Secure boot情况下,在Fedora 21下安装Nvidia 显卡驱动的方法. Nvidia显卡驱动可以从官网上下载最新版>> 点击进入 下载后添加可执行权限: #chmod ...
- 华硕笔记本之secure boot
在ubuntu下安装cuda的时候,一直装不好,cuda-7.5.run已经装好了,但是编译cuda的例程时失败,提示cuda的库链接不上. 初步判断是secure boot的问题,因为在开启X的情况 ...
- 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux
感谢HQSQ的投递一.自由软件基金会的呼吁上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万).我觉得, ...
- Linux Foundation Secure Boot System Released
As promised, here is the Linux Foundation UEFI secure boot system. This was actually released to us ...
- 小米笔记本怎么关闭secure boot
关闭Secure Boot的步骤: 一.关闭 "快速启动" 功能 1.右键-开始菜单- 电源选项,进入后 点击"选择电源按钮的功能". 2.进入电源选项设置后, ...
- 笔记本 原来win10系统改装win7系统遇到 invaid signature detected.check secure boot policy setup问题
这次操作的笔记本电脑是 华硕R414U 大家如果遇到类似问题的话也可以参考这个方法,但是必须搞清楚电脑的型号,型号不同操作起来有差别的 我这里选择的重装系统的方法是最简单粗暴的硬盘安装方法,怎么硬 ...
- UEFI、BIOS、Secure Boot的关系和知识介绍
从Windows 8操作系统时代开始,安装操作系统的方法也有了很大的改变,Windows 8采用了Secure Boot引导启动的方式,而不是过去Win XP和Win 7的Legacy启动方式,从 ...
- [加密]ESP32 -Secure Boot 安全方案
转自:https://blog.csdn.net/espressif/article/details/79362094 Secure Boot 功能概述 方案概述 Secure Boot 的目的是保证 ...
随机推荐
- js表单反显
/* * 表单自动回显js * 依赖JQURY * 使用参考:$("#form1").form("load",{"id":"112 ...
- delphi调用windows自带语音功能
windows自带语音接口 SAPI.SpVoice, 接口说明如下 https://docs.microsoft.com/en-us/previous-versions/windows/deskto ...
- linux sed 用法
目录 Overview 命令行选项 Command-Line Options manual http://www.gnu.org/software/sed/manual/sed.html Overvi ...
- JAVA RPC (六) 之手把手从零教你写一个生产级RPC之client的代理
首先对于RPC来讲,最主要的无非三点[SERVER IO模型].[序列化协议].[client连接池复用],之前的博客大家应该对thrift有一个大致的了解了,那么我们现在来说一说如何将thrift的 ...
- LG3834 可持久化线段树1
题意 给定\(N\)个整数构成的序列,将对于指定的闭区间查询其区间内的第\(K\)小值. $n \leq 2 \times 10^5 $ 思路 在\([l,r]\)区间内的数的个数,可以用\(sum[ ...
- 1.Qt字符编码
1.给空间设置内容,有显示中文的,必须是utf-8编码: 2.从Qt得到的字符串,如果有中文,编码是utf-8,和Linux是一样的: 3.如果使用标准的C函数,如果有中文,是gbk编码: ANSI, ...
- 002-zookeeper 基本配置、安装启动 windows环境
一. 概述 ZooKeeper是Hadoop的正式子项目,它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.ZooKeeper的目标就是封装好复杂易出 ...
- vi命令撤销及恢复
u :插销上一步操作 Ctrl + r :恢复被撤销的上一步操作
- mysql-5.7.25 源码 安装
mysql-5.7.25 源码 安装 编译 export INSTALL_PREFIX="/data/services" export MYSQL_INSTALL_PATH=&qu ...
- chrome浏览器多开的方法
Chrome浏览器在上网的过程中,会保存一些用户数据,如缓存.cookie.收藏的网页等信息. 这些信息的保存位置是可以设置的.方法也很简单: 桌面上复制一个Chrome的快捷方式,编辑属性,添加-- ...