Scenario relativo al nome sicuro
Aggiornamento: novembre 2007
Nello scenario seguente viene illustrato il processo di firma di un assembly con un nome sicuro e la successiva creazione di riferimenti basati su tale nome.
Un assembly A viene creato con un nome sicuro mediante uno dei metodi seguenti:
Utilizzo di un ambiente di sviluppo in cui è supportata la creazione di nomi sicuri, quale Visual Studio 2005.
Creazione di una coppia di chiavi di crittografia utilizzando lo strumento Nome sicuro (Sn.exe) e assegnazione di tale coppia all'assembly tramite un compilatore da riga di comando o Assembly Linker (Al.exe). In Windows Software Development Kit (SDK) sono inclusi sia Sn.exe che Al.exe.
L'hash del file contenente il manifesto dell'assembly viene firmato dall'ambiente o dallo strumento di sviluppo con la chiave privata dello sviluppatore. Tale firma digitale viene memorizzata nel file eseguibile portabile (PE, Portable Executable) contenente il manifesto dell'assembly A.
L'assembly B è un consumer dell'assembly A. Nella sezione dei riferimenti del manifesto dell'assembly B è incluso un token che rappresenta la chiave pubblica dell'assembly A. Un token è una parte della chiave pubblica completa e viene utilizzato al posto della chiave stessa in modo da occupare meno spazio.
Quando l'assembly viene inserito nella Global Assembly Cache, la firma con nome sicuro viene verificata da Common Language Runtime. Quando si effettua l'associazione tramite nome sicuro in fase di esecuzione, Common Language Runtime confronta la chiave archiviata nel manifesto dell'assembly B con la chiave utilizzata per generare il nome sicuro per l'assembly A. Se il controllo di protezione di .NET Framework ha esito positivo e l'associazione riesce, nell'utilizzare l'assembly B si può dare per certo che le informazioni contenute nell'assembly A non sono state alterate e provengono effettivamente dal relativo sviluppatore.
Nota: |
---|
In questo scenario non vengono affrontate le problematiche relative all'attendibilità. Oltre a un nome sicuro, agli assembly è possibile assegnare firme Microsoft Authenticode complete, che includono un certificato che consente di stabilire l'attendibilità. È importante sottolineare che tale firma del codice non viene richiesta dai nomi sicuri. Non è infatti necessario che le chiavi utilizzate per generare la firma con nome sicuro corrispondano alle chiavi utilizzate per generare una firma Authenticode. |
Come ignorare la verifica della firma degli assembly attendibili
A partire da .NET Framework 3.5 Service Pack 1, le firme con nome sicuro non vengono convalidate quando un assembly viene caricato in un dominio applicazione con attendibilità totale, ad esempio il dominio applicazione predefinito per la zona MyComputer. Questa novità viene definita funzionalità che consente di ignorare il nome sicuro. In un ambiente di attendibilità totale le richieste di StrongNameIdentityPermission hanno sempre esito positivo per gli assembly firmati con attendibilità totale, indipendentemente dalla firma. La funzionalità che consente di ignorare il nome sicuro evita l'inutile sovraccarico della verifica delle firme con nome sicuro degli assembly con attendibilità totale in questa situazione, velocizzando il caricamento degli assembly.
Questa funzionalità si applica a tutti gli assembly firmati con nome sicuro che abbiano le caratteristiche seguenti:
Sono completamente attendibili senza la prova StrongName (ad esempio, dispongono della prova della zona MyComputer).
Vengono caricati in un oggetto AppDomain completamente attendibile.
Vengono caricati da un percorso nella proprietà ApplicationBase di tale oggetto AppDomain.
Non hanno firma ritardata.
Questa funzionalità può essere disattivata per le singole applicazioni o per un computer. Vedere Procedura: disattivare la funzionalità che consente di ignorare il nome sicuro.
Vedere anche
Riferimenti
Strumento Nome sicuro (Sn.exe)