¿Qué molestias o problemas reales pueden ocurrir cuando se rompe la firma digital de una aplicación Mac?
Las aplicaciones en una Mac se pueden firmar digitalmente. Cuando la firma se rompe de alguna manera, sé que algunas aplicaciones pueden notarlo. Pero no sé con qué detalle serán solo molestias o realmente romperán las cosas:
Es posible que el firewall de OS X no pueda establecer correctamente una firma ad hoc, lo que hace que se le pregunte repetidamente "¿Desea que la aplicación '[..]' acepte conexiones de red entrantes? '
¿Es posible que las aplicaciones permitidas por el Control parental ya no se ejecuten?
¿El acceso al llavero podría estar roto?
Algunos dicen que la actualización del software de Apple podría fallar. Si es cierto, entonces me pregunto si esto realmente depende de la firma de Firma de Código, o sería causado por algún hash no coincidente para toda la aplicación, o la información de los archivos BOM .
Más información de fondo a continuación.
Los detalles de firma de código se pueden mostrar usando:
codesign --display -vv /Applications/iTunes.app/
... que produciría algo como lo siguiente (pero no advertiría sobre modificaciones):
[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]
La firma se puede validar usando:
codesign --verify -vv /Applications/iTunes.app/
Lo que produciría:
/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement
... o (incluso cuando simplemente coloca algún archivo adicional en la carpeta ./Contents/Resources de una aplicación):
/Applications/iTunes.app/: a sealed resource is missing or invalid
... o (quizás peor que el mensaje anterior):
/Applications/iTunes.app/: code or signature modified
La firma de código se remonta a OS 9 o anterior, pero la implementación actual se introdujo en 10.5 Leopard. Ars Technica escribe :
La firma de código vincula una identidad verificable criptográficamente a una colección de código y garantiza que se detecte cualquier modificación a ese código. No se hacen garantías sobre las partes involucradas. Por ejemplo, si descarga una aplicación firmada por Acme Inc., no puede probar nada al respecto, excepto que proviene de la misma entidad que afirma ser Acme Inc. la última vez que descargó algo de su sitio web.
Este ejemplo realmente resalta la aplicación más útil de la tecnología desde la perspectiva del consumidor. Al actualizar una aplicación Mac OS X hoy [en 10.4 Tiger, AvB], a menudo se le pide al usuario que vuelva a verificar que esta aplicación tenga acceso al Llavero para recuperar nombres de usuario y contraseñas. Esto parece una buena característica de seguridad, pero todo lo que realmente hace es capacitar a los usuarios de Mac para que hagan clic ciegamente en "Permitir siempre" cada vez que aparece. Y realmente, ¿qué va a hacer el usuario promedio, ejecutar el ejecutable a través de un desensamblador y verificar manualmente que el código sea seguro?
Una aplicación firmada, por otro lado, puede demostrar matemáticamente que, de hecho, es una nueva versión de la misma aplicación del mismo proveedor por el que expresó confianza en el pasado. El resultado es el final de los cuadros de diálogo que le piden que confirme una elección cuya seguridad no tiene una forma razonable de verificar.
Para el firewall en 10.5 Leopard, Apple explica :
Cuando agrega una aplicación a esta lista, Mac OS X firma digitalmente la aplicación (si aún no se ha firmado). Si la aplicación se modifica posteriormente, se le solicitará que permita o denegue las conexiones de red entrantes. La mayoría de las aplicaciones no se modifican a sí mismas, y esta es una característica de seguridad que le notifica el cambio.
[..]
Todas las aplicaciones que no están en la lista y que han sido firmadas digitalmente por una Autoridad de Certificación en la que confía el sistema (con el propósito de firmar el código) pueden recibir conexiones entrantes. Todas las aplicaciones de Apple en Leopard han sido firmadas por Apple y pueden recibir conexiones entrantes. Si desea rechazar una aplicación firmada digitalmente, primero debe agregarla a la lista y luego rechazarla explícitamente.
En 10.6 Snow Leopard, este último se hace más explícito (y se puede deshabilitar) como "Permitir automáticamente que el software firmado reciba conexiones entrantes. Permite que el software firmado por una autoridad de certificación válida proporcione servicios a los que se accede desde la red".
(En 10.6, las opciones 10.5.1 "Permitir todas las conexiones entrantes", "Permitir solo servicios esenciales" y "Establecer acceso para servicios y aplicaciones específicos" se han actualizado en una opción para "Bloquear todas las conexiones entrantes" o una lista de las aplicaciones y opciones permitidas "Permitir automáticamente que el software firmado reciba conexiones entrantes" y "Habilitar el modo oculto". Antes de la actualización 10.5.1 , "Permitir solo servicios esenciales" en realidad se llamaba "Bloquear todas las conexiones entrantes".
Para las aplicaciones (de Apple) que de alguna manera tienen su firma original rota, esta firma ad hoc podría de alguna manera no ser persistente, y se sabe que causó problemas para configd, mDNSResponder y racoon.