Come mostrare e verificare le firme dei codici per le app in Mac OS X.

Le applicazioni con firma del codice consentono agli utenti attenti alla sicurezza di verificare il creatore e l'hash di un'app specifica per verificare che non sia stato danneggiato o manomesso. Questo è raramente necessario per gli utenti Mac medi, in particolare quelli che ottengono il loro software dal Mac App Store o da altre fonti attendibili poiché le app sono certificate, ma la verifica della firma digitale di un'app può essere estremamente utile per gli utenti che ottengono app da terze parti fonti.


La verifica della firma del codice è particolarmente importante per coloro che acquistano software e installatori da fonti p2p e distribuite, forse un sito torrent o newsgroup, IRC, ftp pubblico o un'altra risorsa di rete. Per un esempio pratico, diciamo che un utente non può accedere al Mac App Store per qualsiasi motivo, ma ha bisogno di scaricare un'applicazione di installazione OS X e quindi si affida a una fonte di terze parti. Una situazione del genere è quando sarebbe importante sapere e verificare che l'installer non è stato manomesso ed è legittimo proveniente da Apple, e oltre a controllare direttamente l'hash sha1, il modo più semplice per farlo è controllare la firma del codice e la crittografia hash dell'app in questione.

Per iniziare, avvia Terminal, trovato in / Applicazioni / Utility /. Useremo il comando 'codesign' appropriatamente chiamato, completo di -dv e -verbose = 4 flag per mostrare informazioni identificative su qualsiasi applicazione, inclusi il suo tipo hash, il checksum dell'hash e l'autorizzazione alla firma.

La sintassi di base è la seguente:

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

Ad esempio, controlliamo la firma su Terminal.app, che si trova in / Applicazioni / Utility /

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

Quello che stai cercando sono il tipo di hash, l'hash e le voci di autorità. In questo caso il tipo di hash è sha1 e l'autorizzazione firmata è Apple, che è ciò che ti aspetteresti.

Sì, è anche possibile utilizzare la riga di comando per controllare gli hash sha1 o md5 dei programmi di installazione e download delle applicazioni e confrontarli con un'origine legittima, ma ciò non rivelerà la firma del codice ei dettagli del certificato.

Tieni presente che la maggior parte del software firmato da codice che è stato modificato da una parte non autorizzata verrà rifiutata da Gatekeeper in OS X, a meno che Gatekeeper non sia stato disabilitato o eluso in altro modo, ma anche se Gatekeeper è rimasto teoricamente possibile per un goon intraprendente per trovare un in ogni caso, e ovviamente il software che non è stato certificato da uno sviluppatore identificato può comunque essere lanciato attorno a Gatekeeper.

Puoi leggere ulteriori informazioni sulla firma del codice su Wikipedia e sulla guida degli sviluppatori Apple per firmare il codice qui.