我的任务是设计一个签名源代码的解决方案。关于是否存在存储签名代码的标准以及哈希和代码签名证书,我还没有发现多少。
据我所知,签名源代码涉及到获取私钥(存储在我们的HSM中)和加密源文件的散列。然后,使用代码签名证书将签名应用于该哈希文件。
对于一个项目,可能有1000's的文件需要签署。这些签名的散列文件应该存储在哪里?哈希文件的命名有标准吗?
希望这是有意义的。谢谢你的帮助!
发布于 2023-03-01 21:35:41
好吧,看完讨论后我想我有办法回答你的问题。但是,您提到了"CASC代码签名“的论文,这是”可执行代码签名“(publisher验证),而与”源代码签名“(跟踪/验证源文件更改)无关,这就是我下面概述的内容,它们确实使用了类似的文件签名概念。
我的任务是设计一个签名源代码的解决方案。
您可能不想设计一个新的解决方案,而是尝试找到一个现有的解决方案。在git服务器中签名提交可能是您真正想要做的事情,特别是在代码仍在积极开发的情况下。
讨论并没有澄清签署源代码的最终目的,所以我的反应是从变更管理的角度出发,即作为您的组织机构正在努力遵守需要跟踪和批准更改的策略。要通过文件签名来验证这些更改是批准的,而不是未经批准而修改的。
对我们所有的源代码进行签名,这样不仅可以进行身份验证,而且还可以显示源代码的安全级别。
您应该依靠源代码提交者来“验证”分类。像部分标记和文件标记这样简单的东西应该是合适的,但是要遵循组织的策略。
这些签名的散列文件应该存储在哪里?
在讨论之后,你有一些选择;
sha256sum * > hash.sha256),并且只对该哈希列表文件(gpg --output hash.sha256.gpg --sign hash.sha256)进行签名,即使用该文件存储已签名的文件。根据您的组织的需求,我认为选项2或3可能是您想要做的。
下面的链接进行了一些研究;与我在讨论中的观点相反,默认情况下,使用gpg,您不只是创建文件的签名,也不只是创建散列结果。它是源文件的副本压缩,并向输出文件中添加信号块。您只需创建一个独立签名(gpg --output doc.sig --detach-sig doc),就需要源文件和该签名文件来执行验证。
在创建副本的实例中,它在技术上并不仅仅是“加密”,而是感知压缩是一种弱加密的方法。而gpg确实使用名为"--decrypt“的选项来提取源。
哈希文件的命名有标准吗?
文件的散列列表通常使用哈希方法命名扩展名。.md5,.sha256.或者我有时见过.md5.txt。
签名文件将是签名方法,即。.gpg,所以sourcefile1.txt的签名文件可以是sourcefile1.txt.gpg (这遵循Ubuntu的签名格式)。
gnupg.org在一个示例中使用了.sig,但并没有真正的需求。
https://security.stackexchange.com/questions/268815
复制相似问题