Tệp .snk được sử dụng để áp dụng strong name to a .NET assembly. một tên mạnh mẽ như vậy bao gồm
một tên văn bản đơn giản, số phiên bản, và thông tin văn hóa (nếu cung cấp) -plus một khóa công khai và chữ ký kỹ thuật số .
SNK chứa một cặp khóa duy nhất - khóa riêng và khóa công khai có thể được sử dụng để đảm bảo rằng bạn có một tên mạnh duy nhất cho hội đồng. Khi assembly được đặt tên mạnh, một "băm" được xây dựng từ nội dung của assembly, và hash được mã hóa bằng khóa riêng. Sau đó, băm đã ký này được đặt trong assembly cùng với khóa công khai từ .snk.
Sau đó, khi ai đó cần xác minh tính toàn vẹn của hội đồng được đặt tên mạnh, họ xây dựng hàm băm của nội dung của hội đồng và sử dụng khóa công khai từ lắp ráp để giải mã băm đi kèm với lắp ráp - nếu hai băm phù hợp, việc xác minh lắp ráp sẽ được thực hiện.
Điều quan trọng là phải có thể xác minh các hội đồng theo cách này để đảm bảo rằng không ai hoán đổi một hội đồng cho một bản độc hại sẽ làm hỏng toàn bộ ứng dụng. Đây là lý do tại sao các hội đồng không được đặt tên mạnh không được tin cậy theo cùng cách mà các hội đồng được đặt tên mạnh, vì vậy chúng không thể được đặt trong GAC. Ngoài ra, có một chuỗi tin cậy - bạn không thể tạo ra một assembly có tên mạnh mẽ tham chiếu đến các assembly không được đặt tên mạnh.
Bài viết "The Secrets of Strong Naming". Có một công việc tuyệt vời để giải thích các khái niệm này chi tiết hơn không. Với hình ảnh.
Nguồn
2008-09-25 02:42:34
Điều này có nghĩa là khi bạn ký một hội đồng với một .PFX, nó thực sự chỉ sử dụng để tạo ra một .SNK trên bay bất cứ khi nào nó biên dịch? – Patrick
@Patrick no, đó là [Chữ ký Authenticode] (http://technet.microsoft.com/en-us/library/cc750035.aspx), trong khi cũng chứng minh tệp không được sửa đổi giữa ký và séc, không đáp ứng các yêu cầu về tên mạnh. Vấn đề là Authenticode không yêu cầu một chuỗi niềm tin của các assembly mà việc đặt tên mạnh đòi hỏi bạn có thể Authenticode ký một assembly dựa vào các assembly không được ký tên/không mạnh. –
Bạn có thể chỉ cần loại bỏ tiếng lách và thay thế bằng một cái khác .. tôi không biết một kịch bản thực sự ở đâu hữu ích .. về cơ bản, cặp khóa chính của chúng tôi không thể xây dựng niềm tin vào đó – Ibrahim