密钥对:公钥分发,私钥自留。常见的公钥格式: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简述的更多相关文章

  1. secure boot(安全启动)下为内核模块签名

    上一篇随笔中提到了如何在secure boot下安装Nvidia显卡驱动 >>上一篇随笔 如果不需要安装Nvidia显卡驱动,而且要生成密钥,可以参考>> 这篇文章 这里假设生 ...

  2. Linux secure boot(安全启动)时添加Nvidia显卡驱动

    开启Secure boot情况下,在Fedora 21下安装Nvidia 显卡驱动的方法. Nvidia显卡驱动可以从官网上下载最新版>> 点击进入 下载后添加可执行权限: #chmod ...

  3. 华硕笔记本之secure boot

    在ubuntu下安装cuda的时候,一直装不好,cuda-7.5.run已经装好了,但是编译cuda的例程时失败,提示cuda的库链接不上. 初步判断是secure boot的问题,因为在开启X的情况 ...

  4. 反Secure Boot垄断:兼谈如何在Windows 8电脑上安装Linux

    感谢HQSQ的投递一.自由软件基金会的呼吁上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万).我觉得, ...

  5. Linux Foundation Secure Boot System Released

    As promised, here is the Linux Foundation UEFI secure boot system.  This was actually released to us ...

  6. 小米笔记本怎么关闭secure boot

    关闭Secure Boot的步骤: 一.关闭 "快速启动" 功能 1.右键-开始菜单- 电源选项,进入后 点击"选择电源按钮的功能". 2.进入电源选项设置后, ...

  7. 笔记本 原来win10系统改装win7系统遇到 invaid signature detected.check secure boot policy setup问题

    这次操作的笔记本电脑是   华硕R414U 大家如果遇到类似问题的话也可以参考这个方法,但是必须搞清楚电脑的型号,型号不同操作起来有差别的 我这里选择的重装系统的方法是最简单粗暴的硬盘安装方法,怎么硬 ...

  8. UEFI、BIOS、Secure Boot的关系和知识介绍

      从Windows 8操作系统时代开始,安装操作系统的方法也有了很大的改变,Windows 8采用了Secure Boot引导启动的方式,而不是过去Win XP和Win 7的Legacy启动方式,从 ...

  9. [加密]ESP32 -Secure Boot 安全方案

    转自:https://blog.csdn.net/espressif/article/details/79362094 Secure Boot 功能概述 方案概述 Secure Boot 的目的是保证 ...

随机推荐

  1. shell中,我们可以通过简单的一个判断来判断命令是否存在

    shell中,我们可以通过简单的一个判断来判断命令是否存在 which "Command" > /dev/null if [ $? -eq 0 ] then echo com ...

  2. px,em,rem的区别与用法

    别人总结的.个人觉得特别的好: http://www.w3cplus.com/css/when-to-use-em-vs-rem.html

  3. Robot Framework 1

    about Robot, learnt from the following document, perfect document !!!! http://www.virtuousprogrammer ...

  4. 几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi

    abstract: V const & a 加速 F. Mirror 题意 链接 问题: 有n个人在y=0的平面上(及xoz平面).z=0平面上有一面镜子(边平行于坐标轴).z=a平面上有q个 ...

  5. VueJS教程

    文档资料参考: 参考:https://cn.vuejs.org/ 参考:Vue-Cli(客户端) 参考:创建一个Vue项目 参考:https://codesandbox.io 参考:https://c ...

  6. Ionic3多个自定义过滤器--管道(pipe)

    往往我们创建自定义管道一般都不止只会创建一个自定义管道,和自定义组件类似,创建多个方式如下. 一.命令行生成管道 ionic g pipe formateDate ionic g pipemoneyD ...

  7. Django之JWT理解及简单应用

    Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(S ...

  8. Python 中文分词(结巴分词)

    特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义: 搜索引擎模式,在精确模式的基础上,对长词 ...

  9. VUE-006-通过路由 router.push 传递 params 参数(路由 name 识别,请求链接不显示)

    在前端页面表单列表修改时,经常需要在页面切换的时候,传递需要修改的表单内容,通常可通过路由进行表单参数的传递. 首先,配置页面跳转路由.在 router/index.js 中配置相应的页面跳转路由,如 ...

  10. vue开发记录--element-ui的form表单label和placeholder国际化遇到的小问题

    <el-form-item label="$t('permission.employeeName')"> <el-input v-model="form ...