2014-12-31 11 views
19

Đây là một câu trả lời SO tuyệt vời bao gồm việc tạo CA tự ký và sau đó ký các tệp thực thi với các chứng chỉ thu được: How do I create a self-signed certificate for code signing on Windows?.Tôi có thể cài đặt trình điều khiển tự ký trên Windows 64 bit không có chế độ kiểm tra nếu chứng chỉ gốc CA tự ký được nhập vào lưu trữ máy không?

Tôi đã đọc rất nhiều cuộc thảo luận trực tuyến về cách thức hoạt động của trình điều khiển và câu trả lời dường như gần như chắc chắn rằng bạn không thể tải trình điều khiển chưa ký hoặc tự ký mà không bật chế độ thử nghiệm. Tuy nhiên, câu trả lời tôi liên kết với và đặc biệt là một lời nhận xét của Roger Lipscombe dường như cung cấp một cái nhìn mâu thuẫn:

Nếu bạn muốn sử dụng này để ký kết điều khiển, bạn cần phải nhập khẩu CA giấy chứng nhận vào cửa hàng máy. Ví dụ của tôi nhập nó vào cửa hàng người dùng , điều này là tốt cho hầu hết phần mềm, cho mục đích thử nghiệm/nội bộ .

Với tôi, có vẻ như tôi có thể cài đặt trình điều khiển với chứng chỉ tự ký (do CA tự ký) miễn là chứng chỉ CA được nhập vào cửa hàng máy. Tôi sẽ không phải thực hiện bất kỳ thay đổi nào khác cho hệ thống (tắt chế độ kiểm tra bằng cách nhấn F8 trên menu khởi động, gây rối với cờ cấu hình khởi động như TESTSIGNING hoặc NOINTEGRITYCHECKS).

Tôi có đúng không? Những trở ngại, nếu có, rằng phương pháp này không được sử dụng rộng rãi hơn khi mọi người cần tải trình điều khiển không có chữ ký số thích hợp được cung cấp (chẳng hạn như trình điều khiển máy in cũ vv). Thay vào đó, mọi người dựa vào việc khởi động để kiểm tra chế độ hoặc phần mềm của bên thứ ba (DSEO) mà tampers với các tập tin hệ thống của bạn để chạy các trình điều khiển như vậy.

Những hạn chế của phương pháp này là gì? Quá trình được mô tả trong câu hỏi SO ở trên cần đặc quyền quản trị nhưng việc cài đặt trình điều khiển cũng cần chúng. Tin tưởng một CA tự ký có thể là một nguy cơ bảo mật - nhưng sẽ không vô hiệu hóa tất cả các kiểm tra chữ ký thậm chí còn nguy cơ bảo mật lớn hơn?

+2

Tốt câu hỏi. MSDN [Các bước để ký một gói trình điều khiển thiết bị] (http://technet.microsoft.com/en-us/library/dd919238%28v=ws.10%29.aspx) cũng nói rằng các trình điều khiển tự ký có thể được cài đặt cách, miễn là chúng được đóng dấu thời gian. – hvd

+1

@hvd Cảm ơn bạn đã liên kết. Nó nói "Chứng chỉ được tạo và sử dụng trong phần này chỉ có thể được sử dụng với các trình điều khiển 32 bit trên các phiên bản Windows 32 bit". Hơn thế nữa, nó cung cấp một liên kết chứa câu lệnh sau: "Các phiên bản 64 bit của Windows 7 và Windows Server 2008 R2 có các yêu cầu chữ ký đặc biệt cho trình điều khiển thiết bị chế độ lõi. Nếu bạn sử dụng phiên bản Windows 64 bit, thì bạn không thể tạo chứng chỉ của riêng bạn để ký tên. Thay vào đó, bạn phải sử dụng Chứng chỉ xuất bản phần mềm để kết nối với cơ quan cấp chứng chỉ được phê duyệt (CA) ". Có lẽ nó là không thể? – user130496

+3

Trên 64 bit, bạn phải ký tên vào trình điều khiển của bạn, vì vậy không thể ký tự. – Luke

Trả lời

-2

bạn là chính xác, nếu bạn tạo một chứng chỉ tự ký và lưu nó trong cửa hàng sử dụng (hoặc cửa hàng machien) như là một CA tin cậy, nó sẽ làm việc cho bạn ... nhưng hãy nhớ rằng:

  1. Khởi động an toàn sẽ không hoạt động cho bạn.
  2. Đây là vi phạm bảo mật, nếu ai đó có được chứng nhận, họ sẽ phải chạy mã chế độ hạt nhân trên hệ thống của bạn.

tùy chọn khác, là để mua Mã Trusted Ký Chứng từ GoDaddy :)

18

Không, đây là tiếc là không có thể, bắt đầu từ Windows Vista và Windows Server 2008.

Người lái xe phải có ký chéo. Việc tạo CA của riêng bạn và thêm nó vào cửa hàng máy sẽ không đủ bởi vì CA mới được tạo sẽ không được tin cậy bởi chuỗi tin cậy của Windows.

Driver Signing Requirements for Windows

Trong Windows Vista và Windows Server 2008, tính năng mới tận dụng lợi thế của công nghệ mã ký, và các yêu cầu mới đối với an ninh trong hệ điều hành thực thi việc sử dụng chữ ký số đối với một số loại mã.

Thành phần phải được ký bằng chứng chỉ mà Windows "tin tưởng" như được mô tả trong các giấy tờ trắng trên trang web này.

Một trong những giấy tờ màu trắng gọi là Digital Signatures for Kernel Modules on Windows trong đó mô tả quá trình tải và giải thích lý do tại sao tự ký sẽ không đủ:

Khi một trình điều khiển được nạp vào bộ nhớ hạt nhân, Windows Vista xác minh chữ ký số của tệp hình ảnh trình điều khiển. Tùy thuộc vào loại trình điều khiển, điều này có thể là giá trị băm đã ký trong tệp danh mục hoặc chữ ký được nhúng trong tệp hình ảnh. Các chứng chỉ chéo được sử dụng khi ký gói trình điều khiển hạt nhân được sử dụng để xác minh chữ ký thời gian tải; mỗi chứng chỉ trong đường dẫn được kiểm tra tới một gốc tin cậy trong nhân. Kiểm tra chữ ký thời gian tải không có quyền truy cập vào kho chứng chỉ Trusted Root Certificate Authorities. Thay vào đó, nó phải phụ thuộc vào quyền root được xây dựng trong nhân Windows Vista.

Như đã đề cập trước đó, điều này cũng được nêu trên trang Requirements for Device Driver Signing and Staging:

Các phiên bản 64-bit của Windows 7 và Windows Server 2008 R2 có những yêu cầu chữ ký đặc biệt cho điều khiển thiết bị kernel mode. Nếu bạn sử dụng phiên bản Windows 64 bit, thì bạn không thể tạo chứng chỉ của riêng mình để ký. Thay vào đó, bạn phải sử dụng Chứng chỉ xuất bản phần mềm để kết nối với cơ quan cấp giấy chứng nhận được phê duyệt (CA).

CAS giá trị để ký trình điều khiển chế độ hạt nhân có thể được tìm thấy trên các trang sau đây:

Cross-Certificates for Kernel Mode Code Signing

+0

Thực tế chúng hoạt động, bạn có thể kiểm tra libusb-win32, chúng thực hiện chính xác điều đó và các trình điều khiển tự ký sẽ hoạt động mà không có sự cố ... – Gusman

Các vấn đề liên quan