有没有办法签署二进制文件?我想签署我的zip文件以防止他们修改(以防止安装恶意软件)。
签名XML相当容易,但我不太确定二进制文件。这甚至可能吗?我能找到的就是代码签名(这不是我想要的)。购买昂贵的证书是没有用的,只是为了确保更新文件在安装时不会被修改。
我认为我必须像这样工作:散列文件,生成密钥对(可能使用散列),然后将签名字节附加到文件中。
反之亦然,读取签名字节并根据签名的公钥验证散列。
但我不认为这很简单。我是否必须考虑某些事情(比如您需要规范化的XML)?
我不一定需要代码,但有关该流程的一些详细解释(任何解释这一点的资源都可以。)
答案 0 :(得分:1)
使用任意二进制文件时,您无法修改其内容,因此如果要对其进行签名,则需要使用单独的外部文件,其中包含要签名的文件的哈希值,并且还要签名以防止本身不被修改。
然后,您阅读此单独文件,验证其个人签名,然后验证其在其内容中列出的每个文件的哈希值。您可以使用Catalog Files内置的MakeCat(使用SignTool和https://www.smashingmagazine.com/2011/11/how-to-set-up-a-print-style-sheet/创建它们),也可以按照相同的流程创建自己的。{/ p>
因为您只是分发更新,并且如果您被允许认为加载更新的程序尚未修改,您不需要"购买"证书。您可以创建自己的"私有CA",在更新程序内分发该CA的证书,然后使用该私有CA的证书来验证目录文件。
答案 1 :(得分:0)
我不确定你的意思是“二进制文件”,但是如果你谈论PE格式(Windows二进制可执行文件),你可以生成自己的签名(加密哈希)并将它放在PE文件的同一个地方。 Windows authenticode证书。这是一个进行此类修改的开源工具: http://blog.didierstevens.com/programs/disitool/