Comment ça ? Encore un article sur la signature de code ? En raison de plusieurs cas récents de piratage, nous avons pensé qu’il était dans l’intérêt de tous de revenir sur le sujet afin de clarifier certains éléments sur lesquels un doute pourrait encore planer. Alors, sérieusement, est-il vraiment si important de signer son code ? Revenons aux fondements.
Signer son code consiste à apposer une signature numérique à une application ou à un programme. Ce procédé est l’équivalent numérique de l’emballage d’un produit de consommation en grande surface, comme pour un paquet de Chocapic, par exemple. Lorsque vous cherchez une boîte de céréales au supermarché et que vous tombez sur l’emballage marron avec le chien Pico qui se lèche les babines en s’exclamant « c’est fort en chocolat ! », et tout ça, juste en-dessous du logo Nestlé, vous savez à qui vous avez affaire.
C’est la même chose avec la signature de code. Pour qu’elle soit légitime, une signature de code doit être apposée à l’aide d’un certificat de signature de code. Il garantit à l’utilisateur qui télécharge un programme signé, que celui-ci provient d’un distributeur de logiciel identifié et que le code n’a pas été modifié depuis qu’il a été publié.
CODE NON SIGNÉ
CODE SIGNÉ AVEC UN CERTIFICAT DE SIGNATURE DE CODE
Pour continuer avec l’exemple des Chocapic, les consommateurs qui achètent de la nourriture emballée en magasin ressortent le plus souvent avec une boîte scellée ou pré-emballée qui leur permet d’identifier d’où vient le produit et s’il a été ouvert depuis sa production. Les consommateurs peuvent alors décider s’ils font confiance ou non au contenu de la boîte. Lorsque l’on télécharge un logiciel sur Internet, il est important de recevoir le même niveau de garantie. La signature de code apporte cette garantie et peut se comparer à l’emballage virtuel d’un logiciel distribué sur Internet.
Dans un article récent sur l’importance de signer son code, Linus Hallberg, de GlobalSign, a déclaré :
Vous savez déjà sûrement qu’il est important de signer son code mais cela ne signifie pas forcément que le processus en est moins laborieux.
Comme Linus le souligne, le « labeur » peut être allégé si votre code est signé avec un certificat de signature de code EV qui vous permettra, entre autres, de supprimer les alertes SmartScreen car sa réputation est déjà établie avec SmartScreen. Je vous invite à lire le dernier billet de Linus pour des conseils utiles.
Attention aux fausses signatures de code !
Ce qui devait arriver arriva… Les hackers, constamment à la recherche de quelque chose de nouveau à exploiter pour leur plaisir ou profit ou pour semer le désordre, s’intéressent à présent aux signatures de code pour applications. Les services informatiques doivent être vigilants !
ZD Net a récemment rapporté ceci :
Les chercheurs en sécurité ont observé que les hackers utilisent de plus en plus de certificats de signature de code pour facilement contourner les appareils de sécurité et infecter leurs victimes.
Il semblerait que les hackers cherchent désormais à obtenir des certificats légitimes auprès d’autorités de certification, en utilisant des informations volées à des entreprises, afin de pouvoir signer du code malveillant. Jusque-là, ils se contentaient de voler directement les certificats à des entreprises ou à des développeurs et les détournaient pour signer leur code avec un certificat valide.
En réalité, deux éléments peuvent aider à réduire les risques de contrefaçon. L’autorité de certification qui émet le certificat de signature de code doit tout d’abord avoir mis en place des mesures de sécurité strictes pour les comptes afin de les protéger des accès non-autorisés. D’autre part, son protocole de vérification doit être suffisamment approfondi pour garantir que l’identité de l’acquéreur d’un certificat est légitime. A GlobalSign, par exemple, le processus de vérification pour les certificats de signature de code EV valide l’identité de l’organisation dans sa juridiction d’incorporation. Il établit également l’identité de l’acheteur, de l’administrateur et l’adresse commerciale de l’organisation grâce à des démarches précises et rigoureuses de validation. Il lie, enfin, l’organisation au contrat de souscription. Ce contrat, bénéfique aux parties utilisatrices, aide à renforcer la sécurité de l’Internet.
Le Conseil de sécurité des autorités de certification (CASC) a publié les exigences minimales auxquelles les autorités de certification doivent se conformer pour émettre des certificats de signature de code. Cette publication a notamment été motivée par la volonté d’aider les utilisateurs à s’informer sur l’importance de signer son code mais aussi à prendre les bonnes décisions lorsqu’ils font face à un certificat. Dans leur ensemble, ces recommandations devraient augmenter la fiabilité des plateformes de logiciel et limiter la propagation de malware.
Microsoft a donné l’exemple en adoptant ces recommandations dès leur publication. Le géant exige désormais de toutes les AC qui émettent des certificats de signature de code pour les plateformes Windows de s’y conformer également, et ce, depuis février 2017.
Au-delà des principes de base
Oui, il est essentiel d’obtenir un certificat de signature de code auprès d’une autorité de certification accréditée et réputée qui a mis en place un protocole de vérification rigoureux. Grâce à ce certificat, vous pourrez commencer à apposer des signatures de confiance authentifiées à votre code. Voici quelques informations supplémentaires à garder en tête.
- Lorsque vous signez votre code avec un certificat de signature de code, le certificat numérique est marqué pour le cas d’utilisation spécifique du code signé.
- Lorsqu’une signature numérique est apposée à du code, un sceau d’horodatage peut également être enregistré. Cette option permet de s’assurer que le code signé sera toujours valide, même après l’expiration du certificat. Il ne sera pas nécessaire d’apposer une nouvelle signature, même si le certificat numérique initialement utilisé pour signer le code a expiré, sauf en cas d’ajout ou de modification du code.
Signer son code aide à prouver :
- La source du contenu : signer son code permet de garantir que le logiciel ou l’application provient d’une source déterminée (un développeur ou un signataire). Lorsqu’un logiciel est téléchargé sur Internet, les navigateurs affichent des messages d’alerte informant des dangers encourus lors du téléchargement des données et peuvent également afficher une alerte « éditeur inconnu ». Signer son code permet de supprimer cette alerte et d’indiquer, à la place, le nom de l’éditeur (nom de l’organisation ou du développeur).
- L’intégrité du contenu : signer son code permet de garantir que celui-ci n’a pas été modifié et d’indiquer s’il est fiable pour un cas d’utilisation spécifique. Si le code de l’application ou du logiciel est modifié après avoir été signé, un message signale que la signature n’est plus valide ni fiable. Signer son code est bénéfique pour les utilisateurs qui téléchargent des applications autant que pour les développeurs. Les utilisateurs reçoivent la garantie que le logiciel qu’ils téléchargent provient d’une source vérifiée et peuvent décider de lui faire confiance ou non. Les développeurs peuvent afficher leur marque et protéger leur logiciel contre les modifications indésirables.
Voici les différents niveaux de protection et caractéristiques à retenir entre les deux types de certificats de signature de code :
GlobalSign est considérée comme l’une des autorités de certification leader sur le plan international et offre des services et des solutions PKI pour tous les cas d’utilisation et tous les types d’organisation. Pour davantage d’informations sur la signature de code, je vous invite à lire notre eBook « Introduction à la signature de code », et, comme toujours, à nous contacter.
Ressources complémentaires :