如何证明iOS应用程序的起源?

时间:2014-06-25 14:16:38

标签: ios cryptography open-source code-signing

我在github上有一个包含公共资源的开源iOS项目。我已经使用我的开发者帐户在App Store上发布了该应用程序。

我有没有办法向用户证明已发布的应用程序实际上是从github上的源代码编译的?

修改

澄清:我正在寻找一个数学(或加密,如果您愿意)证明应用程序二进制文件来源于公开可用的源代码,而不是某种免责声明。免责声明可以声明任何内容,但不能证明任何事情。

E.g。通过代码签署应用程序包我向苹果证明该应用程序的创建者和注册苹果的开发人员是同一个人。我的问题是,是否存在类似的机制来向用户证明二进制文件的来源和公共来源是相同的。

3 个答案:

答案 0 :(得分:1)

对于iOS,还有其他复杂情况。提交应用程序的一部分是对其进行编码,并且代码签名过程涉及更改Mach-O标头,加载命令和LINKEDIT段。 您可以通过在代码签名的代码目录结构中提交代码哈希来增加信任(但仍未证明);但AppStore中的应用程序由Apple重新签名,因此无论您做什么,一些代码哈希都会发生变化。

答案 1 :(得分:0)

一种方法是在iOS设置包中显示信息。我见过几个应用程序实现iOS settings bundle并在那里显示确认/归属。其他方式是在你自己内部显示信息,但我不建议这样做。

答案 2 :(得分:0)

我想我偶然发现了一个难题。它比iOS更通用。很难证明某个二进制文件的来源是给定的源代码,至少因为你得到的二进制文件取决于很多细节:

  • 编译器版本
  • os patches
  • 编译器标志
  • 确切的库版本及其编译器设置
  • 编译时环境变量的值等。

证据需要以某种方式考虑所有这些。

也许开发人员可以制作视频,了解他如何提取回购,然后进行编译,然后计算二进制的哈希值。然后他可以发布那个视频。但同样,视频可能已被篡改。或者编译器可能会被泄露。

显然,我们必须相信开发人员。这是对开发人员的信任"态度似乎是常态。对于安全性至关重要的开源项目,开发人员将签署二进制文下载二进制文件后,我会在运行代码之前验证签名。对于iOS应用程序,App Store会处理所有这些。作为开发人员,我必须编写二进制代码。在将应用程序放入应用程序商店之前,Apple会验证签名。

因此,如果您将应用程序放入App Store,我知道Apple知道您是谁。所以我更容易相信你。

TL; DR :证明很难,但您可以更容易信任。