无忧启动论坛

标题: 关于过微软签名验证的安全启动--surface-pro7设备折腾 [打印本页]

作者: 110654    时间: 2020-5-24 01:18
标题: 关于过微软签名验证的安全启动--surface-pro7设备折腾
本帖最后由 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 安全引导的操作系统中,引导软件的每个部分都会进行签名,包括引导加载程序、操作系统内核以及操作系统驱动程序。虚拟机的默认配置包括多个代码签名证书。
虚拟机的默认配置包括一个用于在虚拟机内部对修改安全引导配置(包括安全引导撤消列表)的请求进行身份验证的证书,该证书是一个 Microsoft KEK(密钥交换密钥)证书。

当然有的已经开始做生意了,例如:
https://www.ihuandu.com/uefi.html#whql-fn   微软签名验证

转:简单来说,所谓安全启动,就是主板厂商在 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 模块什么的








作者: 110654    时间: 2020-5-24 01:22
ubuntu EFI启动模板文件谁有 来一套我测试一下呗
作者: qingyi78    时间: 2020-5-24 02:07
本帖最后由 qingyi78 于 2020-5-24 02:10 编辑

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

看你没提到,我就发一个我自用的。测试成功的话回个话。具体使用方法问WINTOFLASH大大,替换里边的GRUBFMX64.EFI为自己想过安全启动的EFI文件即可,之后在第一次会有个选择证书的过程,因本身就是用的GRUB2的文件骗过,故GRUB2的其他版本EFI应该过不了。XORBOOT,CLOVER VENTOY都可以过(亲测)机型是DELL手提。


作者: 110654    时间: 2020-5-24 02:17
qingyi78 发表于 2020-5-24 02:07
看你没提到,我就发一个我自用的。测试成功的话回个话。具体使用方法问WINTOFLASH大大,替换里边的GRUB ...

你这包里面没有grubfmx64.efi文件啊  是grubx64.efi文件吧?  
作者: 110654    时间: 2020-5-24 02:23
qingyi78 发表于 2020-5-24 02:07
看你没提到,我就发一个我自用的。测试成功的话回个话。具体使用方法问WINTOFLASH大大,替换里边的GRUB ...

你能一下 你配套的gurb2 文件吗  我怀疑是我的grub2 版本或者扩展模块问题
作者: qingyi78    时间: 2020-5-24 02:40
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分区。
作者: liuzhaoyzz    时间: 2020-5-24 06:54
疑问:微软EFI启动bcd菜单添加一个grub2启动项目行不行呢? 如何添加呢?

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

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

作者: zhxy9804    时间: 2020-5-24 07:23
感觉还是这方面不要研究了,微软随时可以作梗,
正常u盘启动,就bootmgr双启动即可。
作者: wintoflash    时间: 2020-5-24 08:31
那有没有什么方法免费获得微软的签名验证呢?

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

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

拍个照看看。acpi之类的那个是Device Path,不是报错。
输入 set debug=chain 再执行 chainloader xxx,看看输出。
作者: 江南一根葱    时间: 2020-5-24 10:05
本帖最后由 江南一根葱 于 2020-5-24 10:07 编辑

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

作者: liuzhaoyzz    时间: 2020-5-24 13:51
江南一根葱 发表于 2020-5-24 10:05
我试过,用我的套装在苏菲卫生巾平板上可以启,具体的我也忘了
http://bbs.wuyou.net/forum.php?mod=viewt ...

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

作者: 江南一根葱    时间: 2020-5-24 14:56
liuzhaoyzz 发表于 2020-5-24 13:51
能不能不要这么污啊!wintoflash都被你带歪鸟~~~
surface平板→苏菲平板,你真能恶搞啊~~ ...

呃,这个是wintoflash他说的,有图有真相
我是学他的,不过我经验比他足
作者: 2011goodluckwxl    时间: 2020-10-10 20:14
这个必须要顶起啊
作者: ms2oo8    时间: 2023-9-10 15:37
学习了,EFI签名安全启动太讨厌了
作者: 青青草    时间: 2024-1-26 19:40
对于Windows11 22631.3085,静默过微软签名验证的安全启动都失效了。
作者: wintoflash    时间: 2024-1-26 22:24
青青草 发表于 2024-1-26 19:40
对于Windows11 22631.3085,静默过微软签名验证的安全启动都失效了。

微软会随系统更新的时候更新 UEFI 安全启动黑名单,别想了。
作者: 化璟钰    时间: 2024-5-8 18:00
Surface Pro 7 该如何把 UEFI 安全启动设置为“设置”模式呢?或者是否有其它方法来管理信任的证书?
(目标是安装 Linux,设置好磁盘加密,自己生成证书并签名内核和引导文件,并在信任列表中只保留自己生成的证书。此时 Windows 应该不会通过安全启动验证。)
Surface Pro 7 的安全启动设置,除了 Microsoft only、Microsoft & 3rd-party CA 和 None 外就没有了。
(该不会 None 状态就是设置模式吧?)




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3