SOLUTIONS D’IDENTITÉ D’UTILISATEUR
Image
motif hexagonal violet

La signature de code est le processus de signature numérique de fichiers et de scripts à l’aide d’un outil de signature et d’un certificat numérique.Ce processus est basé sur une technologie appelée infrastructure à clé publique (PKI).

Le Code Signing nécessite un outil de signature dédié tel que SignTool de Microsoft, Jarsigner de Java ou même OpenSSL selon le type de fichier à signer. La signature elle-même est une opération cryptographique qui lie le contenu du fichier à un certificat numérique.

Le Code Signing protège votre entreprise, vos partenaires et vos utilisateurs finaux contre la falsification de logiciels lors du téléchargement de fichiers de programmes exécutables, en particulier ceux provenant de voies non sécurisées telles qu’Internet. En tant que fournisseur de solutions de signature de code, Entrust peut vous aider à mettre en œuvre des solutions de signature de code efficaces et de haute sécurité qui protègent votre entreprise et vos clients contre les attaques qui falsifient ou modifient les applications.

Quel est l’objectif du Code Signing numérique ?

Le Code Signing numérique repose sur deux raisons principales :

  1. Fournir aux utilisateurs l’identité de l’organisation qui publie le fichier signé
  2. Fournir un moyen de vérifier l’intégrité du fichier, c’est-à-dire s’assurer qu’il n’a pas été corrompu ou altéré de manière malveillante depuis sa signature

Que sont les certificats Code Signing ?

Les certificats Code Signing sont utilisés par les développeurs de logiciels pour signer numériquement les applications, les pilotes, les exécutables et les programmes logiciels. Cela permet de vérifier pour les utilisateurs finaux que le code n’a pas été compromis ou piraté par un tiers. Afin de lier les clés publiques à leur utilisateur associé (propriétaire de la clé privée), les infrastructures à clé publique (ICP) utilisent des certificats numériques.

Meilleures pratiques pour le Code Signing

Les meilleures pratiques pour les certificats Code Signing sont les suivantes :

  • contrôler l’accès aux clés privées
  • protéger les clés privées à l’aide d’un module de sécurité matériel (HSM) FIPS-140-2 de niveau 3
  • horodater le code
  • comprendre la différence entre la signature de test et la signature de version
  • authentifier le code à signer
  • répartir le risque sur plusieurs certificats
  • révoquer les certificats compromis

Entrust offre une gamme complète de certificats Code Signing et une méthode complète pour les gérer, y compris les certificats TLS/SSL, les certificats de messagerie sécurisée, les certificats de signature de documents et les certificats de périphériques mobiles.

Comment fonctionne le Code Signing ?

Pour appliquer le Code Signing, l’éditeur du logiciel doit générer une paire de clés publiques privées et soumettre la clé publique à une autorité de certification, ainsi qu’une demande d’émission d’un certificat Code Signing. L’autorité de certification vérifie l’identité de l’éditeur de logiciels et authentifie la demande de certificat signée numériquement de l’éditeur. Une fois que ce processus d’approbation et de vérification des clés est terminé avec succès, l’autorité de certification regroupe l’identité de l’éditeur avec la clé publique et signe le regroupement. Le certificat de signature de code est ainsi créé.

illustration de la signature de code

Pour en savoir plus sur la mise en application de la signature de code, consultez ce livre blanc.

Méthodes de signature numérique

Diverses plateformes d’application prennent en charge le Code Signing et fournissent différents outils pour effectuer la signature. Vous trouverez ci-dessous une liste des types de signature de code les plus courants :

  • Adobe AIR
  • Bibliothèque des développeurs Apple Mac OS X
  • Firefox XPI
  • Java
  • Microsoft

Étapes pour les utilisateurs finaux

Il existe cinq étapes simples que les utilisateurs doivent suivre pour déterminer si un logiciel est digne de confiance :

  1. Vérifiez si vous aviez l’intention d’installer le logiciel.
  2. Vérifiez le nom du fichier pour voir s’il indique le logiciel que vous aviez prévu d’installer. Dans l’exemple précédent, l’utilisateur installe Adobe Reader 10, ce que le nom semble indiquer.
  3. Vérifiez le nom de l’éditeur pour voir s’il correspond à celui qui, selon vous, a écrit le logiciel. Cela peut être difficile car le site de téléchargement du logiciel peut être différent du site de l’éditeur.
  4. Vérifiez le certificat Code Signing pour voir si le nom de l’éditeur figure dans le certificat.
  5. Vérifiez si le certificat a été émis par une autorité de certification publiquement reconnue.

Caractéristiques du Code Signing

Les certificats Organization Validation (OV) affichent l’entreprise et le lieu sur le certificat. Ils ne prennent pas en charge la signature en mode kernel de Windows. Les certificats Extended Validation (EV) affichent la juridiction et le type d’entreprise en plus de l’organisation et du lieu. Les certificats VE facilitent également la signature en mode kernel de Windows pour Vista, Windows 7, Windows 8, Windows 8.1 et Windows 10. Le choix de la solution de certificat Code Signing qui convient le mieux aux besoins de votre entreprise est compliqué, mais Entrust est là pour vous aider.

Solutions Code Signing

La gamme de solutions Code Signing d’Entrust associe les modules matériels de sécurité (HSM) nShield inviolables à la solution Code Signing Gateway d’Entrust Professional Services. La passerelle de signature de code gère le flux de travail d’autorisation, accepte les demandes, notifie les approbateurs par courrier électronique, gère les délais, confirme les approbations, enregistre l’activité et livre le code signé à la zone de transit. La solution utilise les HSM Entrust nShield et la racine de confiance - sécurisant toutes les clés de signature dans un HSM certifié FIPS 140-2. Ainsi, la perte potentielle de clés de signature très importantes - les clés de l’authenticité et de l’intégrité de votre code - est évitée. Les clients peuvent ainsi signer leur propre code logiciel. Les caractéristiques comprennent :

  • Filtre smartscreen de Microsoft
  • Extensions tierces
  • Extensions illimitées
  • Horodatage
  • Statut d’éditeur identifié
  • Réduction des fenêtres d’avertissement

Les solutions Code Signing Entrust sont appuyées par notre vaste expertise des meilleures pratiques et des normes de diligence en matière de signature de code.

Comment le Code Signing fournit-il l’identité de l’organisation qui publie le fichier signé ?

Une signature numérique crée un lien cryptographique entre un fichier et un certificat numérique, ce dernier représentant une organisation. Vous pouvez considérer le certificat comme un tampon en caoutchouc numérisé ; il contient des détails sur l’organisation tels que son nom légal, son adresse e-mail, son adresse physique et son pays. Le Code Signing correspond donc à l’apposition d’un tampon numérique sur le code, qui affichera les coordonnées de l’organisation.

Les détails d’une signature de code peuvent être vérifiés chaque fois que le fichier signé est ouvert. Dans la plupart des cas, cela est fait automatiquement par les systèmes d’exploitation, en vous indiquant le nom de l’organisation contenu dans le certificat utilisé pour la signature.

Invite de contrôle de compte d’utilisateur

Comment le Code Signing fournit-il un moyen de vérifier l’intégrité du fichier ?

Chaque signature de code est créée en fonction du contenu du fichier. Sans entrer dans les détails techniques, un outil de signature calculera une version condensée du fichier à signer (nous appelons cela le hachage) et signera cette version condensée à l’aide du certificat numérique fourni. Ce hachage signé est ensuite intégré au fichier à un endroit dédié à l’hébergement des signatures numériques.

Une fois que vous avez commencé à distribuer le fichier signé, les systèmes d’exploitation et les applications concernées détecteront la présence de la signature. Ils calculeront automatiquement le hachage du fichier (sans inclure le hachage signé dans le calcul) et le compareront au hachage signé intégré au fichier. S’ils sont identiques, la vérification est réussie. Si le hachage calculé est différent du hachage signé, la vérification échoue. Cet échec signifie que le contenu du fichier a été modifié après que la signature a été effectuée (à la suite d’une erreur ou d’une intention malveillante).

La fiabilité de ce mécanisme repose sur la force de l’algorithme utilisé pour calculer le hachage, sachant que plus le hachage est long, mieux c’est. L’une des normes actuellement utilisées est SHA-256, un algorithme qui produit des hachages de 256 bits.

Quels sont les avantages du Code Signing ?

Le Code Signing numérique présente plusieurs avantages :

  • Vous augmentez la confiance des utilisateurs dans votre logiciel. Le code signé prouve non seulement que le fichier appartient à l’organisation attendue, mais garantit également qu’il n’a pas été falsifié (pour injecter des logiciels malveillants, par exemple).
  • Vous améliorez votre réputation en tant que développeur de logiciels. Plus vous publierez de logiciels signés, meilleure sera votre réputation. Par exemple, le code Microsoft signe son logiciel pour s’assurer que ses clients téléchargent les bons fichiers. Les logiciels signés sont également utiles aux antivirus et aux détecteurs de logiciels malveillants. Si vous signez votre logiciel, ils pourront signaler les versions suspectes et non signées de votre logiciel.
  • Vous évitez les avertissements et les blocages des systèmes d’exploitation. Ils attendent en effet de tous les éditeurs de logiciels qu’ils signent leurs fichiers exécutables. Si vous publiez un logiciel non signé et que vos utilisateurs le lancent, il y a de fortes chances que le système d’exploitation affiche un message d’avertissement. MacOS est connu pour refuser de lancer des fichiers non signés, obligeant l’utilisateur à contourner la sécurité pour procéder à l’installation.

Invite de message d’avertissement

Un message d’avertissement pour l’installation de logiciels non signés sur Microsoft Windows 10.

Blocage de message d’avertissement

Un message de blocage pour l’installation de logiciels non signés sur MacOS.

Pour les appareils IoT utilisant un micrologiciel, l’un des meilleurs moyens d’assurer des mises à jour sûres consiste à créer votre micrologiciel en n’acceptant que les fichiers mis à jour qui sont signés à l’aide de vos certificats Code Signing internes (privés).

Quelle est la différence entre le Code Signing public et privé ?

Les certificats Code Signing sont émis par des autorités de certification (AC), qui sont des moteurs d’émission de certificats. La plupart des organisations possèdent une ou plusieurs AC « privées » (internes) et peuvent émettre toutes sortes de certificats numériques, y compris des certificats de signature de code. Cependant, les signatures générées avec ces certificats ne sont fiables que dans l’environnement interne de l’organisation.

Bien que cela soit parfait pour de nombreux cas d’utilisation impliquant des applications internes et l’IoT, l’utilisation d’une CA privée ne fonctionne pas lorsque vous prévoyez de distribuer votre code en dehors de votre environnement, où votre CA n’est pas reconnue.

Les certificats Code Signing émis par des CA de confiance publique, comme Entrust, généreront des signatures qui seront reconnues et approuvées par tous les principaux systèmes d’exploitation et applications à l’échelle mondiale. Les organisations d’AC publiques (également appelées simplement AC publiques) telles qu’Entrust respectent des normes strictes d’émission de certificats, doivent se soumettre à des audits réguliers et doivent demander à être approuvées par tous les principaux systèmes d’exploitation ou fournisseurs d’applications tels que Microsoft, Apple, Google ou Mozilla.

Face à un code signé, les systèmes d’exploitation et les applications vérifient la CA émettrice du certificat utilisé pour la signature. Si l’AC émettrice ne figure pas dans sa « liste de confiance » (également appelée magasin racine), la signature ne sera pas approuvée et la vérification échouera. D’où l’importance d’obtenir des certificats de signature de code de confiance publique lors de la publication de logiciels sur Internet.

Quelle est la différence entre le Code Signing OV et EV ?

Alors que les organisations sont libres d’inclure tous les détails qu’elles souhaitent dans leurs certificats Code Signing privés, les certificats publics ne doivent contenir que des informations qui ont été soigneusement vérifiées par la CA publique avant d’émettre les certificats.

Une CA publique peut émettre deux catégories de certificats Code Signing de confiance publique : OV et EV. Ces catégories correspondent au niveau de vérification de votre organisation mis en œuvre par l’AC publique avant l’émission du certificat, ainsi qu’à l’exigence de stockage du certificat (en particulier, pour sa clé privée).

  • OV (Organization Validation) : Il s’agit d’une méthode de validation standard d’une organisation réalisée par les AC. Il s’agit de contrôles de l’entreprise (L’entreprise existe-t-elle ? Est-elle en règle ? Où se trouve-t-elle ?) et d’une vérification de la personne qui demande le certificat au nom de l’organisation (S’agit-il bien d’un employé de l’organisation ?).
  • EV (Extended Validation) : Comme son nom l’indique, il s’agit d’un processus de validation étendu qui nécessite une vérification supplémentaire des détails de l’organisation, ainsi que du demandeur du certificat. L’AC exigera davantage d’informations et de documents, et appellera une ou plusieurs fois l’organisation et le demandeur avant d’émettre le certificat. Le stockage sécurisé est obligatoire pour les certificats de signature de code EV, ce qui signifie que vous aurez besoin d’un jeton USB sécurisé ou d’un module matériel de sécurité (HSM) pour stocker le certificat et sa clé privée.

Entrust peut fournir des jetons USB ou des HSM nShield pour toutes les commandes de Code Signing, qu’il s’agisse de certificats OV ou EV.

En savoir plus sur les HSM Code Signing.

Comment l’horodatage fonctionne-t-il avec un certificat Code Signing ?

Avec le Code Signing, l’horodatage est le processus qui consiste à appliquer un horodatage numérique, qui inclut la date et l’heure exactes, à une signature de code.

L’horodatage est une étape cruciale, mais souvent oubliée de la signature de code. Les signatures ont en effet une date d’expiration, qui correspond à la date d’expiration du certificat de signature de code utilisé pour la signature. Une signature expirée entraînera l’échec de la vérification lorsque le code signé sera lancé, ce qui aura pour conséquence des messages d’avertissement et empêchera même l’exécution du code.

Les certificats privés peuvent avoir une durée de vie très longue (plus de 10 ans) si nécessaire, ce qui est souvent suffisant, car le code signé risque de ne plus être utilisé après une si longue période. Mais les certificats de signature de code publics sont actuellement valables pour un maximum de trois ans, et il y a de fortes chances que votre code soit toujours disponible à la fin de cette période. L’horodatage d’une signature de code lui donnera 9 à 10 ans de validité supplémentaires (en fonction de la période de validité du certificat d’horodatage utilisé). Et vous pouvez réappliquer un nouvel horodatage lorsque l’horodatage actuel est sur le point d’expirer pour prolonger encore la validité de votre signature de code et éviter tout avertissement/blocage.

L’horodatage est également utile si vous devez révoquer votre certificat de signature de code s’il a été compromis. La révocation peut être antidatée à la date et à l’heure auxquelles vous pensez que le certificat a été compromis. Si toutes vos signatures ont été horodatées, alors seules les signatures générées avant la date de révocation resteront valides. Toute signature de code sans horodatage deviendra invalide lorsque le certificat expirera ou sera révoqué.

L’horodatage peut être effectué à l’aide de certificats d’horodatage privés provenant d’une AC interne. Mais pour le code qui doit être partagé en externe, vous devez utiliser un service d’horodatage public, qui sera reconnu et approuvé par tous les principaux systèmes d’exploitation et applications. La plupart, voire la totalité, des AC publiques, y compris Entrust, offrent un service public d’horodatage, disponible via une URL dédiée.