我有一个开源 iOS 项目,在 github 上有公共(public)资源。我已使用我的开发者帐户在 App Store 上发布了该应用。
有没有办法让我向用户证明发布的应用程序实际上是从 github 上的源代码编译而来的?
编辑
澄清一下:我正在寻找一个数学(或密码学,如果你愿意)证明应用程序二进制文件源自公开可用的源代码,而不是一种免责声明。免责声明可以声明任何内容,但不能证明任何内容。
例如通过对应用程序包进行代码签名,我向苹果证明应用程序的创建者和在苹果注册的开发者是同一个人。我的问题是是否存在类似的机制来向用户证明二进制文件的来源和公共(public)源是相同的。
最佳答案
我想我偶然发现了一个难题。它比 iOS 更通用。很难证明某个二进制文件的来源是给定的源代码,至少因为您将获得的二进制文件取决于很多细节:
- 编译版本
- 操作系统补丁
- 编译器标志
- 确切的库版本及其编译器设置
- 编译时环境变量的值等
证明需要以某种方式考虑所有这些。
也许开发人员可以制作一个视频,展示他如何提取存储库,然后进行编译,然后计算二进制文件的哈希和。然后他可以发布该视频。但同样,视频可能已被篡改。或者编译器可能会受到损害。
显然我们必须信任开发者。这种“信任开发者”的态度似乎成为常态。对于安全关键的开源项目,开发人员将签署二进制文件。下载二进制文件后,我会在运行代码之前验证签名。对于 iOS 应用程序,App Store 负责所有这些工作。作为开发人员,我必须对二进制文件进行代码签名。 Apple 会在将应用程序放入应用程序商店之前验证该签名。
因此,如果你把一个 App 放到 App Store,我就知道 Apple 知道你是谁。所以我更容易相信你。
TL;DR:证明很难,但您可以让它更容易被信任。
关于ios - 如何证明iOS App的来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24411129/