FAQ Hero
Confiance pour la signature de code

Qu’est-ce que la signature de code ?

Qu’est-ce que la signature de code ?

La signature de code consiste à appliquer une signature numérique à un fichier (binaire ou non) de logiciel. Cette signature numérique valide l’identité de l’auteur ou de l’éditeur du logiciel et vérifie que le fichier n’a pas été modifié ou manipulé depuis sa signature. Elle indique également au destinataire du logiciel que le code est digne de confiance. En ce sens, elle joue un rôle essentiel dans la lutte contre les tentatives de compromission visant des systèmes ou des données.

Logiciels à usage interne ou externe, correctifs, tests, développement de produits IoT, environnements informatiques, applications mobiles… les cas d’usage de la signature de code sont nombreux et variés. Outre le code et les logiciels, la signature de code s’applique également aux applications, firmwares, fichiers, messages, scripts, containers et images ainsi qu’au format XML.

Comment fonctionne la signature de code ?

Comme d’autres technologies PKI, la signature de code implique une paire de clés publique/privée, une autorité de certification (AC) et un certificat numérique. Lorsqu’un éditeur signe un logiciel, il crée une sorte d’emballage protecteur autour du logiciel lui-même, du certificat de signature de code et de la signature numérique. Le certificat de signature de code contient l’identité et la clé publique de l’éditeur ainsi que la signature de l’AC confirmant que cette dernière a vérifié l’identité. La signature numérique correspond au hash signé du logiciel à l’aide de la clé privée de l’éditeur. Lors du déploiement du logiciel, l’agent utilisateur vérifie la validité et l’intégrité du certificat (pour déterminer si le logiciel a été modifié depuis la signature). À cette fin, il utilise la clé publique du certificat pour révéler le hash de la signature numérique. Il compare ensuite ce dernier au hash du logiciel qui a été récemment calculé. Si les hashes correspondent, le client ou l’utilisateur a l’assurance que le logiciel n’a pas été manipulé. D’où l’importance de bien gérer les clés privées pour garantir la sécurité dans le cadre de la signature de code. En effet, en cas de vol ou de mauvaise gestion des clés, des cybercriminels peuvent s’en servir pour signer un code malveillant et le transmettre aux systèmes des développeurs ou des clients sous forme de mises à jour.

Pourquoi utiliser la signature de code ?

Les principales plateformes logicielles telles que Java et Microsoft exigent une signature de code pour empêcher la propagation de malwares. Selon les bonnes pratiques de sécurité, il est également recommandé d’utiliser la signature de code afin que les clients ou les utilisateurs ne téléchargent pas de code manipulé ou provenant de sources inconnues. Concrètement, la signature de code permet de démasquer du code maquillé pour ressembler au code ou logiciel de votre entreprise. Sans compter qu’avec un logiciel non signé, les utilisateurs peuvent recevoir des messages d’avertissement. Enfin, lorsque le code est conçu et développé pour un usage interne, la signature de code facilite la traçabilité et le contrôle.

Quels types de logiciels est-il possible de signer ?

Il est possible de signer tout type de fichier (binaire ou non). Petit aperçu non exhaustif :

• Applications logicielles pouvant être téléchargées sur des sites web

• Applications IT internes

• Applications mobiles

• Fichiers XML

• Scripts

• Images de logiciels

• Containers

• Pilotes et utilitaires

• Firmwares

Quelles sont les étapes de la signature de code ?

Tout d’abord, un éditeur de logiciel génère une paire de clés publique/privée. Il obtient ensuite un certificat de signature de code en envoyant une requête CSR ainsi que sa clé publique à une AC. L’AC vérifie l’identité de l’éditeur et authentifie la demande de certificat. En cas de vérification concluante, elle émet le certificat de signature de code qui inclut l’identité de l’éditeur, la clé publique et la signature de l’AC. Cette signature est importante, car elle atteste que l’identité du détenteur du certificat a été authentifiée par un organisme indépendant de confiance. Ainsi, le certificat de signature de code confirme non seulement l’identité de l’éditeur, mais aussi l’intégrité du logiciel. Lorsque l’éditeur signe le logiciel, il crée une sorte d’emballage protecteur autour du logiciel lui-même, du certificat de signature de code et de la signature numérique.

La signature numérique nécessite également de :

  1. générer un hash ou une représentation cryptographique unique du logiciel à l’aide d’un algorithme de hachage ;
  2. signer le hash avec la clé privée de l’éditeur et un algorithme de signature.

La signature de code peut être soit effectuée manuellement soit automatisée dans le cadre du cycle du développement logiciel, notamment lors d’un processus CI/CD.