Ignorer les liens de navigationAccueil : Introduction au Framework .NET : Architecture d'une application .NET : Signature retardée Ignorer les liens de navigation
Accueil
Introduction au Framework .NETDévelopper Introduction au Framework .NET
Le langage C#Développer Le langage C#
Programmation orientée objetsDévelopper Programmation orientée objets
CollectionsDévelopper Collections
ADO.NETDévelopper ADO.NET
LINQDévelopper LINQ
ASP.NETDévelopper ASP.NET
Workflow FoundationDévelopper Workflow Foundation
Besoins de prestationDévelopper Besoins de prestation

Signature retardée

Si une équipe de développement contient de nombreuses personnes et que l’ensemble de l’équipe possède le fichier .snk contenant la clé privée, il y a de forte chance que la sécurité soit compromise si un développeur diffuse la clé à une tierce personne. Le framework .NET prévoit donc un mécanisme de signature retardée qui permet de confier la clé privée à un nombre restreint de personnes.

Le fonctionnement est le suivant :

La procédure ci-dessous illustre la manière d’utiliser le mécanisme de signature retardée.

C:\secret>sn -k entreprise.snk

Microsoft (R) .NET Framework Strong Name Utility  Version 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

Paire de clés écrite dans entreprise.snk


C:\secret>sn -p entreprise.snk entreprise.clepublique.snk

Microsoft (R) .NET Framework Strong Name Utility  Version 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

La clé publique est écrite dans entreprise.clepublique.snk

C#

using System;

 

namespace SignatureRetardeeAssembly

{

    public class Class1

    {

        public static string Hello()

        {

            return "Hello world";

        }

    }

}

VB.NET

Public Class Class1

    Public Shared Function Hello() As String

        Return "Hello world"

    End Function

End Class

C:\SignatureRetardee\DLLSignatureRetardee\bin\Debug>sn -Vr DLLSignatureRetardee.dll

Microsoft (R) .NET Framework Strong Name Utility  Version 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

Ajout de l'entrée de vérification pour l'assembly 'DLLSignatureRetardee,6BAD046F
F6BAA415'

C#

using System;

 

namespace TestSignatureRetardee

{

    class Program

    {

        static void Main(string[] args)

        {

            Console.WriteLine(SignatureRetardeeAssembly.Class1.Hello());

        }

    }

}

VB.NET

Module Module1

 

    Sub Main()

        Console.WriteLine(DLLSignatureRetardee.Class1.Hello())

    End Sub

 

End Module

A ce stade, l’application fonctionne bien que la clé privée n’ait pas été utilisée par le compilateur puisque la vérification de l’assemblage a été désactivée.

C:\SignatureRetardee\DLLSignatureRetardee\bin\Debug>sn -R DLLSignatureRetardee.dll \secret\entreprise.snk

Microsoft (R) .NET Framework Strong Name Utility  Version 2.0.50727.42
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly 'DLLSignatureRetardee.dll' signé à nouveau