我们拥有此计算机代码,要求任何有权访问它的人都需要支付许可费。我们将为开发人员支付费用,但他们希望我们的系统管理员也可以获得许可,因为他们可以看到代码存档。但是,如果代码以加密方式存储在存档中,则系统管理员可以查看文件但看不到内容。 因此,任何软件版本控制系统都允许加密,以便只有签出代码的人才需要密钥,因此能够看到解密的文件。 我认为将它添加到pserver和cvs并不难,但是如果它已经在其他地方完成,那么为什么要重新发明轮子。
任何见解都会有所帮助。
答案 0 :(得分:0)
无法设置能够以某种方式执行服务器端差异的源控制系统,以防止系统管理员至少在理论上访问内容。 (即:源控制系统无法将解密密钥存储在sysadmin无法访问的位置。)除非您的系统管理员习惯性地浏览源控制数据库内容,否则这样的系统应该与未加密的系统没有实际区别从您的供应商的角度来看系统。
使源控制数据库对服务器管理员难以辨认的唯一方法是在将文件提交到服务器之前加密客户端上的文件。为了达到预期目标,管理员需要无法访问解密密钥,这在大多数组织中不太可行,因为服务器管理员通常也在所有客户端计算机上具有管理员访问权限。忽略这个挑剔的细节,这也意味着你所有的源控制系统都会看到加密的二进制文件,这意味着没有服务器端差异或责备。它还意味着数据库大小可能会出现可怕的膨胀,因为每个文件都需要在每次提交时完全替换。您是否真的愿意牺牲源控制系统的可用性来节省许可费用和/或安抚该供应商?
答案 1 :(得分:0)
基本上,你想给你所有的开发人员一些秘密密钥,他们插入git的污迹和清洁过滤器的加密/解密例程。并且您需要一种能够执行增量的加密方案。
首先,请参阅Encrypted version control了解git中的一些示例。如上所述,这可以显着增加磁盘使用率。但是,有一些方法可以以某种安全性为代价进行更加“差异友好”的加密。有关如何攻击该示例的示例,请参阅diph。此外,任何使用AES-ECB模式的系统都会有很好的差异。 (你通常不应该使用AES-ECB模式,因为它的安全漏洞......其中一个安全缺陷是它可以很好地区分......嘿,这就是你想要的,所以这似乎是一个合理的例外。)< / p>