12 votes

Dois-je signer moi-même un code source ouvert ?

J'utilise MacOS 10.14 et j'ai rencontré un problème lorsque j'ai essayé d'installer un plugin open source pour Vim que j'ai trouvé sur Github. J'ai téléchargé le code source et l'ai compilé moi-même, ce qui a bien fonctionné, mais lorsque je l'ai exécuté, l'exécution a été interrompue en raison du message "Code signature [of executable] not valid for use in process".

Cela m'a donné beaucoup de questions auxquelles je n'arrive pas à répondre :

Je pourrais aussi le signer moi-même, mais cela ne ruinerait-il pas l'objectif de la signature du code ? Y a-t-il une différence qualitative entre la signature de code depuis Internet et l'autorisation d'applications de développeurs non identifiés dans la boîte de dialogue "Cette application a été téléchargée depuis Internet" ?

Si je ne le fais pas, à qui revient la "responsabilité" de signer ? Le responsable du référentiel ? Les contributeurs ? Apple s'attend-elle à ce que les développeurs de logiciels libres aient toujours un identifiant Apple Developer ID ? Ou ai-je mal compris l'objectif de la signature du code ?

Edit :

Pour clarifier, ma question est de savoir comment traiter le code source non signé que je compile moi-même, car je ne m'attends pas à ce que les contributeurs soient toujours capables de signer leur code, ou s'en souviennent, surtout lorsqu'il s'agit de petites contributions à des projets open source comptant de nombreux contributeurs.

11voto

Graham Miln Points 39606

Signature de code ad hoc

Pour les applications tierces et les binaires que vous compilez vous-même, et qui exiger la signature du code, utilisez un signature de code ad hoc .

  • Je suppose que l'application ne fonctionnera pas sans signature ;
  • Je suppose que l'application ne sera pas distribuée ;
  • Je suppose que vous ne vous souciez pas de la validité de l'identité de la signature.

Une signature ad hoc ne fournit pas d'avantages fiables en matière de sécurité. Elle peut être utilisée pour déterminer si l'application a été modifiée et elle peut être utilisée pour appliquer des restrictions de sécurité, telles que des droits, à une application.

Une signature ad-hoc sera validée contre codesign mais pas spctl . Cela peut être important ou non selon le binaire à signer. Pour les applications et les exécutables, il est peu probable que cela ait de l'importance car spctl n'est pas exécuté sur les binaires créés localement.

Pourquoi Code Sign ?

En ce qui concerne la question affinée :

Comment dois-je traiter le code source non signé que je compile moi-même, puisque je ne m'attends pas à ce que les contributeurs puissent toujours, ou se souviennent de, signer leur code, en particulier lorsqu'il s'agit de petites contributions à des projets open source comptant de nombreux contributeurs.

Pour la plupart des applications auto-compilées, la signature du code n'est pas nécessaire. Cela suppose que vous ayez confiance dans le code de l'application. Sous MacOS, vous pouvez ouvrir les applications non fiables à partir du Finder, voir le site Web d'Apple. Ouvrez une application d'un développeur non identifié. .

Si vous ne faites pas confiance au code ou aux développeurs, ne compilez pas et n'exécutez pas l'application.

Votre responsabilité

Le fournisseur du code source n'a pas la responsabilité ou l'obligation de fournir des binaires pré-compilés signés. Étant donné qu'il s'agit d'un logiciel auto-compilé, toute signature de code est votre choix et votre responsabilité.

  • Apple exiger les soumissions à leurs App Stores pour être signées par un code.

  • Apple demande les développeurs hors App Stores signent leur code, mais ce n'est pas encore obligatoire.

Dans les deux cas, seuls les binaires finaux sont signés. Le code source original et les ressources ne sont pas signés.

Le code source n'est pas signé

Le code source lui-même ne peut pas être signé de manière significative pour MacOS. Les fichiers sources et le code peuvent être signés numériquement, comme n'importe quel autre fichier, mais cela n'a aucun impact sur la façon dont l'application ou le binaire résultant est traité par MacOS.

Comment signer ad hoc le code d'une application Mac

Pour signer en code une application sous MacOS avec une signature ad hoc, définissez l'identité -s pour - :

codesign --force -s - </path/to/application>

Toutes les autres règles, exigences, et permutations de la codesign restent les mêmes.

Le drapeau --force est utilisé ici pour écraser toute signature existante.

Vous devrez peut-être ajouter le --deep à la codesign pour signer les sous-ressources telles que les frameworks et les services intégrés.

6voto

Jose Chavez Points 645

Signer le programme vous-même ne ruine pas l'objectif de la signature du code. L'objectif général de la signature de code est de permettre de vérifier que le programme est une copie non modifiée qui a été créée à l'origine par une entité spécifique (personne ou société). Lorsque vous signez vous-même un programme destiné à être exécuté sur votre ordinateur, vous permettez au système de vérifier que c'est bien vous qui avez créé le binaire et qu'il n'a pas été modifié par d'autres.

La différence qualitative entre le fait de signer soi-même le binaire de l'application et le fait d'autoriser les applications de développeurs non identifiés dans GateKeeper est que, dans le premier cas, vous autorisez l'exécution d'une seule application spécifique, alors que dans le second, vous ouvrez la possibilité d'ouvrir de nombreuses applications différentes en faisant simplement un clic droit dessus et en choisissant Ouvrir. C'est-à-dire qu'il est plus restrictif et donc un peu plus "sûr" de signer vous-même le programme spécifique.

La responsabilité de la signature vous incombe entièrement. Le développeur open source ne peut pas signer le code source - il est seulement possible de signer les binaires compilés. Comme vous produisez vous-même les binaires compilés, il vous incombe de les signer.

Vous pouvez créer un compte de développeur sur le site web d'Apple qui vous permettra de créer un certificat qui pourra être utilisé pour la signature. Si vous êtes un développeur et que vous compilez régulièrement des binaires pour les exécuter sur des Macs, c'est la meilleure façon de procéder. S'il s'agit d'une opération ponctuelle que vous ne ferez probablement plus jamais, il est probablement exagéré de passer par ce processus. A CHACUN SON AVIS.

Les autres réponses à votre question ici recommandent d'utiliser la signature ad hoc pour votre binaire. Cela ne fonctionnera pas. Vous devrez générer une signature valide pour que le binaire fonctionne avec GateKeeper dans sa configuration la plus sécurisée.

0voto

Douglas Points 10417

Dois-je signer moi-même un code source ouvert ?

Si vous n'êtes pas le développeur, alors non.

Signature du code, en bref, est une méthode pour dire que vous (le développeur) êtes celui que vous prétendez être et que le code n'a pas changé depuis votre dernière signature.

Y a-t-il une différence qualitative dans la signature de code à partir d'Internet ? et l'autorisation d'applications de développeurs non identifiés dans la boîte de dialogue "Cette application a été Cette application a été téléchargée depuis l'internet" ?

On dirait que vous confondez la signature de code (ce qui est requis par les développeurs pour publier des applications sur l'App Store) et la signature de code. Gatekeeper (ce qui protège votre Mac de l'installation de logiciels provenant de développeurs non identifiés).

Si vous autorisez votre Mac à installer des logiciels provenant de l'App Store et de développeurs identifiés, vous obtiendrez toujours la fenêtre contextuelle vous avertissant qu'un logiciel va être installé.

Et s'il s'agit d'un développeur non identifié, vous obtiendrez la même fenêtre contextuelle avec une "icône d'avertissement".

Vous pouvez toujours installer le logiciel. Il s'agit simplement d'un mécanisme qui force l'interaction de l'utilisateur pour installer réellement le logiciel, vous offrant ainsi une couche de sécurité contre les logiciels malveillants auto-installés.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X