CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 46

46
Chương 1: Phát triển ứng dụng

được tạo ra chứa cả khóa công khai và khóa riêng. Bạn có thể sử dụng lệnh

sn –tp MyKey.snk

để xem khóa công khai, lệnh này cho kết xuất như sau:

Microsoft (R) .NET Framework Strong Name Utility Version 1.1.4322.573

Copyright (C) Microsoft Corporation 1998-2002. All rights reserved.

Public key is

07020000002400005253413200040000010001008bb302ef9180bf717ace00d570dd649821f24ed578

fdccf1bc4017308659c126570204bc4010fdd1907577df1c2292349d9c2de33e49bd991a0a5bc9b69e
5fd95bafad658a57b8236c5bd9a43be022a20a52c2bd8145448332d5f85e9ca641c26a4036165f2f35

3942b643b10db46c82d6d77bbc210d5a7c5aca84d7acb52cc1654759c62aa34988...

Public key token is f7241505b81b5ddc

Token của khóa công khai là 8 byte cuối của mã băm được tính ra từ khóa công khai. Vì khóa
công khai quá dài nên .NET sử dụng token cho mục đích hiển thị, và là một cơ chế ngắn gọn
cho các assembly khác tham chiếu khóa công khai (chương 14 sẽ thảo luận tổng quát về mã
băm).
Như tên gọi của nó, khóa công khai (hoặc token của khóa công khai) không cần được giữ bí
mật. Khi bạn tạo tên mạnh cho assembly (được thảo luận trong mục 1.9), trình biên dịch sẽ sử
dụng khóa riêng để tạo một chữ ký số (một mã băm đã-được-mật-hóa) của assembly manifest.
Trình biên dịch nhúng chữ ký số và khóa công khai vào assembly để người dùng có thể kiểm
tra chữ ký số.
Việc giữ bí mật khóa riêng là cần thiết vì người truy xuất vào khóa riêng của bạn có thể thay
đổi assembly và tạo một tên mạnh mới—khiến cho khách hàng của bạn không biết mã nguồn
đã bị sửa đổi. Không có cơ chế nào để loại bỏ các khóa tên mạnh đã bị tổn hại. Nếu khóa
riêng bị tổn hại, bạn phải tạo khóa mới và phân phối phiên bản mới của assembly (được đặt
tên mạnh bằng các khóa mới). Bạn cũng cần thông báo cho khách hàng biết là khóa đã bị tổn
hại và họ nên sử dụng phiên bản nào—trong trường hợp này, bạn bị mất cả tiền bạc và uy tín.
Có nhiều cách để bảo vệ khóa riêng của bạn; sử dụng cách nào là tùy vào các yếu tố như:

Cấu trúc và tầm cỡ của tổ chức.

Quá trình phát triển và phân phối ứng dụng.

Phần mềm và phần cứng hiện có.

Yêu cầu của khách hàng.

Thông thường, một nhóm nhỏ các cá nhân đáng tin cậy (được gọi là signing
authority
) sẽ có trách nhiệm đảm bảo an toàn cho các khóa tên mạnh của công ty
và ký mọi assembly trước khi chúng được phân phối. Khả năng trì hoãn ký
assembly (sẽ được thảo luận ở mục 1.11) tạo điều kiện thuận lợi cho việc ứng
dụng mô hình này và tránh được việc bạn phải phân phối khóa riêng cho mọi
thành viên của nhóm phát triển.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.