8

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

  • 开发人员或开发团队希望/需要对其代码进行签名的用例有哪些?
  • 可以/应该签署哪些类型的代码?JavaScript?爪哇?C++?每种语言/平台是否有不同类型的代码设计?
  • 代码是作为原始源代码还是编译后的二进制文件签名的?

提前致谢。

4

3 回答 3

2

我想理论上可以对任何语言的任何代码进行签名,或者作为源代码,但更常见的是编译后的二进制文件。

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

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

Apple 对 iOS 的代码签名发疯了,我没有完全掌握所有细节,但你必须从 Apple 获得证书(是的,超过 1 个)并与他们签名。如果您想将应用程序放在测试设备上,您需要另一个证书来签名并将其安装在设备上,否则您必须在 App Store 上获得它(取决于 Apple 的批准),在那里他们可能会用一些人签名iOS 设备的私钥,以了解其 Apple 批准。

于 2012-06-21T19:21:16.307 回答
0

每次您需要确保代码来自受信任的来源并且没有人修改它时(签名通常带有校验和)。这很常见。编程库、软件分发、软件升级。当您需要为代码申请专利时,您应该对其进行签名并获得可信的时间戳。当您创建银行并通过互联网访问它时,您通过 SSL 将您的网页发送给用户 = 您正在对它们进行加密和签名。可能还有更多

于 2012-06-21T23:06:20.850 回答
0

开发人员或开发团队希望/需要对其代码进行签名的用例有哪些?

数字签名在不同的平台上意味着不同的东西。如果您正在编写 Windows 桌面软件,那么签署可执行文件的最大初始好处是摆脱 Windows 自 Windows XP SP2 以来一直向用户显示的讨厌的“未知发布者”警告。在其他平台(一些移动、Java、Flash、Office VBA 宏等)上,需要签名代码才能提升权限。

您可以让 Windows 程序自检其自己的数字签名以确保其有效,这意味着 EXE 自签名以来没有发生任何变化。大多数人将其用作抵御恶意软件和盗版的另一层保护。

也看看这个: http ://blog.ksoftware.net/2011/07/what-is-authenticode/

可以/应该签署哪些类型的代码?JavaScript?爪哇?C++?每种语言/平台是否有不同类型的代码设计?

理论上,可以对任何文档进行数字签名,但大多数时候当人们谈论代码签名时,他们谈论的是 MS Authenticode(将数字签名附加到任何 PE 格式文件(EXE、DLL、COM 等)或签署可执行文件适用于 OSX/iOS。

不同平台上有不同类型的签名,但大多数将使用相同的证书。

代码是作为原始源代码还是编译后的二进制文件签名的?

在大多数情况下,二进制。

于 2012-06-27T18:24:23.297 回答