OS X Lion的“版本和恢复”功能是否以安全的方式存储用于加密的.sparsebundle图像的缓存数据?


10

我将敏感信息存储在笔记本电脑上的加密的.sparsebundle映像中,该映像是使用Disk Utility,Knox和Espionage等应用程序制作的。问题是,如果我升级到Lion,则当我正在处理其中一个已安装磁盘映像中的文件并且Lion正在保存文件的较旧版本时,这些较旧版本是否存储在加密映像中(因为它们应该是) 或者别的地方?如果版本存储在其他位置,是否将其加密?

Answers:


10

我已经做过一些测试,可以提供一个(希望的)权威答案。

简短的回答:版本与实际文件存储在同一磁盘(或磁盘映像)上,因此版本不应将信息泄漏到加密映像之外。但是,可能还会有其他泄漏,请参见下文。

长答案:版本在每个卷的顶部创建一个不可见的文件夹,名为“ .DocumentRevisions-V100”,其内部结构如下:

.DocumentRevisions-V100
    .cs
        ChunkStorage    (this is presumably used to store chunks of large files that didn't entirely change between versions)
    AllUIDs             (this is only created on disks that have permissions ignored)
    ChunkTemp
    db-v1
        db.sqlite      (this is the primary index of document IDs, etc)
    PerUID             (this is only created on disks that have ownership respected)
        501            (documents created/owned by user #501)
        502            (etc...)
    staging            (???)

有关sqlite索引和调解访问它的后台守护程序的信息,请阅读ars technica上John Siracusa的出色评论

文档版本本身存储在AllUID或PerUID /您的用户ID的子目录中。在此之下,每个版本控制的文档都有其自己的子目录,该子目录的编号从1开始。在该目录下是一个名为“ com.apple.documentVersions”的文件夹,并且在此之下,每个修订版都存储为单独的文档(除非将其分成多个部分- -我还没有尝试过使用UUID和类型扩展名命名的大型文档。例如,如果我(用户#501)在启动卷上编辑rtf文档并保存了多个修订,它们可能存储为:

/.DocumentRevisions-V100/PerUID/501/1/com.apple.documentVersions/0787B7C3-DE11-4065-9FD9-61870212011D.rtf
/.DocumentRevisions-V100/PerUID/501/1/com.apple.documentVersions/D533CF36-0D49-4910-B0EB-C92395C05726.rtf

然后,如果我打开另一个rtf文件并保存了一个版本,则该文件的名称可能为:

/.DocumentRevisions-V100/PerUID/501/2/com.apple.documentVersions/74A6EF6E-A22A-4196-B560-40ABDBF46DF4.rtf

如果将其保存在SecretDocs映像上(忽略所有权挂载),版本将存储为:

/Volumes/SecretDocs/.DocumentRevisions-V100/AllUIDs/1/com.apple.documentVersions/2ED4DAFD-9BCF-4158-BFDB-F9EEC631E44A.rtf

顺便说一句,版本文件的权限似乎是从原始文件中克隆的。对封闭文件夹的权限往往只允许执行(即,您看不到文件名,但是如果您知道文件名,则可以访问它)。例如,PerUID / 501设置为仅对用户501执行,而对其他任何人均无访问权限。db-v1文件夹仅允许root用户访问。如果不进行详细调查,它似乎已被锁定。

现在,关于其他泄漏,我威胁您使用:Lion应用程序在退出时倾向于保存其状态,因此,如果您退出时打开了机密文档,则其中的某些信息(例如我认为的屏幕截图)可能会存储在〜 / Library / Saved Application State / someappid.savedState。只要您在保存之前就关闭,我认为您在这里很安全。


如果稀疏束位于外部磁盘(可以是HFS,FAT或NTFS)上,或者位于网络上的Snow Leopard计算机上,该怎么办?版本是否仍与主文件存储在同一磁盘上?
Phil M

我想将此答案设置为可接受的答案,但是我看不到按钮,也不知道为什么。
Phil M

Mountain Lion是否存在“保存的应用程序状态”泄漏?
orome

@raxacoricofallapatorius:我还没有完全确认这一点(.savedState文件夹中的信息格式不明显),但是我强烈怀疑10.8中仍然存在泄漏。
Gordon Davisson

2

Phil M的一个很好的问题!

与Apple版本有关的数据有时不限于/.DocumentRevisions-V100

我将尽可能简短。关键概念:

  • 透明的应用程序生命周期(TAL)-自动保存,恢复版本
  • 文件系统支持永久版本存储。

在某些情况下,

…在10.7(Build 11A511)中:使用的子目录~/Library,访问权限不仅限于root用户。…

—  https://discussions.apple.com/message/15739595#15739595(2011-07-25

另外,略微改编自https://discussions.apple.com/message/15741724#15741724


在我最近的同一台AFP服务器测试中,远程.png屏幕截图的版本为:

reunion:~ centrimadmin$ ls -ld  /.DocumentRevisions-V100
ls: /.DocumentRevisions-V100: No such file or directory

在本地可能存在一些相关数据,/.DocumentRevisions-V100但是在这种情况下,远程文件的版本是本地的,而不仅限于root用户。例如,请参见http://www.wuala.com/grahamperrin/public/2011/07/25/e/?mode=gallery上的屏幕快照001,该屏幕快照显示了与文件服务器断开连接后打开的远程文件的本地版本。


回到“不同问题...”中的开头问题……加密的.sparsebundle图像,安全性。考虑一下:

加密的稀疏捆绑磁盘映像,MS-DOS

在加密的稀疏捆绑磁盘映像的上下文中,与MS-DOS(缺少支持)相比,用户更可能使用JHFS +(支持永久版本存储)

但是:在卸载诸如此类的卷之后,应该进行测试以查看未加密的版本是否保留在用户的主目录中(该目录可能未被加密)。

就个人而言,我发现fseventer诸如此类的测试情况下最有用。YMMV。

分离

此答案中的某些问题可能会引起一些问题,这些问题不特定于加密,不特定于稀疏捆绑磁盘映像,不特定于安全性。这些都是潜在的复杂主题,因此,请注意:我可能不鼓励在单独回答每个问题的同时,不在此答案下方的评论中提问


如果您想知道为什么“…远程文件的版本是本地…”,请参阅apple.stackexchange.com/questions/19299/…下的AFP,Apple版本和安全性/隐私权
Graham Perrin

1

我检查了Apple的Developers文档中的版本功能,似乎表明文档的先前版本与文档的当前版本存储在相同的“位置”(意味着相同的文件或文件夹)中。但是该文档缺少详细信息。

AppleInsider中还有一篇名为“ Inside Mac OS X 10.7 Lion:自动保存,文件版本和Time Machine”的文章,内容为:

与Time Machine不同,Version将所有更改快照附加在本地文档文件中,避免了文件系统混乱,并且无需从Time Capsule或其他外部磁盘访问备份,而只是恢复到过去几个小时内创建的先前Version。

我尚未找到有关“版本”功能如何工作的任何更详细的描述。


我的印象是它们存储在.DocumentRevisions-V100(而不是与文档位于同一文件中)
Thilo

1
@Thilo:是的,你是对的。开发人员文档如何将版本功能与“自动保存到位”功能联系在一起,使我感到困惑。正如其他人给出的更详细的答案所指出的那样,文档的较旧版本与当前版本存储在同一文件或文件夹中。在这方面,AppleInsider文章是错误的。
Rinzwind

0

戈登,这对每个人以及Knox和Espionage的软件开发人员(我都使用这两个应用程序)都是好消息。

这是用户应注意的一种情况。如果要访问外部驱动器上已安装的加密磁盘映像中的文件,则版本文件可能以未加密形式存在于用户的系统驱动器上。一种解决方法是在安装前将.sparsebundle复制到系统驱动器。

另一种情况是,如果.sparsebundle位于同一网络上的另一台Snow Leopard Mac上,并且该图像在网络上共享,则可以通过Finder浏览到Lion Mac上进行安装。(有时我会这样做。)这肯定会导致任何版本文件都以未加密的形式放在用户的系统磁盘上。一种解决方法是使用屏幕共享来控制Snow Leopard Mac,然后在该Mac上的映像中进行安装和处理。

底线是,在Lion中,使用加密的磁盘映像时,如果映像不在系统驱动器上,人们需要比以往任何时候都更加了解和谨慎。我希望Knox和Espionage开发人员可以就这些问题向客户发出警告。

编辑:格雷厄姆的答案似乎支持我的大多数假设。


“如果要访问外部驱动器上已安装的加密磁盘映像中的文件,则版本文件可能会以未加密形式存在于用户的系统驱动器中”。您从哪里获得这些信息?我认为它将被放置.DocumentRevisions 在加密卷上。@戈登的答案似乎也证实了这一点。
Thilo

@Gordon我知道,如果文件不在系统磁盘上,则版本文件将存储在系统磁盘上(外部磁盘可能具有不同的文件系统,不知道这是否重要)。我以为我在某个地方读了这篇,尽管我找不到来源。我以为戈登只是在指我的具体情况。戈登,您能确定版本是否与实际文件存储在同一磁盘上,而不管磁盘的格式如何?我知道戈登说过“磁盘(或磁盘映像)”,但是他没有提到这种测试。
Phil M

@Gordon也许可以测试提到的2种特定情况(SL Mac上的USB磁盘和网络),我希望证明它是不正确的,我真的希望它能正常工作。
Phil M

关于非Mac文件格式的外部磁盘的要点。也许他们根本没有版本?OTOH,这种在常规文件系统上“被黑客入侵”的方式可能意味着它也可以在FAT32上运行。
Thilo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.