首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储签名源代码+加密哈希+代码签名证书

如何存储签名源代码+加密哈希+代码签名证书
EN

Security用户
提问于 2023-03-01 17:19:55
回答 1查看 62关注 0票数 0

我的任务是设计一个签名源代码的解决方案。关于是否存在存储签名代码的标准以及哈希和代码签名证书,我还没有发现多少。

据我所知,签名源代码涉及到获取私钥(存储在我们的HSM中)和加密源文件的散列。然后,使用代码签名证书将签名应用于该哈希文件。

对于一个项目,可能有1000's的文件需要签署。这些签名的散列文件应该存储在哪里?哈希文件的命名有标准吗?

希望这是有意义的。谢谢你的帮助!

EN

回答 1

Security用户

发布于 2023-03-01 21:35:41

好吧,看完讨论后我想我有办法回答你的问题。但是,您提到了"CASC代码签名“的论文,这是”可执行代码签名“(publisher验证),而与”源代码签名“(跟踪/验证源文件更改)无关,这就是我下面概述的内容,它们确实使用了类似的文件签名概念。

我的任务是设计一个签名源代码的解决方案。

您可能不想设计一个新的解决方案,而是尝试找到一个现有的解决方案。在git服务器中签名提交可能是您真正想要做的事情,特别是在代码仍在积极开发的情况下。

讨论并没有澄清签署源代码的最终目的,所以我的反应是从变更管理的角度出发,即作为您的组织机构正在努力遵守需要跟踪和批准更改的策略。要通过文件签名来验证这些更改是批准的,而不是未经批准而修改的。

对我们所有的源代码进行签名,这样不仅可以进行身份验证,而且还可以显示源代码的安全级别。

您应该依靠源代码提交者来“验证”分类。像部分标记和文件标记这样简单的东西应该是合适的,但是要遵循组织的策略。

这些签名的散列文件应该存储在哪里?

在讨论之后,你有一些选择;

  1. 您可以分别对每个文件进行签名,并将签名文件与每个文件一起存储。
    • 这将验证每个文件没有被更改,并且可以将签名文件的副本存储在签名文件本身中。(这可能是笨重和空间消耗。)
    • 验证过程本身可能很费时。

  2. 您可以散列出只存储在文本文件中的散列的所有文件(sha256sum * > hash.sha256),并且只对该哈希列表文件(gpg --output hash.sha256.gpg --sign hash.sha256)进行签名,即使用该文件存储已签名的文件。
    • 这是软件存储库允许您验证是否获得未经修改的软件版本的方法,即。乌本图。
    • 这将验证哈希列表文件未被更改,而哈希列表文件本身则验证源未被更改。
    • 对此进行验证是快速的,因为您只需要创建一个新哈希列表,并比较旧的和新的哈希列表之间的差异。

  3. 您可以让某种数据库维护它。(例如,Git可以使用MySQL数据库。)
    • 这将使托管系统中的所有内容都具有跟踪的更改。
    • 验证是自动的。

  4. 创建整个源的存档和散列以及/或对tar文件进行签名。
    • 用于存档,而不是用于跟踪更改。这更多的是为了验证文件损坏是否发生。

根据您的组织的需求,我认为选项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,但并没有真正的需求。

票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/268815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档