我正在从事一个私人项目,开始对有人在窃取我的代码感到有些偏执,不想依靠当前的源代码控制托管服务的诚实性,尽管我没有任何理由不信任他们。在可预见的将来,我将是唯一从事此项目的人。
我正在考虑创建一个小的Veracrypt虚拟驱动器和一个SVN存储库,并将加密的文件保留在Dropbox中以进行自动同步。
我仍然偶尔使用Truecrypt(意味着要迁移Veryacrypt)并将其小的加密虚拟驱动器保留在Dropbox中。我没有在SVN存储库中使用它,但是在其他方面,这个想法是相似的。问题是我必须卸载驱动器才能使文件同步,因此我猜测文件的内容和时间戳仅在那时才更新。据我了解,Truecrypt开发已停止,而Veracrypt是正在维护和进一步开发的分支。
有没有一种方法可以配置Veracrypt进行自动刷新,以确保文件每次都同步?
有没有更好的方法可以做到这一点,也许是SVN托管服务可以为偏执的客户端保证安全性?
最佳答案
我是VeraCrypt的主要开发人员,我刚刚在CodePlex的VeraCrypt论坛上回答了您类似的问题:https://veracrypt.codeplex.com/discussions/568126。我在这里复制它以供记录。
实际上,我们无能为力,每次更改后都强制将数据自动刷新到容器中。为说明原因,我以USB闪存驱动器为例。当您将数据写入插入的USB密钥时,不能保证立即写入数据:相反,出于性能原因,Windows使用缓存机制来存储您的数据或修改,并且它们将在一段时间后写入设备,具体取决于多种因素。确保您的数据已写入USB闪存盘的唯一方法是“安全弹出”数据。
Windows以相同的方式处理VeraCrypt虚拟驱动器:对驱动器的内容进行更改时,未加密的数据不会立即写入,因此我们的设备驱动程序不会收到任何可以加密并写回加密容器的内容。 。我们必须等待Windows将数据刷新到虚拟驱动器,然后才能对其进行加密。
当您卸载虚拟驱动器时,Windows的反应与弹出USB闪存驱动器的反应相同:它将待处理的数据刷新到存储中,这又触发了我们设备驱动程序中的加密,并且使VeraCrypt将加密的数据存储在加密的驱动器中。容器。
互联网上有免费的工具,使您可以明确强制Windows刷新特定驱动器上的所有暂挂数据(例如Sysinternals中的Sync和Uwe Sieber主页中的FFB)。但是它们必须具有管理特权才能运行。
在您的特定情况下,我有一个解决方案:您可以使用SVN Hook脚本。创建一个提交后钩子脚本,在其中调用带有正确参数的上述工具之一,以便在每次提交后刷新所需虚拟驱动器上的数据。不要忘记通过修改其兼容性属性将exe程序配置为始终以管理员身份运行(此链接说明了如何:http://technet.microsoft.com/en-us/magazine/ff431742.aspx)
最后一点:Linux存在相同的问题,但是mount命令具有用于将数据自动写入文件系统的选项(即-o sync或-o flush)。 VeraCrypt在内部使用mount命令,它提供了指定传递给mount命令的其他选项的可能性:如果使用VeraCrypt命令行,则可以使用--fs-options开关(即--fs-options = sync)如果使用GUI,则只需在密码对话框中单击“选项”按钮:将会出现新字段,并且在“安装选项”中可以放置“同步”或“刷新”。
我希望这些元素可以帮助您解决同步问题。