V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
henglinli
V2EX  ›  Linux

有没有遇到 windows 还原 uefi boot entry 的?

  •  
  •   henglinli · 2019-02-02 17:49:01 +08:00 · 3470 次点击
    这是一个创建于 2145 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在 secure boot 开启并使用自签名 efi 情况下,之前的 Alienware alpha r1 如此,如今的 nuc8i7hnk 亦是如此。目前采用的规避方法是使用 systemd boot 替代 bootfwmgr,再用 chainload 重命名后的 bootfwmgr。这不是 ami (没记错的话 alpha r1 的 bios 也是 ami 的方案,dell 的实现)的 bug 就是 MS 不厚道故意把其他 boot entry 给故意弄坏了。
    无论是 efibootmgr 还是 bcfg 添加的 boot entry 都会被 windows 弄坏,然而 bootmgrfw 又不能 chainload 其他 bootloader (存疑,曾试过 bcdedit 添加类似 windows 的启动项目,但是无效,stackoverflow 上也有例子)。假装 bootmgrfw 的这个方法让我觉得憋屈,明明差一点就可以了解决问题而不是规避问题。

    未尝试的可能方法:自签名 bootmgrfw 及其他相关的 efi,不知道 windows 的安全启动机制是否支持,更不知道 windows 还原 bootentry 的机制是否包含签名验证。自签名 bootmgrfw 等后,如果 windows 依然能正常启动,说明 window 还原 bootentry 的机制不包含签名验证,那么修改或添加 bcdedit 那个备份数据库对应的 boot entry 项,也许能做到让 windows 还原期望的 boot entry,也就是说先添加 linux 用的 boot entry,再安装 Windows 或者修复 windows 启动也许能解决该问题。由于不太想了解 windows 的启动细节,未进行深纠。

    以上为抛砖引玉用。
    以下为没用的。

    不知道启用 bios supervisor 密码后,含有 TPM 的主板是否能做到即使使用跳线重置主板也无法清除 bios supervisor 密码? intel 的规格文档并未说明 bios 密码一定存储在 tpm 中,我也没进行测试。
    有没有人使用这个 https://github.com/corna/me_cleaner 清除过 intel nuc 的 me。
    24 条回复    2019-02-04 23:24:07 +08:00
    henglinli
        1
    henglinli  
    OP
       2019-02-02 18:23:06 +08:00
    刚才复查的 intel 的规格文档,主板跳线可清除 bios 密码。这不就是后门吗?安全启动的意义就不太大了。
    估计 Apple 的主板也有类似的跳线,清除 T2 的 key。
    现在想来,Chromebook 虽然没有开机密码,但是开启 devmode 会重置系统这个设置来看还是很安全的。
    这个 nuc8i7hnk 的硬盘加密功能仅仅支持 sata 0。intel 的规格文档还补充说 AHCI 或者 NVME 的驱动器的硬件加密实现还没有标准,早点看到这点,我就就会选择 intel 545s 了。对硬盘加密有需求的,并且不太了解的人,希望你看到了这里。估计今后的重要数据不会放到本地了,加密后放到 google drive 才安心。
    realpg
        2
    realpg  
       2019-02-02 18:26:09 +08:00
    感觉你说的乱的一塌糊涂……
    你的方案选择啥的 甚至我觉得一些技术的理解都有问题
    henglinli
        3
    henglinli  
    OP
       2019-02-02 18:38:28 +08:00
    @realpg 我的锅,“假装 bootmgrfw “,用其他 bootloader 替换 windows 的,然后 chainload windows bootloader。
    我就是吐槽下,intel 论坛我上不了,估计墙了部分,而且代理挂上也很慢很慢。
    wevsty
        4
    wevsty  
       2019-02-02 19:24:18 +08:00
    启动引导的问题我个人不是很清楚细节,不做任何评论。

    BIOS 密码的问题,我并不认为 BIOS 密码不储存在 TPM 是一个安全问题。因为清空 BIOS 并不代表 TPM 密钥会泄露出去,只要 TPM 能检测到 BIOS 或者 BIOS 设置产生了变化拒绝提供密钥就不会有什么安全问题。
    henglinli
        5
    henglinli  
    OP
       2019-02-02 20:11:33 +08:00
    @wevsty nuc8i7hnk 的密码是存储在 TPM 上的,准确的是 intel PTT (应该是 cpu 内置的 TPM 吧,不是第三方 TPM 芯片,intel 规格文档有说明主板上还有一个位置可放置 TPM 芯片)。BIOS 密码放在内置 flash 上或者 TPM 上都对我而言都很安全。我担心的不安全的情况是:有人物理访问到主机,并使用跳线清除 BIOS 密码,并用其他系统从 USB 启动就问访问到用户文件了。
    tempdban
        6
    tempdban  
       2019-02-02 20:20:15 +08:00 via Android
    @henglinli 既然能跳线清 BIOS 那为啥不拆盘直接读?
    chinvo
        7
    chinvo  
       2019-02-02 20:20:33 +08:00 via iPhone
    使用 tpm 全盘加密可以杜绝你说的问题。BIOS 重设并不能影响 tpm 密码,而且 tpm 密码一旦变化全盘加密就无法解密
    ysc3839
        8
    ysc3839  
       2019-02-02 20:26:33 +08:00 via Android
    我认为要保证数据安全的话靠固件密码是不够的。建议把数据加密,同时不要把密码存储在系统内部,也就是尽量避免仅使用 TPM 存储密码。
    henglinli
        9
    henglinli  
    OP
       2019-02-02 20:38:18 +08:00
    @chinvo 磁盘加密不是硬件(drive)级别的很会变慢,但是我依然能接受,可惜当时不知道 nvme 的 ssd 不支持硬件(drive)级别的加密,不然购买 sata 接口的 intel 545s 了。年后把 btrfs 换成 zfs,毕竟内核还没有做好,加密更重要。重要的数据,还是不放本地,加密后放到 google drive 才安心。
    realpg
        10
    realpg  
       2019-02-02 20:44:55 +08:00
    @henglinli #3
    从来没研究过安全启动这套东西
    我也没看明白你说这一坨是想干啥

    如果你只是想要硬盘数据防盗,全盘加密不就完事了,跟 secure boot 有啥关系……

    windows 下,bitlocker+tpm 你只要保管好自己的登录密码就好了

    至于 linux,直接数据独立分区 AES 不就完了,软件加密性能也足够。
    chinvo
        11
    chinvo  
       2019-02-02 20:45:16 +08:00
    @henglinli #9 你这个思路有问题,重要数据本地才更安心,因为除非物理访问,不然入侵你的成本比入侵云服务的成本低(入侵云服务可以获取更多人的数据,而且密码泄漏、撞库等是云服务的软肋)
    chinvo
        12
    chinvo  
       2019-02-02 20:46:11 +08:00
    如果你认为本地的安全性都存疑,建议删数据抹盘上榔头,直接干掉更安全
    henglinli
        13
    henglinli  
    OP
       2019-02-02 20:49:09 +08:00
    @ysc3839 是的。需要注意的是 TPM 保存的应该是密钥,并不是密码本身。目前在考虑购买 https://cloud.google.com/titan-security-key/这个玩意儿,记得 system76 好像也有一款类似的产品,刚才去看了下却找不到了。
    henglinli
        14
    henglinli  
    OP
       2019-02-02 20:57:19 +08:00
    @chinvo 我的思路如果在国外是有问题的,可是国内法律不一样,我认为我的思路就没有问题了。比如我就把自定义 uefi 相关的 key 加密后放到 google drive 上。即使小偷偷了我的电脑,他首先开不了机,有 bios 密码,然后他主板跳线清除 bios 密码,然后 usb 启动后,mount 不了我的加密分区,当然也不知道我用电脑干了什么,其实只是看了 pornhub,怕懂技术的朋友发现了。
    zingl
        15
    zingl  
       2019-02-02 23:52:58 +08:00
    > 主板跳线清除 bios 密码,然后 usb 启动后,mount 不了我的加密分区

    既然已经假定物理接触了,有且只有硬盘 /分区 /文件加密能起作用,其它那些都不是为了解决这个问题的
    Tyanboot
        16
    Tyanboot  
       2019-02-03 01:49:13 +08:00
    Windows 会还原 efi entry,所以我直接在主板里面把 efi nvram 给锁了。
    Osk
        17
    Osk  
       2019-02-03 08:24:25 +08:00 via Android
    完全没看明白楼主的启动流程,,,我的经验是不要把其它的 boot loader 安装成默认的,即 efi/boot/bootx64.efi ,windows 有时会神经病地替换它。

    然后自签证书的话可以用自己的证书给 ms 的根证书签名,这样就不用动 windows 的 efi 文件了。
    henglinli
        18
    henglinli  
    OP
       2019-02-03 10:21:48 +08:00
    @Osk 未遇到过 efi/boot/bootx64.efi 被替换掉的情况,倒是 Ubuntu 会安装该文件,估计 windows 启动修复会替换它吧。
    启动流程具体是:使用另一个 boot manager (我选择的是 systemd boot )替换掉 efi/boot/microsoft/bootmgrfw.efi ,然后用该 boot manager chain boot bootmgrfw.efi 重命名后的 bootw.efi 。
    我发现只要从 efi shell 直接执行 bootmgrfw.efi (不管其是否被重命名) windows 都会还原 boot entry,以及 bootmgrfw.efi 本身,chainload bootmgrfw.efi 却不会。
    签名部分目前我确实是签名了 MS 的 2 个证书和 intel 的一个证书(应该是更新固件要用到的,正应该有 intel 的证书在,我才不能确定是否能用 me_cleaner 清除 bios 固件中的 me,至少 me_cleaner 的 issue list 里面没有看到相同 nuc 的使用结果报告)。我的考量是,如果我签名(旧的 MS 签名会被替换掉)了 bootmgrfw.efi 等,Windows 也许不会替换它(比如假如神州网信版的签名也许就不是 MS 的签名呢?),那么我就可以用自己添加的 boot entry 启动 systemd boot 再用 system boot chainload 未被重命名的 bootmgrfw.efi 。如果可行的化,个人认为这比假装 bootmgrfw.efi 要好一点。
    henglinli
        19
    henglinli  
    OP
       2019-02-03 10:25:21 +08:00
    @Tyanboot 怎么锁? Windows 启动后自己再把它改回来?( stackoverflow 上有人就是这么干的。。。)
    还是 efishell 有相关的命令或者是你的主板支持?
    henglinli
        20
    henglinli  
    OP
       2019-02-03 10:34:01 +08:00
    @zingl 分区加密部分是应该的,但是个人单方面认为应该要注意的是应该避免使用神州网信版以及简体中文版(都是特供版)的 bitlocker。目前猜测 windows 繁体中文版不是特供版,但是安装的时候还是不要选简体中文的好。
    Tyanboot
        21
    Tyanboot  
       2019-02-03 12:55:28 +08:00 via Android
    @henglinli 是主板支持的。可能只有部分支持吧…这个锁定的效果就是所做的修改在重启之后恢复到锁定时候的状态。所以 Windows 也没法自作主张的增删调整顺序了。
    dingwen07
        22
    dingwen07  
       2019-02-04 00:19:31 +08:00 via Android
    跳线破解 BIOS 密码后 TPM 会拒绝提供密钥,不会有安全问题。你要更加安全用 EFS。买个智能卡(比如 YubiKey,最好不要选支持国密的),用智能卡生成不可导出的密钥。敏感数据用 EFS 加密,在没设置恢复代理的情况下没有智能卡绝对打不开。
    henglinli
        23
    henglinli  
    OP
       2019-02-04 11:52:16 +08:00
    @dingwen07 跳线清除 bios 密码后,就可以从 USB 启动其他 OS 了,从其他 OS 访问本地遵循国内法律的加密方案保护的文件是可能的。目前在考虑 google 泰坦 https://cloud.google.com/titan-security-key
    dingwen07
        24
    dingwen07  
       2019-02-04 23:24:07 +08:00 via Android
    @henglinli 如果 BIOS 关键设置有变化,不管怎么变的,TPM 会拒绝提供密钥。如果用 BitLocker 加密了,那就没法解密。TPM 很安全,唯一需要注意的是 TPM 是不是国产,所有国行电脑都是国产芯片。
    谷歌 Titan 密钥只支持 u2f 只可以用来做双重验证。YubiKey 可以当作智能卡,放入 X.905 证书后就可以用来做 BitLocker 加密的"使用智能卡解锁",也可以在加密文件系统( EFS )上用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5313 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:07 · PVG 15:07 · LAX 23:07 · JFK 02:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.