Перейти к содержимому

Глоссарий

Нотаризация

Подпись говорит, кто сделал файл. Нотаризация говорит, что Apple просмотрела именно этот файл на зловредов и оставила об этом расписку, и в macOS от неё зависит первый запуск.

Нотаризация это автоматическая проверка подписанной программы у Apple, после которой macOS открывает её без остановки.

Что проверяет Apple

Подписанную сборку отправляют в службу Apple, которая просматривает её сама и отвечает обычно за минуты. Исходник при этом никто не читает, и о назначении программы никто не выносит суждения.

Удачная проверка рождает расписку: запись у Apple о том, что именно эта сборка была просмотрена и ничего зловредного в ней не нашли.

Путь туда и обратно

Четыре шага, и дороже всего обходится издателю пропущенный последний из них.

Ничего разговорного здесь нет: весь путь это сборка наверх и ответ обратно вниз.

  1. 1

    Подписать сертификатом разработчика

    Это опознаватель, который Apple выдаёт для раздачи мимо своего магазина, и вместе с ним включают усиленное окружение.

  2. 2

    Отправить сборку наверх

    Служба принимает собранный архив и отвечает журналом, независимо от того, прошла проверка или закончилась отказом.

  3. 3

    Прикрепить расписку

    Ответ прикладывают к самому файлу, чтобы машина без сети тоже могла его прочитать и не гадать.

  4. 4

    Отдавать файл уже с распиской

    Первый запуск тогда сообщает человеку, что программу просмотрели и ничего зловредного в ней не нашли.

Что видит открывающий

Состояние сборки решает всю первую минуту на том Mac, который её ещё ни разу не видел.

Разница тут не между предупреждением и зелёным светом. Это разница между остановкой и обычным запуском.

Состояние сборкиПервый запуск на чужом Mac
Подписана, нотаризована, расписка прикрепленаОткрывается, и строка сообщает, что зловредного не найдено
Подписана, но не нотаризованаОстановлена, и разрешить можно только руками в настройках безопасности
Не подписана вовсеОстановлена там же, а разработчик назван неопознанным

Зачем расписку прикрепляют

Без прикреплённой расписки система при первом запуске спрашивает Apple по сети. Ноутбук без связи ведёт себя тогда ровно так, будто эту сборку никто никогда не смотрел.

Прикрепление кладёт ответ внутрь самого файла, и после этого проверка одинаково работает и в самолёте, и в закрытой сети предприятия.

Чем это не является

Шаг этот молодой, и с ним постоянно путают три вещи постарше, а каждая из трёх обещает совсем другое.

  • Проверкой магазина

    Человек в магазине судит о том, что программа делает, и тратит дни. Служба только просматривает и отвечает за минуты.

  • Подписью

    Подпись идёт первой, и её ставит издатель. Этот шаг идёт следом, и его делает Apple.

  • Приговором навсегда

    Расписку можно отозвать, и сборка, которая открывалась, открываться перестанет.

Где этого нет

Это устройство одной только macOS. В Windows такого шага нет вовсе: тамошние ворота взвешивают подпись вместе с репутацией, которую этот файл успел набрать у других людей.

Дистрибутивы Linux проверяют подпись целого хранилища пакетов, а у файла, скачанного мимо него, сравнимой проверки нет ни от кого.

Чего это не делает

  • Это не разбор того, что программа делает с вами и вашими данными. Просмотр ищет приметы зловреда, а не поведение, которое лично вам не нравится.
  • Это не замена подписи и не следующая её ступень. Неподписанную сборку нотаризовать нельзя вовсе, поэтому эти двое всегда ездят только вместе.
  • Это не касается других настольных систем. У Windows и у Linux ворота свои, и ни одни из них этим шагом не пользуются.
  • Это не решает вопрос навсегда. Расписку можно отозвать, и машина откажет сборке, которая открывалась вчера.

Проверить

Каждая строка здесь это команда, которую вы запустите сами на программе, уже лежащей у вас на Mac.

Прикреплена ли расписка к самому файлу
xcrun stapler validate /Applications/<любая программа>
Что отвечают про неё ворота
spctl --assess --type execute --verbose /Applications/<любая программа>
Включено ли усиленное окружение
codesign --display --verbose=2 /Applications/<любая программа>
Журнал, которым ответила служба
xcrun notarytool log <номер отправки>

Вопросы

Сколько это занимает?
Обычно минуты, изредка дольше. Ответ приходит журналом, и причина отказа, если он случился, написана прямо в нём словами.
Видит ли Apple мой исходник?
Нет, не видит. Служба принимает уже собранный и подписанный архив, а исходник не покидает ту машину, на которой сборку делали.
Что будет на Mac без сети?
Прикреплённая расписка читается прямо из файла и сети не требует. Без неё машине попросту некого спросить, и сборка считается непросмотренной.
Это то же самое, что магазин Apple?
Нет. В магазине есть человек, свои правила и своя раздача, а этот шаг лишь позволяет сборке откуда угодно открыться без вопросов.
Может ли нотаризованная программа оказаться зловредом?
Может, и такие случаи известны. Просмотр автоматический, и расписка существует в том числе затем, чтобы её отозвали, когда что-то найдут позже.

Подпись, на которой всё держится

Пока сборка не подписана, нотаризовать попросту нечего, и вся цепочка доверия начинается именно с подписи издателя.