О Gatekeeper и проверках сертификатов в macOS

Многие из вас наверняка уже видели вот этот пост про “кошмар на улице Эпол”
(Вот его перевод на Хабре)

Вкратце: на волне проблем с серверами обновлений в день выхода апдейта macOS 11 Big Sur у Apple возникли проблемы также с серверами проверки сертификатов разработчиков при запуске приложений на Маках. В итоге приложения на старте жутко тормозили или вообще падали (потому что упс, лажа, система была заточена на то, что сервер может быть недоступен, но не заточена на то, что сервер может отвечать медленно). Что и породило текст со ссылкой выше, где в весьма драматических тонах со ссылками на Столлмана и прочее было рассказано, как Apple все о вас знает, и ваш компьютер больше вам не принадлежит.

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

Справедливости ради также хочу дать ссылку на пост с комментариями о том, почему полный драмы и ссылок на PRISM пост не совсем корректный, и не стоит принимать всю информацию, в нем перечисленную, за чистую монету.

Система проверяет на первом старте (и потом с какой-то вероятностью еще иногда) валидность сертификата разработчика, и отсутствие приложения в базе известных вредоносных приложений. Тут кроется первая неточность статьи — то, что на сервера Apple уходит информация о каждом приложении, которое запускает пользователь. На самом деле на сервере проверяет некий кусок девелоперского сертификата, и если у разработчика несколько приложений, то это один и тот же кусок.

Второй момент — что эти данные пересылаются в открытом виде по HTTP, без какого-либо шифрования. Проверка проводится по OCSP — Online Certificate Status Protocol, открытом проколе, работающем по HTTP. Там есть некая лажа в том, что, используя шифрованный OCSP, можно попасть в бесконечный цикл валидации самого протокола и HTTPS соединения, но вообще да, Apple могла бы как раз напрячься и зашифровать эти данные, чтобы они не попадали неизвестно каким третьим сторонам.

Третье, и у меня пока что нет 100% подтверждения этому (апд: подтвердилось), но информация о запусках приложений и верификации сертификатов не привязана к Apple ID пользователя. Соответственно, месседж статьи о том, как “Apple знает о том, что вы делали у себя дома и какие приложения запускали”, на 99% процентов не соответствует действительности. Apple всячески рандомизирует данные пользователя о геолокации, меняя идентификаторы у себя в бэкенде каждые несколько часов, и, скорей всего, проверка сертификатов по OCSP происходит с фокусом на именно сертификатах, а не на Apple ID, который эти приложения запускает. Короче, как только у меня будет достоверная информация, я дополню. (Но все равно тот факт, что третьи стороны типа провайдера (или СОРМ) могут видеть куски информации о сертификате разработчика, привязанные, например, к IP адресу — лажа Apple, и мы возвращаемся к теме работы этой проверки по HTTP).

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

https://support.apple.com/en-us/HT202491

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