Добавьте файл контрольной суммы в мой пакет нотариально заверенных приложений macOS

#checksum #macos-catalina #codesign #notarize

#контрольная сумма #macos-catalina #codesign #нотариально заверить

Вопрос:

Я хотел бы определить, был ли кем-то изменен исполняемый файл моего приложения macOS. Я бы не стал полагаться на Codesign, потому что, как я видел в Интернете, многие приложения были взломаны, даже если они были нотариально заверены Apple. Я знаю, что это не гарантирует максимальную безопасность, но я бы все равно добавил эту пользовательскую защиту.

A) Если я добавлю файл контрольной суммы в папку ресурсов в пакете после того, как приложение было заархивировано (то есть в пакете xcarchive), будет слишком поздно. Приложение не запустится из-за манипуляций. Я получаю сбой с надписью «Причина завершения: кодирование пространства имен, код 0x2».

Б) Если я добавлю или изменю файл контрольной суммы после того, как приложение было нотариально заверено, то же самое, оно не запустится.

C) Если я изменю файл ресурсов контрольной суммы с помощью сценария командной строки на этапе сборки, перед этапом «Запустить копирование ресурсов пакета», контрольная сумма будет неправильной, поскольку исполняемый файл в этот момент имеет другой размер файла и дату изменения файла.

Итак, каков наилучший способ добавить мой собственный файл контрольной суммы в мой пакет приложений? Я запускаю macOS 10.15.6 и XCode 11.5 и компилирую свое 64-разрядное приложение для macOS 10.3 / 10.5.

Комментарии:

1. Даже команды терминала codesign —remove-signature Foo.app и codesign -s «MyIdentity» Foo.app изменяют исполняемый файл (размер файла, контрольную сумму и дату модификации), чтобы я мог позже создать свой файл контрольной суммы…

Ответ №1:

Если я правильно понимаю, вы пытаетесь проверить, что ваше приложение в том виде, в каком вы его отправили? И вы беспокоитесь, что разработки кода недостаточно, поскольку он может быть «взломан»?

Я не верю, что это можно решить с помощью какой-либо контрольной суммы. Все, что может поставить под угрозу разработку кода, также может поставить под угрозу вашу контрольную сумму.

Вместо этого я бы посмотрел на новый Apple Attestation API. Это предназначено для того, чтобы приложение могло проверить, что оно работает на оборудовании Apple, и является версией с кодовым оформлением. (Измененное и подписанное приложение не сможет выполнить это — оно разработано другим ключом)

https://developer.apple.com/documentation/devicecheck

Комментарии:

1. Спасибо, Сеф. Я внедрил проверку Apple CodeSign, и через несколько месяцев никто еще не взломал мое программное обеспечение. Давайте скрестим пальцы. Я знаю, что ничто не идеально и может быть взломано постоянно, но этот метод кажется достаточно надежным.