如何certificate一个iOS应用程序的起源?

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

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

编辑

澄清:我正在寻找一个math (或密码,如果你喜欢),certificate应用程序二进制源于公开可用的源代码,而不是一种免责声明。 免责声明可以声称任何东西,但没有certificate任何东西。

例如,通过对应用程序包进行代码签名,我向苹果certificate,该应用程序的创build者和在苹果公司注册的开发者是同一个人。 我的问题是,是否存在类似的机制来向用户certificate二进制的来源和公共来源是相同的。

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

一种方法是通过显示iOS设置包中的信息。 我已经看到了几个应用程序实现iOS设置包,并显示在那里确认/归因。 其他方式会显示在你自己的信息,但我不会build议。

我想我已经偶然发现了一个难题。 它比iOS更普遍。 很难certificate某个二进制文件的起源是一个给定的源代码,至less是因为你将得到的二进制文件取决于如此多的细节:

  • 编译器版本
  • os补丁
  • 编译器标志
  • 确切的库版本和他们的编译器设置
  • 编译时环境variables的值等

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

也许开发人员可以制作一个video,告诉他如何获得回购,然后编译,然后计算二进制的哈希总和。 那么他可以发布该video。 但是,video可能已经被篡改了。 或者编译器可能会受到影响。

所以显然我们必须相信开发者。 这种“信任开发者”的态度似乎是常态。 对于安全性至关重要的开源项目,开发人员会对二进制文件进行签名 在下载二进制文件之后,我将在运行代码之前validation签名。 在iOS应用程序的情况下,应用程序商店照顾所有这一切。 作为开发人员,我必须对二进制代码进行签名。 苹果会在将应用程序放入应用程序商店之前validation签名。

因此,如果你把应用程序放在App Store里,我知道苹果知道你是谁。 所以我相信你更容易

TL; DR :certificate会很难,但可以让信任更容易。