Sn.exe (Alat Nama Kuat)

Alat Nama Kuat (Sn.exe) membantu menandatangani rakitan dengan nama yang kuat. Sn.exe menyediakan opsi untuk manajemen kunci, pembuatan tanda tangan, dan verifikasi tanda tangan.

Peringatan

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

Untuk informasi selengkapnya tentang penamaan yang kuat dan rakitan bernama kuat, lihat Rakitan Yang Dinamai Kuat dan Cara: Menandatangani Rakitan dengan Nama Yang Kuat.

Alat Nama Kuat secara otomatis diinstal dengan Visual Studio. Untuk memulai alat, gunakan Perintah Pengembang Visual Studio atau PowerShell Pengembang Visual Studio.

Catatan

Pada komputer 64-bit, jalankan Sn.exe versi 32-bit dengan menggunakan Perintah Pengembang untuk Visual Studio dan versi 64-bit dengan menggunakan Prompt Perintah Visual Studio x64 Win64.

Pada perintah, ketikkan berikut ini:

Sintaks

sn [-quiet][option [parameter(s)]]

Parameter

Opsi Deskripsi
-a identityKeyPairFile signaturePublicKeyFile Menghasilkan data AssemblySignatureKeyAttribute untuk memigrasikan kunci identitas ke kunci tanda tangan dari file.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Menghasilkan data AssemblySignatureKeyAttribute untuk memigrasikan kunci identitas ke kunci tanda tangan dari penampung kunci.
-c [csp] Mengatur penyedia layanan kriptografi default (Penyedia Solusi Cloud) yang akan digunakan untuk penandatanganan nama yang kuat. Pengaturan ini berlaku untuk seluruh komputer. Jika Anda tidak menentukan nama Penyedia Solusi Cloud, Sn.exe akan menghapus pengaturan saat ini.
-d container Menghapus kontainer kunci yang ditentukan dari nama yang kuat Penyedia Solusi Cloud.
-D assembly1 assembly2 Memverifikasi bahwa dua rakitan hanya berbeda dengan tanda tangan. Ini sering digunakan sebagai pemeriksaan setelah rakitan ditandatangani ulang dengan pasangan kunci yang berbeda.
-e assembly outfile Mengekstrak kunci umum dari rakitan dan menyimpannya dalam outfile.
-h Menampilkan sintaks perintah dan opsi untuk alat ini.
-i infile container Menginstal pasangan kunci dari infile dalam kontainer kunci yang ditentukan. Kontainer kunci berada dalam nama yang kuat Penyedia Solusi Cloud.
-k [keysize] outfile Menghasilkan kunci RSACryptoServiceProvider baru dari ukuran yang ditentukan dan menulisnya ke file yang ditentukan. kunci umum dan privat ditulis ke file.

Jika Anda tidak menentukan ukuran kunci, kunci 1.024-bit dihasilkan secara default jika Anda memiliki penyedia kriptografi yang ditingkatkan Microsoft terinstal; jika tidak, kunci 512-bit dihasilkan.

Parameter keysize mendukung panjang kunci dari 384 bit hingga 16.384 bit dengan kenaikan 8 bit jika Anda telah menginstal penyedia kriptografi yang ditingkatkan Microsoft. Ini mendukung panjang kunci dari 384 bit hingga 512 bit dalam kenaikan 8 bit jika Anda menginstal penyedia kriptografi dasar Microsoft.
-m [y or n] Menentukan apakah kontainer kunci spesifik komputer, atau khusus pengguna. Jika Anda menentukan y, kontainer kunci bersifat khusus komputer. Jika Anda menentukan n, kontainer kunci khusus pengguna.

Jika y atau n tidak ditentukan, opsi ini akan menampilkan pengaturan saat ini.
-o infile [outfile] Mengekstrak kunci umum dari infile dan menyimpannya dalam file .csv. Koma memisahkan setiap byte kunci umum. Format ini berguna untuk referensi hard-coding ke kunci sebagai array yang diinisialisasi dalam kode sumber. Jika Anda tidak menentukan outfile, opsi ini menempatkan output pada Clipboard. Catatan: Opsi ini tidak memverifikasi bahwa input hanya kunci umum. Jika infile berisi pasangan kunci dengan kunci pribadi, kunci pribadi juga diekstraksi.
-p infile outfile [hashalg] Mengekstrak kunci umum dari pasangan kunci secara infile dan menyimpannya dalam outfile, secara opsional menggunakan algoritma RSA yang ditentukan oleh hashalg. kunci umum ini dapat digunakan untuk menunda-menandatangani perakitan menggunakan opsi /delaysign+ dan /keyfile dari Assembly Linker (Al.exe). Ketika assembly ditandatangani penundaan, hanya kunci umum yang diatur pada waktu kompilasi dan ruang dicadangkan dalam file agar tanda tangan ditambahkan nanti, ketika kunci privat diketahui.
-pc container outfile [hashalg] Mengekstrak kunci umum dari pasangan kunci dalam kontainer dan menyimpannya dalam outfile. Jika Anda menggunakan opsi hashalg, algoritma RSA digunakan untuk mengekstrak kunci umum.
-Pb [y or n] Menentukan apakah kebijakan bypass nama kuat diberlakukan. Jika Anda menentukan y, nama kuat untuk rakitan kepercayaan penuh tidak divalidasi saat dimuat ke dalam AppDomainkepercayaan penuh. Jika Anda menentukan n, nama yang kuat divalidasi untuk kebenaran, tetapi tidak untuk nama kuat tertentu. StrongNameIdentityPermission tidak berpengaruh pada rakitan kepercayaan penuh. Anda harus melakukan pemeriksaan Anda sendiri untuk kecocokan nama yang kuat.

Jika y maupun n tidak ditentukan, opsi ini menampilkan setelan saat ini. Defaultnya adalah y. Catatan: Pada komputer 64-bit, Anda harus menyetel parameter ini di instans Sn.exe 32-bit dan 64-bit.
-q[uiet] Menentukan mode senyap; menekan tampilan pesan keberhasilan.
-R[a] assembly infile Menandatangani ulang rakitan yang ditandatangani sebelumnya atau ditandatangani penundaan dengan pasangan kunci di infile.

Jika -Ra digunakan, hash dikomputasi ulang untuk semua file dalam rakitan.
-Rc[a] assembly container Menandatangani ulang rakitan yang ditandatangani sebelumnya atau ditandatangani dengan pasangan kunci dalam kontainer.

Jika -Rca digunakan, hash dikomputasi ulang untuk semua file dalam rakitan.
-Rh assembly Mengolah ulang hash untuk semua file dalam rakitan.
-t[p] infile Menampilkan token untuk kunci umum yang disimpan dalam infile. Isi infile harus berupa kunci umum yang sebelumnya dihasilkan dari file pasangan kunci menggunakan -p. Jangan gunakan opsi -t[p] untuk mengekstrak token langsung dari file pasangan kunci.

Sn.exe menghitung token dengan menggunakan fungsi hash dari kunci umum. Untuk menghemat ruang, runtime bahasa umum menyimpan token kunci umum dalam manifes sebagai bagian dari referensi ke perakitan lain ketika merekam dependensi ke perakitan yang memiliki nama yang kuat. Opsi -tp menampilkan kunci umum selain token. Jika atribut AssemblySignatureKeyAttribute telah diterapkan ke rakitan, token adalah untuk kunci identitas, dan nama algoritme hash dan kunci identitas ditampilkan.

Perhatikan bahwa opsi ini tidak memverifikasi tanda tangan perakitan dan tidak boleh digunakan untuk membuat keputusan kepercayaan. Opsi ini hanya menampilkan data token kunci umum mentah.
-T[p] assembly Menampilkan token kunci umum untuk perakitan.Rakitan harus berupa nama file yang berisi manifes rakitan.

Sn.exe menghitung token dengan menggunakan fungsi hash dari kunci umum. Untuk menghemat ruang, runtime bahasa umum menyimpan token kunci umum dalam manifes sebagai bagian dari referensi ke rakitan lain saat merekam dependensi ke rakitan yang memiliki nama yang kuat. Opsi -Tp menampilkan kunci umum selain token. Jika atribut AssemblySignatureKeyAttribute telah diterapkan ke rakitan, token adalah untuk kunci identitas, dan nama algoritme hash dan kunci identitas ditampilkan.

Perhatikan bahwa opsi ini tidak memverifikasi tanda tangan perakitan dan tidak boleh digunakan untuk membuat keputusan kepercayaan. Opsi ini hanya menampilkan data token kunci umum mentah.
-TS assembly infile Uji tanda rakitan yang ditandatangani atau ditandatangani sebagian dengan pasangan kunci di infile.
-TSc assembly container Uji tanda rakitan yang ditandatangani atau ditandatangani sebagian dengan pasangan kunci dalam kunci kontainer kontainer.
-v assembly Memverifikasi nama yang kuat dalam rakitan, di mana rakitan adalah nama file yang berisi manifes rakitan.
-vf assembly Memverifikasi nama yang kuat dalam rakitan. Tidak seperti opsi -v, -vf memaksa verifikasi meskipun dinonaktifkan menggunakan opsi -Vr.
-Vk regfile.reg assembly [userlist] [infile] Membuat file entri pendaftaran (.reg) yang dapat Anda gunakan untuk mendaftarkan rakitan yang ditentukan untuk lompati verifikasi. Aturan untuk penamaan perakitan yang berlaku untuk opsi -Vr juga berlaku untuk –Vk. Untuk informasi tentang opsi daftar pengguna dan infile, lihat opsi –Vr .
-Vl Mencantumkan setelan saat ini untuk verifikasi nama yang kuat pada komputer ini.
-Vr assembly [userlist] [infile] Mendaftarkan rakitan untuk verifikasi yang dilewati. Secara opsional, Anda dapat menentukan daftar nama pengguna yang dipisahkan koma yang harus diterapkan oleh verifikasi lewati. Jika Anda menentukan infile, verifikasi tetap diaktifkan, tetapi kunci umum infile digunakan dalam operasi verifikasi. Anda dapat menentukan assembly dalam formulir *, strongname untuk mendaftarkan semua rakitan dengan nama kuat yang ditentukan. Untuk strongname, tentukan string digit heksadesimal yang mewakili bentuk token kunci umum. Lihat opsi -t dan -T untuk menampilkan token kunci umum. Perhatian: Gunakan opsi ini hanya selama pengembangan. Menambahkan rakitan ke daftar verifikasi lewati akan menciptakan kerentanan keamanan. Rakitan berbahaya dapat menggunakan nama rakitan yang ditentukan sepenuhnya (nama rakitan, versi, budaya, dan token kunci umum) dari perakitan yang ditambahkan ke daftar verifikasi lompati untuk memalsukan identitasnya. Ini akan memungkinkan perakitan berbahaya juga melewati verifikasi.
-Vu assembly Membatalkan pendaftaran rakitan untuk verifikasi yang melewatkan. Aturan yang sama untuk penamaan perakitan yang berlaku untuk -Vr berlaku untuk -Vu.
-Vx Menghapus semua entri verifikasi yang dilewati.
-? Menampilkan sintaks perintah dan opsi untuk alat ini.

Catatan

Semua opsi Sn.exe peka huruf besar/kecil dan harus ditik persis seperti yang ditunjukkan untuk dikenali oleh alat.

Keterangan

Opsi -R dan –Rc berguna dengan rakitan yang telah ditandatangani dengan penundaan. Dalam skenario ini, hanya kunci umum yang telah diatur pada waktu kompilasi dan penandatanganan dilakukan nanti, ketika kunci privat diketahui.

Catatan

Untuk parameter (misalnya, –Vr) yang menulis ke sumber daya yang dilindungi seperti registri, jalankan SN.exe sebagai administrator.

Alat Nama Kuat mengasumsikan bahwa pasangan kunci umum/pribadi dibuat dengan pengidentifikasi algoritme AT_SIGNATURE. Pasangan kunci umum/pribadi yang dibuat dengan algoritme AT_KEYEXCHANGE menghasilkan kesalahan.

Contoh

Perintah berikut membuat pasangan kunci acak baru dan menyimpannya di keyPair.snk.

sn -k keyPair.snk

Perintah berikut menyimpan kunci dalam keyPair.snk kontainer MyContainer dengan nama yang kuat Penyedia Solusi Cloud.

sn -i keyPair.snk MyContainer

Perintah berikut mengekstrak kunci umum dari keyPair.snk dan menyimpannya di publicKey.snk.

sn -p keyPair.snk publicKey.snk

Perintah berikut menampilkan kunci umum dan token untuk kunci umum yang terkandung dalam publicKey.snk.

sn -tp publicKey.snk

Perintah berikut memverifikasi MyAsm.dll rakitan.

sn -v MyAsm.dll

Perintah berikut menghapus MyContainer dari Penyedia Solusi Cloud default.

sn -d MyContainer

Lihat juga