Какие неприятности или реальные проблемы могут возникнуть при нарушении цифровой подписи приложения Mac?
Приложения на Mac могут иметь цифровую подпись. Когда подпись как-то сломана, я знаю, что некоторые приложения могут заметить это. Но я не знаю, в каких деталях это будет просто раздражение или действительно сломает вещи:
Брандмауэр OS X может быть не в состоянии правильно установить специальную подпись, из-за чего неоднократно запрашивается «Хотите, чтобы приложение« [..] »принимало входящие сетевые подключения?»
Приложения, разрешенные Родительским контролем, могут больше не работать?
Доступ к брелку может быть нарушен?
Некоторые говорят, что обновление программного обеспечения Apple может произойти сбой. Если это правда, то мне интересно, действительно ли это зависит от сигнатуры подписи кода или будет вызвано каким-то несовпадающим хешем для всего приложения или информацией из файлов спецификации .
Более подробная информация ниже.
Детали подписи кода могут быть показаны с помощью:
codesign --display -vv /Applications/iTunes.app/
... что приведет к следующему (но не предупредит об изменениях):
[..]
CDHash=86828a2d631dbfd417600c458b740cdcd12b13e7
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
[..]
Подпись может быть проверена с помощью:
codesign --verify -vv /Applications/iTunes.app/
Что даст:
/Applications/iTunes.app/: valid on disk
/Applications/iTunes.app/: satisfies its Designated Requirement
... или (даже при простом добавлении дополнительного файла в папку приложения ./Contents/Resources):
/Applications/iTunes.app/: a sealed resource is missing or invalid
... или (может быть, хуже, чем вышеупомянутое сообщение):
/Applications/iTunes.app/: code or signature modified
Подписание кода восходит к OS 9 или более ранней версии, но текущая реализация была представлена в 10.5 Leopard. Ars Technica пишет :
Подписание кода связывает криптографически проверяемую идентичность с набором кода и гарантирует, что обнаружены любые изменения в этом коде. О сторонах не делается никаких гарантий. Например, если вы загружаете приложение, подписанное Acme Inc., вы ничего не можете доказать, за исключением того, что оно было получено от того же лица, которое претендует на статус Acme Inc., когда вы в последний раз загружали что-либо с их веб-сайта.
Этот пример показывает наиболее полезное применение технологии с точки зрения потребителя. При обновлении приложения Mac OS X сегодня [в 10.4 Tiger, AvB] пользователю часто предлагается повторно подтвердить, что этому приложению разрешен доступ к связке ключей для получения имен пользователей и паролей. Это похоже на хорошую функцию безопасности, но все, что она на самом деле делает - это обучает пользователей Mac слепо нажимать «Всегда разрешать» каждый раз, когда оно появляется. И действительно, что обычный пользователь собирается сделать, запустить исполняемый файл через дизассемблер и вручную проверить, что код безопасен?
Подписанное приложение, с другой стороны, может математически доказать, что это действительно новая версия того же приложения от того же поставщика, которому вы выражали доверие в прошлом. Результатом является завершение диалоговых окон с просьбой подтвердить выбор, безопасность которого у вас нет разумного способа проверить.
Для брандмауэра в 10.5 Leopard Apple объясняет :
Когда вы добавляете приложение в этот список, Mac OS X ставит цифровую подпись на приложение (если оно еще не было подписано). Если приложение будет изменено позже, вам будет предложено разрешить или запретить входящие сетевые подключения к нему. Большинство приложений не изменяют себя, и это функция безопасности, которая уведомляет вас об изменениях.
[..]
Все приложения, отсутствующие в списке и имеющие цифровую подпись центра сертификации, которому доверяет система (для подписи кода), могут принимать входящие соединения. Каждое приложение Apple в Leopard подписано Apple и может принимать входящие соединения. Если вы хотите отклонить приложение с цифровой подписью, вы должны сначала добавить его в список, а затем явно отклонить.
В 10.6 Snow Leopard последнее становится более явным (и может быть отключено) как «Автоматически разрешать подписанному программному обеспечению принимать входящие соединения. Позволяет программному обеспечению, подписанному действующим центром сертификации, предоставлять услуги, доступные из сети».
(В 10.6 параметры 10.5.1 «Разрешить все входящие подключения», «Разрешить только основные службы» и «Установить доступ для определенных служб и приложений» были изменены на выбор «Блокировать все входящие подключения» или список). разрешенных приложений и параметров «Автоматически разрешать подписанному программному обеспечению принимать входящие соединения» и «Включить скрытый режим». До обновления 10.5.1 «Разрешать только основные службы» фактически называлось «Блокировать все входящие подключения».)
Для приложений (Apple), у которых каким-то образом повреждена оригинальная подпись, эта специальная подпись может как-то не сохраняться и, как известно , вызывает проблемы для configd, mDNSResponder и racoon.