0

我们有这个计算机代码,它要求任何有权访问它的人支付许可费。我们将为我们的开发人员支付费用,但他们希望我们的系统管理员也获得许可,因为他们可以看到代码存档。但是,如果代码以加密方式存储在档案中,那么系统管理员可以看到文件但看不到内容。任何软件版本控制系统都允许加密,因此只有检查代码的人才需要密钥,因此能够看到解密的文件。我在想将它添加到 pserver 和 cvs 并不难,但如果它已经在其他地方完成,为什么要重新发明轮子。

任何见解都会有所帮助。

4

2 回答 2

0

基本上,您想为所有开发人员提供一些密钥,他们将其插入 git 的 smudge 和 clean 过滤器的加密/解密例程中。并且您需要一个能够执行增量的加密方案。

首先,请参阅加密版本控制以获取 git 中的一些示例。如前所述,这可以显着增加磁盘使用率。但是,有一些方法可以以牺牲一些安全性为代价进行更“差异友好”的加密。有关如何攻击它的示例,请参见diph 。此外,任何使用 AES-ECB 模式的系统都会有很好的差异。(您通常不应该使用 AES-ECB 模式,因为它存在安全漏洞......其中一个安全漏洞是它可以很好地区分......嘿,这就是你想要的,所以这似乎是一个合理的例外。)

于 2013-02-01T21:04:14.697 回答
0

没有办法建立一个可以执行服务器端差异的源代码控制系统,以防止系统管理员至少在理论上访问内容。(即:源代码控制系统无法将解密密钥存储在系统管理员无法访问的地方。)除非您的系统管理员习惯性地浏览源代码控制数据库内容,否则这样的系统应该与未加密的系统没有实际区别从供应商的角度来看系统。

使服务器管理员无法识别源代码控制数据库的唯一方法是在将文件提交到服务器之前加密客户端上的文件。为此,为了达到预期的目标,管理员需要无法访问解密密钥,这在大多数组织中不太可能实现,因为服务器管理员通常也对所有客户端计算机具有管理员访问权限。忽略这个挑剔的细节,这也意味着您的所有源代码控制系统将看到的都是加密的二进制文件,这意味着没有服务器端的差异或指责。这也意味着您的数据库大小可能会出现可怕的膨胀,因为每个文件都需要在每次提交时完全替换。你真的愿意牺牲你的源代码控制系统的可用性来节省许可费用和/或安抚这个供应商吗?

于 2013-02-01T19:41:31.157 回答