对可执行文件进行数字签名,信任其在服务器上的请求

时间:2011-06-08 18:54:22

标签: security certificate digital-signature code-signing assembly-signing

我正在构建一个与服务器通信的跨平台应用程序。安全非常重要。

是否有一个方案可以让我“信任”可执行文件是真的并且没有被篡改过,并且请求确实来自我签名的可执行文件而不是模仿者?看起来像是传统的中间人攻击。我该如何预防?

据我所知,我可以在Windows下使用受信任的CA签署可执行文件。这可确保可执行文件未在用户的计算机上被篡改。但是,目标病毒仍然可以用模仿者替换可执行文件(而不是修改它),Windows不会抱怨。

然后,我的真正可执行文件可以签署它对服务器发出的请求吗?我可以在服务器上验证这些请求吗?天真的解决方案是在签名的可执行文件中嵌入“私有证书”。但是,我怀疑即使从签名的可执行文件中提取此私有证书也是可能的。

最后,OSX和Linux中是否有可执行的签名机制?

2 个答案:

答案 0 :(得分:1)

对于Mac上的代码签名,StackOverflow herehere中有一些引用。我见过Linux的不同之处,如signelfbsign(由digsig使用),elfsign

如Nickolay O.所述,代码签名不会对反编译做任何事情。代码签名不会阻止中间人,也不是向服务器证明客户端没有被篡改的解决方案。

答案 1 :(得分:0)

签署可执行文件仅对操作系统有意义 - 让它知道,可执行文件是一个很好的。 如果有人可以反编译您的应用程序,那么您无法确定该请求是否由有效的可执行文件发送。