Comment afficher et vérifier les signatures de code pour les applications dans Mac OS X

Les applications signées par code permettent aux utilisateurs soucieux de la sécurité de vérifier le créateur et le hachage d'une application particulière afin de confirmer qu'elle n'a pas été corrompue ou falsifiée. Ceci est rarement nécessaire pour les utilisateurs de Mac moyens, en particulier ceux qui obtiennent leur logiciel du Mac App Store ou d'autres sources approuvées, mais la vérification de la signature numérique d'une application peut s'avérer extrêmement utile pour les utilisateurs recevant des applications tierces. sources.


La vérification d'une signature de code est particulièrement importante pour ceux qui obtiennent des logiciels et des installateurs à partir de sources p2p et distribuées, peut-être un site torrent ou des groupes de discussion, IRC, ftp public ou une autre ressource réseau. Pour un exemple pratique, disons qu'un utilisateur ne peut pas accéder au Mac App Store pour quelque raison que ce soit, mais doit télécharger une application d'installation OS X et s'appuie ainsi sur une source tierce. Une telle situation est quand il serait important de savoir et de vérifier que l'installateur n'a pas été falsifié et provient légitimement d'Apple, et en plus de vérifier directement sha1 hash, la façon la plus simple de le faire est de vérifier la signature de code et cryptographique hash de l'application en question.

Pour commencer, lancez Terminal, dans / Applications / Utilities /. Nous allons utiliser la commande 'codesign', avec les options -dv et -verbose = 4, pour afficher les informations d'identification sur n'importe quelle application, y compris le type de hachage, la somme de contrôle et l'autorité de signature.

La syntaxe de base est la suivante:

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

Par exemple, vérifions la signature sur Terminal.app, situé dans / 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

Ce que vous cherchez sont le type de hachage, le hachage et les entrées d'autorité. Dans ce cas, le type de hachage est sha1 et l'autorité signée est Apple, ce qui est ce que vous attendez.

Oui, vous pouvez également utiliser la ligne de commande pour vérifier simplement les hachages sha1 ou md5 des programmes d'installation et de téléchargement des applications et les comparer à une source légitime, mais cela ne révèlera pas la signature du code et les détails du certificat.

Gardez à l'esprit que la plupart des logiciels signés et modifiés par un tiers non autorisé seront rejetés par Gatekeeper sous OS X, à moins que Gatekeeper ne soit désactivé ou contourné, mais même avec Gatekeeper, il est théoriquement possible qu'un goon entreprenant trouve un bien sûr, et bien sûr, un logiciel qui n'a pas été certifié par un développeur identifié peut toujours être lancé autour de Gatekeeper de toute façon.

Vous pouvez en savoir plus sur la signature de code sur Wikipedia et sur le guide Apple Developer pour la signature de code ici.