Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Nama yang kuat terdiri dari identitas assembly—nama teks sederhana, nomor versi, dan informasi budayanya (jika disediakan)—ditambah kunci umum dan tanda tangan digital. Ini dihasilkan dari file assembly menggunakan sebuah kunci privat yang sesuai. (File assembly berisi manifes assembly, yang berisi nama dan hash semua file yang membentuk assembly.)
Peringatan
Jangan mengandalkan nama yang kuat untuk keamanan. Mereka hanya menyediakan identitas unik.
Assembly dengan penamaan kuat hanya dapat menggunakan tipe dari assembly dengan penamaan kuat lainnya. Jika tidak, integritas dari strong-named assembly akan disusupi.
Nota
Meskipun .NET Core mendukung assemblies dengan nama kuat, dan semua assemblies dalam pustaka .NET Core sudah ditandatangani, sebagian besar assemblies pihak ketiga tidak memerlukan nama yang kuat. Untuk informasi selengkapnya, lihat Penandatanganan Nama Kuat di GitHub.
Skenario nama yang kuat
Skenario berikut menguraikan proses menandatangani assembly dengan nama kuat dan kemudian merujuknya dengan nama tersebut.
Assembly A dibuat dengan nama yang kuat menggunakan salah satu metode berikut:
Menggunakan lingkungan pengembangan yang mendukung pembuatan nama yang kuat, seperti Visual Studio.
Membuat pasangan kunci enkripsi menggunakan Alat Strong Name (Sn.exe) dan menetapkan pasangan kunci tersebut ke assembly menggunakan compiler baris perintah atau Assembly Linker (Al.exe). Windows SDK menyediakan Sn.exe dan Al.exe.
Lingkungan pengembangan atau alat menandatangani hash file yang berisi manifes perakitan dengan kunci privat pengembang. Tanda tangan digital ini disimpan dalam file portable executable (PE) yang berisi manifes Assembly A.
Assembly B adalah konsumen Assembly A. Bagian referensi manifes Assembly B menyertakan token yang mewakili kunci publik Assembly A. Token adalah bagian dari kunci publik lengkap dan digunakan daripada kunci itu sendiri untuk menghemat ruang.
Common Language Runtime memverifikasi tanda tangan nama kuat ketika rakitan ditempatkan di cache assembly global. Saat melakukan binding dengan strong name pada waktu proses Common Language Runtime, Common Language Runtime membandingkan kunci yang disimpan dalam manifes Assembly B dengan kunci yang digunakan untuk menghasilkan strong name untuk Assembly A. Jika pemeriksaan keamanan .NET lulus dan binding berhasil, Assembly B memiliki jaminan bahwa bit Assembly A tidak dirusak dan bahwa bit ini benar-benar berasal dari pengembang Assembly A.
Nota
Skenario ini tidak mengatasi masalah kepercayaan. Komponen dapat memiliki tanda tangan Authenticode Microsoft lengkap selain nama kuat. Tanda tangan Authenticode menyertakan sertifikat yang membangun kepercayaan. Penting untuk dicatat bahwa nama kuat tidak memerlukan kode untuk ditandatangani dengan cara ini. Nama yang kuat hanya memberikan identitas unik.
Melampaui verifikasi tanda tangan digital rakitan tepercaya
Dimulai dengan .NET Framework 3.5 Service Pack 1, tanda tangan nama kuat tidak divalidasi ketika rakitan dimuat ke dalam domain aplikasi kepercayaan penuh, seperti domain aplikasi default untuk zona tersebut MyComputer . Ini disebut sebagai fitur bypass nama yang kuat. Dalam lingkungan kepercayaan penuh, tuntutan untuk StrongNameIdentityPermission selalu berhasil untuk rakitan kepercayaan penuh yang ditandatangani, terlepas dari tanda tangan mereka. Fitur bypass nama yang kuat menghindari overhead yang tidak perlu dari verifikasi tanda tangan nama kuat dari rakitan kepercayaan penuh dalam situasi ini, memungkinkan rakitan dimuat lebih cepat.
Fitur bypass berlaku untuk rakitan apa pun yang ditandatangani dengan nama yang kuat dan yang memiliki karakteristik berikut:
Sepenuhnya dipercaya tanpa StrongName bukti (misalnya, memiliki
MyComputerbukti zona).Dimuat ke dalam AppDomain yang sepenuhnya tepercaya.
Dimuat dari lokasi di bawah properti ApplicationBaseAppDomain.
Tidak ditandatangani dengan penundaan.
Fitur ini dapat dinonaktifkan untuk aplikasi individual atau untuk komputer. Lihat Cara: Menonaktifkan fitur bypass strong-name.
Topik terkait
| Judul | Description |
|---|---|
| Cara: Membuat pasangan kunci publik-privat | Menjelaskan cara membuat pasangan kunci kriptografi untuk menandatangani rakitan. |
| Cara: Menandatangani rakitan dengan nama yang kuat | Menjelaskan bagaimana cara membuat rakitan dengan nama kuat. |
| Penamaan kuat yang ditingkatkan | Menjelaskan penyempurnaan pada nama kuat di .NET Framework 4.5. |
| Cara: Mengacu pada assembly yang berpenamaan kuat | Menjelaskan cara mereferensikan jenis atau sumber daya dalam rakitan bernama kuat pada waktu kompilasi atau runtime. |
| Cara: Menonaktifkan fitur bypass nama yang kuat | Menjelaskan cara menonaktifkan fitur yang melewati validasi tanda tangan nama kuat. Fitur ini dapat dinonaktifkan untuk semua atau untuk aplikasi tertentu. |
| Membuat rakitan | Menyediakan gambaran umum rakitan file tunggal dan multifile. |
| Cara menunda tanda tangan assembly di Visual Studio | Menjelaskan cara memberikan tanda "strong name" pada suatu assembly setelah assembly tersebut dibuat. |
| Sn.exe (alat Nama Kuat) | Menjelaskan alat yang disertakan dalam .NET Framework yang membantu membuat rakitan dengan nama yang kuat. Alat ini menyediakan opsi untuk manajemen kunci, pembuatan tanda tangan, dan verifikasi tanda tangan. |
| Al.exe (Assembly linker) | Menjelaskan alat yang disertakan dalam .NET Framework yang menghasilkan file yang memiliki manifes perakitan dari modul atau file sumber daya. |