Tôi có các thiết bị cần giao tiếp với máy chủ qua kênh được mã hóa và xác thực lẫn nhau. Việc xác thực máy chủ tương đối dễ dàng vì tôi có thể nhúng chứng chỉ CA vào chương trình cơ sở của thiết bị và kiểm tra chữ ký của chứng chỉ của máy chủ. Vấn đề là xác thực thiết bị với máy chủ.
Thông thường, tôi cũng có thể ký chứng chỉ của thiết bị, nhưng không có môi trường đáng tin cậy nào từ quá trình sản xuất cho đến khi triển khai, tức là tôi không muốn cơ sở sản xuất có quyền truy cập vào khóa cá nhân hoặc bất kỳ khả năng ký nào bằng CA của chúng tôi. Thay vào đó, chúng tôi có mã QR trên thiết bị và nhân viên đáng tin cậy trong lĩnh vực này để làm việc cùng. Vì vậy, việc xác thực sẽ được nhân viên thực hiện bằng cách đọc mã QR. Tuy nhiên, trong quá trình vận hành này, các thiết bị thường không được cấp nguồn, vì vậy TOTP thông thường, các chỉ báo trực quan, v.v. không được áp dụng.
Ý tưởng của tôi là đặt một số ngẫu nhiên và dạng mã hóa của nó (bằng khóa AES do thiết bị tạo ngẫu nhiên) trên mã QR (hoặc một số loại MAC cũng có thể, có thể ràng buộc ID thiết bị). Khi nhân viên đọc mã QR, các giá trị này được lưu trữ trong cơ sở dữ liệu. Khi thiết bị xác thực và kết nối với máy chủ, thiết bị sẽ gửi khóa AES bí mật của nó qua kênh được mã hóa. Giờ đây, máy chủ có thể xác minh rằng số ngẫu nhiên trong cơ sở dữ liệu thực sự được mã hóa bởi thiết bị và giờ đây máy chủ có thể ký chứng chỉ của thiết bị.Sau đó, máy chủ sẽ xóa giá trị ngẫu nhiên khỏi cơ sở dữ liệu và các kết nối khác có thể được xác thực bằng chữ ký.
Tôi tin rằng điều này an toàn nhất có thể với những hạn chế này. Nhưng tôi không thấy thoải mái khi xuất trình khóa AES để chứng minh danh tính, nhưng tôi không thể nghĩ ra cách nào khác. Có bất kỳ vấn đề nào với chương trình này giả sử nhân viên không bị lừa đọc mã QR độc hại không? Xác thực ngoại tuyến như vậy có phải là một vấn đề đã biết không, nếu có thì đâu là từ khóa để nghiên cứu thêm? Có cách nào tốt hơn để đạt được xác thực với những hạn chế này không?
Chỉnh sửa. Tôi mới nhận ra rằng tôi chỉ có thể đặt khóa chung của thiết bị vào mã QR và yêu cầu thiết bị chứng minh rằng thiết bị đó cũng có khóa riêng tương ứng.