Temel olarak bu bağlamda ad-hoc imzalama, ikili kodun hiçbir şifreleme kanıtı olmadan imzalandığı anlamına gelir.
Esasen ikili dosyalar, CodeDirectory'nin karmasının imzalama kimliğiyle imzalanan mesaj olduğu CMS (kriptografik bir mesaj) eklenerek imzalanır. Bu, bir yabancının kodun gerçekten de bu kimlik için özel anahtarı tutan biri tarafından imzalandığını doğrulayabileceği anlamına gelir.
Programları çalıştırırken, macOS sistemi bu imzaların geçerli olduğunu ve imzalama kimliğine güvendiğini (varsa) programı çalıştırabildiğini doğrulayabilir. GateKeeper işlevselliğinin temelleri budur.
Geçici olarak imzalanmış ikili dosyalar, böyle bir CMS içermedikleri için büyük ölçüde farklıdır. Bunun yerine, CodeDirectory'nin SHA-1 karma değerini, geçerliliğine ilişkin herhangi bir şifreleme kanıtı olmadan ve doğrulanacak sertifika / kimlik yolu olmadan tutar.
CodeDirectory, uygulamanın yapıldığı çeşitli kod parçaları için karma değerlere sahip olarak belirli bir statik kod örneğini tanımlayan bir nesnedir. Şifreleme imzasını doğrulayarak CodeDirectory'nin çıkarılmasını ve uygulamanın çeşitli kod bitlerinin dizinde saklanan karma değerleriyle eşleşmesini sağlayarak, kodun değiştirilmediğini tespit edebilirsiniz.
Şifreleme kanıtı olmadan bu "sıkıştırılmamış" kontrol normal şekilde yapılamaz.
Bunun yerine geçici imzalı ikili dosyalar, SHA-1 karma değeri, çekirdek içindeki statik güven önbelleğinde depolanan "bilinen iyi" karma değerleri listesiyle karşılaştırılarak denetlenir.
Özünde bu, kendiniz geçici olarak imzaladığınız herhangi bir uygulamaya uygulanan "önemli kısıtlamalar" ın, herhangi bir yerde herhangi bir doğrulama geçmeyeceği anlamına gelir. Temel olarak imzasız ikili ile aynıdır.
Bununla birlikte, Apple iseniz, sıradan bir şekilde kodlanmamış ve bunun yerine çekirdek tarafından açıkça güvenilen uygulamalar oluşturabilirsiniz. Örneğin, Apple, tam oturum açma kimlik doğrulamasının çalışmadığı ve çalışmadığı (veya kullanılamadığı) sistem başlangıcında erken bir aşamada çalıştırıldığında uygulamanın geçici olarak kaldırılmasını istiyorsa, geçici imzalamayı kullanabilir. Bu uygulamalar, sertifika deponuzun barındırılıp kullanılmadığına veya başka bir şeye bakılmaksızın, statik güven önbelleği ile her zaman doğrulanabilir.
Pratikte, geçici imzalı ikili dosyalar oluşturmak yalnızca Apple geliştiricileri için pratik değerdir.
Apple'ın geliştirici bölümünde geçici imzalama ile ilgili küçük belgeleri bulabilirsiniz. Örneğin:
https://developer.apple.com/documentation/security/seccodesignatureflags/kseccodesignatureadhoc
Ancak aynı zamanda kod parçacıklarının codeign yardımcı programının kendi kaynak kodunda ve libsecurity için kaynak kodunda da bulabilirsiniz.