无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 7186|回复: 15

[分享] 关于过微软签名验证的安全启动--surface-pro7设备折腾

  [复制链接]
发表于 2020-5-24 01:18:16 | 显示全部楼层 |阅读模式
本帖最后由 110654 于 2020-5-28 18:07 编辑

5月25日,下载了最新版ubuntu2004,安装到surfacr pro7 上测试  居然能过 安全验证 第3方签名验证,那证明方式有签名验证的grub2 都能在苏菲机器上启动,至于我之前采用http://bbs.wuyou.net/forum.php?mod=viewthread&tid=375848&extra=page%3D1这个帖子模板 启动不了,

百度了一下发现:
转VM虚拟机官方的解释:
UEFI 安全引导是一种安全标准,有助于确保您的 PC 仅使用该 PC 制造商信任的软件进行引导。对于某些虚拟机硬件版本和操作系统,您可以完全按照对物理计算机启用安全引导的方式来启用安全引导。

在支持 UEFI 安全引导的操作系统中,引导软件的每个部分都会进行签名,包括引导加载程序、操作系统内核以及操作系统驱动程序。虚拟机的默认配置包括多个代码签名证书。
  • 一个仅用于引导 Windows 的 Microsoft 证书。
  • 一个用于 Microsoft 签名的第三方代码(例如 Linux 引导加载程序)的 Microsoft 证书。
  • 一个仅用于在虚拟机内部引导 ESXi 的 VMware 证书。

虚拟机的默认配置包括一个用于在虚拟机内部对修改安全引导配置(包括安全引导撤消列表)的请求进行身份验证的证书,该证书是一个 Microsoft KEK(密钥交换密钥)证书。

当然有的已经开始做生意了,例如:

转:简单来说,所谓安全启动,就是主板厂商在 UEFI 的 ROM 中内置了一个公钥,操作系统发行方用对应的私钥,去给系统的内核,或者引导器签名。
这样,系统启动的时候,UEFI 会用 ROM 中内置的对应公钥,去验证这个内核,或者引导器是否为发行方提供的。如果是,那么验证通过,可以正常启动;如果不是,那么启动就会被终止。
如果能现在能理解安全启动的概念,那么就来解答你的几个疑惑:

Linux 能否使用安全启动?
当然可以。
不过需要替换 UEFI 中内置的密钥。
为什么主板内置了 Windows 的密钥?因为 Windows 用户基数大,最重要的是,微软有钱,开源世界没钱。
不过主板厂商通常是允许替换掉内置的密钥的,这个时候可以生成一对密钥,用公钥替换掉主板内置的密钥,用私钥给 Linux 内核或引导器签名,这样就可以实现 Linux 的安全启动了。具体的教程可以参考:

https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface/Secure_Boot
上面链接中 Linux 实现安全启动的方式大概分为以下几种:
1、使用 HashTool.efi 或添加内核或其他引导器的 Hash 到 UEFI 的 NVRAM 中,再通过微软预签名的引导器 PreLoader.efi 绕过来安全启动,进行下一步引导。
2、Shim 的原理和 PreLoader + HashTool 相似,而且还添加了 KeyTool ,这样看来,Shim 更像是一种安全启动的代理,用来绕过不可替换的主板密钥。
3、使用自己生成的密钥,这种是最自由的了,还可以混合从主板中读取的微软密钥,这样自签名内核和微软签名内核都能引导。

转:简单的说,Linux 世界确实不需要注意签名了。上面提到的两套方案完全是够用的。
Preloader 是我一直在使用的那个方案。通过一个具有签名的 Preloader 来启动通过了注册的 efi 程序文件。HashTool 是用来注册可信 efi 程序文件的工具。第一次启动时用 HashTool 注册一下 bootloader 或者 kernel,之后就再也不用担心安全启动了。
亲测这样在微软的 Surface 系列下可以在开启安全启动时正常启动 Linux。



作者:知乎用户
链接:https://www.zhihu.com/question/392260941/answer/1202931383
来源:知乎



这就需要大佬出面研究一下了,我等只有坐等。。。
回题:
经过初步测试 ,下面链接这套目前位,efi模式grub2过第三方验证(如果你的主板有这种设置的话,关闭验证就会显红),测试结果测试能过,surface pro7 设备折腾记录为,EFI固件中安全模式有3个选项。1,下载了grub2。04版本  做成U盘版,开微软验证=失败,开第三方验证=失败,关闭验证=通过。
2,下载论坛某大佬的批处理制作U盘版(grub2.04),微软验证=失败,第三方验证=失败,关闭验证=通过。
3.下载ubuntu20.04安装到硬盘上,提取grub2的引导,微软验证=失败,第三方验证=通过,关闭验证=通过。

因为ubuntu在安装过程发现了另一个分区的windows存在,所以他在efi目录下面创建了ubuntu目录存放用于引导ubuntu的问题,并添加grub2作为主引导,菜单中自动添加了windows引导,提取了grub2的引导加以修改,制作了一个采用ubuntu20 的grub2 EFI模式专用硬盘/U盘 版套装,需要的拿去套用。
链接: https://pan.baidu.com/s/1g2P2whSEx67z8bzECp1AOQ 提取码: cy5x

具体是什么情况,知识有限,具体不知道,只能通过乱七八糟测试寻找结果。我也无法解答具体引导过程失败的原因或者成功的原因,可以下载上面的套装研究下,反正我看不懂ubuntu 这个是如何能过第三方验证的。

初步结论是 微软签名  依旧是微软签名,主板的安全验证  分为证书类  钥匙类  有些主板 可手动添加  没有手动添加的选项并不表示 不可以添加例如你在菜单上加入
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
        fwsetup
}

就会进入BIOS, 而在测试安装UBUNTU过程中发现,grub2   2.04版本 目前最新版 ,也是ubuntu20 04版自带的 ,他会在启动过程给主板Bios创建一条或者添加一条efi引导记录   ,类似于你在windows安装软件EasyUEFI  也可以到达创建 (编辑主板的efi引导项目,当然主板自带的功能选项是是能看到,但不能编辑的),
除了微软签名验证 还有第三方厂家的验证   例如grub2  也算一个第三方,当然有的大神在制作过程中或者漏掉了这个签名,至于他是怎么签名的,(我猜&手动滑稽,应该是内置到了efi文件 里面了)。微软也有一个类似winsipolicy.p7b 的文件 在efi\Microsoft\Boot中,有的主板可以手动导入,当然大多数时候 根本用不上,至于ubuntu这套grub2 (目前这套 是修改了的,稍后上传原版未修改的套装)是如何在启动时候创建一条EFI记录到主板的 ,目前不知道,微软也会,给你创建一个windows boot  mandddr   EFI记录引导项。
最后就是关闭验证,

之前所说为何能启动到菜单  却不能启动PE 错误acpi那种。目前除了换了ubuntu套装 ,菜单小改动,其他没变,就能成功了。
改动情况如:
该变前:(使用论坛  http://bbs.wuyou.net/forum.php?mod=viewthread&tid=375848&extra=page%3D1 套装)
menuentry "启动UEFI Windows PE菜单" --class windows --class os {
echo "正在启动UEFI Windows PE菜单..."
set root='(hd0,msdos1)'
        insmod part_gpt
        insmod ntfs
        insmod fat
        insmod search_fs_file
        insmod chain
        search --no-floppy --set=root -f /efi/pe/bootmgfw.efi
        chainloader (${root})/efi/pe/bootmgfw.efi
}




改变后:(使用ubuntu grub2套装2.04版)
menuentry "启动UEFI Windows PE菜单" --class windows --class os {
echo "正在启动UEFI Windows PE菜单..."
                insmod gzio
                if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
                insmod part_gpt
                insmod ext2
        search --no-floppy --set=root -f /efi/pe/bootmgfw.efi
        chainloader (${root})/efi/pe/bootmgfw.efi
}





帖子说http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385327&page=1

99美元微软安全启动签名验证,
我有几个疑问,关于安全启动这块,还是蒙圈状态,请教各路大神帮助解答一下
1.EFI是一个组织,微软也是成员,按理说,市场上大部分设备都有关闭验证这个功能用于维护,但是微软自家出品的设备如surface pro这种设备,他的安全验证不按常理出牌,我目前测试grub2板块类的方式,去过验证,均失败了.关闭验证,用grub2,启动都是错误,类似acpi那种错误.然而这个grub2启动在其他台式机,笔记本,服务器类大多数设备都能启动,偏偏surface不行,然而用windows系统中的模版,也就是windows启动器,过验证都行.那有没有什么方法免费获得微软的签名验证呢??  测试内容有,BIOS中可以设置有微软验证,第三方验证,关闭验证3种方式,第一种启动错误提示类似验证签名不对,第2种黑屏一直没动,第3种等一会跳Bios设置界面去了.
  疑问:微软EFI启动bcd菜单添加一个grub2启动项目行不行呢? 如何添加呢?

2.有一点头铁,我想测试一下市面上还有那个EFI启动管理器或者模板能过这种设备的启动呢?
难道说https://blog.csdn.net/cherish152/article/details/96287234  这个是假的? PRO6 可以PRO7 是2020年3月份左右出品的?  新改变 ?
恰好有机会,发来我测试下吧,看那个启动器或者模板能搞定,
根据帖子中,我用工具直接刷镜像到U盘  查看EFI分区中都没有bootx64.efi文件, 能启动个撒? 于是我换了一个I5-7代台式机机器测试 依旧不行,或许四叶草引导需要手动改变什么,正在研究中,

3.grub2区中那个过安全验证的已经能过很多设备的验证了.但微软设备过不了(猜想),大家赶紧使用吧
http://bbs.wuyou.net/forum.php?m ... 8674&extra=page%3D1
帖子已经说得很明白了
对于整合需求的 ,可以下载原帖的.改一下grub.cfg路径就行了.如:
rmmod chain
insmod /boot/grub/chain.mod
chainloader /EFI/BOOT/grubx64.efi  (这个efi文件指向你目前的bootx64.efi即可,把你目前的bootx64.efi改名,修改指向路径就行了)
boot

原帖地址
http://bbs.wuyou.net/forum.php?m ... 4015&extra=page%3D1


经过初步测试 这个过安全  大部分台式机  笔记本都能过,

如果能过微软设备安全这个坎.....我感觉难了.... BIOS有关闭这个按钮,按理说 不应该啊,为什么还是不行启动呢,都能启动到菜单界面了,各种尝试菜单写法依旧是ACPI........很长一横,错误.(具体) 记不住了...
命令中ls -l  设备都能看到
ls文件夹都能看到... chainloader启动  efi 就会错误...或许是需要什么特殊mod 模块什么的







 楼主| 发表于 2020-5-24 01:22:41 | 显示全部楼层
ubuntu EFI启动模板文件谁有 来一套我测试一下呗
回复

使用道具 举报

发表于 2020-5-24 02:07:16 | 显示全部楼层
本帖最后由 qingyi78 于 2020-5-24 02:10 编辑

secureboot.7z (891.92 KB, 下载次数: 62)

点评

你能一下 你配套的gurb2 文件吗 我怀疑是我的grub2 版本或者扩展模块问题  详情 回复 发表于 2020-5-24 02:23
你这包里面没有grubfmx64.efi文件啊 是grubx64.efi文件吧?  详情 回复 发表于 2020-5-24 02:17
回复

使用道具 举报

 楼主| 发表于 2020-5-24 02:17:19 | 显示全部楼层
qingyi78 发表于 2020-5-24 02:07
看你没提到,我就发一个我自用的。测试成功的话回个话。具体使用方法问WINTOFLASH大大,替换里边的GRUB ...

你这包里面没有grubfmx64.efi文件啊  是grubx64.efi文件吧?  

点评

我这里的GRUFMX64是CLOVER的,你可以自己替补按为XORBOOT或VENTOY试试。我这里有个BOOTX64MS是原来微软的BOOTX64.EFI。 所以GRUBFMX64.EFI可以随意替换除GRUB2.EFI之外的其他EFI文件。你也可以下载个CLOVER,看看有  详情 回复 发表于 2020-5-24 02:40
回复

使用道具 举报

 楼主| 发表于 2020-5-24 02:23:45 | 显示全部楼层
qingyi78 发表于 2020-5-24 02:07
看你没提到,我就发一个我自用的。测试成功的话回个话。具体使用方法问WINTOFLASH大大,替换里边的GRUB ...

你能一下 你配套的gurb2 文件吗  我怀疑是我的grub2 版本或者扩展模块问题
回复

使用道具 举报

发表于 2020-5-24 02:40:00 | 显示全部楼层
110654 发表于 2020-5-24 02:17
你这包里面没有grubfmx64.efi文件啊  是grubx64.efi文件吧?

我这里的GRUFMX64是CLOVER的,你可以自己替补按为XORBOOT或VENTOY试试。我这里有个BOOTX64MS是原来微软的BOOTX64.EFI。
所以GRUBFMX64.EFI可以随意替换除GRUB2.EFI之外的其他EFI文件。你也可以下载个CLOVER,看看有没有出菜单,CLOVER自动识别EFI分区和其他WINDOWS分区。
回复

使用道具 举报

发表于 2020-5-24 06:54:27 | 显示全部楼层
疑问:微软EFI启动bcd菜单添加一个grub2启动项目行不行呢? 如何添加呢?

微软的BCD不支持启动grub2。别想了。

安全启动就是微软设下的梗,第三方启动器要想过,微软有很多法子作梗,BIOS设置中如果能关就关掉;如果关不掉直接用bootmgfw.efi启动吧。不可能干的过微软的,过安全启动的很多方案,可能都有时效性,谁能保证一直有效?
回复

使用道具 举报

发表于 2020-5-24 07:23:15 | 显示全部楼层
感觉还是这方面不要研究了,微软随时可以作梗,
正常u盘启动,就bootmgr双启动即可。
回复

使用道具 举报

发表于 2020-5-24 08:31:15 | 显示全部楼层
那有没有什么方法免费获得微软的签名验证呢?

有,还可以让微软给你发钱。
微软EFI启动bcd菜单添加一个grub2启动项目行不行呢? 如何添加呢?

你以为微软会想不到这一点吗?微软的 bootmgfw.efi 也是会验证签名的。
关闭验证,用grub2,启动都是错误,类似acpi那种错误

拍个照看看。acpi之类的那个是Device Path,不是报错。
输入 set debug=chain 再执行 chainloader xxx,看看输出。
回复

使用道具 举报

发表于 2020-5-24 10:05:34 | 显示全部楼层
本帖最后由 江南一根葱 于 2020-5-24 10:07 编辑

我试过,用我的套装在苏菲卫生巾平板上可以启,具体的我也忘了
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=414177&extra=
这里的套装,不过现在有新套

点评

能不能不要这么污啊!wintoflash都被你带歪鸟~~~ surface平板→苏菲平板,你真能恶搞啊~~~  详情 回复 发表于 2020-5-24 13:51
回复

使用道具 举报

发表于 2020-5-24 13:51:51 来自手机 | 显示全部楼层
江南一根葱 发表于 2020-5-24 10:05
我试过,用我的套装在苏菲卫生巾平板上可以启,具体的我也忘了
http://bbs.wuyou.net/forum.php?mod=viewt ...

        能不能不要这么污啊!wintoflash都被你带歪鸟~~~
surface平板→苏菲平板,你真能恶搞啊~~~

点评

呃,这个是wintoflash他说的,有图有真相[attachimg]457768[/attachimg] 我是学他的,不过我经验比他足  详情 回复 发表于 2020-5-24 14:56
回复

使用道具 举报

发表于 2020-5-24 14:56:10 | 显示全部楼层
liuzhaoyzz 发表于 2020-5-24 13:51
能不能不要这么污啊!wintoflash都被你带歪鸟~~~
surface平板→苏菲平板,你真能恶搞啊~~ ...

呃,这个是wintoflash他说的,有图有真相 9999999999999.png
我是学他的,不过我经验比他足
回复

使用道具 举报

发表于 2020-10-10 20:14:21 | 显示全部楼层
这个必须要顶起啊
回复

使用道具 举报

发表于 2023-9-10 15:37:39 来自手机 | 显示全部楼层
学习了,EFI签名安全启动太讨厌了
回复

使用道具 举报

发表于 2024-1-26 19:40:39 | 显示全部楼层
对于Windows11 22631.3085,静默过微软签名验证的安全启动都失效了。

点评

微软会随系统更新的时候更新 UEFI 安全启动黑名单,别想了。  详情 回复 发表于 2024-1-26 22:24
回复

使用道具 举报

发表于 2024-1-26 22:24:06 | 显示全部楼层
青青草 发表于 2024-1-26 19:40
对于Windows11 22631.3085,静默过微软签名验证的安全启动都失效了。

微软会随系统更新的时候更新 UEFI 安全启动黑名单,别想了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-3-28 17:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表