安全与文件保险箱

使得OpenCore与众不同的正是其内在的安全性,所以下面我们来一起体验和设置OpenCore的这些安全性的特点:

FileVault

FileVault是macOS的内置驱动器加密,OpenCore的支持使得FileVault相对于Clover有了巨大的改进。

开始前,你需要先放入如下 .efi驱动:

  • FwRuntimeServices.efi

  • 对于不支持UEFI的主板,还需要加入 AppleUsbKbDxe.efi

不要在OpenCore中使用 VirtualSMC.efi,因为已经集成到了OC中(OC 0.5.5开始)。

在你的 config.plist中进行如下设置:

  • Misc -> Boot

    • PollAppleHotKeys 设置成 YES

  • Misc -> Security

    • AuthRestart 设置成YES(可选,开启后FileVault2的Authenticated restart可以不需要密码)

  • NVRAM -> Add -> 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14

    • UIScale 设置成 02 ,为了防止在高分屏中,OC的UI太小

  • UEFI -> Input

    • KeySupport设置成 YES(在需要使用OC内置的输入使用,如果用了UsbKbdxe则不需要开启)

  • UEFI -> Protocols

    • FirmwareVolume 设置成 YES

    • 对于Haswell以及更老的CPU芯片架构(包括X99)需要开启HashServices ,对于出现SHA-1错误的一些系统也需要开启此项

    • AppleSmcIo 设置为YES(用于替换 VirtualSMC.efi)

  • UEFI -> Quirks

    • ProvideConsoleGOP 设置为 YES

    • RequestBootVarRouting 设置为 YES

    • 如果遇到了 Still waiting for root device ,则需要将ExitBootServicesDelay 设置为 5

上面的工作都做完后,就可以在设置中开启FileVault了。

Vault

什么是vaulting(保险箱)?

保险箱是关于两样东西的,vault.plist 和vault.sig:

  • vault.plist: EFI的一个快照

  • vault.sig: 用于验证vault.plist

也可以看成是OpenCore的安全启动,在没有你的授权的情况下,任何人都无法改动

Vaulting的详细内容是vault.plist的一个256字节的RAS-2048密钥(或者说Hash),改内容会放进你的opencore.efi。这个密钥可以在编译之前写入 OpenCoreVault.c ,但是你如果是用的已经编译好的opencore.efi,则可以使用sign.command来完成。

注意 nvram.plist 不会被装进保险箱,也就是说其他人任然可以修改你的NVRAM变量。

设置你的 config.plist:

  • 开启Misc -> Security -> RequireSignature

  • 开启Misc -> Security -> RequireVault

设置vault:

下载OpenCorePkg 然后打开CreateVault文件夹,然后你会发现:

  • create_vault.sh

  • RsaTool

  • sign.command

最后一个就是我们关心的 sign.command

当我们运行这个命令的时候,它会在Utilities的同级目录寻找EFI文件夹,所以我们可以把EFI文件夹放到OpenCorePkg 文件夹中或者把Utilities 放到EFI文件夹中。

现在就可以准备执行sign.command:

设置vault后如何关闭

如果使用过程中遇到了问题或者只是想要关掉vault,主要需要做如下设置:

  • 获得一个新的OpenCore.efi

  • 关闭Misc -> Security -> RequireSignature

  • 关闭Misc -> Security -> RequireVault

ScanPolicy

这个设置是用于阻止扫描未信任的来源或者从其中启动,设置为0可以扫描所有可启动的设备,但是使用更精确的值会更好。

为了计算ScanPolicy的值,你需要做一点简单的16进制加法,计算完成后将其转换为10进制然后填进去即可,使用macOS的自带的计算器便可以计算,而且很方便。

  • 0x00000001 (bit 0) — OC_SCAN_FILE_SYSTEM_LOCK

    • 只扫描已知的文件系统,这一项不影响dmg文件的挂载。已知的文件系统通OC—SCAN_ALLOW_FS来配置

  • 0x00000002 (bit 1) — OC_SCAN_DEVICE_LOCK

    • 只扫描已知的设备,已知的设置通过OC_SCAN_ALLOW_DEVICE配置

  • 0x00000100 (bit 8) — OC_SCAN_ALLOW_FS_APFS

    • 允许扫描 APFS 文件系统

  • 0x00000200 (bit 9) — OC_SCAN_ALLOW_FS_HFS

    • 允许扫描 HFS 文件系统

  • 0x00000400 (bit 10) — OC_SCAN_ALLOW_FS_ESP

    • 允许扫描 EFI系统分区

  • 0x00010000 (bit 16) — OC_SCAN_ALLOW_DEVICE_SATA

    • 允许扫描 SATA 设备

  • 0x00020000 (bit 17) — OC_SCAN_ALLOW_DEVICE_SASEX

    • 允许扫描 SAS 和Mac NVMe 设备

  • 0x00040000 (bit 18) — OC_SCAN_ALLOW_DEVICE_SCSI

    • 允许扫描 SCSI 设备

  • 0x00080000 (bit 19) — OC_SCAN_ALLOW_DEVICE_NVME

    • 允许扫描 NVMe 设备

  • 0x00100000 (bit 20) — OC_SCAN_ALLOW_DEVICE_ATAPI

    • 允许扫描 CD/DVD 设备

  • 0x00200000 (bit 21) — OC_SCAN_ALLOW_DEVICE_USB

    • 允许扫描 USB 设备

  • 0x00400000 (bit 22) - OC_SCAN_ALLOW_DEVICE_FIREWIRE

    • 允许扫描 FireWire 设备

  • 0x00800000 (bit 23) — OC_SCAN_ALLOW_DEVICE_SDCARD

    • 允许扫描 读卡器设备

默认的情况下,ScanPolicy的值是0xF0103(983,299) ,也就是下面几个值的和:

  • OC_SCAN_FILE_SYSTEM_LOCK

  • OC_SCAN_DEVICE_LOCK

  • OC_SCAN_ALLOW_FS_APFS

  • OC_SCAN_ALLOW_DEVICE_SATA

  • OC_SCAN_ALLOW_DEVICE_SASEX

  • OC_SCAN_ALLOW_DEVICE_SCSI

  • OC_SCAN_ALLOW_DEVICE_NVME

这里给出一个简单的例子,比如你想要添加OC_SCAN_ALLOW_DEVICE_USB,也就是允许扫描USB设备:

0x00200000 + 0xF0103 = 0x2F0103

然后转换为10进制就是3,080,451

Last updated