Vytváření a používání sestavení se silným názvem

Silný název se skládá z identity sestavení – jejího jednoduchého textového názvu, čísla verze a informací o jazykové verzi (pokud je k dispozici) a veřejného klíče a digitálního podpisu. Generuje se ze souboru sestavení pomocí odpovídajícího privátního klíče. (Soubor sestavení obsahuje manifest sestavení, který obsahuje názvy a hodnoty hash všech souborů, které sestavení tvoří.)

Upozorňující

Nespoléhejte na silné názvy zabezpečení. Poskytují pouze jedinečnou identitu.

Sestavení se silným názvem může používat pouze typy z jiných sestavení se silným názvem. Jinak by byla ohrožena integrita sestavení se silným názvem.

Poznámka:

I když .NET Core podporuje sestavení se silným názvem a všechna sestavení v knihovně .NET Core jsou podepsaná, většina sestavení třetích stran nepotřebuje silné názvy. Další informace najdete v tématu Podepisování silného názvu na GitHubu.

Scénář silného názvu

Následující scénář popisuje proces podepsání sestavení silným názvem a pozdějším odkazem na sestavení tímto názvem.

  1. Sestavení A se vytvoří se silným názvem pomocí jedné z následujících metod:

    • Použití vývojového prostředí, které podporuje vytváření silných názvů, jako je například Visual Studio.

    • Vytvoření páru kryptografických klíčů pomocí nástroje Strong Name (Sn.exe) a přiřazení páru klíčů k sestavení pomocí kompilátoru příkazového řádku nebo linkeru sestavení (Al.exe) Sada Windows SDK poskytuje Sn.exe i Al.exe.

  2. Vývojové prostředí nebo nástroj podepíše hodnotu hash souboru obsahujícího manifest sestavení pomocí privátního klíče vývojáře. Tento digitální podpis je uložen v přenosném spustitelném souboru (PE), který obsahuje manifest sestavení A.

  3. Sestavení B je příjemcem sestavení A. Referenční část manifestu sestavení B obsahuje token, který představuje veřejný klíč sestavení A. Token je část celého veřejného klíče a používá se místo samotného klíče k úspoře místa.

  4. Modul CLR (Common Language Runtime) ověřuje podpis silného názvu při umístění sestavení do globální mezipaměti sestavení. Při vytváření vazby silným názvem za běhu porovná modul CLR klíč uložený v manifestu sestavení B s klíčem použitým k vygenerování silného názvu sestavení A. Pokud kontroly zabezpečení rozhraní .NET projdou a vazba proběhne úspěšně, sestavení B má záruku, že bity sestavení A nebyly manipulovány a že tyto bity skutečně pocházejí od vývojářů sestavení A.

Poznámka:

Tento scénář neřeší problémy s důvěryhodností. Sestavení mohou kromě silného názvu obsahovat úplné podpisy microsoft Authenticode. Podpisy Authenticode obsahují certifikát, který vytváří vztah důvěryhodnosti. Je důležité si uvědomit, že silné názvy tímto způsobem nevyžadují přihlášení kódu. Silné názvy poskytují pouze jedinečnou identitu.

Obejití ověření podpisu důvěryhodných sestavení

Počínaje aktualizací Service Pack 1 rozhraní .NET Framework 3.5 se podpisy silného názvu neověřují při načtení sestavení do plně důvěryhodné domény aplikace, jako je výchozí doména aplikace pro zónu MyComputer . Tato funkce se označuje jako funkce obejití silného názvu. V prostředí s úplným vztahem důvěryhodnosti musí být požadavky vždy StrongNameIdentityPermission úspěšné pro podepsaná sestavení s úplným vztahem důvěryhodnosti bez ohledu na jejich podpis. Funkce obejití silného názvu zabraňuje zbytečné režii při ověřování podpisů silného názvu sestavení s úplným vztahem důvěryhodnosti v této situaci, což umožňuje rychlejší načtení sestavení.

Funkce obejití se vztahuje na všechna sestavení podepsaná silným názvem a s následujícími vlastnostmi:

  • Plně důvěryhodná bez StrongName důkazů (například obsahuje MyComputer důkazy zóny).

  • Načteno do plně důvěryhodné AppDomain.

  • Načteno z umístění pod vlastností tohoto AppDomainobjektu ApplicationBase .

  • Není podepsáno zpožděním.

Tato funkce může být zakázaná pro jednotlivé aplikace nebo pro počítač. Viz Postupy: Zakázání funkce obejití silného názvu

Titulek Popis
Postupy: Vytvoření páru veřejného a privátního klíče Popisuje, jak vytvořit pár kryptografických klíčů pro podepisování sestavení.
Postupy: Podepsání sestavení silným názvem Popisuje, jak vytvořit sestavení se silným názvem.
Vylepšené silné pojmenování Popisuje vylepšení silných názvů v rozhraní .NET Framework 4.5.
Postupy: Odkazování na sestavení se silným názvem Popisuje, jak odkazovat na typy nebo prostředky v sestavení se silným názvem v době kompilace nebo za běhu.
Postupy: Zakázání funkce obejití silného názvu Popisuje, jak zakázat funkci, která obchází ověření podpisů silného názvu. Tato funkce může být zakázaná pro všechny nebo pro konkrétní aplikace.
Vytváření sestavení Poskytuje přehled sestavení s jedním souborem a vícesoubory.
Zpoždění podepsání sestavení v sadě Visual Studio Vysvětluje, jak po vytvoření sestavení podepsat sestavení silným názvem.
Sn.exe (nástroj Silný název) Popisuje nástroj zahrnutý v rozhraní .NET Framework, který pomáhá vytvářet sestavení se silnými názvy. Tento nástroj poskytuje možnosti pro správu klíčů, generování podpisů a ověřování podpisů.
Al.exe (linker sestavení) Popisuje nástroj zahrnutý v rozhraní .NET Framework, který generuje soubor, který má manifest sestavení z modulů nebo souborů prostředků.