Tworzenie i używanie zestawów o silnej nazwie

Silna nazwa składa się z tożsamości zestawu — jej prostej nazwy tekstowej, numeru wersji i informacji o kulturze (jeśli podano) oraz klucza publicznego i podpisu cyfrowego. Jest on generowany na podstawie pliku zestawu przy użyciu odpowiedniego klucza prywatnego. (Plik zestawu zawiera manifest zestawu, który zawiera nazwy i skróty wszystkich plików tworzących zestaw).

Ostrzeżenie

Nie należy polegać na silnych nazwach zabezpieczeń. Zapewniają one tylko unikatową tożsamość.

Zestaw o silnej nazwie może używać tylko typów z innych zestawów o silnych nazwach. W przeciwnym razie integralność zestawu o silnej nazwie zostanie naruszona.

Uwaga

Mimo że platforma .NET Core obsługuje zestawy o silnych nazwach, a wszystkie zestawy w bibliotece .NET Core są podpisane, większość zestawów innych firm nie potrzebuje silnych nazw. Aby uzyskać więcej informacji, zobacz Strong Name Signing on GitHub (Podpisywanie silnej nazwy w usłudze GitHub).

Scenariusz silnej nazwy

W poniższym scenariuszu opisano proces podpisywania zestawu o silnej nazwie, a później odwoływanie się do niego według tej nazwy.

  1. Zestaw A jest tworzony z silną nazwą przy użyciu jednej z następujących metod:

    • Używanie środowiska programistycznego obsługującego tworzenie silnych nazw, takich jak Visual Studio.

    • Utworzenie pary kluczy kryptograficznych przy użyciu narzędzia silnej nazwy (Sn.exe) i przypisanie tej pary kluczy do zestawu przy użyciu kompilatora wiersza polecenia lub konsolidatora zestawów (Al.exe). Zestaw Windows SDK zapewnia zarówno Sn.exe, jak i Al.exe.

  2. Środowisko programistyczne lub narzędzie podpisuje skrót pliku zawierającego manifest zestawu przy użyciu klucza prywatnego dewelopera. Ten podpis cyfrowy jest przechowywany w przenośnym pliku wykonywalnym (PE), który zawiera manifest zestawu A.

  3. Zestaw B jest konsumentem zestawu A. Sekcja referencyjna manifestu zestawu B zawiera token reprezentujący klucz publiczny zestawu A. Token jest częścią pełnego klucza publicznego i jest używany, a nie sam klucz, aby zaoszczędzić miejsce.

  4. Środowisko uruchomieniowe języka wspólnego weryfikuje podpis silnej nazwy po umieszczeniu zestawu w globalnej pamięci podręcznej zestawów. W przypadku powiązania według silnej nazwy w czasie wykonywania środowisko uruchomieniowe języka wspólnego porównuje klucz przechowywany w manifeście zestawu B z kluczem używanym do generowania silnej nazwy zestawu A. Jeśli testy zabezpieczeń platformy .NET kończą się powodzeniem, zestaw B ma gwarancję, że bity zestawu A nie zostały naruszone i że te bity rzeczywiście pochodzą od deweloperów zestawu A.

Uwaga

W tym scenariuszu nie są rozwiązywane problemy z zaufaniem. Zestawy mogą mieć pełne podpisy Microsoft Authenticode oprócz silnej nazwy. Podpisy authenticode zawierają certyfikat, który ustanawia zaufanie. Należy pamiętać, że silne nazwy nie wymagają podpisania kodu w ten sposób. Silne nazwy zapewniają tylko unikatową tożsamość.

Pomijanie weryfikacji podpisu zaufanych zestawów

Począwszy od programu .NET Framework 3.5 z dodatkiem Service Pack 1, podpisy o silnej nazwie nie są weryfikowane, gdy zestaw jest ładowany do domeny aplikacji o pełnym zaufaniu, takiej jak domyślna domena aplikacji dla MyComputer strefy. Jest to nazywane funkcją obejścia o silnej nazwie. W środowisku o pełnym zaufaniu wymagania dotyczące zawsze powodzenia dla StrongNameIdentityPermission podpisanych zestawów o pełnym zaufaniu, niezależnie od ich podpisu. Funkcja pomijania o silnej nazwie pozwala uniknąć niepotrzebnego obciążenia weryfikacji podpisu silnej nazwy zestawów o pełnym zaufaniu w tej sytuacji, co pozwala na szybsze ładowanie zestawów.

Funkcja obejścia ma zastosowanie do każdego zestawu podpisanego za pomocą silnej nazwy i ma następujące cechy:

  • W pełni zaufany bez StrongName dowodów (na przykład ma MyComputer dowody strefy).

  • Załadowano do w pełni zaufanego AppDomainelementu .

  • Załadowany z lokalizacji pod właściwością ApplicationBase tego AppDomainobiektu .

  • Nie jest podpisany z opóźnieniem.

Tę funkcję można wyłączyć dla poszczególnych aplikacji lub dla komputera. Zobacz Instrukcje: wyłączanie funkcji obejścia silnej nazwy.

Nazwa opis
Instrukcje: tworzenie pary kluczy publiczny-prywatny Opisuje sposób tworzenia pary kluczy kryptograficznych na potrzeby podpisywania zestawu.
Instrukcje: podpisywanie zestawu przy użyciu silnej nazwy Opisuje sposób tworzenia zestawu o silnej nazwie.
Ulepszone silne nazewnictwo Opisuje ulepszenia silnych nazw w programie .NET Framework 4.5.
Instrukcje: odwołanie do zestawu o silnej nazwie Opisuje sposób odwołowania się do typów lub zasobów w zestawie o silnej nazwie w czasie kompilacji lub czasie wykonywania.
Instrukcje: wyłączanie funkcji obejścia silnej nazwy Opisuje sposób wyłączania funkcji, która pomija walidację podpisów silnej nazwy. Tę funkcję można wyłączyć dla wszystkich lub dla określonych aplikacji.
Tworzenie zestawów Zawiera omówienie zestawów jednoplikowych i wieloplikowych.
Jak opóźnić podpisywanie zestawu w programie Visual Studio W tym artykule wyjaśniono, jak podpisać zestaw z silną nazwą po utworzeniu zestawu.
Sn.exe (narzędzie silnej nazwy) Opisuje narzędzie zawarte w programie .NET Framework, które ułatwia tworzenie zestawów o silnych nazwach. To narzędzie dostarcza opcje do zarządzania kluczami oraz generowania podpisów i weryfikowania ich.
Al.exe (konsolidator zestawów) Opisuje narzędzie zawarte w programie .NET Framework, które generuje plik z manifestem zestawu z modułów lub plików zasobów.