Question

Ok, je dois être bête parce que j'ai déjà lu ceci: http://www.csharp411.com/ net-assembly-faq-part-3-noms-forts-et-signature /

Et je ne comprends toujours pas ...

Supposons que j'ouvre les propriétés de mon projet et que je passe à la section "Signature". puis cliquez sur l'onglet "Signer l'assemblage". et générer un nouvel assemblage avec un mot de passe. Un fichier de clé de nom fort avec l'extension .pfx, avec les clés publique et privée, a été créé et VS signera numériquement mon assemblage lors de la compilation, n'est-ce pas?

Qu'en est-il de la clé privée? Ne devrait pas être privé et moi, le développeur, être le seul à l'avoir? L'assemblage ne devrait-il pas être signé uniquement avec la clé publique?

Quelqu'un peut-il m'expliquer cela? En gros, je veux signer l’assemblage de mon projet et permettre aux utilisateurs de vérifier si cet assemblage a été réellement développé par moi-même, là où je suis le seul à conserver la clé privée (ce que je pense être supposé).

Était-ce utile?

La solution

Vous avez fondamentalement raison.

Vous créez une paire de clés et vous l'utilisez pour la signature. Mais ne livrez pas le fichier pfx (ou snk), il contient des clés publiques et privées et doit être gardé en sécurité.

La clé publique est ajoutée à l'assemblage dans le cadre du processus de signature.

Cette signature est vérifiée lorsqu'un assemblage est chargé dans une application. Les utilisateurs finaux peuvent également vérifier le jeton de clé publique dans le GAC, mais ce n'est pas vraiment un processus pratique. Et vous devez leur dire votre clé à clé publique d’une certaine manière.

Et le tout n’est aussi fiable que votre capacité à garder le fichier de clé confidentiel.

Notez également qu'idéalement, vous ne devriez avoir qu'une clé par entreprise. Si vous ne souhaitez pas le partager avec de nombreux collègues, examinez la signature différée.

Autres conseils

La signature numérique implique de calculer un hachage de votre binaire, puis de chiffrer le hachage généré à l'aide de la clé privée de la paire de clés que vous avez générée. En plus de cela, VS ajoutera également la clé publique à l'ensemble. À présent, lorsque cela sera exécuté côté client, le moteur d'exécution utilisera la clé publique de l'assembly pour déchiffrer la signature (hachage), puis le fera correspondre au hachage calculé du fichier binaire du client. S'ils correspondent, cela signifie que le fichier binaire n'a pas été falsifié.

La signature de l'assemblage est basée sur la clé publique cryptogrpahy (PKI). En gros, le concept général est que lorsque vous signez quelque chose avec une clé par clé de manière cryptographique, la clé privée est utilisée pour effectuer la signature, mais la clé publique est utilisée pour vérifier la signature. Une clé privée ne peut pas être utilisée pour vérifier la signature, il suffit de la créer. Une clé publique ne peut pas être utilisée pour créer une signature, il suffit de la vérifier.

Cela étant, il est très important que vous gardiez votre clé privée en toute sécurité. Si vous souhaitez maintenir le plus haut niveau de sécurité et fournir le plus haut niveau d'authenticité à vos clients, il serait probablement préférable d'utiliser la signature différée et de laisser un seul individu ou un seul service responsable de la gestion de vos paires de clés publique / privée. . Les développeurs ne doivent pas avoir accès à la clé privée et peuvent utiliser l'option de signature retardée pour continuer à développer des assemblys avec nom fort sans compromettre la sécurité et l'authenticité.

Signing = Cryptage du hachage SHA1 de l'assembly à l'aide de la clé privée
Vérification = comparaison de la signature décryptée par PublicKey avec le hachage calculé de l'assembly

Ainsi, toute personne disposant de PublicKey peut vérifier l'assemblage mais seul l'auteur avec PrivateKey peut signer un assemblage.

Jeton PublicKey = les 64 derniers bits du hachage SHA1 de PublicKey dans l'ordre des octets little-endian.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top