Ich arbeite an einer vertikalen Mac-Anwendung, die einen USB-Dongle verwendet, um sicherzustellen, dass die Nutzer dafür bezahlt haben. Es ist teuer genug, und bei genügend Nachfrage, dass "schwarze Hüte" versucht haben, das Dongle-Schema zu knacken, so überprüft die App die ausführbare Datei und Schlüssel-Ressource-Dateien zur Laufzeit, und wenn etwas manipuliert wurde, wird das Programm nicht ausgeführt.
Da PKI (Public Key Infrastructure) -basierte Signaturen in der Mac-Welt immer alltäglicher werden, erwäge ich, zu dieser Laufzeitüberprüfung überzugehen, was den schönen Nebeneffekt hätte, Gate Keeper glücklich zu machen.
>Aber das Interesse von Apple ist sehr verschieden von meinem. Der Fokus liegt darauf, den Benutzer zufrieden zu stellen. Wenn eine App eine falsche Signatur hat, wird Mac OS X den Benutzer einfach fragen, ob er sie trotzdem ausführen möchte. Mein Fokus liegt darauf, Cracker zu vereiteln. Wenn meine App eine falsche Signatur hat, möchte ich einfach nicht, dass sie etwas tut, was für einen Endnutzer nützlich ist.
Ich möchte also, dass meine App zur Laufzeit ihre eigenen ausführbaren Dateien und Ressourcen unter Verwendung der Apple-Signaturen validieren kann.
Nach dem, was ich von den Bibliotheken gelesen habe, die Mac OS X zur Validierung angeboten wurden, geben sie einfach eine "Ja" - oder "Nein" -Antwort auf Anfragen zur Validierung einer ausführbaren Datei. Es fällt mir auf, dass dies für einen "Black Hat" -Angriff in vielerlei Hinsicht anfällig ist - zum Beispiel könnte man Apples Tools einfach durch solche ersetzen, die immer sagen "Ja, das ist gültig", entweder in den Systemverzeichnissen oder durch Ändern der Suchpfad für diese Tools. Daher denke ich, es wäre eine gute Idee, den vollständigen Satz von Signatur-Validierungscodes in meine App zu integrieren.
Ich habe also ein paar Fragen:
Vielen Dank im Voraus für jede Hilfe mit diesem.
Um oben # 1 und # 2 zu beantworten, hat Apple seinen Code zum Erstellen und Verifizieren von digitalen Signaturen als libsecurity_codesign open-source veröffentlicht. Ein Entwickler könnte das also in seine App einbauen, damit es seine eigene Signatur validieren kann.
Alternativ kann die MacOS-Version dieser Bibliothek von einer App verwendet werden - aber die API ist privat, das ist also ein Problem. Es gibt eine kurze Diskussion unter diesem Link .
Tags und Links xcode macos code-signing pki