Sådan viser og verificerer du kodesignaturer til apps i Mac OS X

Kode underskrevne applikationer tillader sikkerhedsbevidste brugere at bekræfte skaberen og hash for en bestemt app for at bekræfte, at den ikke er blevet ødelagt eller manipuleret. Dette er sjældent nødvendigt for gennemsnitlige Mac-brugere, især dem, der henter deres software fra Mac App Store eller andre pålidelige kilder, da apps er certificeret, men at verificere en digital signatur af en app kan være yderst hjælpsom for brugere, der får apps fra tredjepart kilder.


Bekræftelse af kode signatur er særlig vigtigt for dem, der får software og installatører fra p2p og distribuerede kilder, måske et torrent-websted eller nyhedsgrupper, IRC, public ftp eller en anden netværksressource. For et praktisk eksempel, lad os sige, at en bruger ikke kan få adgang til Mac App Store uanset årsagen, men skal downloade et OS X-installationsprogram og dermed være afhængig af en tredjeparts kilde. En sådan situation er, når det ville være vigtigt at kende og verificere, at installationsprogrammet ikke er blevet manipuleret og er legitimt fra Apple, og bortset fra at kontrollere sha1 hash direkte, er den nemmeste måde at gøre det på at kontrollere kode signaturen og kryptografien hash af den pågældende app.

For at komme i gang skal du starte Terminal, fundet i / Applications / Utilities /. Vi bruger den behørigt navngivne 'codeign'-kommando, komplet med -dv og -verbose = 4 flag for at vise identificerende oplysninger om ethvert program, herunder det hash-type, hash checksum og signeringsmyndigheden.

Den grundlæggende syntaks er som følger:

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

Lad os f.eks. Undersøge signaturen på Terminal.app, der findes i / Programmer / Hjælpeprogrammer /

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

Hvad du leder efter er hash type, hash og autoritet poster. I dette tilfælde er hash-typen sha1, og den underskrevne myndighed er Apple, hvilket er hvad du ville forvente.

Ja, du kan også bruge kommandolinjen til bare at tjekke sha1 eller md5 hashes af applikationsinstallatører og downloads og sammenligne dem med en legitim kilde, men det afslører ikke kodesignatur- og certifikatoplysningerne.

Husk, at de fleste kode underskrevne software, der er blevet ændret af en uautoriseret part, afvises af Gatekeeper i OS X, medmindre Gatekeeper er blevet deaktiveret eller på anden måde omgået, men selv med Gatekeeper, der er tilbage på det, er teoretisk muligt for en underholdende goon at finde en langt væk, og selvfølgelig kan software, der ikke er certificeret af en identificeret udvikler, altid blive lanceret omkring gatekeeper.

Du kan læse mere om kode underskrift på Wikipedia og på Apple Developer guide for at kode signing her.