Câu trả lời:
Tệp .snk được sử dụng để áp dụng tên mạnh cho cụm .NET . một tên mạnh như vậy bao gồm
tên văn bản đơn giản, số phiên bản và thông tin văn hóa (nếu được cung cấp) Thay đổi khóa công khai và chữ ký số.
SNK chứa một cặp khóa duy nhất - một khóa riêng và chung có thể được sử dụng để đảm bảo rằng bạn có một tên mạnh duy nhất cho tổ hợp. Khi lắp ráp được đặt tên mạnh, một "băm" được xây dựng từ nội dung của lắp ráp và băm được mã hóa bằng khóa riêng. Sau đó, hàm băm đã ký này được đặt trong hội đồng cùng với khóa chung từ .snk.
Sau này, 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ọ sẽ tạo một hàm băm của nội dung của hội đồng và sử dụng khóa chung từ hội đồng để giải mã hàm băm đi kèm với hội đồng - nếu hai hàm băm khớp nhau, xác minh lắp ráp thông qua.
Điều quan trọng là có thể xác minh các hội đồng theo cách này để đảm bảo rằng không ai trao đổi một hội đồng cho một hội đồng độc hại sẽ lật đổ toàn bộ ứng dụng. Đây là lý do tại sao các hội đồng không có tên mạnh không được tin cậy giống như 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 hội đồng có tên mạnh mẽ tham chiếu các hội đồng không được đặt tên mạnh.
Bài báo " Bí mật của việc đặt tên mạnh ". 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. Với hình ảnh.
Trong thế giới.Net, tệp SNK được sử dụng để ký các tệp nhị phân đã biên dịch của bạn. Điều này cho phép một vài điều xảy ra:
Tôi không quen với cách máy chủ BizTalk hoạt động, vì vậy tôi không nghĩ mình có thể làm sáng tỏ nhiều mục đích cụ thể mà họ phục vụ trong môi trường đó.
Hy vọng điều này có phần hữu ích.
Tệp .snk được sử dụng để ký các hội đồng để có thể thêm chúng vào Bộ đệm ẩn hội đồng toàn cầu (GAC).
Tệp .snk chứa mã thông báo công khai và riêng tư cho khóa của bạn. Khi bạn muốn ký một số dữ liệu (hoặc nhị phân) bằng khóa đó, tổng kiểm tra được tính trên dữ liệu, sau đó được mã hóa bằng mã thông báo riêng. Tổng kiểm tra được mã hóa sau đó được thêm vào dữ liệu. Bất cứ ai cũng có thể sử dụng mã thông báo công khai từ khóa của bạn để giải mã tổng kiểm tra và so sánh nó với tổng kiểm tra mà họ đã tính toán để xác minh rằng dữ liệu đã ký chưa bị giả mạo.
Bạn có thể đọc thêm về mật mã khóa công khai tại http://en.wikipedia.org/wiki/Public-key_cryptography .
Tệp .snk là phiên bản bền vững của "Khóa" của bạn được tạo bởi tiện ích sn trong bộ tiện ích khung. Sau đó, bạn sử dụng tệp này để "ký điện tử" các hội đồng của bạn. Nó là một khóa gồm 2 phần .. tổ hợp khóa riêng-công khai. Phần công khai của khóa được xuất bản tức là được mọi người biết đến. Phần riêng chỉ được biết đến với bạn, nhà phát triển thành phần / ứng dụng và dự định sẽ được giữ theo cách đó.
Khi bạn ký hợp đồng, nó sử dụng khóa riêng và giá trị băm cho tổ hợp của bạn để tạo chữ ký số được nhúng trong cụm của bạn. Sau đó, bất cứ ai tải lắp ráp của bạn đều trải qua một bước xác minh. Khóa chung được sử dụng để xác thực nếu tập hợp thực sự xuất phát từ bạn .. bạn chỉ cần khóa chung cho khóa này (cũng được nhúng dưới dạng mã thông báo trong bảng kê khai lắp ráp). Nếu lắp ráp bị giả mạo, giá trị băm sẽ khác và tải lắp ráp sẽ bị hủy bỏ. Đây là một cơ chế bảo mật.
Một tập tin .snk được sử dụng để đảm bảo rằng người khác không thể trượt một hội đồng của họ vào vị trí của bạn. Nó cung cấp một cặp khóa mã hóa / giải mã.
Khi tệp .snk được sử dụng để ký hợp đồng, giá trị mã băm được tính từ tệp lắp ráp và được mã hóa bằng khóa riêng. "Digest" được mã hóa đó sau đó được xử lý để lắp ráp cùng với khóa chung từ tệp .snk.
Sau đó, khi ai đó nhận được hội đồng của bạn, họ cũng có thể tính toán giá trị băm đó. Họ sử dụng khóa chung để giải mã khóa mà bạn đã tính toán và so sánh các giá trị được tính toán. Nếu lắp ráp hoàn toàn thay đổi, các giá trị đó sẽ khác và người sử dụng lắp ráp sẽ biết rằng lắp ráp bạn có không phải là giá trị bạn cung cấp.
Trong ngữ cảnh của BizTalk Server, bất cứ ai xây dựng bất kỳ hội đồng tùy chỉnh nào được sử dụng bởi giải pháp BizTalk của bạn sẽ cần sử dụng tệp .snk để ký hợp đồng để máy chủ BizTalk có thể tải nó vào GAC và sử dụng nó.