Cara menandatangani driver di Windows langkah demi langkah

Pembaharuan Terakhir: 17/12/2025
penulis: Isaac
  • Windows Diperlukan tanda tangan digital yang valid untuk sebagian besar driver 64-bit, terutama driver mode kernel, untuk memastikan integritas dan keamanan.
  • Tanda tangan digital dapat diterapkan pada file biner maupun katalog, menggunakan alat seperti SignTool atau Visual Studio dan sertifikat yang dikeluarkan oleh entitas tepercaya.
  • Sertifikat yang ditandatangani sendiri mempermudah pengembangan dan pengujian driver tidak bertanda tangan Windows 78.1 dan 10 x64, tetapi hal tersebut tidak menggantikan tanda tangan komersial untuk distribusi publik.
  • Kompatibilitas antar versi Windows bergantung pada penggunaan algoritma hash yang tepat (seperti SHA2) dan mengikuti pedoman Microsoft dan WHQL.

Masuk sebagai pengemudi di Windows

Menandatangani driver di Windows mungkin, sekilas, tampak seperti sesuatu yang hanya dapat dilakukan oleh pengembang tingkat lanjut, tetapi jika Anda bekerja dengan perangkat, driver khusus, atau lingkungan pengujianCepat atau lambat, Anda akan menemui persyaratan ini. Pada sistem modern, terutama sistem 64-bit, Windows tidak lagi mempercayai sembarang biner yang mencoba menyusup ke kernel: ia menginginkan tanda tangan digital yang valid, algoritma modern seperti SHA2, dan, dalam banyak kasus, sertifikasi melalui Microsoft.

Pada bagian berikut, kita akan dengan tenang menelaah apa sebenarnya arti menandatangani sebuah controller, dan apa saja perbedaan di antara keduanya. mode kernel dan mode penggunaBagaimana hal ini memengaruhi Windows 7, 8, 8.1, dan 10 versi 64-bit, peran apa yang dimainkan oleh alat seperti SignTool atau Visual Studio, dan pilihan apa yang Anda miliki untuk lingkungan pengembangan (sertifikat uji atau sertifikat yang ditandatangani sendiri) dan rilis publik dengan sertifikat yang dikeluarkan oleh otoritas tepercaya.

Apa itu penandatanganan driver di Windows dan mengapa itu wajib?

Proses masuk driver di Windows melibatkan pengaitan tanda tangan digital pada paket driver (file biner, file INF, katalog, dll.) untuk menjamin dua hal: bahwa tidak ada yang memanipulasi file tersebut sejak dibuat dan bahwa file tersebut benar-benar berasal dari penerbit yang disebutkan (penyedia perangkat lunak atau produsen). perangkat keras).

Dalam praktiknya, selama instalasi perangkat Windows, tanda tangan digital ini digunakan untuk verifikasi integritas paket dan identitas penerbit. Jika ada yang tidak cocok (tanda tangan rusak, sertifikat tidak tepercaya, hash salah, dll.), sistem akan menampilkan peringatan, memblokir instalasi, atau menolak untuk memuat driver.

Mulai dari Windows Vista 64-bit dan seterusnya, dan terutama di Windows 7, 8, 8.1 dan 10 x64, kebijakan keamanan mode kernel sudah jelas: setiap driver yang akan berjalan di kernel Harus ditandatangani dengan benar.Jika tidak, driver tidak akan dimuat, perangkat mungkin menjadi tidak berfungsi, dan layar biru bahkan dapat terjadi jika biner yang tidak valid dipaksa untuk dimuat.

Saat Anda memutuskan untuk mensertifikasi driver Anda dengan Microsoft, Anda dapat mengirimkannya ke proses validasi Windows Hardware Quality Labs (WHQL). Jika paket driver lulus uji sertifikasi, Microsoft akan memberikan sertifikasinya. Tanda tangan resmi WHQLHal ini tidak hanya meningkatkan kepercayaan dan kompatibilitas, tetapi juga memungkinkan Anda untuk mendistribusikan driver melalui Windows Update dan saluran distribusi lain yang didukung oleh Microsoft.

Penting untuk diingat bahwa mulai dari Windows 10 versi 1507, semua driver yang ditandatangani melalui Microsoft Hardware Development Center ditandatangani menggunakan SHA2 sebagai algoritma hashSHA1 sudah usang untuk skenario ini, dan mencampur sertifikat lama dapat menyebabkan masalah, terutama pada sistem yang lebih baru.

Penjelasan tanda tangan driver di Windows

Perbedaan antara penandatanganan driver dalam mode kernel dan mode pengguna

Di Windows, driver yang berjalan di mode kernel dan mode penggunaKebijakan penandatanganan tidak sepenuhnya sama di kedua lingkungan tersebut, meskipun cenderung menjadi lebih ketat dengan setiap versi baru sistem operasi.

  Mengapa komputer Windows Anda menjadi lebih lambat seiring berjalannya waktu? Semua penyebab dijelaskan

Driver mode kernel adalah yang paling sensitif karena berjalan di kernel sistem dan memiliki akses istimewa ke memori dan perangkat keras. Pada versi 64-bit Windows Vista dan yang lebih baru, driver ini Dokumen-dokumen tersebut wajib ditandatangani. agar dapat ditagih. Pembatasan ini berkaitan langsung dengan stabilitas sistem dan perlindungan terhadap malware bahwa ia mencoba untuk menyuntikkan pada tingkat rendah.

Di sisi lain, driver yang beroperasi dalam mode pengguna (misalnya, banyak driver printer dan komponen tambahan) pada awalnya tidak tunduk pada kewajiban yang begitu ketat. Bahkan, pada versi Windows yang lebih lama Itu bukanlah persyaratan mutlak. bahwa driver-driver ini harus ditandatangani. Namun, Microsoft selalu merekomendasikan penandatanganan driver-driver tersebut karena alasan keamanan, dan sejak Windows 8 terdapat skenario di mana penandatanganan diperlukan untuk jenis driver pengguna tertentu.

Contoh umum: driver printer yang diinstal pada komputer x64 biasanya menampilkan kotak dialog selama proses instalasi yang meminta konfirmasi pengguna. Dalam praktiknya, paket tersebut Harus ditandatangani dengan benar. agar instalasi dapat berlanjut tanpa hambatan atau peringatan keamanan kritis.

Intinya adalah, meskipun persyaratan tersebut tidak universal dalam mode pengguna, Microsoft semakin mendorong agar hal itu Semua perangkat lunak yang terkait dengan driver harus ditandatangani.Penandatanganan memungkinkan verifikasi yang andal tentang siapa yang membuatnya, deteksi upaya pengubahan data, dan pengurangan risiko masuknya komponen berbahaya yang menyamar sebagai pengontrol yang sah.

Persyaratan tanda tangan dan algoritma SHA di berbagai versi Windows

Salah satu aspek yang paling merepotkan adalah kompatibilitas antara versi Windows dan algoritma hash seperti... SHA1 dan SHA2Banyak pengembang menemui driver yang berfungsi di satu sistem tetapi tidak di sistem lain, dan sebagian besar penyebabnya adalah perubahan kebijakan penandatanganan.

Pada sistem yang lebih lama, seperti Windows 7 atau 8 64-bit, sudah umum untuk bekerja dengan sertifikat dan tanda tangan berbasis SHA1, meskipun Microsoft sudah memperingatkan bahwa SHA1 kurang memadai dalam hal keamanan.Seiring dengan kemajuan menuju Windows 8.1 dan 10, SHA2 telah menjadi standar untuk tanda tangan kode dan driver.

Dalam praktiknya, beberapa produsen memilih untuk menandatangani biner mode kernel dengan menyematkan sertifikat ganda (SHA1 dan SHA2) yang dikeluarkan oleh entitas selain Microsoft. Biner yang ditandatangani ganda ini, dalam kasus tertentu, File tersebut gagal dimuat pada versi Windows sebelum Windows 10.dan pada beberapa sistem Windows 10, hal itu bahkan dapat menyebabkan kerusakan serius atau layar biru (blue screen).

Untuk mengatasi masalah ini, Microsoft merilis patch khusus, seperti pembaruan KB 3081436. Menginstal pembaruan ini pada sistem yang terpengaruh akan memperbaiki ketidakkompatibilitas dengan driver bertanda tangan SHA2 tertentu dan menyediakan daftar nilai hash SHA referensi di bagian “Informasi selengkapnya – Informasi hash file” pada artikel dukungan tersebut.

Jika Anda akan mendistribusikan driver yang perlu berfungsi pada beberapa versi Windows, sangat penting untuk meninjau hal berikut: persyaratan tanda tangan per versi Dijelaskan secara rinci oleh Microsoft. Di sana ditentukan algoritma mana yang valid, bagaimana kompatibilitas mundur ditangani, dan kombinasi tanda tangan mana (katalog, biner tertanam, sertifikat silang, dll.) yang secara resmi diterima.

  Cara memasukkan karakter ASCII dari keyboard di Windows langkah demi langkah

Penandatanganan driver mode pengguna: rekomendasi dan sumber daya

Meskipun kernel seringkali mendapat perhatian paling besar, penandatanganan driver mode pengguna juga layak mendapat perhatian. Microsoft tidak menerapkannya secara ketat sejak awal, tetapi mereka melakukannya... sangat menyarankan untuk menjaga keselamatan dari sistem dan memberikan kepercayaan kepada pengguna akhir.

Tanda tangan driver mode pengguna pada dasarnya menjalankan fungsi yang sama seperti pada mode kernel: mengidentifikasi penyedia pengontrol (pabrikan, ISV, dll.) dan memastikan bahwa paket tersebut belum dimodifikasi sejak ditandatangani. Ketika pengguna menginstal, misalnya, printer dengan driver mode pengguna pada komputer x64, wizard instalasi dapat menampilkan kotak dialog yang menanyakan apakah penerbit tepercaya. Jika tanda tangan valid dan sertifikat tersebut milik entitas yang diakui, instalasi akan lebih lancar dan dengan lebih sedikit peringatan.

Microsoft menyediakan serangkaian dokumen dan tutorial yang membahas lebih dalam proses penandatanganan, banyak di antaranya awalnya dirancang untuk mode kernel tetapi juga berlaku untuk mode pengguna. Artikel utama tentang tanda tangan pengemudi Dan subtopik "Cara menandatangani versi modul kernel" dalam tutorial penandatanganan kode mode kernel adalah titik awal yang baik untuk memahami logika umum penandatanganan kode di Windows.

Selain itu, instalasi Windows Driver Kit (WDK) menyertakan file bantuan yang disebut selfsign_readme.htm, terletak di direktori tanda tangan sendiriDokumen ini menjelaskan cara membuat sertifikat uji dan cara menggunakannya selama pengembangan, yang sangat berguna terutama ketika Anda belum memiliki sertifikat yang diterbitkan oleh otoritas akar tepercaya.

Singkatnya, meskipun driver mode pengguna secara teknis dapat berfungsi tanpa tanda tangan dalam beberapa skenario, hal itu harus diperlakukan seolah-olah wajib. Ini karena alasan keamanan, citra merek, dan kompatibilitas dengan wizard instalasi Windows. Mengontrak pengemudi adalah hal yang paling masuk akal untuk dilakukan..

Menandatangani driver mode kernel di Windows 7 dan 8 menggunakan SignTool

Saat bekerja dengan Windows 7 dan 8 64-bit, salah satu pendekatan paling umum untuk menandatangani driver mode kernel adalah dengan menggunakan alat baris perintah. perintah Alat TandaTermasuk dalam Windows SDK, utilitas ini memungkinkan Anda untuk menandatangani file dan memverifikasi tanda tangan yang sudah ada, serta menawarkan berbagai pilihan untuk menyesuaikan berbagai skenario.

Beberapa opsi terpenting Fitur-fitur SignTool adalah sebagai berikut:

  • /ac: menentukan sertifikat tambahan, misalnya, sertifikat silang yang menghubungkan sertifikat Anda ke otoritas akar tepercaya.
  • /f: menunjukkan file yang berisi sertifikat penandatanganan (biasanya .pfx).
  • /p: memberikan kata sandi yang terkait dengan sertifikat penandatanganan yang tersimpan dalam file .pfx.
  • /fd: mendefinisikan algoritma hash yang digunakan saat membuat tanda tangan file, misalnya, /fd sha256 untuk menghasilkan tanda tangan berdasarkan SHA256 (jika tidak ditentukan, SHA1 biasanya merupakan nilai default pada versi yang lebih lama).
  • /n «Nama umum sertifikat»: memungkinkan Anda untuk memilih sertifikat tertentu dari penyimpanan sertifikat Windows berdasarkan nama umumnya (CN).
  • /t: menentukan server penanda waktu yang kompatibel dengan skema Microsoft Authenticode.
  • /tr: menunjukkan server stempel waktu yang sesuai dengan RFC 3161, lebih modern dan direkomendasikan untuk implementasi baru.
  Cara mengaktifkan dan memvalidasi lisensi di Windows Server langkah demi langkah

Saat mengerjakan proyek driver Anda, penting untuk mengetahui file mana yang perlu ditandatangani. Agar driver dapat diinstal dengan benar di Windows 7 atau 8, driver tersebut harus ditandatangani. semua biner yang relevan dari proyek tersebut (misalnya, file .sys) dan juga file katalog (.cat) yang mengelompokkan kumpulan file dalam paket tersebut.

Anda memiliki dua pilihan utama: Anda dapat menyalin file-file tersebut ke direktori kerja tempat SignTool tersedia, atau langsung pindahkan ke folder bin Windows SDK lalu jalankan alat tersebut dari sana. Yang penting adalah Anda memiliki baik file biner maupun sertifikat yang akan Anda gunakan untuk penandatanganan.

Skenario tipikalnya melibatkan perolehan sertifikat penandatanganan kode yang sesuai, misalnya, sebuah Sertifikat “Microsoft Cross Certificate” Dikeluarkan oleh GlobalSign atau otoritas tepercaya lainnya. Anda menempatkan sertifikat silang (CrossCert.crt) tersebut di direktori kerja Anda bersama dengan sertifikat penandatanganan kode utama Anda (misalnya, CodeSign.pfx) dan menjalankan perintah yang mirip dengan ini:

signtool sign /ac CrossCert.crt /f CodeSign.pfx /p password1234 /tr http://timestamp.globalsign.com/tsa/r6advanced1 filter.sys

Perintah ini menghasilkan tanda tangan yang termasuk sertifikasi silang dan memperoleh stempel waktu dari server RFC 3161 GlobalSign. Stempel waktu ini penting karena membuktikan bahwa file tersebut ditandatangani pada tanggal ketika sertifikat masih berlaku, meskipun sertifikat tersebut kemudian kedaluwarsa.

Setelah menandatangani file, saatnya memverifikasi bahwa semuanya sudah benar. Ini biasanya dilakukan menggunakan perintah verifikasi seperti:

signtool verify -v -kp filename.sys

pilihan -v Ini memaksa keluaran terperinci, menampilkan informasi rinci tentang rantai sertifikat, dan opsi tersebut. -kp Proses ini memverifikasi tanda tangan sesuai dengan kriteria penandatanganan kode khusus driver mode kernel. Jika semuanya berjalan lancar, Anda akan melihat hasil yang menunjukkan bahwa tanda tangan dan rantai sertifikat sudah benar.

Terakhir, disarankan Ulangi proses penandatanganan dan verifikasi yang sama dengan file .cat. dari paket tersebut. Setelah biner dan katalog ditandatangani dengan benar, driver dapat diinstal pada Windows 7 dan 8 x64 tanpa masalah keamanan, dan selama wizard instalasi, informasi penerbit tepercaya dan jendela sistem standar akan muncul.

Untuk mempelajari lebih dalam semua varian alat ini, Microsoft menyediakan referensi perintah SignTool yang komprehensif, serta sebuah Tutorial khusus untuk penandatanganan kode dalam mode kernel. dan dokumentasi yang dikhususkan untuk tanda tangan digital modul kernel di Windows. Sumber daya ini menjelaskan kasus-kasus khusus, parameter lanjutan, dan kekhususan setiap versi sistem.