首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >厨师食谱文件各部分签名策略以防止篡改

厨师食谱文件各部分签名策略以防止篡改
EN

Stack Overflow用户
提问于 2012-07-21 08:19:53
回答 1查看 194关注 0票数 2

我正在寻找社区关于处理这个问题的最佳方法的建议:

  1. 我收集了git中的厨师食谱,定义了实验室,例如jenkins CI设置,人们可以根据自己的使用进行分叉和裁剪。
  2. 但是,当有人想要添加食谱中某些不可更改的部分时,我可以忽略一些情况,例如防火墙设置。
  3. 锁定文件的某些部分以验证它是否已被更改是有意义的,同时允许在文件之外进行任意更改。
  4. 理想情况下,它还可以解决在需要时混淆部分的能力。

我是否会在代码中添加我自己的DSL --每个受保护的块都有一个校验和--在将其传递给厨师之前对其进行预处理以展开和验证它?

例如,我第一次尝试一种格式仍然不能解决人们只删除所有签名部分的问题,除非每个文件都必须签名。

代码语言:javascript
复制
#---SIGNED-FILE SHA-256 507e74380188c07bad2fa66acb8cbbeeb63f84fcee5fd639499575654239cd49

#
# Cookbook Name:: jenkins
# Recipe:: default
#

# https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu
# This is super-simple, compared to the other Chef cookbook I found
# for Jenkins (https://github.com/fnichol/chef-jenkins).
#
# This doesn't include Chef libraries for adding Jenkin's jobs via
# the command line, but it does get Jenkins up and running.

include_recipe "apt"
include_recipe "java"

#---SIGNED-SECTION-START SHA-256 e4d3d02f14ee2a6d815a91307c610c3e182979ce8fca92cef05e53ea9c90f5c7
apt_repository "jenkins" do
  uri "http://pkg.jenkins-ci.org/debian"
  key "http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key"
  components ["binary/"]
  action :add
end
#---SIGNED-SECTION-END

#---OBFUSCATED-SECTION-START SHA-256 5f536f2137dc7e2c5817de861d1329ead72b1e9d2dbb9dbe181ec7bc274dddeb
YXB0X3JlcG9zaXRvcnkgImplbmtpbnMiIGRvCiAgdXJpICJodHRwOi8vcGtnLmplbmtpbnMtY2kub3JnL2RlYmlhbiIKICBrZXkgImh0dHA6Ly9wa2cuamVua2lucy1jaS5vcmcvZGViaWFuL2plbmtpbnMtY2kub3JnLmtleSIKICBjb21wb25lbnRzIFsiYmluYXJ5LyJdCiAgYWN0aW9uIDphZGQKZW5k
#---OBFUSCATED-SECTION-END

package "jenkins"

service "jenkins" do
  supports [:stop, :start, :restart]
  action [:start, :enable]
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-02 10:03:53

如何设计一个以签名部分开始的文件,描述将在整个文件中找到的签名实体。然后,您的解析代码将需要检查每个实体是否如所描述的那样存在,并且没有被删除。

为了防止重放攻击,您需要在每个签名中包含一个时间戳,并在每次更改任何已签名部分时重新计算整个文件的签名。因此,只有在下列情况下,文件才有效:

  • 文件中存在“头”中描述的签名实体。
  • 每个签名验证并包含相同的时间戳。
  • 可选:签名时间戳与文件时间戳(在可接受的增量内)匹配吗?

剩下的风险是有人用以前的修订替换了整个文件(即有效地删除了一个他们不喜欢的新部分)。我不知道您如何才能抵御这种情况,除非像上面所建议的那样检查文件时间戳。

注意:我的答案是假设在创建和解析文件时可以实现什么。我可能误解了你环境的限制(我不熟悉git),如果是这样的话,请忽略我!

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

https://stackoverflow.com/questions/11590626

复制
相关文章

相似问题

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