安全 – 代码签名:何时以及为何?

如果您在线搜索代码签名,您将获得大量关于在何处使用数字证书签署代码的点击,但没有关于何时应该签署代码或为何需要签名的文章或文档.所以我提出这些问题:

>开发人员或开发团队希望/需要签署代码的用例是什么?
>可以/应该签署哪些类型的代码? JavaScript的? Java的? C ?每种语言/平台都有不同类型的协同设计吗?
>代码是作为原始源还是已编译的二进制文件签名?

提前致谢.

最佳答案 我认为理论上任何语言中的任何代码都可以作为源代码进行签名,但更常见的是编译后的二进制代码.

我想到的主要用例是移动应用程序(此实例为Android).您必须在发布之前签署代码.您还必须保留密钥库文件,以便在对应用程序进行任何更新并希望上载它时,使用相同的密钥对其进行签名.这是因为Android在升级应用程序时会检查一些事情,主要是旧的和新的代码签名是相同的,只要密钥存储文件及其密码保持足够的秘密,证明它来自相同的来源.如果有人以某种方式修改代码,签名验证将失败.

简而言之,签名代码允许最终用户/机器知道代码的来源.在升级的情况下,很难/不可能修改代码并让其他人下载代码.

Apple对iOS的代码签名感到疯狂,我并没有完全掌握所有细节,但你必须从Apple获得证书(是的,超过1个)并与他们签约.如果你想将应用程序放在测试设备上,你需要另一个证书来签署并安装在设备上,另外你必须在App Store上获得它(经Apple批准),他们可能会在那里签名iOS设备的私钥知道其Apple批准.

点赞