Bản phác thảo đặt khóa riêng của WireGuard vào một mảng ký tự, và đường hầm hoạt động, vì thế câu hỏi cứ lặp lại. Quyết định bạn thực sự phải đưa ra không phải «điều này có an toàn không» mà là «điều kiện nào trong ba điều kiện áp dụng cho lần triển khai này». Đó là: ai có thể cầm thiết bị trên tay, việc đọc flash trên linh kiện của bạn cho ra gì, và đội chia sẻ một khóa hay mỗi máy mang khóa riêng. Trả lời những điều đó thì thiết kế sẽ theo sau, vì mỗi điều kiện thay đổi chi phí của một khóa bị lộ, chứ không phải việc nó có thể lộ.

Khóa cho phép điều gì

WireGuard xác thực peer bằng khóa công khai. Máy chủ ánh xạ khóa công khai của từng peer vào một địa chỉ và một AllowedIPs danh sách, nên chính khóa riêng mới cho phép máy khách gửi lưu lượng từ địa chỉ đó.

Cũng mục đó quyết định thiết bị có thể tới những đích nào, nên một khóa bị lộ phơi bày cả mạng phía sau đường hầm lẫn địa chỉ đường hầm.

Điều kiện một: ai có thể cầm thiết bị

Nếu thiết bị nằm trong tủ khóa và không ai ngoài nhóm bạn chạm vào, rủi ro chủ yếu là câu chuyện phân phối firmware. Nếu nó được gửi đến khách hàng, nằm trong xe hoặc quay lại theo bảo hành, thì quyền nắm giữ vật lý chính là thông tin xác thực và tính bí mật của tệp nhị phân là thứ yếu. Người cầm thiết bị không cần đọc khóa, vì firmware đang chạy sẽ mở đường hầm cho họ. Vì thế câu trả lời ở phía máy chủ phải gồm thu hồi và thời hạn giới hạn, không chỉ một ảnh được bảo vệ.

Hãy quyết điều kiện này trước hai điều kia, vì nó đặt ngân sách cho cả hai.

Điều kiện hai: việc đọc flash cho ra gì

Bất kỳ ai đọc được ảnh flash đều khôi phục được khóa lưu dưới dạng literal, dù qua kết nối gỡ lỗi, tệp cập nhật, bản sao lưu hay thiết bị được trả lại. Mã hóa flash làm tăng chi phí của một lần kết xuất trực tiếp, và tài liệu ESP-IDF mô tả tính năng này bao phủ gì cho một linh kiện và cấu hình cụ thể. Nó không làm khóa trở nên không thể trích xuất dưới mọi mô hình tấn công, và không giúp gì cho trường hợp thiết bị nằm trong tay. Hãy coi nó là một lớp thay đổi chi phí, không phải câu trả lời.

Đọc tài liệu nền tảng cho đúng chip và cấu hình của bạn trước khi khẳng định một thuộc tính trong buổi đánh giá thiết kế.

Điều kiện ba: tái sử dụng trên toàn đội

Một khóa cho một lô sản xuất nghĩa là mọi thiết bị chia sẻ một danh tính. Máy chủ không thể phân biệt chúng trong nhật ký, không thể thu hồi một cái mà không thu hồi tất cả, và không thể phân biệt bản sao với bản gốc. Khóa riêng từng thiết bị giải quyết cả ba, với cái giá là một bước đăng ký và một ánh xạ từ số sê-ri sang khóa công khai. Ánh xạ đó chính là tài sản biến việc thu hồi thành một thay đổi một dòng thay vì nạp lại toàn bộ đội.

Nếu đội chỉ là năm thiết bị trên bàn, chia sẻ một khóa có thể là đánh đổi hợp lý. Nếu là năm trăm ngoài hiện trường, đó không phải đánh đổi.

Mẫu đăng ký khiến khóa riêng từng thiết bị trở nên thực tế

Tạo cặp khóa ngay trên thiết bị ở lần khởi động đầu, giữ nửa riêng trong bộ nhớ không bay hơi được bảo vệ, và chỉ gửi khóa công khai đến dịch vụ đăng ký nơi cấp địa chỉ và ghi mục peer. Xác thực phản hồi đăng ký, nếu không kẻ tấn công trên mạng cục bộ có thể đăng ký khóa của hắn vào tài khoản của bạn. Không bao giờ in khóa riêng ra console nối tiếp trong lúc cấp phát. Ghi số sê-ri của thiết bị bên cạnh khóa công khai, để một thiết bị thất lạc khớp chính xác với một mục peer.

Đó là một dịch vụ nhỏ, và đó là khác biệt giữa một đội bạn có thể kiểm toán và một đội bạn chỉ có thể nạp lại.

Thời gian, điểm cuối và quyết định

Ví dụ đồng bộ thời gian trước khi khởi động đường hầm, và điều đó quan trọng ngoài TLS: các lần bắt tay của WireGuard mang dấu thời gian để chống phát lại, nên thiết bị khởi động với đồng hồ sai có thể bị từ chối bắt tay. Điểm cuối là tên máy chủ, đưa DNS vào đường tin cậy dù khóa công khai của máy chủ vẫn xác thực peer. Địa chỉ sai làm mất các lần thử và tiết lộ khi nào thiết bị trực tuyến. Xử lý cả hai trước khi tranh luận về khóa.

Rồi quyết định: khóa chia sẻ chỉ khi quyền nắm giữ được kiểm soát và đội còn nhỏ, khóa riêng từng thiết bị ngay khi một trong hai điều đó không còn đúng.

Bài viết liên quan