Đâu đó trong hướng dẫn cài đặt, một thư mục được sao chép nguyên vẹn vào mọi máy tính xách tay vì việc đó dễ hơn là quyết định tệp nào thuộc về đó. Thư mục ấy chứa ca.key, và ngay khi nó tới thiết bị thứ hai, cơ quan chứng thực không còn là cơ quan nữa. Giờ đây bất kỳ ai giữ nó đều có thể phát hành danh tính mà phần còn lại của mạng sẽ tin cậy.

Sự nhầm lẫn này đáng được gỡ rối một lần, vì hai tệp trông giống nhau mà làm những việc trái ngược.

Vật liệu xác minh và vật liệu ký

Máy khách cần chứng thư công khai của CA để kiểm tra rằng chứng thư do phía bên kia trình ra đã được cơ quan đó ký. Đây là việc xác minh và không cần bất kỳ bí mật nào. Ký chứng thư của phía bên kia là việc khác, được thực hiện một lần bởi người vận hành CA, bằng khóa riêng không bao giờ rời khỏi kho lưu trữ được bảo vệ. Tách hai việc ấy ra chính là toàn bộ lý do phải gửi hai tệp.

Vì vậy ca.crt thuộc hồ sơ và ca.key không thuộc bất cứ nơi nào gần đó. Tên tệp là quy ước, không phải bảo đảm, nên phải kiểm tra loại thay vì suy đoán từ tên.

Kiến trúc có CA trung gian hoặc dịch vụ phát hành trực tuyến không phải là ngoại lệ. Đó là cách thông thường để giữ khả năng ký tránh xa các điểm cuối trong khi vẫn phát hành chứng thư thiết bị ở quy mô lớn.

Máy khách phải chứng minh điều gì bằng khóa của chính nó

Mỗi thiết bị nhận cặp khóa và chứng thư của riêng nó, được CA ký một lần. Máy khách trình chứng thư đó và chứng minh mình sở hữu khóa riêng khớp với nó, còn máy chủ quyết định có chấp nhận hay không. Đây chính là danh tính bị thu hồi khi một máy tính xách tay bị mất.

Sự tương phản ấy quan trọng nhất sau một vụ trộm. Với danh tính riêng cho từng thiết bị, một máy khách bị lộ sẽ bị loại bỏ bằng cách thu hồi hoặc bằng cách gỡ phía bên kia, phần còn lại của đội máy vẫn tiếp tục hoạt động.

Một khóa cơ quan bị lộ không thể xử lý theo cách đó. Mọi chứng thư mà nó từng ký hoặc có thể ký đều trở nên đáng ngờ, nên phản ứng là thay thế toàn bộ niềm tin chứ không phải một lần thu hồi duy nhất. Đó là một dự án, không phải một phiếu yêu cầu.

FileRoleBelongs on
ca.crtPublic certificate used to verify signaturesEvery client profile
ca.keyPrivate key that issues certificatesProtected CA storage only
client key pairProves one device's identityThat device alone

Đọc tệp trước khi sao chép nó đi bất cứ đâu

Hai lệnh cho bạn biết mình đang cầm loại đối tượng nào mà không in ra bất kỳ bí mật nào. Lệnh thứ nhất nêu chủ thể và cờ CA trên một chứng thư; lệnh thứ hai xác thực một khóa và báo cáo loại của nó. Chạy cả hai trên các tệp trong gói mà bạn sắp phân phát. Bất cứ thứ gì xác thực là khóa riêng đều không thuộc thư mục máy khách.

openssl x509 -in ca.crt -noout -subject -ext basicConstraints
openssl pkey -in ca.key -noout -check

Nếu lệnh thứ hai thành công trên một tệp nằm trong gói máy khách, hãy dừng lại và coi gói đó đã bị xâm nhập. Kết quả nói rằng một khóa hợp lệ cũng nói rằng khóa ấy đang hiện diện, và chính sự hiện diện là toàn bộ vấn đề.

Cũng hãy để ý chiều ngược lại: hồ sơ máy khách hợp pháp có chứa khóa riêng của chính máy khách đó. Xóa mọi khóa tìm thấy sẽ cắt kết nối mà không cải thiện được gì, nên phải nhận diện đối tượng trước khi loại bỏ.

Khoanh vùng một khóa đã phân phát

Đừng giả định rằng xóa bản sao cục bộ sẽ đảo ngược việc phơi nhiễm. Bất kỳ ai từng giữ tệp đều có thể đã sao chép nó, và giả định an toàn là họ đã làm vậy. Hãy theo quy trình sự cố của người vận hành và thay thế neo tin cậy, phát hành lại chứng thư thiết bị dưới một CA mới.

Sau đó hãy thay đổi cách đóng gói đã tạo ra vấn đề. Gửi danh sách thư mục kèm danh sách tệp được phép rõ ràng, giữ khóa CA trên một máy không bao giờ gia nhập đội máy khách, và ghi lại hệ thống nào đang giữ nó.

Nếu cơ quan phải phát hành thường xuyên, hãy chuyển việc ký ra sau một dịch vụ hoặc một cơ quan trung gian có phạm vi hẹp và thời hạn ngắn. Như vậy một sai sót trong tương lai sẽ phơi ra một phần của việc phát hành chứ không phải gốc tin cậy của toàn bộ triển khai.

Bài viết liên quan