Mac OS X-Code-Signierung und ausführbare Validierung

8

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:

  1. Welche PKI-Bibliotheken / APIs sind verfügbar, damit eine App ihre eigenen ausführbaren Dateien und Ressourcen validieren kann, die mit dem Codesign-System von Apple signiert wurden?
  2. Verfügen diese Bibliotheken über Quellcode?
  3. Gibt es Sicherheitsbedenken bezüglich der Verwendung der PKI-Bibliotheken, die Apple mit Mac OS X geliefert hat, oder sind sie sicherer zu benutzen als ich denke?
  4. Hat jemand Erfahrung mit solchen Dingen, die sie gerne teilen würden? Gibt es andere Fehler oder Tipps?

Vielen Dank im Voraus für jede Hilfe mit diesem.

    
Bob Murphy 04.12.2012, 03:08
quelle

1 Antwort

1

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 .

    
Bob Murphy 10.01.2013 01:37
quelle

Tags und Links