Signature d'une application

22:38 modifié dans API AppKit #1
Bonjour à  tous,

Je remarque que pas mal d'applications (toutes?) made in Apple ont un code signature (folder "_CodeSignature" dans le bundle).
Et là  je vais vous poser une question con que vous avez sans doute senti venir : à  quoi qu'ça sert?  ???
Mis à  part signer son Application et donc, si je ne me trompe pas, empêcher une modification du binaire?

J'aimerai donc plus d'infos sur le pourquoi qu'il font ça, et aussi comment le faire.

Merci  :D

Réponses

  • zoczoc Membre
    septembre 2009 modifié #2
    Je suppose que tu as déjà  remarqué que quand tu mets à  jour une application accédant au trousseau, le système te redemande si la nouvelle version de cette application peut toujours y accéder.

    Et bien, quand tu as une application signée et que tu la mets à  jour et la signe avec le certificat, le système sait que c'est bien le développeur original qui fournit la mise à  jour et donc autorise implicitement l'accès au trousseau.

    Pour l'instant c'est la seule fonctionnalité documentée de la signature de code (enfin j'ai pas lu en détail les nouveautés de SL à  ce sujet, s'il y en a), mais on pourrait imaginer d'autres choses, même jusqu'à  aller vers un système comme sur iPhone ou une application ne peut même plus être lancée si elle n'est pas signée par un certificat obtenu auprès d'Apple.

    Il y a peu de chance que cela arrive, vu que ça tuerai une grosse partie du marché du freeware/shareware, mais c'est techniquement possible.

    pour l'instant, il est tout à  fait possible de signer ses applications avec un certificat autogénéré, il y a de la documentation là  dessus (chercher "codesign" dans l'aide de XCode). Il semble même que XCode 3.2 dispose d'options (dans l'onglet build) pour signer des applications mac automatiquement.

  • CéroceCéroce Membre, Modérateur
    septembre 2009 modifié #3
    dans 1254322973:

    Il y a peu de chance que cela arrive, vu que ça tuerai une grosse partie du marché du freeware/shareware, mais c'est techniquement possible.


    Non, pas forcément. Par exemple, aujourd'hui, chaque Mà J de mon appli est signée, ce qui est nécessaire pour les Mà J automatiques par Sparkle.

    P.S.: Il n'existait pas effectivement un système pour signer ses applis ? Il me semble avoir lu ça quelque part dans la doc, peut-être le chapitre qui concernait le déploiement des .dmg.
  • zoczoc Membre
    septembre 2009 modifié #4
    dans 1254331533:

    dans 1254322973:

    Il y a peu de chance que cela arrive, vu que ça tuerai une grosse partie du marché du freeware/shareware, mais c'est techniquement possible.


    Non, pas forcément. Par exemple, aujourd'hui, chaque Mà J de mon appli est signée, ce qui est nécessaire pour les Mà J automatiques par Sparkle.

    Je voulais dire qu'il y a peu de chance qu'Apple oblige un jour les développeurs à  signer les applications avec un certificat fourni par Apple contre monnaie sonnante et trébuchante, comme c'est le cas sur iPhone.

    Sinon, la doc est par ici.


    Edit: Bon, je confirme, XCode peut signer lui même automatiquement les applications. J'ai généré un certificat autosigné comme préconisé dans le document ci-dessus, puis j'ai sélectionné ce certificat dans "Code Signing Identity" de la section "Code Signing" de l'onglet "Build" des propriétés de mon application. A partir de ce moment, XCode signe l'application à  chaque compilation.
  • AliGatorAliGator Membre, Modérateur
    22:38 modifié #5
    Donc Xcode peut signer les applis Mac comme il le fait (et l'impose) avec les applis iPhone donc.
    Sauf que pour les applis iPhone c'est obligé de les signer (avec un certificat autogénéré aussi) pour pouvoir mettre l'appli sur l'iPhone. Alors que sur Mac tu peux les signer... ou pas ;)
  • 22:38 modifié #6
    mais en aucun cas cela protège l'application d'une possible attaque terroriste donc  ::)
  • AliGatorAliGator Membre, Modérateur
    22:38 modifié #7
    Tu veux dire la protéger contre une bombe nucléaire qu'on enverrait sur ton appli ? ;D
  • 22:38 modifié #8
    dans 1254348325:

    Tu veux dire la protéger contre une bombe nucléaire qu'on enverrait sur ton appli ? ;D

    Ou plutôt d'un patching qui modifierait le binaire  ;D
  • CéroceCéroce Membre, Modérateur
    22:38 modifié #9
    dans 1254339499:

    Bon, je confirme, XCode peut signer lui même automatiquement les applications. J'ai généré un certificat autosigné comme préconisé dans le document ci-dessus, puis j'ai sélectionné ce certificat dans "Code Signing Identity" de la section "Code Signing" de l'onglet "Build" des propriétés de mon application. A partir de ce moment, XCode signe l'application à  chaque compilation.


    Merci pour l'info, zoc.
    Je n'ai pas encore eu le courage de retrouver la doc et d'implémenter tout ça, pourtant ça peut être un bon moyen d'éviter qu'on ne vienne patcher mon code... j'attends qu'on commence à  pirater mon appli pour m'y mettre !
  • zoczoc Membre
    22:38 modifié #10
    dans 1254378166:

    Je n'ai pas encore eu le courage de retrouver la doc et d'implémenter tout ça, pourtant ça peut être un bon moyen d'éviter qu'on ne vienne patcher mon code... j'attends qu'on commence à  pirater mon appli pour m'y mettre !

    Ouais, enfin, en même temps, je me suis amusé à  modifier le fichier Info.plist d'une de mes applications signées. Si l'utilitaire "codesign" détecte bien la modification, l'appli se lance sans aucun avertissement de la part de l'OS... Alors peut-être que j'ai raté un paramètre quelque part, mais en l'état avec la configuration de base, signer une application n'empêchera pas sa modification...
Connectez-vous ou Inscrivez-vous pour répondre.