如何验证启动磁盘映像?

如何验证启动磁盘映像?

在我看来,在 Ubuntu 上创建启动盘的过程确实很危险。这在很多方面都很可怕。请 (1) 用相反的证据反驳我的断言,或者 (2) 告诉我如何避免这些陷阱(希望不要放弃 Ubuntu 作为准安全操作系统)。

首先,这是我尝试做的事情:

  1. 通过 Windows 上的 Pen Drive Linux 将 Ubuntu ISO(经过哈希验证)写入 USB 记忆棒,从而生成可启动映像。

  2. 在计算机 A 上安装生成的启动映像。

  3. 在现有的不同 Ubuntu 环境中,使用启动盘创建器将相同的 ISO 写入另一台机器上的另一个 USB 记忆棒。

  4. 在计算机 B 上安装生成的启动映像。

  5. 使用计算机 A 上的启动盘创建器,使用上面的原始 ISO 制作一个新的可启动 USB 驱动器,从而得到映像 A。

  6. 使用计算机 B 上的启动盘创建器,使用相同的 ISO 制作一个新的可启动 USB 驱动器,从而得到映像 B。

  7. 比较映像 A 和映像 B。换句话说,如果我从两种不同的方式开始创建启动映像,那么如果事实上我在第二轮中只使用启动盘创建器而不是 Pen Drive Linux,那么它们的子启动映像是否会匹配?

以下是我了解到的内容(无特定顺序):

  1. 启动盘创建器有一个“擦除磁盘”按钮,但它似乎不起作用,因为它似乎保留了文件系统类型。它真的会擦除引导扇区(更不用说分区表了),还是只是将最新的引导病毒留在那里,准备在安装时感染新创建的启动盘?是的,我们可以使用磁盘实用程序来格式化媒体,但如果启动盘创建器告诉我它实际上并没有以适合安全启动的方式初始化任何东西,那就太好了。(EFI 启动可能会部分缓解这种威胁,但可能不会消除它。)

  2. ubuntu.com 上有多个页面,提供 ISO 的各种哈希值。但这无关紧要,因为最终我们都想要一个经过身份验证的启动映像,而不是经过身份验证的压缩文件,后者最终会演变为上述启动映像(在经过受感染的机器等之后)。

  3. 我们在启动映像中有 md5sum.txt。MD5 作为一种安全哈希已被弃用多年。更不用说病毒可以轻易修改此文件,因此它无法取代文件哈希的必要性,这些文件哈希可从https://ubuntu.com/i-dont-know-where,与 http(not s!)://releases.ubuntu.com/14.04/SHA256SUMS 不同。是的,它确实可以很好地防止意外错误,但这并不能解决安全问题。

  4. md5sum.txt 中甚至没有提到 ldlinux.sys。这是映像 A 和映像 B 之间唯一不同的文件(同样,尽管所有内容都来自同一个 ISO)。我甚至没有这个文件的校验和,更不用说安全哈希了。据我所知,计算机 A 和计算机 B 都感染了病毒,但感染此文件的病毒不同,感染方式也不同。

以下是我想知道的方法:

  1. 一种验证子图像的方法(在线,而不是通过可能已被感染的本地方式)。

  2. 确保启动盘创建器和 Pen Drive Linux 以及 Whatever Random Boot Maker 都能遵守某种标准,这样任何人都可以轻松检查生成的启动盘并说“这是由 Ubuntu 签名的”,或者至少“这些哈希值看起来与我在https://ubuntu.com/hashes“。

  3. 如果没有其他问题,那么 SHA256 和 ldlinux.sys 的正确大小适用于各种 Ubuntu 版本。

  4. 是的,我可以自己编译所有内容,但没有理由相信病毒不会感染源代码和二进制代码。同样的身份验证问题。

答案1

系统管理软件用于从 MSDOS 格式的软盘启动 Linux。现代 Ubuntu 映像(如 14.04)不使用系统管理软件. 相反,他们使用isolinux.bin这是 El Torito Boot 图像的一部分Ubuntu 系统镜像。要转储 El Torito 标头,请执行以下操作:

$  xorriso -indev ubuntu-14.04-desktop-amd64.iso -toc
xorriso 1.3.2 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE : 507 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'ubuntu-14.04-desktop-amd64.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , ISOLINUX isohybrid MBR pointing to boot image
Media summary: 1 session, 493568 data blocks,  964m data, 11.2g free
Volume id    : 'Ubuntu 14.04 LTS amd64'
Drive current: -indev 'ubuntu-14.04-desktop-amd64.iso'
Drive type   : vendor 'YOYODYNE' product 'WARP DRIVE' revision 'FX01'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Media blocks : 493568 readable , 5895012 writable , 6388580 overall
Boot record  : El Torito , ISOLINUX isohybrid MBR pointing to boot image
Boot catalog : '/isolinux/boot.cat'
Boot image   : '/isolinux/isolinux.bin' , boot_info_table=on
Boot image   : '/boot/grub/efi.img' , platform_id=0xEF 
TOC layout   : Idx ,  sbsector ,       Size , Volume Id
ISO session  :   1 ,         0 ,    493568s , Ubuntu 14.04 LTS amd64
Media summary: 1 session, 493568 data blocks,  964m data, 11.2g free
Media nwa    : 493568s

如果你修改了此启动结构中的任何部分,则Ubuntu 系统镜像会有所不同。您可以获得SHA256SUMSSHA256SUMS.gpg,以及Ubuntu 系统镜像发布. 您可以使用以下方法验证 USB 驱动器上的 USB 闪存映像写入图像,然后读回并将其与原始图像进行比较:

# checksum downloaded image (check this matches the published hash)
$ sha256sum ubuntu-14.04-desktop-amd64.iso
cab6b0458601520242eb0337ccc9797bf20ad08bf5b23926f354198928191da5  ubuntu-14.04-desktop-amd64.iso

# write image to USB flash
$ dd if=ubuntu-14.04-desktop-amd64.iso of=/dev/sdb

# read image from USB flash and checksum it
$ /bin/ls -l ubuntu-14.04-desktop-amd64.iso
-rw-r--r-- 1 user user 1010827264 Apr 17 10:51 ubuntu-14.04-desktop-amd64.iso
$ dd if=/dev/sdb bs=512 count=1974272 | sha256sum
1974272+0 records in
1974272+0 records out
cab6b0458601520242eb0337ccc9797bf20ad08bf5b23926f354198928191da5  -
1010827264 bytes (1.0 GB) copied, 34.1066 s, 29.6 MB/s

制作精确的二进制副本,因此您可以轻松地将原始图像与驱动器上的图像进行比较。您需要指定从 USB 驱动器读回的精确长度,否则校验和将有所不同。

如果您使用不同的工具(不是) 写入 USB 驱动器,则它可能会写入不同的二进制数据,您需要通过使用工具写入,然后使用读取驱动器来生成自己的校验和dd。如果您不信任单台 PC,而是信任多台 PC,那么您必须在多台 PC 上重新创建映像,并确保映像在所有 PC 上生成相同的校验和。


如果您认为用于下载映像和写入 USB 的计算机已被入侵,那么您永远不能相信它所做的任何事情。它可以报告校验和正确,并且映像未被篡改 - 但您永远不能相信它,因为它已经被入侵。研究人员已经成功开发出可以感染 EFI 固件的系统,因此即使硬盘驱动器被完全格式化擦除,它也能幸免,同时报告安全启动已启用且运行正常,即使系统已被完全破坏。一旦系统被入侵,您永远无法完全确保它已被清理。因此,美国国家安全局 (NSA) 制定了一个程序来重定向、拦截和入侵目标系统,而这些系统仍在快递员手中,在交付给客户之前。

相关内容