Mỗi thiết bị một chứng chỉ không làm khóa gắn với thiết bị
Chứng chỉ riêng cho từng thiết bị là lựa chọn của quản trị viên, không phải ràng buộc thiết bị. Điều quyết định ràng buộc là khóa riêng nằm ở đâu, từ tệp có thể sao chép đến TPM.
Bạn cấp một chứng chỉ riêng cho từng máy tính xách tay, nên bạn cho rằng VPN có thể phân biệt chúng. Nó không thể. Chứng chỉ máy khách chứng minh rằng ai kết nối cũng giữ khóa riêng tương ứng, và một hồ sơ bị sao chép cũng giữ khóa đó.
Chứng chỉ cho từng thiết bị vẫn là ý hay. Nó chỉ làm một việc khác với điều hầu hết mọi người mong đợi.
Chứng chỉ máy khách thực sự chứng minh điều gì
Trong quá trình bắt tay, máy khách ký bằng khóa riêng khớp với chứng chỉ của mình, và máy chủ xác minh chữ ký đó với CA mà nó tin cậy. Không có gì trong trao đổi đó mô tả cỗ máy. Bất kỳ thiết bị nào giữ cả chứng chỉ lẫn khóa đều tạo ra chữ ký y hệt, nên một hồ sơ được sao sang máy tính xách tay thứ hai trông giống hệt bản gốc. Chứng chỉ đặt tên cho một danh tính; nó không đặt tên cho phần cứng.
Tính duy nhất theo thiết bị vẫn đáng giá, vì nó làm việc thu hồi trở nên chính xác. Đó là thuộc tính hành chính, không phải ổ khóa kỹ thuật.
Ba mức lưu trữ khóa
Mức thứ nhất là một tệp khóa trên đĩa. Nó di động theo thiết kế, và đó là nơi phần lớn hồ sơ OpenVPN nằm.
Mức thứ hai là khóa mà hệ điều hành đánh dấu là không thể xuất. Windows có thể tạo khóa thiết bị trong kho chứng chỉ của mình và từ chối việc xuất thông thường, điều này chặn sao chép tùy tiện. Nó không dựa trên phần cứng, và với đủ quyền truy cập vào máy thì những khóa như vậy có thể khôi phục được, nên nó nâng công sức thay vì dựng bức tường.
Mức thứ ba là khóa được tạo bên trong phần cứng bảo mật: TPM, thẻ thông minh, SIM hoặc token PIV. Những mô-đun đó không có mạch để xuất khóa chúng đã tạo, và việc ký diễn ra bên trong mô-đun. Khóa không bao giờ trở thành tệp mà ai đó có thể sao chép.
| Where the key lives | Copyable | What it buys you |
|---|---|---|
| Key file inside the profile | Trivially | Revocation granularity, nothing more |
| OS non-exportable key store | Hard, not impossible | Stops casual profile sharing |
| TPM or PIV token | No | Binding the server can rely on |
Bảng đó là toàn bộ lập luận trong ba hàng.
easy-rsa làm được và không làm được gì
Cấp chứng chỉ cho từng thiết bị rất đơn giản. Tạo một tên chung riêng cho mỗi thiết bị với cùng một CA, ví dụ ./easyrsa build-client-full laptop-a nopass, và lặp lại cho từng thiết bị. Ghi lại tên chung nào thuộc về người và máy nào.
Thu hồi cũng trực tiếp như vậy: ./easyrsa revoke laptop-a, tạo lại CRL bằng ./easyrsa gen-crl và bảo đảm máy chủ thực sự đọc nó qua crl-verify.
Điều CA không thể làm là xác minh khóa riêng về sau nằm ở đâu. Nếu bạn tạo khóa trên máy chủ CA rồi sao nó sang thiết bị, bạn đã tạo bản sao thứ hai ngay lúc cấp. Một khóa không thể xuất phải được tạo trên chính thiết bị, hoặc được nhập vào phần cứng không chịu nhả nó ra.
Các biện pháp kiểm soát sống sót sau khi hồ sơ bị sao chép
Giả định rằng hồ sơ có thể bị sao chép và thiết kế xoay quanh điều đó. Ràng buộc tài khoản với một yếu tố thứ hai để chỉ riêng chứng chỉ là không đủ. Cấp cho mỗi thiết bị chính sách riêng để phạm vi của một danh tính vẫn bị giới hạn. Và để ý cùng một tên chung được kết nối từ hai địa chỉ cùng lúc, đó chính là dáng vẻ của một hồ sơ dùng chung trong nhật ký kết nối.
Thu hồi nhanh và có tài liệu là biện pháp vẫn hoạt động sau khi bản sao đã xảy ra. Mọi thứ khác là phòng ngừa.
Khẳng định mà máy chủ thực sự có thể dựa vào
Tính duy nhất đến từ CA. Ràng buộc thiết bị đến từ việc lưu trữ khóa. Chỉ phần cứng không thể xuất khóa của mình mới biến một chứng chỉ cho mỗi thiết bị thành một khẳng định mà máy chủ thực thi, thay vì một chính sách mà mọi người đồng ý tuân theo.