Arj*_*jan 11 mac security certificate code-signing macos
当 Mac 应用程序的数字签名被破坏时,可能会出现哪些烦恼或实际问题?
Mac 上的应用程序可以进行数字签名。当签名以某种方式被破坏时,我知道一些应用程序可能会注意到这一点。但我不知道这些只是烦恼或真的会破坏事物的细节:
OS X 防火墙可能无法正确设置临时签名,导致反复提示“您希望应用程序‘[..]’接受传入的网络连接吗?”
家长控制允许的应用程序可能不再运行?
钥匙串访问可能已损坏?
有人说 Apple 软件更新可能会失败。如果为真,那么我想知道这是否确实取决于代码签名签名,还是由整个应用程序的某些不匹配的哈希值或BOM 文件中的信息引起的。
更多背景信息如下。
可以使用以下方式显示代码签名详细信息:
codesign --display -vv /Applications/iTunes.app/
Run Code Online (Sandbox Code Playgroud)
...这将产生类似以下内容(但不会警告修改):
[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]
Run Code Online (Sandbox Code Playgroud)
可以使用以下方法验证签名:
codesign --verify -vv /Applications/iTunes.app/
Run Code Online (Sandbox Code Playgroud)
这将产生:
/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement
Run Code Online (Sandbox Code Playgroud)
...或(即使只是将一些额外的文件放在应用程序的 ./Contents/Resources 文件夹中):
/Applications/iTunes.app/: a sealed resource is missing or invalid
Run Code Online (Sandbox Code Playgroud)
...或(可能比上述消息更糟糕):
/Applications/iTunes.app/: code or signature modified
Run Code Online (Sandbox Code Playgroud)
代码签名可以追溯到 OS 9 或更早版本,但当前的实现是在 10.5 Leopard中引入的。Ars Technica写道:
代码签名将可通过密码验证的身份与代码集合联系起来,并确保检测到对该代码的任何修改。对所涉及的各方不作任何保证。例如,如果您下载一个由 Acme Inc. 签名的应用程序,您无法证明任何有关它的内容,只能证明它来自您上次从其网站下载某些内容时声称是 Acme Inc. 的同一实体。
这个例子实际上从消费者的角度突出了该技术最有用的应用。今天在升级 Mac OS X 应用程序时 [在 10.4 Tiger, AvB],经常会提示用户重新验证该应用程序是否可以访问 Keychain 以检索用户名和密码。这看起来是一个很好的安全功能,但它真正做的只是训练 Mac 用户在每次出现时盲目点击“始终允许”。真的,普通用户会怎么做,通过反汇编程序运行可执行文件并手动验证代码是否安全?
另一方面,签名的应用程序可以在数学上证明它确实是您过去表示信任的同一供应商的同一应用程序的新版本。结果是要求您确认选择的对话框结束,您无法通过合理方式验证其安全性。
对于 10.5 Leopard 中的防火墙,Apple解释说:
当您将应用程序添加到此列表时,Mac OS X 会对该应用程序进行数字签名(如果尚未签名)。如果应用程序稍后被修改,系统将提示您允许或拒绝传入的网络连接。大多数应用程序不会自行修改,这是一项通知您更改的安全功能。
[..]
已由系统信任的证书颁发机构(出于代码签名的目的)进行数字签名的不在列表中的所有应用程序都允许接收传入连接。Leopard 中的每个 Apple 应用程序都经过 Apple 签名并允许接收传入连接。如果您希望拒绝经过数字签名的应用程序,您应该首先将其添加到列表中,然后明确拒绝它。
在 10.6 Snow Leopard 中,后者更加明确(并且可以禁用)为“自动允许签名软件接收传入连接。允许由有效证书颁发机构签名的软件提供从网络访问的服务”。

(在 10.6 中,10.5.1 选项“允许所有传入连接”、“仅允许基本服务”和“设置特定服务和应用程序的访问权限”已修改为“阻止所有传入连接”或列表的选项允许的应用程序和选项“自动允许签名软件接收传入连接”和“启用隐身模式”。在10.5.1 更新之前,“仅允许基本服务”实际上被称为“阻止所有传入连接”。)
对于以某种方式破坏了原始签名的(Apple)应用程序,此临时签名可能以某种方式无法持久化,并且已知会导致configd、mDNSResponder 和 racoon 出现问题。
| 归档时间: |
|
| 查看次数: |
8048 次 |
| 最近记录: |