Bagikan melalui


Pertimbangan keamanan perakitan

Saat Anda membangun assembly, Anda dapat menentukan sekumpulan izin yang diperlukan oleh assembly tersebut 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 penyelesaian kebijakan. Metode yang menggunakan semantik ini termasuk Assembly.Load, Assembly.LoadFrom, dan Activator.CreateInstance.

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

    Izin opsional dapat diberikan oleh kebijakan keamanan yang ditetapkan pada komputer tempat assembly akan berjalan. Jika Anda ingin kode Anda menangani semua pengecualian keamanan potensial, Anda bisa melakukan salah satu hal berikut:

  • Sisipkan permintaan izin untuk semua izin yang diperlukan oleh kode Anda, dan tangani terlebih dahulu kegagalan saat memuat 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.

    Nota

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

Pada waktu pemuatan, bukti perakitan digunakan sebagai input ke 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 dengan nama yang kuat

Peringatan

Jangan mengandalkan nama yang kuat untuk keamanan. Mereka hanya menyediakan identitas unik.

Anda dapat menandatangani rakitan dengan dua cara 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 perakitan. Penandatanganan nama yang kuat membantu memverifikasi keunikan nama, mencegah spoofing nama, dan menyediakan beberapa identitas kepada pemanggil saat referensi diselesaikan.

Tidak ada tingkat kepercayaan yang dikaitkan dengan nama yang kuat, sehingga SignTool.exe (Sign Tool) menjadi 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 (Alat Tanda Tangan) 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 perakitan. Nama kuat disimpan dalam file yang berisi manifes perakitan, tetapi tanda tangan yang dibuat menggunakan SignTool.exe (Sign Tool) disimpan dalam slot yang dipesan pada file portable executable (PE) yang mengandung manifes perakitan. Penandatanganan assembly menggunakan SignTool.exe (Sign Tool) dapat dilakukan (dengan atau tanpa strong name) ketika Anda sudah memiliki hierarki kepercayaan yang bergantung pada tanda tangan yang dihasilkan oleh SignTool.exe (Sign Tool), atau ketika kebijakan Anda hanya menggunakan bagian kunci dan tidak memeriksa rantai kepercayaan.

Nota

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

Runtime bahasa umum juga melakukan verifikasi hash; manifes perakitan 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, assembly 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