Hoe code-handtekeningen voor apps in Mac OS X te tonen en te verifiëren

Met behulp van gecodeerde toepassingen kunnen beveiligingsbewuste gebruikers de maker en hash van een bepaalde app verifiëren om te bevestigen dat deze niet beschadigd is of ermee is geknoeid. Dit is zelden nodig voor gemiddelde Mac-gebruikers, met name degenen die hun software verkrijgen van de Mac App Store of andere vertrouwde bronnen sinds de apps zijn gecertificeerd, maar het verifiëren van de digitale handtekening van een app kan zeer nuttig zijn voor gebruikers die apps van derden ontvangen bronnen.


Het verifiëren van een codehandtekening is vooral belangrijk voor diegenen die software en installatieprogramma's van p2p en gedistribueerde bronnen krijgen, misschien een torrent-site of nieuwsgroepen, IRC, publieke ftp of een andere netwerkbron. Laten we voor een praktisch voorbeeld zeggen dat een gebruiker om welke reden dan ook geen toegang heeft tot de Mac App Store, maar een OS X-installatietoepassing moet downloaden en dus vertrouwt op een externe bron. Een dergelijke situatie is wanneer het belangrijk is om te weten en te verifiëren dat er met het installatieprogramma niet is geknoeid en dat deze legitiem afkomstig is van Apple, en afgezien van het direct checken van sha1 hash, is de eenvoudigste manier om dat te doen het controleren van de codesignatuur en cryptografie hash van de betreffende app.

Start Terminal door te zoeken in / Applications / Utilities /. We zullen de toepasselijk benoemde 'codesign'-opdracht gebruiken, compleet met de -dv en -verbose = 4 vlaggen om identificerende informatie over elke toepassing te tonen, inclusief zijn hash-type, hash-checksum en handtekeningautoriteit.

De basissyntaxis is als volgt:

code sign -dv --verbose=4 /Path/To/Application.app

Laten we bijvoorbeeld de handtekening controleren op Terminal.app, die zich bevindt in / Applications / Utilities /

codesign -dv --verbose=4 /Applications/Utilities/Terminal.app
Executable=/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal
Identifier=com.apple.Terminal
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=5227 flags=0x0(none) hashes=255+3 location=embedded
Platform identifier=1
Hash type=sha1 size=20
CDHash=0941049019f9fa3499333fb5b52b53735b498aed6cde6a23
Signature size=4105
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Info.plist entries=34
TeamIdentifier=not set
Sealed Resources version=2 rules=13 files=996
Internal requirements count=1 size=68

Waar u naar op zoek bent, zijn de hash-typen, hash-records en authority-vermeldingen. In dit geval is het hash-type sha1 en de ondertekende autoriteit is Apple, wat je zou verwachten.

Ja, u kunt ook de opdrachtregel gebruiken om gewoon sha1- of md5-hashes van toepassingsinstallateurs en -downloads te controleren en deze te vergelijken met een legitieme bron, maar dat geeft geen details over de ondertekening van de code en het certificaat.

Houd er rekening mee dat de meeste code-ondertekende software die is aangepast door een niet-geautoriseerde partij door Poortwachter wordt afgewezen in OS X, tenzij Poortwachter is uitgeschakeld of anderszins omzeild, maar zelfs met Gatekeeper is het theoretisch mogelijk voor een ondernemende goon om een eromheen, en natuurlijk kan software die niet is gecertificeerd door een geïdentificeerde ontwikkelaar toch altijd rond Gatekeeper worden gelanceerd.

Je kunt meer lezen over het ondertekenen van code op Wikipedia en de Apple Developer-handleiding over het ondertekenen van code hier.