V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Osk
V2EX  ›  分享发现

systemd 作者: 文件放 Windows, MacOS, Android 可能都比放大部分 Linux 发行版里面安全

  •  
  •   Osk · 2021-09-24 00:51:39 +08:00 · 2850 次点击
    这是一个创建于 916 天前的主题,其中的信息可能已经有所发展或是发生改变。
    In fact, right now, your data is probably more secure if stored on current ChromeOS, Android, Windows or MacOS devices, than it is on typical Linux distributions.
    

    大实话啊, 举双手支持, 主要是 Linux 大部分发行版对现代的安全技术支持糟糕, 比如 Secure Boot, TPM.

    当然, 大佬才敢这样说, 我等菜鸡说这样的话绝对被喷, 原因是 secure boot 和 tpm 确实有不少问题:

    • secure boot 验证可以被篡改, 主板厂商对 bios 代码的校验不到位容易被编程器一发入魂.
    • secure boot 的证书更新是一个艰难工作, 之前微软推送 dbx 更新就在 hp 商用机上翻车了.
    • tpm 本身就不可信, 往坏的方向说就是可能有合法后门.
    • tpm 目前挂在 lpc 总线上, fpga 可以窃取到密钥.

    等等问题挺多的,还要算上其他问题:

    • Windows 和 MacOS 是闭源系统, 从隐私上来说, 直接就是二等公😂民.
    • Android... 比另外两个闭源系统还糟糕...

    但要针对 secure boot 和 tpm 攻击, 大部分人是比较困难的, 没有 ee 背景的可能连主板 ROM 芯片都找不到. 相对之下, linux 的 secure boot 连 initramfs 都不做校验, 实在糟糕.

    Linux 对这方面的支持简直是一言难尽. 之前我问过为何大部分的 Linux 安全启动不校验 initramfs? 得到的答案是: linux 的安全启动大概是为了能启动...

    =========

    举个 ubuntu + luks 磁盘加密 / 的例子: grub 加载了 initramfs, 但没有做校验!!! initramfs 中, 会询问 luks 密码, 这里就有问题了: 我可以修改 initramfs, 窃取输入的 luks key, 或者往目标系统注入恶意代码.

    如果要更好的安全, 可能得自己动手创建 secure boot 的证书链, 自己给所有的启动部件签名, 比如 archlinux wiki 中介绍的: 将 kernel, initramfs, 内核命令行打包到 systemd-bootd 中, 对这个 efi 签名, 这样所有关键部件都无法被轻易篡改了.

    另外, ubuntu 现在有一个配置 secure boot 的选项, 不知道配置后是否会校验 initramfs.

    预启动阶段安全这方面比较好的是微软家的 surface pro 系列, 怎么说呢, 在生命周期内一直在安装固件补丁, 而且比较方便, Windows update 推送;

    然后 secure boot 若被关闭, 开机会有红屏提示, 这个功能建议微软强推, 但估计不敢强推, 一堆人相当讨厌这个设计呢, 微软会被骂到怀疑人生;

    Windows 系统的 bootloader 天生支持 tpm 比较容易的样子, bitlocker 很好用.

    16 条回复    2021-09-25 11:37:36 +08:00
    cest
        1
    cest  
       2021-09-24 00:59:35 +08:00
    都被物理接触了还想安全?
    安全硬件的後门也就一般人的资料没那价值,有关单位不会用在你身上
    有价值的一样被开
    Osk
        2
    Osk  
    OP
       2021-09-24 01:08:13 +08:00   ❤️ 1
    @cest 关于这个, 继续推导下去就是: 反正都不安全了, 那我们还用密码 /加密通信等技术干嘛, 直接明文就好了.
    反正 ssh 的加密通信用超算花 "一些" 时间都能解密, 那我们为啥不干脆用 telnet 呢.


    安全是相对的, 很多公司都会给受控设备部署加密防止商业机密泄露, 而就个人来说, 也是有一定意义的. 各种安全防护的目的之一就是增加实施恶意行为的难度 /成本.
    zagfai
        3
    zagfai  
       2021-09-24 01:29:04 +08:00
    @Osk 这个推导不完全正确,前提是要物理接触,对于物理防护,方法比这种软件防护的,多得多得多。
    wevsty
        4
    wevsty  
       2021-09-24 01:39:58 +08:00   ❤️ 1
    我的观点是 Linux 的安全性依赖于用户自己的调教,Windows 的安全性体现在在开箱即用的情况下给了一个比较高的起点。

    当然,以上是题外话,回归正题。
    Secure Boot 的问题是 Linux 各个发行版的市占率本身就小,主板厂商几乎不会考虑预制各种发行版的证书,而用户自签名证书创造的麻烦远大于收益,所以一般就直接建议关闭这个功能了。
    至于 TPM,其实我个人认为 TPM 并不是作为一个安全的解决方案出现的,实质上一个便利性的解决方案。毕竟要求大多数用户记住一个安全的密钥是不现实的,所以增设一个芯片帮你记住密码这样。

    强行推广全盘加密会更容易导致用户的数据出现损坏或者丢失,很多用户其实根本不理解到手的机器默认开启的全盘加密意味着什么,以至于觉得自己没设置过密码就是没有加密,最终各种一顿操作猛如虎然后数据无法恢复。
    Linux 社区好像没有一定要全盘加密的执念,可能是默认了用户群本身就应该了解各种选择的风险吧。
    felixcode
        5
    felixcode  
       2021-09-24 01:42:25 +08:00   ❤️ 5
    你要看了作者的全文的话就会知道,作者说的那句话是针对文中提到的特定的两种攻击方式,也就是物理获取笔记本电脑硬盘,替换成同样的硬盘,或者拿到硬盘后植入后门并装回。

    不限定场景和攻击方式,笼统的说文件在哪个系统上更加安全,恐怕显的比较不专业。
    yujiang
        7
    yujiang  
       2021-09-24 02:32:32 +08:00 via Android
    TPM2.0 不是国密算法吗?
    dingwen07
        8
    dingwen07  
       2021-09-24 03:08:40 +08:00 via iPhone
    我现在是 BitLocker TPM+PIN,对楼主提到的几个漏洞应该都有较好的防护性能。
    
    TPM 的目的就是为了在设备失窃的情况下数据能得到保护的同时保证用户一定的便利性。

    目前似乎这些保护方案都不能防止内存提取?
    ziseyinzi
        9
    ziseyinzi  
       2021-09-24 07:49:41 +08:00
    稍微研究过 linux 下的安全启动,得出的结论是:linux+secure boot 做不到硬件被入侵的情况下的数据安全;windows 在硬件被入侵时数据也安全的前提是硬件的那些黑盒( TPM 模块等)如它们宣称的那样可信。
    不一定对,希望有这方面专家解释一下。
    sbilly
        10
    sbilly  
       2021-09-24 09:28:11 +08:00
    > tpm 目前挂在 lpc 总线上, fpga 可以窃取到密钥.

    @Osk 这个有相关材料吗? TPM 密钥不是只支持写入?

    另外,国产的以 Linux 为基础的操作系统都支持安全启动。
    wevsty
        11
    wevsty  
       2021-09-24 13:03:39 +08:00
    @yujiang
    国密算法在 TPM 2.0 只是一种可选算法。


    @dingwen07
    全盘加密以后意味着你没办法直接拆卸硬盘往系统里添加后门,所以在全盘加密的基础上如果不能破解用户系统账户的登陆密码是无法进行内存提取的。


    @sbilly
    既然使用了对称加密算法就不可能只能写入不能读取出密钥的,不然也没办法解密不是。
    Mitt
        12
    Mitt  
       2021-09-24 14:02:39 +08:00
    @wevsty 安全芯片最大程度只允许写入密钥,正常都应该是芯片自己生成,内部签名加解密,不允许外部任何读取密钥的行为,否则没有意义的
    2i2Re2PLMaDnghL
        13
    2i2Re2PLMaDnghL  
       2021-09-24 19:50:12 +08:00
    @Mitt 安全芯片不能进行任意信息的加解密,它只是用于封存密钥,并仅在软硬件环境被验证通过时才解封之前封存的信息。
    不然的话 BitLocker / dm-crypt 想要新增算法还得等 TPM 协议更新……
    Mitt
        14
    Mitt  
       2021-09-24 21:43:17 +08:00
    @2i2Re2PLMaDnghL 封存密钥除了存储之外,对于安全芯片也同样是加密和解密数据的行为,而且 TPM 是有 RSA 加解密能力的,只是效率不高而已,另外安全芯片并不是特指 TPM,对于用于原始加解密的密钥永远都只会留在芯片内部,不可能让外界读取,无论是 TPM 还是其他安全芯片
    2i2Re2PLMaDnghL
        15
    2i2Re2PLMaDnghL  
       2021-09-24 22:07:52 +08:00
    @Mitt TPM 加解密的密钥是只留在芯片内部,但全盘加密用的密钥不是,那个是传回 CPU 为磁盘加解密的(不然带宽都不够 SSD 用的)。
    我们只需要去读磁盘加解密的密钥就行,不管 TPM 密钥。读出来放另一台电脑解密都行。
    其他安全芯片还是比较少的,我印象中大量被运用的也就苹果自己做的?而且楼主也只说了 TPM —— 你要说 TPM 安全芯片失格那我没话说……
    Mitt
        16
    Mitt  
       2021-09-25 11:37:36 +08:00
    @2i2Re2PLMaDnghL 确实,我理解错点了,忽略了楼主的部分内容
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5332 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:15 · PVG 17:15 · LAX 02:15 · JFK 05:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.