2011-01-04 24 views
8

Tôi đang triển khai tính năng cập nhật tự động và cần một số lời khuyên về cách thực hiện điều này một cách an toàn bằng cách sử dụng các phương pháp hay nhất. Tôi muốn sử dụng chữ ký Authenticode của tệp đã tải xuống để xác minh rằng nó có thể chạy an toàn (tức là bắt nguồn từ công ty của chúng tôi và không bị giả mạo). Câu hỏi của tôi rất giống với câu hỏi # 2008519.Xác minh chữ ký Authenticode là từ công ty chúng tôi để tự động cập nhật

Câu hỏi dưới cùng: cách tốt nhất, an toàn nhất để kiểm tra chữ ký Authenticode cho tính năng cập nhật tự động là gì? Bạn nên kiểm tra những trường nào trong chứng chỉ? Yêu cầu là: (1) chữ ký kiểm tra là hợp lệ, (2) kiểm tra chữ ký của tôi, (3) khách hàng cũ vẫn có thể cập nhật khi chứng chỉ của tôi hết hạn và tôi nhận được chứng chỉ mới.

Dưới đây là một số thông tin cơ bản/ý tưởng từ nghiên cứu của tôi: Tôi tin rằng điều này có thể được chia thành hai bước:

  1. Xác minh rằng chữ ký là hợp lệ. Tôi tin rằng điều này nên được dễ dàng bằng cách sử dụng WinVerifyTrust như nêu trong http://msdn.microsoft.com/en-us/library/aa382384(VS.85).aspx - Tôi không mong đợi vấn đề ở đây.

  2. Xác minh rằng chữ ký tương ứng với công ty của chúng tôi chứ không phải một công ty khác. Đây có vẻ là câu hỏi khó trả lời hơn:

Một khả năng là kiểm tra một số chuỗi trong chữ ký. Có thể lấy thông qua mã tại bài viết MS KB # 323809, nhưng bài viết này không đưa ra khuyến nghị về những trường nào nên được kiểm tra cho loại ứng dụng này (hoặc bất kỳ trường nào khác, cho vấn đề đó). Question #1072540 cũng minh họa cách nhận một số thông tin chứng chỉ, nhưng lại không đề xuất những trường nào cần kiểm tra. Mối quan tâm của tôi là các chuỗi có thể không phải là kiểm tra tốt nhất: điều gì sẽ xảy ra nếu một người khác có thể có được chứng chỉ có cùng tên, chẳng hạn? Hoặc nếu có lý do chính đáng để chúng ta thay đổi dây trong tương lai?

Người ở số question #2008519 có yêu cầu rất giống nhau. Nhu cầu của mình cho một "TrustedByUs" chức năng là giống hệt với tôi. Tuy nhiên, anh ta đi kiểm tra bằng cách so sánh các khóa công khai. Trong khi điều này sẽ làm việc trong ngắn hạn, có vẻ như nó sẽ không hoạt động cho một tính năng cập nhật tự động. Điều này là do chứng chỉ ký mã chỉ có hiệu lực trong tối đa 2 - 3 năm. Do đó, trong tương lai, khi chúng tôi mua chứng chỉ mới trong 2 năm, các khách hàng cũ sẽ không thể cập nhật thêm nữa do thay đổi khóa công khai.

+0

Theo dõi: Tôi làm tăng nhiều hay ít đề xuất của Brian. (1) Xác minh chữ ký Authenticode với WinTrustVerify, (2) kiểm tra đối tượng của chữ ký Authenticode; đảm bảo rằng chuỗi khớp với tên công ty của tôi, (3) như một biện pháp bổ sung, tôi thực hiện một chữ ký riêng với DSA. Chữ ký được gửi cùng với tệp thi hành và được chọn. –

+0

Đồng thời xem [Định dạng chữ ký thực thi Windows Authenticode của Microsoft] của Microsoft (http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx). – jww

Trả lời

3

Người được hỏi # 2008519 có yêu cầu rất giống với yêu cầu tương tự là . Nhu cầu của anh ta đối với một chức năng "TrustedByUs" giống hệt nhau để khai thác. Tuy nhiên, anh ấy thực hiện việc thực hiện séc bằng cách so sánh các khóa công khai. Trong khi điều này sẽ hoạt động trong thời gian ngắn , có vẻ như nó sẽ không hoạt động cho tính năng cập nhật tự động. Điều này là do mã ký chứng chỉ chỉ hợp lệ trong 2 - 3 năm tối đa. Do đó, trong tương lai, khi chúng tôi mua một chứng chỉ mới trong 2 năm, các khách hàng cũ sẽ không được có thể cập nhật thêm nữa do sự thay đổi trong khóa công khai .

Vì lo ngại là ứng dụng tin tưởng bạn chứ không phải là người tin tưởng bạn, bạn chỉ có thể sử dụng tự ký và nhúng bất kỳ khóa công khai nào cần thiết trong ứng dụng. Điều này cho phép bạn kiểm soát nhiều hơn quá trình này.Điều này là không phù hợp khi yêu cầu người dùng hoặc ứng dụng không thuộc quyền kiểm soát của bạn để tin tưởng, nhưng trong trường hợp này, ứng dụng nằm dưới sự kiểm soát của bạn, vì vậy nó sẽ hoạt động tốt. Điều này cho phép bạn dễ dàng tránh được sự lo ngại về việc nhầm lẫn chứng chỉ tương tự của người khác cho riêng bạn.

+0

Trình cập nhật tự động sẽ sử dụng cùng một chương trình thiết lập mà người dùng sử dụng khi tải xuống phần mềm ban đầu từ trang web của chúng tôi. Giải pháp tự ký hiệu hoạt động khi ứng dụng đã được cài đặt với khóa công khai tự ký đã biết. Điều gì về tải xuống ban đầu khi họ được hỏi có nên chạy chương trình tải xuống của Windows/trình duyệt web không? Đối với điều này, nó phải được ký bởi một CA gốc đáng tin cậy. Có lẽ (là nó có thể?) Cho EXE được ký bởi cả chữ ký tự và giấy chứng nhận mua từ một CA gốc ... ?? –

+1

@James: Bạn có thể dễ dàng đặt chữ ký tự ký trong một tệp riêng biệt. Bạn có toàn quyền kiểm soát thông tin liên lạc giữa máy chủ và trình cập nhật tự động. – Brian