GEOM——GEOM Based Disk Encryption,基于GEOM的磁盘加密,是一种与GELI完全不同的数据保护方法,专为不同的威胁模型而设计。没有GELI灵活,但如果你需要它的保护,它是无价的。
第七章:GBDE用户保护GBDE 基本需要GBDE 锁扇区(Lock Sector)密钥文件锁扇区对比锁文件密码短语GBDE基本用法初始化 GBDE 提供者激活GBDE设备创建文件系统分离GBDE设备GBDE 密钥管理添加新密钥修改密码短语、密钥文件和锁文件(lock file)密钥摧毁密钥失效密钥黑化验证失效攻击GBDE将GBDE隐藏到其他分区使用秘密GBDE设备破坏秘密GBDE 设备计算机和真实世界
protection——保护
任何加密方案中最薄弱的环节都是用户。
磁盘加密只保护冷磁盘。使磁盘变冷的最可靠方法是切断电源。
销毁加密的文件系统很容易,证明它被摧毁更难。
保护?文件系统如何保护您?有关许多有趣的细节,请查看Poul-Henning Kamp的BSDCan 2003论文《GBDE – GEOM Based Disk Encryption》(GBDE——基于GEOM的磁盘加密),该论文可在您附近的搜索引擎上找到,但以下是基础知识。
任何加密方案中最薄弱的环节都是用户。大多数安全方案要求用户输入一个秘密密码或短语(secret password or passphrase)。暂且不谈人类传统上会创建糟糕的密码这一事实,并假设所讨论的特定人类有一个极其困难的密码短语,他们可以始终如一地正确输入。还假设加密方案非常出色,并且能够抵抗暴力攻击。
然后添加一个有动力和聪明的攻击者,他愿意违反礼仪的界限。如果它被从恐怖电影中剪掉,这样这部电影就可以保持NC-17的评级(NC-17级是美国电影分级制度中的一级,意指17岁及以下观众禁止观看,基本属于成人影片),这个攻击者愿意这样做。
攻击者将评估情况,并意识到他实际上无法猜测密码或破解加密方案。最薄弱的环节是知道密码的人。勒索、敲诈或对亲人的合理威胁最终总是会让人合作。即使是训练有素的军事人员也是如此——让士兵的家人住在“基地”(on base)的好处之一是,他们可以免受这种威胁。
针对这种方案的通常保护措施是让多个人参与访问数据。同时绑架两个人比绑架一个人要困难得多,辩护组织更有可能注意到失踪事件。克服所有这些障碍需要一个直接来自大预算好莱坞电影的主脑攻击者。
很多时候,防御者(defender)有几分钟的时间来意识到进攻迫在眉睫。
“嘿,爱丽丝和鲍勃不见了!” “来看看大使馆外的这群丑陋的人。” “那是7.62毫米的枪声,还是5.56毫米的枪声?”
如果数据真的很重要,而且该组织宁愿看到它被销毁也不愿被披露,现场工作人员有几分钟的时间来销毁加密密钥并关闭系统。记住,磁盘加密只保护冷磁盘。使磁盘变冷的最可靠方法是切断电源。
销毁加密的文件系统很容易。证明它被摧毁更难。
GBDE证明了人类已经合作,但数据已经被销毁。它给出了特定的反馈,即输入的密码是正确的,但解密数据所需的锁或密钥不见了。
数据销毁证明能保证用户的安全吗?
不。
绑架某人、冲击大使馆、用枪指着无辜者的头部以获得他们想要的东西的人可能不会受到机器输出的限制。但是【无法解密:磁盘上的密钥已被销毁】比【文件系统未解密,请重试】给有系统访问权限的人提供了更好的生存机会
欢迎你拒绝这个机会,但我会抓住的。 【在接受任何工作邀请之前,我问自己“这份工作需要GBDE吗?”如果答案是“是”,我的答案是“否”。】
GBDE基于密码、元数据、主密钥和锁扇区构建其保护机制。该系统的核心是用于加密设备的主密钥(master key)。泄露主密钥意味着泄露加密设备。访问和解密GBDE设备需要找到(find)主密钥和解码(decode)主密钥的能力。GBDE允许您根据您的威胁模型安排这两个问题。
主密钥是用于解码地理信息的加密密钥。GBDE在加密设备周围随机分布的四个扇区中存储了该密钥的四个副本,编号为1到4。每个副本都使用单独的密钥和密码进行加密。
在命令行中,使用 -n 标志指定密钥编号。当您未指定密钥编号时,GBDE会假设您正在处理当前正在使用的密钥,即密钥1。
如果每个主密钥都在随机位置,GBDE将主密钥的位置存储在锁扇区(加密设备的第一个扇区)中的一块元数据中。
元数据使用密码和/或密钥进行加密。
锁扇区包含主密钥的所有四个副本的位置。
使用一个密钥解密锁扇区,可以使用该密钥的主密钥副本访问加密设备,以及更改或销毁密钥的其他三个副本。
使用四个主密钥及其元数据的副本,可以让更多人能访问数据。
如果每个主密钥都在随机位置,GBDE如何找到它?GBDE将主密钥的位置存储在锁扇区(lock sector ,加密设备的第一个扇区)中的一块元数据中。元数据使用密码短语和/或密钥进行加密。锁扇区包含主钥匙的所有四个副本的位置。使用一个密钥解密锁扇区,可以使用该密钥的主密钥副本访问加密设备,以及更改或销毁密钥的其他三个副本。
为什么有四个主密钥及其元数据的副本?以便多人可以访问数据。如果你使用GBDE来保护大使馆的文件,你的国务卿可能有一把钥匙,大使馆的首席大使有另一把,大使馆IT主管有第三把。解密文件系统需要其中一个人的干预。
GBDE还可以使用密钥文件(key file)来加密锁扇区和每个主密钥。密钥文件可以是任何东西——一堆随机数据、宠物老鼠的特定照片,或者FreeBSD 2.2.10-RELEASE ISO映像的SHA256哈希值。每个主密钥都有自己的密码和密钥文件。密钥文件不是强制性的,但强烈建议。
在命令行中,-k 指定用于解密GBDE设备的密钥文件。–K 选项允许您将新的密钥文件分配给主密钥的副本。
一些组织需要物理令牌来解密设备。您可以通过将密钥文件放在可移动介质上来强制执行此操作。如果这样做,请在可移动介质或另一台计算机上创建密钥文件。在目标计算机上创建随机密钥,将其复制到可移动介质,然后删除它听起来可能不错,但已删除的文件仍保留在磁盘上。许多人靠恢复已删除的文件谋生。
您可以使用单独的锁文件(lock file)将锁扇区与GBDE设备分开。锁文件可以存储在可移动介质上,因此需要第二个物理令牌来解密设备。
单独的锁文件并不像它最初看起来那么有用。虽然密钥文件可以是任何东西,但锁文件标识了隐藏主密钥的扇区。所有四个主密钥都在加密设备的一个扇区上。候选人数量有限。如果坏人有一个密钥和密码,他们可以在每个扇区尝试它们,看看它们是否有效。这个测试可能需要几个小时才能在一个大的geom上进行,但争取时间可能会帮助你的人。
当您将GBDE设备隐藏在另一个分区中时,锁文件非常有用。坏人可以扫描硬盘寻找GBDE锁扇区,但如果锁扇区不存在,那么GBDE设备看起来更随机。将随机性放在另一个分区中,例如Windows交换分区,你就可以合理地否认GBDE的存在。
使用 -l 指定用于解密设备的锁定文件。使用 –L 创建新的锁文件。
我所说的关于锁扇区的一切都适用于锁文件。
GBDE使用密码短语对锁扇区和主密钥进行加密。我在第5章讨论了密码短语。虽然密码短语不是强制性的,但使用密码短语几乎总是最佳实践。每个需要密码短语的GBDE命令都会提示您输入一个密码短语。
GBDE还接受在命令行上输入密码短语。这是一种糟糕的实践,但FreeBSD并没有强迫你遵循最佳实践。在命令行上输入密码短语可以让其他系统用户在命令运行时查看密码。在引导脚本中编码密码短语会导致密码被盗。
-p 指定。-P 。在不涉及携带重型武器的严肃人员、训练有素的护卫犬、捕手和破伤风强化的讨厌尖刺的环境中,将密码短语放在命令行上仍然是一种糟糕的做法。
如果您正在有条不紊地测试加密设备中的每个扇区,以查看系统管理员是否为您提供了有效的密钥文件和密码短语,那么将密码短语放在shell脚本中非常有用。(有些人会为了留个全尸而招供!)
使用GBDE的基本任务包括创建加密GEOM、挂载和停用它们。
在创建GBDE设备之前,应使用随机数覆盖它,参阅第五章。以下示例,我们使用密码短语和密钥文件在磁盘分区 /dev/da0p1 上创建加密的geom。在现实世界中,指向可移动介质的密钥文件的路径要长得多。
xxxxxxxxxx# gbde init da0p1 -K rat.jpginit 命令告诉 gbde 初始化设备。我们获得了一个用于GBDE的分区。大写字母 -K 用来指定一个新的密钥文件。出现提示时输入新密码,gbde 将创建加密设备。
使用 gbde attach 命令、密钥文件和密码短语激活新设备:
xxxxxxxxxx# gbde attach da0p1 -k rat.jpg出现提示时输入密码短语,设备 /dev/da0p1.bde 将会出现。这是底层加密设备的未加密接口。
在GBDE设备上创建一个文件系统,就像在任何其他设备上创建文件系统一样。
xxxxxxxxxx# newfs -j /dev/da0p1.bde# mount /dev/da0p1.bde /mnt/加密geom上的文件系统可能会受到损坏,任何其他类型geom的文件系统也是如此。使用软更新日志或其他文件系统弹性方法来保护您的数据。将加密硬盘一路快递到你在一个专制的第一世界国家的大使馆,却在限电中丢失了所有数据,这将是一种耻辱。
当使用完加密文件系统,需要将其卸载并停用(deactivate)GBDE设备:
xxxxxxxxxx# umount /mnt/# gbde detach da0p1如果在不卸载文件系统的情况下分离设备,设备将保持连接状态。如果您有疑问,请检查 /dev 中的 .bde 设备。
在有威胁的情况下,请记住,即使您删除了包含密钥的物理令牌,密钥也可能仍然存在于内存中。坏人是否带来了可以从空闲系统RAM中读取密钥的人?可能不会,但他们已经惹了很多麻烦,拿着枪、面罩和一切。销毁这些痕迹的唯一可靠方法是完全关闭机器。
现在您已经创建了GBDE设备,您可能需要添加新密钥、更改密钥或更改现有密钥上的密码短语。
每个GBDE设备最多可以有四个按键。您可以在初始化过程中分配一个,并可以使用该值手动添加其他三个。
在添加或更改密钥之前,您必须先分离设备。您必须拥有一个现有的工作密钥,才能向GBDE geom添加新密钥。
–n 指定密钥编号(1-4)-k 表示当前密钥文-k 表示新密钥文件。xxxxxxxxxx# gbde setkey da0p1 1 -n 2 2 -K mouse.jpg 3 -k rat.jpgEnter passphrase:Opened with key 0Enter new passphrase:Reenter new passphrase:在这里,我指定我们正在研究 1 密钥2。密钥2将有自己的 2 密钥文件,大概在物理令牌上。我为现有的有效密钥指定了 3 密钥文件。
GBDE请求两个密码:首先是现有有效密钥的密码短语,然后是新密钥的密码短语。据推测,密钥1的所有者输入了他的密码短语,然后让第二个密钥的所有者输入他的密码短语。
第二个密钥现在可以激活这个geom,就像第一个密钥一样。用户不需要指定密钥号。
xxxxxxxxxx# gbde attach da0p1 -k mouse.jpgGBDE找出此密钥和密码短语使用的元数据的哪个副本,找到后解密主密钥,并连接设备。
GBDE使用密码短语和密钥文件来加密锁扇区(lock sector)。必须指定当前的密钥文件和密码短语才能分配新的密钥文件。
xxxxxxxxxx# gbde setkey da0p1 -n 0 -k rat.jpg –K mouse.jpgEnter passphrase:Opened with key 0Enter new passphrase:Reenter new passphrase:此处命令中使用 -k 选项给出了旧密钥文件(rat.jpg),使用 -K 选项给出了新密钥文件(mouse.jpg)。当提示时,输入了旧的密码短语。
如果只想修改密钥文件或密码短语,仍然需要同时指定他们。通过 -K 指定相同的文件用以回收相同的密钥。
要在使用锁文件时更改密码短语和密钥,需要创建一个新的锁文件。使用 -L 指定新的锁文件:
xxxxxxxxxx# gbde setkey da0p1 -n 0 -l lock1 -k rat.jpg -L lock2旧的锁文件没有用了,但可能会被攻击者利用。建议彻底摧毁它,用锤子。
使用 gbde nuke 命令可以将密钥设置为 invalidation (无效)。
使用 gbde destroy 命令可以将密钥 blackening (黑化)。
黑化会用加密的无效元数据覆盖所有主密钥。
无效和黑化会留下不同的痕迹,在取证分析过程中,充满零的块在充满随机垃圾的分区中会显得更突出。无效密钥会暴露【曾经有密钥】的事实。
黑化不会留下任何零块痕迹。
暴徒破坏了大使馆的大门。服务器包含各种各样的东西,这些东西会让头目更加不高兴,他们会对你的人表达不满。使万能钥匙失效或变黑并切断电源可以帮助保护你的一些人。
gbde nuke 命令使密钥无效。gbde destroy 命令将设备变黑。为什么有两个单独的命令?无效和变黑会留下不同的法医痕迹(forensic traces)。在取证分析过程中,充满零的块在充满随机垃圾的分区中脱颖而出。如果你的安全取决于否认加密数据的存在,那么无效密钥会大喊【这里曾经有加密数据!】如果你在大使馆,每个人都知道你已经销毁了磁盘,那么无效是可以的。你什么都没隐瞒。
变黑不会留下任何零块痕迹。这堆不可恢复的加密数据看起来像是各种各样的剩菜,这是理所当然的。
invalidating——失效
如果IT主管离职,必须撤销他对加密设备的问权限,是他的密钥无效,可以使用以下操作:
x# gbde nuke da0p1 -n 4 -k rat.jpgOpened with key 1Nuked key 4以上命令是密钥4的密钥文件和与其关联的密码短语失效。
如果不指定密钥编号(-n 4),则会使自己的密钥(即当前密钥)失效。
现在可以创建一个新的4号密钥,或者只用三个密钥。
要使所有的主密钥失效,可以使用 -1 :
xxxxxxxxxx# gbde nuke da0p1 -n -1 -k rat.jpgOpened with key 1Nuked key 1Nuked key 2Nuked key 3Nuked key 4此操作会使设备无法使用。如果这是你的目标,应该使用 gbde destroy 命令黑化密钥。
使主密钥无效会用零覆盖它。当覆盖密钥的存在不会威胁到您时,使主密钥无效。如果大使馆的IT主管已被罢免,你必须撤销他对加密设备的访问权限,使他的密钥无效。使用 gbde nuke 命令使特定密钥无效。
您已使密钥4的密钥文件及其关联的密码无效。如果不指定密钥编号,则会使自己的密钥无效。如果你想射中自己的头部,而不是另一个用户,那很好。【我理解你愤怒时毁掉自己钥匙的冲动,但这会让你改变主意变得更加尴尬。】你现在可以创建一个新的密钥4,或者依靠其他三个密钥中的一个来解密这个设备。
要使所有主密钥无效,请使密钥 -1 无效。
这使得设备无法使用。如果这是你的目标,你可能应该用 gbde destroy 来黑化密钥。
使GBDE设备黑化会使主密钥扇区与周围的扇区无法区分。
gbde destroy命令将主密钥扇区更改为无效数据,对其进行加密,然后其写回相同的扇区。
可以将单个密钥黑化,也可以使用-n -1选项黑化所有密钥:
xxxxxxxxxx# gbde destroy –n -1 da0p1 -k rat.jpgOpened with key 1注意:黑化是不可逆的,按下回车之前要慎之又慎。
使GBDE设备黑化会使主密钥扇区与周围的扇区无法区分。gbde destroy 命令将主密钥扇区更改为无效数据,对其进行加密,然后将其写回相同的扇区。任何检查磁盘的人都会发现一个很好的、没有区别的胡言乱语。虽然您可以将单个密钥黑化,但如果您处于这种情况,请使用 -n -1 覆盖所有按键。
改变主意了?太糟糕了。在按下 ENTER 键之前,请务必确认你确实想黑化设备。
xxxxxxxxxx# gbde attach da0p1 -k mouse.jpggbde: Attach to da0p1 failed: Lock was nuked如果在附加设备时看到如上提示,则表示密码短语已经不起作用了,
对于黑化的设备,则会提示类似信息:
xxxxxxxxxx# gbde attach da0p1 -k rat.jpggbde: Attach to da0p1 failed: Lock was destroyed所以坏人拿枪指着你的头,告诉你解密文件系统。
坏人可能会对你做各种坏事,但信息很明确:你的密码不起作用。
一个黑化的设备也提供了类似的信息。
坏人仍然抓着你,但他们可以看到你试图合作。
最大的弱点是人。人类会选择糟糕的密码,人类可能会被勒索、威胁或背叛。
即使密钥位置元数据被破坏了,使用密码短语依然有可能破解加密系统。
主密钥销毁不完整会带来另外的风险。必须销毁主密钥及全部四个副本。
销毁所有东西,并拔掉电源。
Poul-Henning Kamp写了GBDE来保护数据和人们免受严重恶劣的混蛋的攻击。如果你需要这种防御,你必须在部署GBDE之前了解如何攻击它,这样你就不会犯任何明显的错误。
最大的弱点仍然是人。人类选择糟糕的密码。人类仍然可以被勒索、威胁和背叛。人类也是这个系统中最有价值的部分。保护你的人民!坏人知道系统管理员既是有价值的,也是叛逆的认(contrarian)。那些穿着深色西装的家伙们提出的那些愚蠢烦人的安全要求?服从他们。他们试图让你和你所爱的人活着,把你所有的粗制滥造的东西都连接起来,发挥作用。不管怎样,现在找新工作可能已经太晚了。
如果坏人从你的人那里得到了一个密码,但密钥位置元数据被破坏了,他们可以测试加密设备上的每个块,看看密码是否解锁了它。一个shell脚本和几个小时就足够了。
主密钥销毁不完整是另一个问题。在坏人采取行动之后,但在他们占领数据中心之前,你有机会销毁主密钥。您必须销毁主密钥的所有四个副本,而不仅仅是您的密钥可以解锁的副本。坏人可能会把大使的女儿当人质,只摧毁你的钥匙并不能保护你。不要只是让你的钥匙失效——销毁所有东西并拔下电源线。
GBDE允许在分区内隐藏geom,即使是非FreeBSD分区。
通常的建议是将其放在交换分区中,无论是Windows或者Linux或者FreeBSD的交换分区。
由于GBDE锁扇区在取证分析中会很突出,所以需要将该锁扇区放在原始磁盘意外的某个地方。
初始化GBDE设备时,使用 -L 选项创建一个锁文件:
让我们离开那些安全的地方,人们只是想为了你的密码短语而折磨你。想象一下,仅仅拥有(possessing)一个加密的文件系统就可能导致死亡,无论是你的还是其他人的。您需要将文件系统隐藏在不会被察觉的地方,即使是了解文件系统取证的知识渊博的攻击者。
GBDE允许您在分区内隐藏geom,即使是非FreeBSD分区。通常的建议是将其放在Windows交换分区中,但如果你想看起来可疑,可以尝试Linux或FreeBSD交换分区。
【根据坏人对你的了解程度,Windows笔记本电脑可能看起来比FreeBSD笔记本电脑可疑得多。】
由于GBDE锁扇区在取证分析中会很突出,您需要将该锁扇区放在原始磁盘以外的某个地方。这就是锁文件发挥作用的地方。当您初始化GBDE设备时,告诉它用 -L 创建一个锁文件。
xxxxxxxxxx# gbde init da0p1 -i -L da0p1.lock -K rat.jpg这将在默认文本编辑器中显示一个模板。填写它以准确描述您想将GBDE设备放置在哪里。您必须定义扇区大小、包含GBDE设备的扇区、密钥数量,以及是否希望GBDE为您随机化地理位置。
xxxxxxxxxxsector_size = 512使用512的扇区总是有效的,但可能会带来不太理想的性能。当你指望自己有能力隐藏数据来挽救生命时,不要为性能进行优化。坚持已知的安全扇区大小512!
扇区大小很容易。计算要使用的扇区需要实际的数学运算。这就是 first_sector 、 last_sector 和 total_sector 值派上用场的地方。
xxxxxxxxxx#first_sector = 0#last_sector = 2879#total_sectors = 2880first_sector 的值定义了分区内加密设备的第一个扇区,此例中从0开始。last_sector 的值定义了geom填充的最后一个扇区。total_sectors 是设备占用的扇区。当加密设备隐藏在另一个分区内时,不要将加密设备放在分区的前端。如果是交换空间,操作系统可能会在启动时在分区的开头放置一些东西,从而破坏此geom。它也很容易被发现,在分析过程中看起来格外可疑。将 first_sector 设为一个较大的随机数。
您希望GBDE分区有多大?随着加密区域变大,它变得更加可疑。法医分析师(forensic analyst)总是会遇到随机性,但它们通常相当小。Windows交换分区内20GB的随机文件看起来非常可疑。
假设想要5MB——小到足以容纳一些程序的剩余部分,大到足以容纳几个复杂的文件。对于512字节的扇区,每千字节需要2个扇区。2x1024x5=10240个扇区。我将 total_sectors 设置为10240。
使用简单的加法就得到了 last_sector 。
以下示例为 first_sector 使用了一个简单的数字,以使示例易于理解。在现实世界中建议使用一个笨拙的随机数。
xxxxxxxxxxfirst_sector = 1000001last_sector = 1010240total_sectors = 102405MB的空间足够容纳多个秘密文档或一个复杂的Word文档。
现在设置密钥的数量。至少需要一个,最多四个:
xxxxxxxxxxnumber_of_keys = 4我总是建议至少有两个密钥,除非你处于丢失一个密钥就意味着丢失关键解剖部位的情况。
最后,GBDE可以覆盖随机性的新设备:
xxxxxxxxxxrandom_flush = no只要将未注释的 random_flush 设置为任何值,就会触发随机化,因此即使将其设置为 no ,也会自动在新设备上注入随机性,这样以后就不必再这样做了。gbde init 命令在完成磁盘空间随机化之前不会返回。同样,如果你是GBDE来保护生命的,在设置时不要吝啬!
保存并退出模板后,gbde 将初始化新的加密设备。
把你的锁文件放在安全的地方。也许把它埋在Windows的许多临时文件目录或系统文件夹中。(反正没人知道这些东西是什么!)把它塞进你的平板电脑里,或者更好的是,塞进别人的平板电脑。
你不会记得你的秘密GBDE设备从哪个扇区开始。幸运的是,除了主密钥和其他东西的位置外,锁文件还会为你记住所有的元数据。连接设备时,使用 -l 指定锁文件。
xxxxxxxxxx# gbde attach da0p1 -l da0p1.lock -k rat.jpg使用锁文件可以设置其他密钥、挂载文件系统,以及对常规GBDE设备执行任何其他操作。
注意,机器不需要安装FreeBSD来读取分区。可以启动live CD,运行GBDE命令来提取数据。在你传输数据之前,那台笔记本电脑可能看起来完全无辜和正常。
使用 gbde destroy 命令可以销毁隐藏的GBDE geom。也可以用其他方式销毁它。
如果你真的多疑,你已经将GBDE设备隐藏在计算机主操作系统使用的交换分区内。您可能需要启动该操作系统才能通过安全检查点。如果该操作系统开始使用交换分区,它可能会覆盖您的GBDE设备。这比数据泄露或失去手指要好,但你可能想确保笔记本电脑在第一次启动时不会立即启动足够的程序来需要交换。
你有理由严重多疑吗?Windows在启动过程中写入磁盘。(确切位置因您运行的Windows版本而异。)将GBDE文件放在其中一个位置。如果是双引导系统,默认情况下让它引导Windows。如果坏人要求启动你的笔记本电脑,站在那里,无辜地让微软来保护你。
GBDE是一个工具,像其他工具一样,它会被错误利用。
本章只涵盖了使用GBDE的技术要素,而完全忽略了人和实践要素。如果你需要通过加密来保护人类健康和安全,请咨询现实世界安全专家。不要依赖我的建议,一个电脑迷只能用冰淇淋或拖车的承诺引诱他离开办公室。将数据传输到某个可怕的地方并在之后提取出来是一件严肃的事情,而技术是这次旅行中最容易的部分。
但本章之后,讨论交换空间会让人感到积极愉快。