Bagikan melalui


Pertimbangan keamanan perakitan

Saat Anda membangun rakitan, Anda bisa menentukan sekumpulan izin yang diperlukan rakitan untuk dijalankan. Apakah izin tertentu diberikan atau tidak diberikan kepada rakitan didasarkan pada bukti.

Ada dua cara berbeda yang digunakan bukti:

  • Bukti input digabungkan dengan bukti yang dikumpulkan oleh loader untuk membuat serangkaian bukti akhir yang digunakan untuk resolusi kebijakan. Metode yang menggunakan semantik ini meliputi Assembly.Load, Assembly.LoadFrom, dan Activator.CreateInstance.

  • Bukti input digunakan tanpa diubah sebagai kumpulan bukti akhir yang digunakan untuk penyelesaian kebijakan. Metode yang menggunakan semantik ini meliputi Assembly.Load(byte[]) dan AppDomain.DefineDynamicAssembly().

    Izin opsional dapat diberikan oleh kebijakan keamanan yang diatur di komputer tempat rakitan akan dijalankan. Jika Anda ingin kode Anda menangani semua pengecualian keamanan potensial, Anda bisa melakukan salah satu hal berikut:

  • Masukkan permintaan izin untuk semua izin yang harus dimiliki kode Anda, dan tangani terlebih dahulu kegagalan waktu muat yang terjadi jika izin tidak diberikan.

  • Jangan gunakan permintaan izin untuk mendapatkan izin yang mungkin diperlukan kode Anda, tetapi bersiaplah untuk menangani pengecualian keamanan jika izin tidak diberikan.

    Catatan

    Keamanan adalah area yang kompleks, dan Anda memiliki banyak opsi untuk dipilih. Untuk informasi lebih lanjut, lihat Konsep Keamanan Utama.

Pada waktu pemuatan, bukti rakitan digunakan sebagai input untuk kebijakan keamanan. Kebijakan keamanan ditetapkan oleh perusahaan dan administrator komputer serta oleh pengaturan kebijakan pengguna, dan menentukan serangkaian izin yang diberikan ke semua kode terkelola saat dijalankan. Kebijakan keamanan dapat ditetapkan untuk penerbit assembly (jika memiliki alat penandatanganan yang dihasilkan tanda tangan), untuk situs Web dan zona (yang merupakan konsep Internet Explorer) tempat assembly diunduh, atau untuk nama kuat perakitan. Misalnya, administrator komputer dapat membuat kebijakan keamanan yang memungkinkan semua kode diunduh dari situs Web dan ditandatangani oleh perusahaan perangkat lunak tertentu untuk mengakses database di komputer, tetapi tidak memberikan akses untuk menulis ke disk komputer.

Rakitan dan alat penandatanganan bernama kuat

Peringatan

Jangan mengandalkan nama yang kuat untuk keamanan. Nama yang kuat hanya memberikan identitas unik.

Anda dapat menandatangani rakitan dengan dua cara yang berbeda, tetapi melengkapi: dengan nama yang kuat atau dengan menggunakan SignTool.exe (Sign Tool). Menandatangani rakitan dengan nama yang kuat menambahkan enkripsi kunci publik ke file yang berisi manifes rakitan. Penandatanganan nama yang kuat membantu memverifikasi keunikan nama, mencegah pemalsuan nama, dan memberi pemanggil identitas unik saat referensi diselesaikan.

Tidak ada tingkat kepercayaan yang terkait dengan nama yang kuat, yang membuat SignTool.exe (Sign Tool) penting. Dua alat penandatanganan mengharuskan penerbit untuk membuktikan identitasnya kepada otoritas pihak ketiga dan mendapatkan sertifikat. Sertifikat ini kemudian disematkan dalam file Anda dan dapat digunakan oleh administrator untuk memutuskan apakah akan mempercayai keaslian kode.

Anda dapat memberikan nama yang kuat dan tanda tangan digital yang dibuat menggunakan SignTool.exe (Sign Tool) ke rakitan, atau Anda dapat menggunakannya sendiri. Dua alat penandatanganan hanya dapat menandatangani satu file pada satu waktu; untuk rakitan multifile, Anda menandatangani file yang berisi manifes rakitan. Nama yang kuat disimpan dalam file yang berisi manifes rakitan, tetapi tanda tangan yang dibuat menggunakan SignTool.exe (Sign Tool) disimpan dalam slot yang dipesan dalam file portable executable (PE) yang berisi manifes rakitan. Penandatanganan rakitan menggunakan SignTool.exe (Sign Tool) dapat digunakan (dengan atau tanpa nama yang kuat) ketika Anda sudah memiliki hierarki kepercayaan yang bergantung pada tanda tangan yang dihasilkan SignTool.exe (Sign Tool), atau ketika kebijakan Anda hanya menggunakan bagian kunci dan tidak memeriksa rantai kepercayaan.

Catatan

Saat menggunakan nama yang kuat dan tanda tangan alat penandatanganan pada rakitan, nama yang kuat harus ditetapkan terlebih dahulu.

Runtime bahasa umum juga melakukan verifikasi hash; manifes rakitan berisi daftar semua file yang membentuk rakitan, termasuk hash dari setiap file seperti yang ada ketika manifes dibangun. Saat setiap file dimuat, kontennya di-hash dan dibandingkan dengan nilai hash yang disimpan dalam manifes. Jika kedua hash tidak cocok, rakitan gagal dimuat.

Penamaan dan penandatanganan yang kuat menggunakan SignTool.exe (Sign Tool) menjamin integritas melalui tanda tangan digital dan sertifikat. Semua teknologi yang disebutkan, yaitu verifikasi hash, penamaan yang kuat, dan penandatanganan menggunakan SignTool.exe (Sign Tool), bekerja sama untuk memastikan bahwa rakitan belum diubah dengan cara apa pun.

Lihat juga