Việc triển khai nhỏ tìm đến dấu vân tay vì cơ quan chứng thực trông giống hạ tầng mà không ai có thời gian vận hành. Bản năng đó hợp lý, nhưng lối tắt mà người ta chọn thay vào đó—sao chép một bí mật của kênh dữ liệu đến cả hai đầu—thì không. Cấu hình peer-fingerprint giữ nguyên cấu trúc TLS: mỗi phía vẫn giữ khóa riêng và chứng chỉ của mình, và mỗi phía vẫn xác minh phía kia. Điều thay đổi là nơi neo việc xác minh: từ một nhà phát hành đáng tin cậy đến một danh sách ngắn các bản tóm lược được ghim. Vì bản tóm lược bao trùm toàn bộ chứng chỉ chứ không phải một cái tên, việc gia hạn trở thành thao tác thực sự tốn thời gian.

Dấu vân tay thực sự cam kết điều gì

Dấu vân tay của chứng chỉ là bản tóm lược của toàn bộ chứng chỉ được mã hóa DER, không phải của khóa công khai và không phải của tên chủ thể. Vì vậy hai chứng chỉ có cùng tên và cùng khóa nhưng ngày hiệu lực khác nhau sẽ có dấu vân tay khác nhau. Điều đó làm việc ghim trở nên chính xác, và cũng chính điều đó làm việc gia hạn trở nên phiền toái. Việc ghim không thể có nghĩa là tin tưởng một khóa nói chung, vì nó đặt tên cho một hiện vật tại một thời điểm trong vòng đời của nó. Bất kỳ ai cũng có thể biết bản tóm lược, và biết nó không chứng minh được gì tự thân.

openssl x509 -in server.crt -noout -fingerprint -sha256
openssl x509 -in client-07.crt -noout -fingerprint -sha256

Việc nắm giữ khóa riêng tương ứng là điều chứng minh peer có chứng chỉ đó, và bản tóm lược là cách phía kia quyết định liệu nó có mong đợi chứng chỉ đó hay không. Sự tách biệt này là lý do thiết kế này không phải là cách bố trí bí mật chung cũ: một khóa chung xác thực bất kỳ ai biết cùng các byte, trong khi việc ghim xác thực một chứng chỉ. Một thiết bị khác nhận mục của riêng nó thay vì bản sao của cùng bí mật, đó là khác biệt nhỏ về tệp và lớn về phạm vi thiệt hại.

Bản đồ là tương hỗ, không đối xứng

Mỗi điểm cuối cần hai thứ: khóa riêng của mình cùng chứng chỉ, và một tuyên bố về những chứng chỉ peer mà nó sẽ chấp nhận. Ở máy khách, tuyên bố đó là bản tóm lược của chứng chỉ máy chủ; ở máy chủ, đó là danh sách các bản tóm lược của máy khách đã đăng ký. Một ví dụ chính thức cho cấu hình nhỏ cho Community 2.6 cho thấy cách bố trí với peer-fingerprint, và đáng đọc trước khi chọn mô hình tin cậy này cho một lần triển khai thật. Hai hướng không phải một danh sách đảo ngược, và chúng không thất bại cùng một thời điểm.

Verification directionWhat is pinnedWhat never leaves that endpointHow a wrong pin shows up
Client checks the serverOne digest, for the server certificateThe server private keyThe client aborts during the TLS handshake
Server checks the clientA digest per enrolled clientEach client private keyThe server rejects the peer before a tunnel exists

Thêm một thiết bị chỉnh sửa danh sách cho phép trên máy chủ, không sao chép tài liệu riêng của một máy khách hiện có và không di chuyển khóa máy chủ đi đâu cả. Hai hướng cũng thất bại độc lập, điều này hữu ích khi chẩn đoán: phía đóng bắt tay là phía có kỳ vọng không được đáp ứng. Nếu máy khách từ chối máy chủ, bản tóm lược không khớp với chứng chỉ được trình bày. Nếu máy chủ từ chối máy khách, bản tóm lược của máy khách đó thiếu trong danh sách, hoặc máy khách trình bày chứng chỉ khác với chứng chỉ đã đăng ký.

Đăng ký: một thiết bị mới tham gia thế nào

Tạo khóa và chứng chỉ của thiết bị mới tại nơi khóa riêng sẽ ở, sau đó chỉ chuyển hiện vật công khai đến phía cần ghim nó. Truyền bản tóm lược mong đợi qua một kênh mà bạn đã tin cậy, và so sánh toàn bộ chứng chỉ thay vì một cái tên trông quen thuộc. Một bản tóm lược được sao chép từ cùng bản tải xuống chưa xác minh với chứng chỉ chỉ chứng minh hai tệp khớp với nhau. Đó là kiểm tra tính nhất quán chứ không phải kiểm tra danh tính, và đó là cách âm thầm nhất mà thiết kế này bị suy yếu.

Trên máy chủ, thêm bản tóm lược là một thay đổi cấu hình đi qua trình quản lý thông thường và sau đó là kết nối lại. Xác nhận thiết bị mới kết nối và thiết bị có bản tóm lược bị xóa không còn kết nối. Một bài kiểm tra chỉ bao phủ trường hợp tích cực để danh sách cho phép chưa được xác minh, và đó chính xác là trạng thái bạn sẽ ở vào sáu tháng nữa.

Gia hạn là thời điểm tốn kém

Mọi chứng chỉ đều hết hạn, và chứng chỉ mới có bản tóm lược mới ngay cả khi khóa và tên vẫn giữ nguyên. Dưới một nhà phát hành, việc gia hạn là minh bạch với các peer tin cậy nhà phát hành đó; dưới việc ghim, đó là một sự kiện đăng ký với mọi peer ghim chứng chỉ.

Lên kế hoạch thứ tự trước ngày hết hạn chứ không phải sau. Phân phối bản tóm lược mới đến các phía xác minh nó, áp dụng thay đổi, và chỉ sau đó thay chứng chỉ ở điểm cuối. Thứ tự đó không để lại cửa sổ nào mà hai phía bất đồng về chứng chỉ nào là hiện hành. Giữ cả danh sách dưới sự rà soát, vì một danh sách được ghim tích lũy các mục cho thiết bị đã ngừng sử dụng từ nhiều tháng trước. Mỗi mục lỗi thời là một danh tính vẫn xác thực nếu khóa của nó còn sống, nên xóa một mục là hành động an ninh chứ không phải việc dọn dẹp.

Điều bản đồ tin cậy không quyết định

Xác thực là một lớp, và bản đồ được ghim không nói gì về nhóm địa chỉ, các tuyến bị đẩy, MTU của đường đi hay chính sách tường lửa. Những thứ đó vẫn là cấu hình riêng với các chế độ lỗi riêng. Một đường hầm xác thực được nhưng không cho lưu lượng nào đi qua là một cuộc điều tra khác với một đường hầm không bao giờ dựng lên.

Bản đồ cũng không mở rộng vô hạn, và PKI dựa trên nhà phát hành là nơi các triển khai lớn hơn dừng lại. Sự ưu tiên đó là về vận hành chứ không phải mật mã, vì thêm và rút danh tính qua một cơ quan duy nhất rẻ hơn chỉnh sửa danh sách trên từng peer khi đội thiết bị lớn lên. Ở nơi mà một cách hiện thực máy khách không hỗ trợ tùy chọn đó, câu trả lời là một mô hình tin cậy tương thích mà máy khách đó ghi lại, hoặc một sản phẩm thay thế được hỗ trợ. Việc bóp nghẹt cảnh báo xác minh không thêm phần hỗ trợ đó, và toàn bộ giá trị của thiết kế là việc xác minh vẫn diễn ra.

Bài viết liên quan