SVN中存储的内容是否可以加密?

10

如果我将我的源代码存储在一个共享式主机公司的SVN上,是否有可能加密内容,以便即使某个人可以访问仓库,他们也无法以明文形式查看源代码?

是否有相关插件可供使用?否则,我想自己实现这一点肯定会非常麻烦!


在某些版本控制系统上,这应该是可能的(取决于它们内部的工作方式):如果版本控制系统存储增量(而不是修订版本),并且您不介意泄露有多少个修订版本。那么,您可以加密增量,然后将其检入另一个存储库。现在我可以查看历史记录(也许是检入注释,取决于策略),但没有密钥就无法查看更多内容。差异将正常工作,并且存储库大小不会受到不利影响,因为存储库压缩仍然像本地一样工作,在加密之前完成。 - ctrl-alt-delor
4个回答

7

正确的答案是:

  1. 找一个您信任的托管提供商(或者遵守规定如果是问题)
  2. 自己托管

如果主要关注安全的离线备份,可以自己托管存储库,并使用像rsync.net这样的地方处理备份(他们符合SOX/HIPAA)。每15分钟同步所有内容的cron作业应该足够。cron作业可以在推送之前加密您的备份。只是不要丢失密钥/密码。

这样,Subversion根本不需要知道您的加密方案,您可以放心工作,而无需担心偏执症影响生产力。

补充说明

由于您正在使用共享主机,而共享主机是毫无价值的:请获取一个专用的源代码控制主机。永远不要在共享主机上使用源代码控制。共享主机以丢失数据和对数据安全性和备份做出虚假声明而臭名昭著。专用源代码控制主机的好例子:CVSDudeBeanstalkGitHub


我还要补充一点,分布式版本控制的一个好处是,每个仓库的克隆实际上都是一个备份。此外,我几乎完全信任GitHub保存我所写的所有东西。另请参见:http://svnhub.com/ - Bob Aman
GitHub允许加密存储库吗? - Gringo Suave
好问题。我不知道。你应该问GitHub的人们。 :-) - Bob Aman

1

虽然这篇文章已经有点老了,但我找到了其他的解决方案,可能会对其他人有所帮助。

现在你可以非常便宜地获得一些虚拟专用服务器(VPS)。(每月$5)

为什么选择VPS呢?因为你可以安装你想要的任何东西!(Bob Aman的答案提到了共享主机的安全问题,这是一个很好的观点)

  1. 安装TrueCrypt或其他加密系统。
  2. 安装SVN。
  3. 在TrueCrypt驱动器/文件中创建SVN存储库。
  4. 配置SVN使用SSH或其他安全数据传输方法。

我使用了这篇文章来进行配置:http://cinserely.blogspot.com.br/2010/10/creating-encrypted-subversion.html

如何进行第四步:http://tortoisesvn.net/sasl_howto.html


1

你想要的插件必须在客户端上(如果你不信任人们访问托管存储库)。任何强加密算法都会在输出中产生非常相似的输入的大变化(由于它们的高熵)。

这意味着即使你有一个解决方案:

  • 从性能上来说,它将是一场灾难,无论是计算时间、存储空间需求还是网络带宽使用,
  • 在功能损失方面也是一场灾难:例如,服务器端差异将被破坏,你必须在客户端上对完全解密的文件进行所有操作。

弱加密(例如混淆字符集,这将使差异再次可用)对源代码来说并不安全,因为花括号和括号以及循环和任何其他字母可以被极快地解码。

我希望这证明了这种方法不会导致任何可能的实际解决方案。也许我漏掉了什么。我期待着阅读有趣的评论! :-)


0

Mathew的帖子是关于加密文件系统的,这需要托管提供商提供。这可能是唯一简单的方法。


不仅如此,它还将加密的 blob 存储在存储库中,在此过程中失去了所有有用的版本跟踪。 - Steve Gilham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接