我有一台联想 ThinkPad E560,我正在尝试创建一个具有预启动身份验证的完全磁盘加密的多启动系统。
我当前的设置包括 240G SSD 上的 Windows 10 和 Ubuntu 16.04,MBR
分区如下:
NAME/PATH SIZE TYPE MOUNT POINT COMMENT
/dev/sda1 512M ext4 /boot (Ubuntu 16.04)
/dev/sda2 20480M LVM
swap 512M SWAP
ubuntu 19968M ext4 / (Ubuntu 16.04)
/dev/sda3 102400M NTFS C: (Windows 10)
/dev/sda4 REST NTFS D: | /mnt/data (shared os data)
当我运行 Windows 时,我使用虚拟盒将我的 Ubuntu 分区作为 VM 启动。
现在我最近收到了一个 500G SSD。出于安全原因,我以后必须加密该笔记本电脑上的所有内容。我还发现现在必须启用 UEFI 才能使某些功能正常工作。所以我目前正在寻找一种好方法来结合所有这些,并考虑我必须采取的步骤的顺序。
我正在考虑以下GPT
布局:
NAME/PATH SIZE TYPE MOUNT POINT COMMENT
/dev/sda1 250M EFI
/dev/sda2 1024M ext4 /boot (Ubuntu 18.04)
/dev/sda3 102400M NTFS C: (Windows 10)
/dev/sda4 124928M LVM
swap 2048M SWAP
ubuntu 30720M ext4 / (Ubuntu 18.04)
kali 30720M ext4 / (Kali 2018.2)
home 61440M ext4 /home (shared linux home)
/dev/sda5 REST NTFS D: | /mnt/data (shared os data)
现在,我正在努力寻找一种使用预启动身份验证完全加密磁盘的方法,最好是利用内置的 TPM 模块。我阅读了很多关于安装后使用 Veracrypt 加密 Windows 的信息,并使用了 Linux 系统的内置加密模块,但我希望有更好的方法,一次加密整个 SSD - 比如首先输入解密密码,然后选择通过哪个操作系统启动GRUB
。
遗憾的是我还没有找到任何有用的东西。提前感谢您的建议!
答案1
大卫。
这是你需要做的,但在做任何其他事情之前,请先物理断开设备上的任何其他 HDD/SSD,这样你就只有空白的、未分区的、未格式化的 SSD 来进行实验,而不会冒丢失其他驱动器上的任何数据的风险:
Ia)检查您的 SSD 是否为 SED(自加密驱动器):
- 按照我在超级用户处对此帖子的回答:如何验证自加密驱动器 (SED) 是否真正加密?
Ib)如果您的 SSD 是 SED:
在驱动器上启用加密,但由于您的设备是 LENOVO THINKPAD,因此最好按照上述同一篇文章的相同答案末尾的说明通过“hdparm”启用加密,以防止您的 Thinkpad 损坏您的 SSD。
对您的 SSD 进行分区以安装 Windows 10:从最新的 gparted Live-CD 或 Linux Mint Live-CD 或 Ubuntu 18.04 Live-CD 启动您的设备(启动时系统会提示您输入 SED 密码)并将您的 SED 驱动器分区为 GPT,创建 /dev/sda1(512MiB,EFI)和 /dev/sda2(100GiB,NTFS)
重新启动到 BIOS(现在将要求您输入 SSD 密码以解锁您的 SED)并且:
A)启用TPM模块;
B)仅启用 UEFI(无传统 BIOS);
C) 启用安全启动并安装 PKgub、KEK 和 dbx 密钥
从 Windows 10 安装磁盘启动并选择将其安装在 100 GiB 分区上
如果到目前为止一切正常并且您的 TPM 正常工作,则在启动 Windows 10 操作系统时不会提示您输入 Windows 登录密码(因为您的启动过程将由 TPM 模块进行身份验证,因此不需要密码 - 在微软的愿景中! - 要求允许您的设备启动)
转到控制面板> BitLocker>“打开 BitLocker”,注意将 BitLocker 密钥的副本保存到 USB 驱动器:完成后,重新启动;您的 Windows 分区现在已被 BitLocker 软件加密,现在您将在 Windows 登录时输入 Windows/BitLocker 密码。
现在,如果一切正常,您将拥有一个 SED 驱动器,可动态加密该驱动器上所有分区中的所有数据 + 一个 BitLocker 加密的 Windows 10 操作系统,其中 TPM 监控您的 Windows 10 启动顺序,以防止“邪恶女仆”攻击您的 Windows 10 操作系统,现在是时候安装您的 Linux 操作系统了(顺便说一句,我个人认为,在安全问题方面,Linux Mint 18.3 Xfce 和 Linux Mint 19 Xfce 远远优于 Ubuntu 18.04,所以也许您应该考虑它有一个严密的装备)。
Ic)如果您的 SSD 不是 SED:
- 忽略“在驱动器上启用加密”并按照上述相同的步骤进行操作。唯一的区别是,如果您的笔记本电脑被盗,尤其是当您处于“挂起”或“休眠”模式时,您将无法防止暴力攻击(“字典”攻击)破解该 SSD 上的 BitLocker 密码……(顺便说一句,如果您想让破解 BitLocker 密码更耗时,请在 Windows 10 操作系统上禁用休眠并删除可能存在的任何休眠文件,因为 BitLocker 密码实际上存储在该休眠文件中,因此破解 BitLocker 密码只需 5 分钟)。
II.a) 如何安装 UBUNTU/LINUX MINT 操作系统没有安全启动
重新启动,进入 BIOS 并禁用安全启动。
现在,您必须决定要安装哪种 Linux 操作系统。以下是您的主要选项:
A)简单 - 标准加密的 Ubuntu/Linux 安装,其中 /boot 和 /root 分区未加密(由于整个 /boot 和 /root 分区未加密,因此很容易受到“邪恶女仆”的攻击):从您的 Ubuntu/Mint 安装磁盘/USB 启动,选择“与 Windows 10 一起安装 Ubuntu/Mint”,然后选择加密您的 /home 分区。
B) 中级 - 全盘加密(“FDE”),包括加密的 /boot 分区,没有加密的 LVM+LUKS 容器(不太容易受到“邪恶女仆”攻击,因为只有“bootx64.efi”文件在未加密的 /boot/EFI 文件夹中的 SSD 上未加密):按照用户 linux22 在其教程中的说明进行操作,网址为https://community.linuxmint.com/tutorial/view/2061
C) EXPERT - 全盘加密(“FDE”),包括一个加密的 /boot 分区和一个加密的 LVM+LUKS 容器(允许您随后在加密的 LVM+LUKS 容器内安装 Kali OS,但您必须记住将 /boot 分区的 Kali 等效项安装到未加密的 /boot 分区):用户 linux22 以前在上面的同一地址有一个教程,但现在已被没有 LVM 容器的教程取代。但是,您仍然可以(暂时)按照 Callom Cameron 创建的自动脚本来安装用户 linux22 旧教程,网址为https://github.com/CallumCameron/mint-encrypted-install或者如果该脚本已更新至新教程,那么您可以在此处向超级用户发送私信,因为我已将原始 linux22 FDE 教程与 LVM+LUKS 网页保存为文件,我会通过电子邮件发送给您。
请记住不要将 SSD 上的所有可用空间分配给 Ubuntu/Linux LVM,以便您以后可以在 LVM+LUKS 容器之外进一步对驱动器进行分区以创建 Linux/Windows 数据分区。
- D) CRYPTOMASTER - 包括上述使用 LVM+LUKS 的“专家”安装,您可以在其中修改上述命令,将 /boot 的安装指向 USB 驱动器(例如 /dev/sdc),从而将加密的 LVM+LUKS 容器扩展到此加密的 USB 驱动器,您必须将其插入设备才能启动系统(但保留 GRUB2 引导加载程序安装在 SSD 上!)。要使用此选项,在启动 Ubuntu/Mint 安装之前,如上所述,只需使用 gparted 将您的 USB 驱动器分区为 GPT(不创建任何分区),然后使用您的 Ubuntu/Mint LiveDVD 从终端使用命令“blkid”找到分配给此 USB 驱动器的 /dev(例如 USB 是 /dev/sdc),然后在安装操作系统期间,将命令上的所有引用从 /boot 分区的 /dev/sda 更改为新的 USB /dev。
II.b) 如何安装 UBUNTU/LINUX MINT 操作系统和安全启动
- 在使用上面的“CryptoMaster”选项安装 Ubuntu/Mint 操作系统之前,请先按照用户 linux22 的教程进行操作,网址为https://community.linuxmint.com/tutorial/view/2360但不要使用默认方法,而是使用“附录 A - 如何同时设置自定义密钥和 Microsoft 密钥”中包含的方法 1(“使用 PC UEFI 平台的原始 Microsoft UEFI 安全启动证书”)说明
II.c)使用密码保护 GRUB2 引导加载程序
为了进一步保护您的设备免受大多数“代码注入”和某些“邪恶女仆”攻击,您必须使用密码保护您的 grub2 引导加载程序。
按照本教程的说明进行操作https://www.thegeekstuff.com/2011/09/grub-password-command/
现在,测试您(几乎)完成的安装,并从 GRUB2 菜单启动,首先从“Windows 启动管理器”启动您的 Windows 10 操作系统。如果您的 Windows 10 无法启动,并且 GRUB2 向您抛出一条错误消息“错误:需要设备名称”,您必须重新启动到 Ubuntu/Mint 操作系统并以 root 身份编辑目录“/boot/grub”(或“/boot/grub/efi/EFI/boot”)中的“grub.cfg”文件,然后搜索菜单项“Windows 启动管理器”,并用 # 注释掉行“cryptomount -u”
sudo xed /boot/grub/grub.cfg
或者
sudo xed /boot/grub/efi/EFI/boot/grub.cfg
明智地使用空白、未分区的 HDD 或 SSD 作为设备上唯一实际存在的驱动器来测试此解决方案,以免危及其他驱动器中的数据。我仅使用来自 linux22 的旧 (LVM+LUKS) 教程在 DELL 移动工作站(型号 M6400、M6600 和 M6800)上测试了此硬件 + 软件加密方案,这些工作站配备 i7 处理器、16 GB 或更多 RAM 和 Samsung Evo 960/970 1 TiB SED SSD。