В основному тимчасове підписання в цьому контексті означає, що двійковий файл підписаний без криптографічного підтвердження взагалі.
По суті, двійкові файли зазвичай підписуються додаванням так званої CMS (криптографічного повідомлення), де хеш CodeDirectory є повідомленням, яке підписується особою підпису. Це означає, що сторонній чоловік може перевірити, що код дійсно був підписаний тим, хто тримає приватний ключ для цієї особи.
Під час запуску програм система macOS може перевірити, чи є ці підписи дійсними, і що вона довіряє особі підпису - і, якщо це так, запустіть програму. Це основи функціональності GateKeeper.
Спеціальні підписані бінарні файли сильно відрізняються, оскільки вони не містять такої CMS. Натомість він просто містить хеш-значення SHA-1 CodeDirectory без будь-якого криптографічного підтвердження його дійсності та жодного шляху сертифікатів / ідентифікацій, які можна підтвердити.
CodeDirectory - це об'єкт, який описує конкретний екземпляр статичного коду, маючи значення хешів для різних фрагментів коду, з яких зроблено додаток. Переконуючись у тому, що CodeDirectory не обмежується під час перевірки криптографічного підпису та що різні біти коду програми відповідають хеш-значень, що зберігаються в каталозі, ви можете переконатися, що код не був підроблений.
Без криптографічного доказу цю "безшкодову" перевірку неможливо виконати у звичайному порядку.
Замість спеціальних підписаних бінарних файлів перевіряється порівнянням хеш-значення SHA-1 зі списком "відомих хороших" хеш-значень, що зберігаються в статичному кеш-довірі всередині ядра.
По суті це означає, що "суттєві обмеження", застосовані до будь-якої програми, яку ви спеціально підписуєте, - це те, що вона нікуди не пройде ніякої перевірки. Це в основному те саме, що бінарне, яке не підписується.
Однак якщо ви Apple, ви можете створювати програми, які не кодовані звичайним способом, а натомість ядро явно довіряє їм. Тобто, якщо, наприклад, Apple хоче гарантувати, що програма не буде захищена, коли вона запущена на ранньому етапі запуску системи, коли повна перевірка ідентичності підпису не працює і не працює (або її немає), вони можуть використовувати підписання. Ці програми завжди можуть бути перевірені статичним кешем довіри, незалежно від того, чи є в вашому сховищі сертифікатів чи щось подібне.
На практиці створення розробників спеціальних бінарних файлів має лише практичне значення для розробників Apple.
Ви можете знайти незначну документацію про спеціальне підписання в розділі розробників Apple. Наприклад:
https://developer.apple.com/documentation/security/seccodesignatureflags/kseccodesignatureadhoc
Але ви також можете знайти фрагменти документів у вихідному коді самої утиліти кодування, а також у вихідному коді для забезпечення безпеки.