Hướng dẫn cách ký trình điều khiển trong Windows từng bước một

Cập nhật lần cuối: 17/12/2025
tác giả: Isaac
  • Cửa sổ Nó yêu cầu chữ ký số hợp lệ đối với hầu hết các trình điều khiển 64-bit, đặc biệt là các trình điều khiển chế độ kernel, để đảm bảo tính toàn vẹn và bảo mật.
  • Chữ ký có thể được áp dụng cho cả các tập tin nhị phân và danh mục, bằng cách sử dụng các công cụ như SignTool hoặc Visual Studio và các chứng chỉ do các tổ chức đáng tin cậy cấp.
  • Giấy chứng nhận tự ký tạo điều kiện thuận lợi cho việc phát triển và thử nghiệm. trình điều khiển chưa ký cửa sổ 78.1 và 10 x64, nhưng chúng không thay thế chữ ký thương mại để phân phối rộng rãi.
  • Khả năng tương thích giữa các phiên bản Windows phụ thuộc vào việc sử dụng các thuật toán băm phù hợp (như SHA2) và tuân theo các hướng dẫn của Microsoft và WHQL.

Đăng nhập trình điều khiển trong Windows

Việc ký trình điều khiển trong Windows thoạt nhìn có vẻ như chỉ những nhà phát triển trình điều khiển cao cấp mới có thể làm được, nhưng nếu bạn làm việc với... thiết bị, trình điều khiển tùy chỉnh hoặc môi trường thử nghiệmSớm muộn gì bạn cũng sẽ gặp phải yêu cầu này. Trong các hệ thống hiện đại, đặc biệt là hệ thống 64-bit, Windows không còn tin tưởng bất kỳ tệp nhị phân nào cố gắng xâm nhập vào nhân hệ điều hành nữa: nó yêu cầu chữ ký số hợp lệ, các thuật toán hiện đại như SHA2, và trong nhiều trường hợp, chứng nhận từ Microsoft.

Trong những dòng tiếp theo, chúng ta sẽ bình tĩnh xem xét chính xác việc ký kết một bộ điều khiển có nghĩa là gì, và những điểm khác biệt giữa chúng. chế độ nhân và chế độ người dùngBài viết này sẽ giải thích ảnh hưởng của nó đến Windows 7, 8, 8.1 và 10 64-bit như thế nào, các công cụ như SignTool hay Visual Studio đóng vai trò gì, và bạn có những lựa chọn nào cho cả môi trường phát triển (chứng chỉ thử nghiệm hoặc tự ký) và các bản phát hành công khai với chứng chỉ được cấp bởi một cơ quan đáng tin cậy.

Ký xác thực trình điều khiển trong Windows là gì và tại sao nó lại bắt buộc?

Việc ký tài khoản trình điều khiển trong Windows bao gồm việc liên kết một... chữ ký điện tử cho gói trình điều khiển (các tệp nhị phân, tệp INF, danh mục, v.v.) để đảm bảo hai điều: rằng không ai đã thao túng các tệp kể từ khi chúng được tạo và rằng chúng thực sự đến từ nhà xuất bản được chỉ định (nhà cung cấp phần mềm hoặc nhà sản xuất của...). phần cứng).

Trên thực tế, trong quá trình cài đặt thiết bị Windows, các chữ ký số này được sử dụng để Kiểm tra tính toàn vẹn của gói hàng. và thông tin nhận dạng của nhà phát hành. Nếu có bất kỳ sự không khớp nào (chữ ký bị hỏng, chứng chỉ không đáng tin cậy, mã băm không chính xác, v.v.), hệ thống sẽ hiển thị cảnh báo, chặn quá trình cài đặt hoặc đơn giản là từ chối tải trình điều khiển.

Từ Windows Vista 64-bit trở đi, và đặc biệt là trong Windows 7, 8, 8.1 và 10 x64, chính sách bảo mật ở chế độ nhân hệ điều hành rất rõ ràng: bất kỳ trình điều khiển nào sẽ chạy trong nhân hệ điều hành đều phải tuân thủ chính sách này. Phải được ký đúng cách.Nếu không, trình điều khiển sẽ không được tải, thiết bị có thể bị treo và thậm chí có thể xuất hiện màn hình xanh nếu các tệp nhị phân không hợp lệ bị buộc phải tải.

Khi bạn quyết định chứng nhận trình điều khiển của mình với Microsoft, bạn có thể gửi nó đến quy trình kiểm định của Windows Hardware Quality Labs (WHQL). Nếu gói trình điều khiển vượt qua các bài kiểm tra chứng nhận, Microsoft sẽ cấp chứng nhận cho nó. Chữ ký WHQL chính thứcĐiều này không chỉ cải thiện độ tin cậy và khả năng tương thích, mà còn cho phép bạn phân phối trình điều khiển thông qua Windows Update và các kênh phân phối khác được Microsoft hỗ trợ.

Điều quan trọng cần lưu ý là bắt đầu từ phiên bản Windows 10 1507, tất cả các trình điều khiển được ký thông qua Trung tâm Phát triển Phần cứng của Microsoft đều được ký bằng cách sử dụng SHA2 như một thuật toán bămSHA1 đã trở nên lỗi thời đối với các trường hợp này, và việc sử dụng lẫn lộn các chứng chỉ cũ có thể gây ra sự cố, đặc biệt là trên các hệ thống mới hơn.

Giải thích chữ ký trình điều khiển trong Windows

Sự khác biệt giữa việc ký trình điều khiển ở chế độ kernel và chế độ người dùng

Windows hỗ trợ các trình điều khiển chạy trong chế độ nhân và chế độ người dùngChính sách ký kết không hoàn toàn giống nhau ở cả hai môi trường, mặc dù nó có xu hướng trở nên nghiêm ngặt hơn với mỗi phiên bản hệ điều hành mới.

  Tại sao máy tính Windows của bạn chậm dần theo thời gian? Tất cả các nguyên nhân được giải thích

Các trình điều khiển chế độ nhân là nhạy cảm nhất vì chúng chạy trong nhân hệ thống và có quyền truy cập đặc quyền vào bộ nhớ và phần cứng. Trong các phiên bản 64-bit của Windows Vista trở lên, các trình điều khiển này... Chúng bắt buộc phải được ký tên. để được tính phí. Hạn chế này liên quan trực tiếp đến sự ổn định của hệ thống và bảo vệ chống lại phần mềm độc hại Nó cố gắng tiêm vào ở mức độ thấp.

Mặt khác, các trình điều khiển hoạt động ở chế độ người dùng (ví dụ: nhiều trình điều khiển máy in và các thành phần bổ sung) ban đầu không phải tuân theo nghĩa vụ nghiêm ngặt như vậy. Trên thực tế, trong các phiên bản Windows cũ hơn, điều này đã được chứng minh. Đó không phải là một yêu cầu bắt buộc. Việc các trình điều khiển này cần được ký số là điều cần thiết. Tuy nhiên, Microsoft luôn khuyến nghị ký số chúng vì lý do bảo mật, và kể từ Windows 8, có những trường hợp việc ký số là bắt buộc đối với một số loại trình điều khiển người dùng nhất định.

Một ví dụ điển hình: trình điều khiển máy in được cài đặt trên máy tính x64 thường hiển thị hộp thoại trong quá trình cài đặt yêu cầu người dùng xác nhận. Trên thực tế, gói đó... Nó phải được ký đúng cách. để quá trình cài đặt có thể tiếp tục mà không gặp trở ngại hoặc cảnh báo an ninh nghiêm trọng.

Ý tưởng chung là, mặc dù yêu cầu này không phải là phổ biến ở chế độ người dùng, nhưng Microsoft đang ngày càng thúc đẩy việc áp dụng nó. Tất cả phần mềm liên quan đến trình điều khiển phải được ký xác thực.Việc ký số cho phép xác minh đáng tin cậy người tạo ra chúng, phát hiện hành vi giả mạo và giảm nguy cơ các thành phần độc hại xâm nhập bằng cách giả danh các bộ điều khiển hợp pháp.

Các yêu cầu về chữ ký và thuật toán SHA trong các phiên bản Windows khác nhau

Một trong những khía cạnh rắc rối nhất là sự tương thích giữa các phiên bản Windows và các thuật toán băm như... SHA1 và SHA2Nhiều nhà phát triển gặp phải trường hợp trình điều khiển hoạt động trên hệ thống này nhưng không hoạt động trên hệ thống khác, và phần lớn nguyên nhân nằm ở những thay đổi trong chính sách ký mã.

Trên các hệ thống cũ hơn, chẳng hạn như Windows 7 hoặc 8 64-bit, việc sử dụng chứng chỉ và chữ ký dựa trên SHA1 là khá phổ biến, mặc dù Microsoft đã cảnh báo rằng SHA1 không đáp ứng được yêu cầu bảo mật.Trong quá trình phát triển Windows 8.1 và 10, SHA2 đã trở thành tiêu chuẩn cho chữ ký mã và trình điều khiển.

Trên thực tế, một số nhà sản xuất đã chọn ký các tập tin nhị phân ở chế độ kernel bằng cách nhúng chứng chỉ kép (SHA1 và SHA2) do các tổ chức khác ngoài Microsoft cấp. Trong một số trường hợp, các tập tin nhị phân được ký kép này, Chúng không tải được trên các phiên bản Windows trước Windows 10.Và trên một số hệ thống Windows 10, chúng thậm chí có thể gây ra sự cố nghiêm trọng hoặc màn hình xanh chết chóc.

Để giảm thiểu những vấn đề này, Microsoft đã phát hành các bản vá cụ thể, chẳng hạn như bản cập nhật KB 3081436. Việc cài đặt bản cập nhật này trên các hệ thống bị ảnh hưởng sẽ khắc phục sự không tương thích với một số trình điều khiển được ký bằng SHA2 và cung cấp danh sách các trình điều khiển cần thiết. giá trị băm SHA tham chiếu trong phần “Thông tin thêm – Thông tin băm tập tin” của bài viết hỗ trợ đó.

Nếu bạn định phân phối trình điều khiển cần hoạt động trên nhiều phiên bản Windows, điều cần thiết là phải xem xét lại... yêu cầu chữ ký cho mỗi phiên bản Được Microsoft mô tả chi tiết. Trong đó nêu rõ các thuật toán nào hợp lệ, cách xử lý khả năng tương thích ngược và các tổ hợp chữ ký nào (danh mục, nhị phân nhúng, chứng chỉ chéo, v.v.) được chấp nhận chính thức.

  Cách nhập ký tự ASCII từ bàn phím trong Windows từng bước

Ký trình điều khiển ở chế độ người dùng: các khuyến nghị và nguồn tài liệu tham khảo

Mặc dù nhân hệ điều hành thường nhận được nhiều sự chú ý nhất, nhưng việc ký tên trình điều khiển ở chế độ người dùng cũng đáng được quan tâm. Microsoft đã không thực thi điều này một cách nghiêm ngặt ngay từ đầu, nhưng họ đã làm... khuyến nghị mạnh mẽ để đảm bảo an toàn. về hệ thống và mang lại sự tin tưởng cho người dùng cuối.

Chữ ký của trình điều khiển ở chế độ người dùng về cơ bản thực hiện các chức năng tương tự như ở chế độ nhân: xác định nhà cung cấp bộ điều khiển (nhà sản xuất, nhà cung cấp phần mềm độc lập, v.v.) và xác nhận rằng gói phần mềm chưa bị sửa đổi kể từ khi được ký. Ví dụ, khi người dùng cài đặt máy in với trình điều khiển chế độ người dùng trên máy tính x64, trình hướng dẫn cài đặt có thể hiển thị hộp thoại hỏi xem nhà phát hành có đáng tin cậy hay không. Nếu chữ ký hợp lệ và chứng chỉ thuộc về một thực thể được công nhận, quá trình cài đặt sẽ diễn ra suôn sẻ hơn và ít cảnh báo hơn.

Microsoft cung cấp một loạt tài liệu và hướng dẫn đi sâu hơn vào quy trình ký, nhiều tài liệu trong số đó ban đầu được thiết kế cho chế độ kernel nhưng cũng có thể áp dụng cho chế độ người dùng. Bài viết chính về chữ ký của tài xế và tiểu mục “Cách ký phiên bản cho một mô-đun kernel” trong hướng dẫn ký mã ở chế độ kernel là những điểm khởi đầu tốt để hiểu logic chung của việc ký mã trong Windows.

Ngoài ra, quá trình cài đặt Windows Driver Kit (WDK) bao gồm một tệp trợ giúp có tên là... selfsign_readme.htm, nằm trong thư mục tự kýTài liệu này giải thích cách tạo chứng chỉ thử nghiệm và cách sử dụng chúng trong quá trình phát triển, điều này đặc biệt hữu ích khi bạn chưa có chứng chỉ được cấp bởi một tổ chức cấp chứng chỉ gốc đáng tin cậy.

Tóm lại, mặc dù về mặt kỹ thuật, trình điều khiển ở chế độ người dùng có thể hoạt động mà không cần chữ ký trong một số trường hợp, nhưng nó nên được coi như là bắt buộc. Điều này là do vấn đề bảo mật, hình ảnh thương hiệu và khả năng tương thích với trình hướng dẫn cài đặt Windows. Việc ký tên với tài xế là điều hợp lý nhất nên làm..

Ký trình điều khiển chế độ kernel trong Windows 7 và 8 bằng SignTool

Khi làm việc với Windows 7 và 8 64-bit, một trong những phương pháp phổ biến nhất để ký các trình điều khiển chế độ kernel là sử dụng công cụ dòng lệnh. lệnh Dấu hiệuCông cụĐược tích hợp trong Windows SDK, tiện ích này cho phép bạn ký tệp và xác minh chữ ký hiện có, đồng thời cung cấp nhiều tùy chọn phù hợp với các tình huống khác nhau.

Một số lựa chọn quan trọng nhất Các tính năng của SignTool như sau:

  • /ac: chỉ định một chứng chỉ bổ sung, ví dụ: một chứng chỉ chéo liên kết chứng chỉ của bạn với một cơ quan gốc đáng tin cậy.
  • /f: chỉ định tệp chứa chứng chỉ ký (thường là tệp .pfx).
  • /pCung cấp mật khẩu liên kết với chứng chỉ ký được lưu trữ trong tệp .pfx.
  • /fd: xác định thuật toán băm được sử dụng khi tạo chữ ký tệp, ví dụ: / fd sha256 Để tạo chữ ký dựa trên SHA256 (nếu không chỉ định gì, SHA1 thường là giá trị mặc định trong các phiên bản cũ hơn).
  • /n «Tên thông thường của chứng chỉ»Cho phép bạn chọn một chứng chỉ cụ thể từ kho chứng chỉ Windows dựa trên tên chung (CN) của nó.
  • /tChỉ định máy chủ đóng dấu thời gian tương thích với lược đồ Microsoft Authenticode.
  • / tr: biểu thị máy chủ dấu thời gian tuân thủ RFC 3161, tiêu chuẩn hiện đại hơn và được khuyến nghị cho các triển khai mới.
  Cách kích hoạt và xác thực giấy phép trong Windows Server từng bước

Khi thực hiện dự án trình điều khiển, điều quan trọng là phải biết những tệp nào cần được ký điện tử. Để trình điều khiển cài đặt đúng cách trên Windows 7 hoặc 8, nó phải được ký điện tử. tất cả các tệp nhị phân liên quan của dự án (ví dụ: các tệp .sys) và cả tệp danh mục (.cat) nhóm các tệp trong gói lại với nhau.

Bạn có hai lựa chọn chính: bạn có thể sao chép các tệp đó vào thư mục làm việc nơi bạn đã cài đặt SignTool, hoặc trực tiếp. di chuyển chúng vào thư mục bin của Windows SDK. và chạy công cụ từ đó. Điều quan trọng là bạn phải có sẵn cả các tệp nhị phân và chứng chỉ mà bạn sẽ sử dụng để ký.

Một trường hợp điển hình là việc thu thập chứng chỉ ký mã phù hợp, ví dụ như chứng chỉ Chứng chỉ “Microsoft Cross Certificate” Chứng chỉ được cấp bởi GlobalSign hoặc một tổ chức có thẩm quyền đáng tin cậy khác. Bạn đặt chứng chỉ chéo đó (CrossCert.crt) vào thư mục làm việc của mình cùng với chứng chỉ ký mã chính (ví dụ: CodeSign.pfx) và chạy một lệnh tương tự như sau:

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

Lệnh này tạo ra một chữ ký mà bao gồm chứng nhận chéo và lấy dấu thời gian từ máy chủ RFC 3161 của GlobalSign. Dấu thời gian rất quan trọng vì nó chứng minh rằng tệp đã được ký vào ngày mà chứng chỉ còn hiệu lực, ngay cả khi sau đó chứng chỉ hết hạn.

Sau khi ký tệp, đã đến lúc xác minh xem mọi thứ có chính xác hay không. Việc này thường được thực hiện bằng cách sử dụng lệnh xác minh như sau:

signtool verify -v -kp filename.sys

các tùy chọn -v Nó buộc phải xuất ra thông tin chi tiết, hiển thị thông tin cụ thể về chuỗi chứng chỉ và tùy chọn. -kp Nó xác minh chữ ký theo các tiêu chí ký mã cụ thể của trình điều khiển chế độ kernel. Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy kết quả cho biết chữ ký và chuỗi chứng chỉ là chính xác.

Cuối cùng, nó được khuyến khích Lặp lại quy trình ký và xác minh tương tự với tệp .cat. của gói phần mềm. Sau khi cả các tệp nhị phân và danh mục được ký đúng cách, trình điều khiển có thể được cài đặt trên Windows 7 và 8 x64 mà không gặp vấn đề về bảo mật, và trong quá trình cài đặt, thông tin nhà phát hành đáng tin cậy và các cửa sổ hệ thống tiêu chuẩn sẽ xuất hiện.

Để tìm hiểu sâu hơn về tất cả các biến thể của công cụ này, Microsoft duy trì một tài liệu tham khảo đầy đủ về các lệnh của SignTool, cũng như một tài liệu khác. Hướng dẫn cụ thể về ký mã ở chế độ kernel và tài liệu chuyên dụng về chữ ký số của các mô-đun nhân hệ điều hành trong Windows. Các tài liệu này giải thích các trường hợp đặc biệt, các tham số nâng cao và những đặc điểm riêng của từng phiên bản hệ thống.