Temporisation de signature d'un assembly
Une société peut conserver sous protection une paire de clés à laquelle les développeurs n'ont pas accès quotidiennement. La clé publique est souvent disponible, mais l'accès à la clé privée est limité à quelques personnes. Lors du développement d'assemblys avec des noms forts, chaque assembly qui référence l'assembly avec nom fort cible contient le jeton de la clé publique utilisée pour affecter un nom fort à l'assembly cible. La clé publique doit donc être disponible pendant le processus de développement.
Vous pouvez utiliser la signature temporisée ou partielle au moment de la génération pour réserver de l'espace dans le fichier exécutable portable (PE) pour la signature de nom fort, mais différer la signature réelle à une étape ultérieure (généralement juste avant de livrer l'assembly).
Les étapes suivantes mettent en avant le processus de temporisation de la signature d'un assembly :
Obtenez la clé publique de la paire de clés de la société qui effectuera la signature éventuelle. Généralement, cette clé se présente sous la forme d'un fichier .snk, qui peut être créé à l'aide de l'outil Strong Name Tool (Sn.exe) fourni par le Kit de développement .NET Framework SDK.
Annotez le code source pour l'assembly avec deux attributs personnalisés de System.Reflection :
AssemblyKeyFileAttribute, qui passe le nom du fichier contenant la clé publique comme paramètre à son constructeur.
AssemblyDelaySignAttribute, qui indique l'utilisation de la temporisation de signature en passant la valeur true comme paramètre à son constructeur. Par exemple :
<Assembly:AssemblyKeyFileAttribute("myKey.snk")> <Assembly:AssemblyDelaySignAttribute(true)>
[assembly:AssemblyKeyFileAttribute("myKey.snk")] [assembly:AssemblyDelaySignAttribute(true)]
Le compilateur insère la clé publique dans le manifeste d'assembly et réserve de l'espace dans le fichier PE pour la signature de nom fort complet. La clé publique réelle doit être stockée lors de la génération de l'assembly de sorte que d'autres assemblys référençant cet assembly puissent obtenir la clé à stocker dans leur propre référence d'assembly.
Étant donné que l'assembly n'a pas de signature de nom fort valide, la vérification de cette signature doit être désactivée. Vous pouvez effectuer cette opération en utilisant l'option –Vr avec l'outil Strong Name Tool.
L'exemple suivant désactive la vérification pour un assembly appelé
myAssembly.dll
.sn –Vr myAssembly.dll
Avertissement
Utilisez l'option -Vr uniquement pendant le développement. L'ajout d'un assembly à la liste des omissions de vérification met la sécurité en danger. Un assembly malveillant peut utiliser le nom complètement spécifié (nom, version, culture et jeton de clé publique de l'assembly) de l'assembly ajouté à la liste des omissions de vérification pour usurper son identité. Cela permet également à l'assembly malveillant d'ignorer la vérification.
Vous soumettez l'assembly ultérieurement, généralement juste avant sa livraison, à l'Autorité de signature de la société pour la signature réelle de nom fort en utilisant l'option –R avec l'outil Strong Name Tool.
L'exemple suivant signe un assembly appelé
myAssembly.dll
avec un nom fort à l'aide de la paire de cléssgKey.snk
.sn -R myAssembly.dll sgKey.snk
Voir aussi
Tâches
Comment : créer une paire de clés publique/privée
Référence
Outil Strong Name Tool (Sn.exe)